시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB83342.857%

문제

After the programming contest team MSX decides to grab a bite at the Burger King. It turns out it's a rather busy evening there: each counter has a queue of people waiting to order their meals and more people keep pouring in. Since they're rather hungry from a long day of programming, team MSX wants to order food as soon as possible.

Team member Menno suggests that, in order to get their food as fast as possible, they should join the shortest queue. Team member Sarah disagrees: she notices that some employees are considerably slower than their colleagues, hence the team should join the queue of the fastest employee. Team member Xenon, however, notices that every now and then, some employees switch with their colleagues. If a customer was being helped during the change, this takes time, since the new employee has to start all over again in helping the customer. If the customer's order would have been finished at the moment of the change, though, the customer's order is finished first and the new employee immediately continues serving the next customer without delay. Besides that, the service speed is also dependent on the type of customer: a family takes considerably more time to help than a middle-aged man.

Team MSX decides it's best to work dynamically. All team members have a strong predictive ability, which allows them to know how much time an employee will need to help a certain customer. As they enter the Burger King, they calculate for each queue hoe long it will take until all customers in that queue have been helped. They then join the queue that will be the first one to be empty. When the situation changes, for example when the employee at a counter changes, they reevaluate which queue they should join to be able to order as soon as possible. If it turns out it's more effective to join another queue, they will not hesitate. If team MSX has to choose from multiple queues that would be equally effective, they choose the queue with the lowest identification number, unless they're in one of those queues themselves, in which case they will not switch queues. Of course, when the team switches queues, they join the end of the new queue. The switching itself takes no time at all.

Given a set of employees, queues of customers and a schedule of events, figure out how many minutes it takes before the team can order their well-earned diner if they choose their queues optimally.

입력

  • The first line of input consists of the integer number n (0 < n ≤ 10000), the number of test cases;
  • Then, for each test case:
    • A line with one positive integer m (1 ≤ m ≤ 10): the number of queues;
    • For each queue two lines:
      • A line with three positive integer numbers i (0 ≤ i < m): the (identification-) number of the queue, ic (0 < ic ≤ 30): the number of customers in the queue at the moment that team MSX enters the Burger King, and ec (0 ≤ ec ≤ 10): the minimum amount of minutes that the employee for queue i takes to help a customer. The numbers are separated by a space;
      • A line with ic positive integer numbers, separated by spaces, where each number represents a customer in queue i and the value (0 ≤ value ≤ 15) represents the amount of extra minutes it takes for an employee to help this customer. The first customer in the list is the one that is standing in front of the employee (and will immediately be helped by the employee) while the last one is at the end of the queue.
    • A line with one positive integer v (0 ≤ v ≤ 100): the number of events taking place;
    • Then for each event a line containing one of the following:
      • For the event of a new customer joining a queue: The string "join" and three positive integer numbers tv (0 < tv ≤ 300), the moment (beginning of the minute) at which the event occurs, iv (0 ≤ iv < m), the queue at which a new customer joins and cv (0 ≤ cv ≤ 15), the amount of extra minutes it takes for an employee to help this customer. The string and numbers are separated by spaces. A new customer always takes place last in line;
      • For the event of an employee being replaced by another: the string "change" and three positive integer numbers tv (1 ≤ tv ≤ 300), the moment (beginning of the minute) at which the event occurs, iv (0 ≤ iv < m), the queue at which the employee will be replaced by a new one and ev (0 ≤ ev ≤ 10), the minimum amount of minutes that the new employee for queue iv takes to help a customer.
      • The string and numbers are separated by spaces.

No more than one event takes place in the same minute. In addition, there will never be more than 30 customers in a queue (excluding team MSX) at any time.

출력

For each test case the output contains one line with a single integer: the number of minutes team MSX needs to wait before they can order their food.

예제 입력 1

1
2
0 4 2
4 2 6 2
1 6 3
1 2 1 1 3 1
6
join 1 1 3
join 4 1 4
join 6 0 10
join 8 1 8
change 2 1 2
change 5 0 4

예제 출력 1

34
W3sicHJvYmxlbV9pZCI6IjIwMzAiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJCdXJnZXIgS2luZyIsImRlc2NyaXB0aW9uIjoiPHA+QWZ0ZXIgdGhlIHByb2dyYW1taW5nIGNvbnRlc3QgdGVhbSBNU1ggZGVjaWRlcyB0byBncmFiIGEgYml0ZSBhdCB0aGUgQnVyZ2VyIEtpbmcuIEl0IHR1cm5zIG91dCBpdCYjMzk7cyBhIHJhdGhlciBidXN5IGV2ZW5pbmcgdGhlcmU6IGVhY2ggY291bnRlciBoYXMgYSBxdWV1ZSBvZiBwZW9wbGUgd2FpdGluZyB0byBvcmRlciB0aGVpciBtZWFscyBhbmQgbW9yZSBwZW9wbGUga2VlcCBwb3VyaW5nIGluLiBTaW5jZSB0aGV5JiMzOTtyZSByYXRoZXIgaHVuZ3J5IGZyb20gYSBsb25nIGRheSBvZiBwcm9ncmFtbWluZywgdGVhbSBNU1ggd2FudHMgdG8gb3JkZXIgZm9vZCBhcyBzb29uIGFzIHBvc3NpYmxlLjxcL3A+XHJcblxyXG48cD5UZWFtIG1lbWJlciBNZW5ubyBzdWdnZXN0cyB0aGF0LCBpbiBvcmRlciB0byBnZXQgdGhlaXIgZm9vZCBhcyBmYXN0IGFzIHBvc3NpYmxlLCB0aGV5IHNob3VsZCBqb2luIHRoZSBzaG9ydGVzdCBxdWV1ZS4gVGVhbSBtZW1iZXIgU2FyYWggZGlzYWdyZWVzOiBzaGUgbm90aWNlcyB0aGF0IHNvbWUgZW1wbG95ZWVzIGFyZSBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gdGhlaXIgY29sbGVhZ3VlcywgaGVuY2UgdGhlIHRlYW0gc2hvdWxkIGpvaW4gdGhlIHF1ZXVlIG9mIHRoZSBmYXN0ZXN0IGVtcGxveWVlLiBUZWFtIG1lbWJlciBYZW5vbiwgaG93ZXZlciwgbm90aWNlcyB0aGF0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgc29tZSBlbXBsb3llZXMgc3dpdGNoIHdpdGggdGhlaXIgY29sbGVhZ3Vlcy4gSWYgYSBjdXN0b21lciB3YXMgYmVpbmcgaGVscGVkIGR1cmluZyB0aGUgY2hhbmdlLCB0aGlzIHRha2VzIHRpbWUsIHNpbmNlIHRoZSBuZXcgZW1wbG95ZWUgaGFzIHRvIHN0YXJ0IGFsbCBvdmVyIGFnYWluIGluIGhlbHBpbmcgdGhlIGN1c3RvbWVyLiBJZiB0aGUgY3VzdG9tZXImIzM5O3Mgb3JkZXIgd291bGQgaGF2ZSBiZWVuJm5ic3A7ZmluaXNoZWQgYXQgdGhlIG1vbWVudCBvZiB0aGUgY2hhbmdlLCB0aG91Z2gsIHRoZSBjdXN0b21lciYjMzk7cyBvcmRlciBpcyBmaVx1MDAxY25pc2hlZCBcdTAwMWNmaXJzdCBhbmQgdGhlIG5ldyBlbXBsb3llZSBpbW1lZGlhdGVseSBjb250aW51ZXMgc2VydmluZyB0aGUgbmV4dCBjdXN0b21lciB3aXRob3V0IGRlbGF5LiBCZXNpZGVzIHRoYXQsIHRoZSBzZXJ2aWNlIHNwZWVkIGlzIGFsc28gZGVwZW5kZW50IG9uIHRoZSB0eXBlIG9mIGN1c3RvbWVyOiBhIGZhbWlseSB0YWtlcyBjb25zaWRlcmFibHkgbW9yZSB0aW1lIHRvIGhlbHAgdGhhbiBhIG1pZGRsZS1hZ2VkIG1hbi48XC9wPlxyXG5cclxuPHA+VGVhbSBNU1ggZGVjaWRlcyBpdCYjMzk7cyBiZXN0IHRvIHdvcmsgZHluYW1pY2FsbHkuIEFsbCB0ZWFtIG1lbWJlcnMgaGF2ZSBhIHN0cm9uZyBwcmVkaWN0aXZlIGFiaWxpdHksIHdoaWNoIGFsbG93cyB0aGVtIHRvIGtub3cgaG93IG11Y2ggdGltZSBhbiBlbXBsb3llZSB3aWxsIG5lZWQgdG8gaGVscCBhIGNlcnRhaW4gY3VzdG9tZXIuIEFzIHRoZXkgZW50ZXIgdGhlIEJ1cmdlciBLaW5nLCB0aGV5IGNhbGN1bGF0ZSBmb3IgZWFjaCBxdWV1ZSBob2UgbG9uZyBpdCB3aWxsIHRha2UgdW50aWwgYWxsIGN1c3RvbWVycyBpbiB0aGF0IHF1ZXVlIGhhdmUgYmVlbiBoZWxwZWQuIFRoZXkgdGhlbiBqb2luIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgdGhlIFx1MDAxY2ZpcnN0IG9uZSB0byBiZSBlbXB0eS4gV2hlbiB0aGUgc2l0dWF0aW9uIGNoYW5nZXMsIGZvciBleGFtcGxlIHdoZW4gdGhlIGVtcGxveWVlIGF0IGEgY291bnRlciBjaGFuZ2VzLCB0aGV5IHJlZXZhbHVhdGUgd2hpY2ggcXVldWUgdGhleSBzaG91bGQgam9pbiB0byBiZSBhYmxlIHRvIG9yZGVyIGFzIHNvb24gYXMgcG9zc2libGUuIElmIGl0IHR1cm5zIG91dCBpdCYjMzk7cyBtb3JlIGVmZmVjdGl2ZSB0byBqb2luIGFub3RoZXIgcXVldWUsIHRoZXkgd2lsbCBub3QgaGVzaXRhdGUuIElmIHRlYW0gTVNYIGhhcyB0byBjaG9vc2UgZnJvbSBtdWx0aXBsZSBxdWV1ZXMgdGhhdCB3b3VsZCBiZSBlcXVhbGx5IGVmZmVjdGl2ZSwgdGhleSBjaG9vc2UgdGhlIHF1ZXVlIHdpdGggdGhlIGxvd2VzdCBpZGVudGlmaWNhdGlvbiBudW1iZXIsIHVubGVzcyB0aGV5JiMzOTtyZSBpbiBvbmUgb2YgdGhvc2UgcXVldWVzIHRoZW1zZWx2ZXMsIGluIHdoaWNoIGNhc2UgdGhleSB3aWxsIG5vdCBzd2l0Y2ggcXVldWVzLiBPZiBjb3Vyc2UsIHdoZW4gdGhlIHRlYW0gc3dpdGNoZXMgcXVldWVzLCB0aGV5IGpvaW4gdGhlIGVuZCBvZiB0aGUgbmV3IHF1ZXVlLiBUaGUgc3dpdGNoaW5nIGl0c2VsZiB0YWtlcyBubyB0aW1lIGF0IGFsbC48XC9wPlxyXG5cclxuPHA+R2l2ZW4gYSBzZXQgb2YgZW1wbG95ZWVzLCBxdWV1ZXMgb2YgY3VzdG9tZXJzIGFuZCBhIHNjaGVkdWxlIG9mIGV2ZW50cywgZmlndXJlIG91dCBob3cgbWFueSBtaW51dGVzIGl0IHRha2VzIGJlZm9yZSB0aGUgdGVhbSBjYW4gb3JkZXIgdGhlaXIgd2VsbC1lYXJuZWQgZGluZXIgaWYgdGhleSBjaG9vc2UgdGhlaXIgcXVldWVzIG9wdGltYWxseS48XC9wPlxyXG4iLCJpbnB1dCI6Ijx1bD5cclxuXHQ8bGk+VGhlJm5ic3A7Zmlyc3QgbGluZSBvZiBpbnB1dCBjb25zaXN0cyBvZiB0aGUgaW50ZWdlciBudW1iZXIgbiAoMCAmbHQ7IG4gJmxlOyAxMDAwMCksIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlczs8XC9saT5cclxuXHQ8bGk+VGhlbiwgZm9yIGVhY2ggdGVzdCBjYXNlOlxyXG5cdDx1bD5cclxuXHRcdDxsaT5BIGxpbmUgd2l0aCBvbmUgcG9zaXRpdmUgaW50ZWdlciBtICgxICZsZTsgbSAmbGU7IDEwKTogdGhlIG51bWJlciBvZiBxdWV1ZXM7PFwvbGk+XHJcblx0XHQ8bGk+Rm9yIGVhY2ggcXVldWUgdHdvIGxpbmVzOlxyXG5cdFx0PHVsPlxyXG5cdFx0XHQ8bGk+QSBsaW5lIHdpdGggdGhyZWUgcG9zaXRpdmUgaW50ZWdlciBudW1iZXJzIGkgKDAgJmxlOyBpICZsdDsgbSk6IHRoZSAoaWRlbnRpZmljYXRpb24tKSBudW1iZXIgb2YgdGhlIHF1ZXVlLCBpPHN1Yj5jPFwvc3ViPiAoMCAmbHQ7IGk8c3ViPmM8XC9zdWI+ICZsZTsgMzApOiB0aGUgbnVtYmVyIG9mIGN1c3RvbWVycyBpbiB0aGUgcXVldWUgYXQgdGhlIG1vbWVudCB0aGF0IHRlYW0gTVNYIGVudGVycyB0aGUgQnVyZ2VyIEtpbmcsIGFuZCBlPHN1Yj5jPFwvc3ViPiAoMCAmbGU7IGU8c3ViPmM8XC9zdWI+ICZsZTsgMTApOiB0aGUgbWluaW11bSBhbW91bnQgb2YgbWludXRlcyB0aGF0IHRoZSBlbXBsb3llZSBmb3IgcXVldWUgaSB0YWtlcyB0byBoZWxwIGEgY3VzdG9tZXIuIFRoZSBudW1iZXJzIGFyZSBzZXBhcmF0ZWQgYnkgYSBzcGFjZTs8XC9saT5cclxuXHRcdFx0PGxpPkEgbGluZSB3aXRoIGk8c3ViPmM8XC9zdWI+IHBvc2l0aXZlIGludGVnZXIgbnVtYmVycywgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2hlcmUgZWFjaCBudW1iZXIgcmVwcmVzZW50cyBhIGN1c3RvbWVyIGluIHF1ZXVlIGkgYW5kIHRoZSB2YWx1ZSAoMCAmbGU7IHZhbHVlICZsZTsgMTUpIHJlcHJlc2VudHMgdGhlIGFtb3VudCBvZiBleHRyYSBtaW51dGVzIGl0IHRha2VzIGZvciBhbiBlbXBsb3llZSB0byBoZWxwIHRoaXMgY3VzdG9tZXIuIFRoZSBmaXJzdCBjdXN0b21lciBpbiB0aGUgbGlzdCBpcyB0aGUgb25lIHRoYXQgaXMgc3RhbmRpbmcgaW4gZnJvbnQgb2YgdGhlIGVtcGxveWVlIChhbmQgd2lsbCBpbW1lZGlhdGVseSBiZSBoZWxwZWQgYnkgdGhlIGVtcGxveWVlKSB3aGlsZSB0aGUgbGFzdCBvbmUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuPFwvbGk+XHJcblx0XHQ8XC91bD5cclxuXHRcdDxcL2xpPlxyXG5cdFx0PGxpPkEgbGluZSB3aXRoIG9uZSBwb3NpdGl2ZSBpbnRlZ2VyIHYgKDAgJmxlOyB2ICZsZTsgMTAwKTogdGhlIG51bWJlciBvZiBldmVudHMgdGFraW5nIHBsYWNlOzxcL2xpPlxyXG5cdFx0PGxpPlRoZW4gZm9yIGVhY2ggZXZlbnQgYSBsaW5lIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBmb2xsb3dpbmc6XHJcblx0XHQ8dWw+XHJcblx0XHRcdDxsaT5Gb3IgdGhlIGV2ZW50IG9mIGEgbmV3IGN1c3RvbWVyIGpvaW5pbmcgYSBxdWV1ZTogVGhlIHN0cmluZyAmcXVvdDtqb2luJnF1b3Q7IGFuZCB0aHJlZSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlcnMgdDxzdWI+diA8XC9zdWI+KDAgJmx0OyB0PHN1Yj52PFwvc3ViPiAmbGU7IDMwMCksIHRoZSBtb21lbnQgKGJlZ2lubmluZyBvZiB0aGUgbWludXRlKSBhdCB3aGljaCB0aGUgZXZlbnQgb2NjdXJzLCBpPHN1Yj52PFwvc3ViPiAoMCAmbGU7IGk8c3ViPnY8XC9zdWI+ICZsdDsgbSksIHRoZSBxdWV1ZSBhdCB3aGljaCBhIG5ldyBjdXN0b21lciBqb2lucyBhbmQgYzxzdWI+djxcL3N1Yj4gKDAgJmxlOyBjPHN1Yj52IDxcL3N1Yj4mbGU7IDE1KSwgdGhlIGFtb3VudCBvZiBleHRyYSBtaW51dGVzIGl0IHRha2VzIGZvciBhbiBlbXBsb3llZSB0byBoZWxwIHRoaXMgY3VzdG9tZXIuIFRoZSBzdHJpbmcgYW5kIG51bWJlcnMgYXJlIHNlcGFyYXRlZCBieSBzcGFjZXMuIEEgbmV3IGN1c3RvbWVyIGFsd2F5cyB0YWtlcyBwbGFjZSBsYXN0IGluIGxpbmU7PFwvbGk+XHJcblx0XHRcdDxsaT5Gb3IgdGhlIGV2ZW50IG9mIGFuIGVtcGxveWVlIGJlaW5nIHJlcGxhY2VkIGJ5IGFub3RoZXI6IHRoZSBzdHJpbmcgJnF1b3Q7Y2hhbmdlJnF1b3Q7IGFuZCB0aHJlZSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlcnMgdDxzdWI+djxcL3N1Yj4gKDEgJmxlOyB0PHN1Yj52PFwvc3ViPiAmbGU7IDMwMCksIHRoZSBtb21lbnQgKGJlZ2lubmluZyBvZiB0aGUgbWludXRlKSBhdCB3aGljaCB0aGUgZXZlbnQgb2NjdXJzLCBpPHN1Yj52PFwvc3ViPiAoMCAmbGU7IGk8c3ViPnYgPFwvc3ViPiZsdDsgbSksIHRoZSBxdWV1ZSBhdCB3aGljaCB0aGUgZW1wbG95ZWUgd2lsbCBiZSByZXBsYWNlZCBieSBhIG5ldyBvbmUgYW5kIGU8c3ViPnYgPFwvc3ViPigwICZsZTsgZTxzdWI+djxcL3N1Yj4gJmxlOyAxMCksIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBtaW51dGVzIHRoYXQgdGhlIG5ldyBlbXBsb3llZSBmb3IgcXVldWUgaXYgdGFrZXMgdG8gaGVscCBhIGN1c3RvbWVyLjxcL2xpPlxyXG5cdFx0XHQ8bGk+VGhlIHN0cmluZyBhbmQgbnVtYmVycyBhcmUgc2VwYXJhdGVkIGJ5IHNwYWNlcy48XC9saT5cclxuXHRcdDxcL3VsPlxyXG5cdFx0PFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+Tm8gbW9yZSB0aGFuIG9uZSBldmVudCB0YWtlcyBwbGFjZSBpbiB0aGUgc2FtZSBtaW51dGUuIEluIGFkZGl0aW9uLCB0aGVyZSB3aWxsIG5ldmVyIGJlIG1vcmUgdGhhbiAzMCBjdXN0b21lcnMgaW4gYSBxdWV1ZSAoZXhjbHVkaW5nIHRlYW0gTVNYKSBhdCBhbnkgdGltZS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCB0ZXN0IGNhc2UgdGhlIG91dHB1dCBjb250YWlucyBvbmUgbGluZSB3aXRoIGEgc2luZ2xlIGludGVnZXI6IHRoZSBudW1iZXIgb2YgbWludXRlcyB0ZWFtIE1TWCBuZWVkcyB0byB3YWl0IGJlZm9yZSB0aGV5IGNhbiBvcmRlciB0aGVpciBmb29kLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiJ9LHsicHJvYmxlbV9pZCI6IjIwMzAiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJCdXJnZXIgS2luZyIsImRlc2NyaXB0aW9uIjoiPHA+QWZ0ZXIgdGhlIHByb2dyYW1taW5nIGNvbnRlc3QgdGVhbSBNU1ggZGVjaWRlcyB0byBncmFiIGEgYml0ZSBhdCB0aGUgQnVyZ2VyIEtpbmcuIEl0IHR1cm5zIG91dCBpdCYjMzk7cyBhIHJhdGhlciBidXN5IGV2ZW5pbmcgdGhlcmU6IGVhY2ggY291bnRlciBoYXMgYSBxdWV1ZSBvZiBwZW9wbGUgd2FpdGluZyB0byBvcmRlciB0aGVpciBtZWFscyBhbmQgbW9yZSBwZW9wbGUga2VlcCBwb3VyaW5nIGluLiBTaW5jZSB0aGV5JiMzOTtyZSByYXRoZXIgaHVuZ3J5IGZyb20gYSBsb25nIGRheSBvZiBwcm9ncmFtbWluZywgdGVhbSBNU1ggd2FudHMgdG8gb3JkZXIgZm9vZCBhcyBzb29uIGFzIHBvc3NpYmxlLjxcL3A+XHJcblxyXG48cD5UZWFtIG1lbWJlciBNZW5ubyBzdWdnZXN0cyB0aGF0LCBpbiBvcmRlciB0byBnZXQgdGhlaXIgZm9vZCBhcyBmYXN0IGFzIHBvc3NpYmxlLCB0aGV5IHNob3VsZCBqb2luIHRoZSBzaG9ydGVzdCBxdWV1ZS4gVGVhbSBtZW1iZXIgU2FyYWggZGlzYWdyZWVzOiBzaGUgbm90aWNlcyB0aGF0IHNvbWUgZW1wbG95ZWVzIGFyZSBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gdGhlaXIgY29sbGVhZ3VlcywgaGVuY2UgdGhlIHRlYW0gc2hvdWxkIGpvaW4gdGhlIHF1ZXVlIG9mIHRoZSBmYXN0ZXN0IGVtcGxveWVlLiBUZWFtIG1lbWJlciBYZW5vbiwgaG93ZXZlciwgbm90aWNlcyB0aGF0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgc29tZSBlbXBsb3llZXMgc3dpdGNoIHdpdGggdGhlaXIgY29sbGVhZ3Vlcy4gSWYgYSBjdXN0b21lciB3YXMgYmVpbmcgaGVscGVkIGR1cmluZyB0aGUgY2hhbmdlLCB0aGlzIHRha2VzIHRpbWUsIHNpbmNlIHRoZSBuZXcgZW1wbG95ZWUgaGFzIHRvIHN0YXJ0IGFsbCBvdmVyIGFnYWluIGluIGhlbHBpbmcgdGhlIGN1c3RvbWVyLiBJZiB0aGUgY3VzdG9tZXImIzM5O3Mgb3JkZXIgd291bGQgaGF2ZSBiZWVuJm5ic3A7ZmluaXNoZWQgYXQgdGhlIG1vbWVudCBvZiB0aGUgY2hhbmdlLCB0aG91Z2gsIHRoZSBjdXN0b21lciYjMzk7cyBvcmRlciBpcyBmaVx1MDAxY25pc2hlZCBcdTAwMWNmaXJzdCBhbmQgdGhlIG5ldyBlbXBsb3llZSBpbW1lZGlhdGVseSBjb250aW51ZXMgc2VydmluZyB0aGUgbmV4dCBjdXN0b21lciB3aXRob3V0IGRlbGF5LiBCZXNpZGVzIHRoYXQsIHRoZSBzZXJ2aWNlIHNwZWVkIGlzIGFsc28gZGVwZW5kZW50IG9uIHRoZSB0eXBlIG9mIGN1c3RvbWVyOiBhIGZhbWlseSB0YWtlcyBjb25zaWRlcmFibHkgbW9yZSB0aW1lIHRvIGhlbHAgdGhhbiBhIG1pZGRsZS1hZ2VkIG1hbi48XC9wPlxyXG5cclxuPHA+VGVhbSBNU1ggZGVjaWRlcyBpdCYjMzk7cyBiZXN0IHRvIHdvcmsgZHluYW1pY2FsbHkuIEFsbCB0ZWFtIG1lbWJlcnMgaGF2ZSBhIHN0cm9uZyBwcmVkaWN0aXZlIGFiaWxpdHksIHdoaWNoIGFsbG93cyB0aGVtIHRvIGtub3cgaG93IG11Y2ggdGltZSBhbiBlbXBsb3llZSB3aWxsIG5lZWQgdG8gaGVscCBhIGNlcnRhaW4gY3VzdG9tZXIuIEFzIHRoZXkgZW50ZXIgdGhlIEJ1cmdlciBLaW5nLCB0aGV5IGNhbGN1bGF0ZSBmb3IgZWFjaCBxdWV1ZSBob2UgbG9uZyBpdCB3aWxsIHRha2UgdW50aWwgYWxsIGN1c3RvbWVycyBpbiB0aGF0IHF1ZXVlIGhhdmUgYmVlbiBoZWxwZWQuIFRoZXkgdGhlbiBqb2luIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgdGhlIFx1MDAxY2ZpcnN0IG9uZSB0byBiZSBlbXB0eS4gV2hlbiB0aGUgc2l0dWF0aW9uIGNoYW5nZXMsIGZvciBleGFtcGxlIHdoZW4gdGhlIGVtcGxveWVlIGF0IGEgY291bnRlciBjaGFuZ2VzLCB0aGV5IHJlZXZhbHVhdGUgd2hpY2ggcXVldWUgdGhleSBzaG91bGQgam9pbiB0byBiZSBhYmxlIHRvIG9yZGVyIGFzIHNvb24gYXMgcG9zc2libGUuIElmIGl0IHR1cm5zIG91dCBpdCYjMzk7cyBtb3JlIGVmZmVjdGl2ZSB0byBqb2luIGFub3RoZXIgcXVldWUsIHRoZXkgd2lsbCBub3QgaGVzaXRhdGUuIElmIHRlYW0gTVNYIGhhcyB0byBjaG9vc2UgZnJvbSBtdWx0aXBsZSBxdWV1ZXMgdGhhdCB3b3VsZCBiZSBlcXVhbGx5IGVmZmVjdGl2ZSwgdGhleSBjaG9vc2UgdGhlIHF1ZXVlIHdpdGggdGhlIGxvd2VzdCBpZGVudGlmaWNhdGlvbiBudW1iZXIsIHVubGVzcyB0aGV5JiMzOTtyZSBpbiBvbmUgb2YgdGhvc2UgcXVldWVzIHRoZW1zZWx2ZXMsIGluIHdoaWNoIGNhc2UgdGhleSB3aWxsIG5vdCBzd2l0Y2ggcXVldWVzLiBPZiBjb3Vyc2UsIHdoZW4gdGhlIHRlYW0gc3dpdGNoZXMgcXVldWVzLCB0aGV5IGpvaW4gdGhlIGVuZCBvZiB0aGUgbmV3IHF1ZXVlLiBUaGUgc3dpdGNoaW5nIGl0c2VsZiB0YWtlcyBubyB0aW1lIGF0IGFsbC48XC9wPlxyXG5cclxuPHA+R2l2ZW4gYSBzZXQgb2YgZW1wbG95ZWVzLCBxdWV1ZXMgb2YgY3VzdG9tZXJzIGFuZCBhIHNjaGVkdWxlIG9mIGV2ZW50cywgZmlndXJlIG91dCBob3cgbWFueSBtaW51dGVzIGl0IHRha2VzIGJlZm9yZSB0aGUgdGVhbSBjYW4gb3JkZXIgdGhlaXIgd2VsbC1lYXJuZWQgZGluZXIgaWYgdGhleSBjaG9vc2UgdGhlaXIgcXVldWVzIG9wdGltYWxseS48XC9wPlxyXG4iLCJpbnB1dCI6Ijx1bD5cclxuXHQ8bGk+VGhlJm5ic3A7Zmlyc3QgbGluZSBvZiBpbnB1dCBjb25zaXN0cyBvZiB0aGUgaW50ZWdlciBudW1iZXIgbiAoMCAmbHQ7IG4gJmxlOyAxMDAwMCksIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlczs8XC9saT5cclxuXHQ8bGk+VGhlbiwgZm9yIGVhY2ggdGVzdCBjYXNlOlxyXG5cdDx1bD5cclxuXHRcdDxsaT5BIGxpbmUgd2l0aCBvbmUgcG9zaXRpdmUgaW50ZWdlciBtICgxICZsZTsgbSAmbGU7IDEwKTogdGhlIG51bWJlciBvZiBxdWV1ZXM7PFwvbGk+XHJcblx0XHQ8bGk+Rm9yIGVhY2ggcXVldWUgdHdvIGxpbmVzOlxyXG5cdFx0PHVsPlxyXG5cdFx0XHQ8bGk+QSBsaW5lIHdpdGggdGhyZWUgcG9zaXRpdmUgaW50ZWdlciBudW1iZXJzIGkgKDAgJmxlOyBpICZsdDsgbSk6IHRoZSAoaWRlbnRpZmljYXRpb24tKSBudW1iZXIgb2YgdGhlIHF1ZXVlLCBpPHN1Yj5jPFwvc3ViPiAoMCAmbHQ7IGk8c3ViPmM8XC9zdWI+ICZsZTsgMzApOiB0aGUgbnVtYmVyIG9mIGN1c3RvbWVycyBpbiB0aGUgcXVldWUgYXQgdGhlIG1vbWVudCB0aGF0IHRlYW0gTVNYIGVudGVycyB0aGUgQnVyZ2VyIEtpbmcsIGFuZCBlPHN1Yj5jPFwvc3ViPiAoMCAmbGU7IGU8c3ViPmM8XC9zdWI+ICZsZTsgMTApOiB0aGUgbWluaW11bSBhbW91bnQgb2YgbWludXRlcyB0aGF0IHRoZSBlbXBsb3llZSBmb3IgcXVldWUgaSB0YWtlcyB0byBoZWxwIGEgY3VzdG9tZXIuIFRoZSBudW1iZXJzIGFyZSBzZXBhcmF0ZWQgYnkgYSBzcGFjZTs8XC9saT5cclxuXHRcdFx0PGxpPkEgbGluZSB3aXRoIGk8c3ViPmM8XC9zdWI+IHBvc2l0aXZlIGludGVnZXIgbnVtYmVycywgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2hlcmUgZWFjaCBudW1iZXIgcmVwcmVzZW50cyBhIGN1c3RvbWVyIGluIHF1ZXVlIGkgYW5kIHRoZSB2YWx1ZSAoMCAmbGU7IHZhbHVlICZsZTsgMTUpIHJlcHJlc2VudHMgdGhlIGFtb3VudCBvZiBleHRyYSBtaW51dGVzIGl0IHRha2VzIGZvciBhbiBlbXBsb3llZSB0byBoZWxwIHRoaXMgY3VzdG9tZXIuIFRoZSBmaXJzdCBjdXN0b21lciBpbiB0aGUgbGlzdCBpcyB0aGUgb25lIHRoYXQgaXMgc3RhbmRpbmcgaW4gZnJvbnQgb2YgdGhlIGVtcGxveWVlIChhbmQgd2lsbCBpbW1lZGlhdGVseSBiZSBoZWxwZWQgYnkgdGhlIGVtcGxveWVlKSB3aGlsZSB0aGUgbGFzdCBvbmUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuPFwvbGk+XHJcblx0XHQ8XC91bD5cclxuXHRcdDxcL2xpPlxyXG5cdFx0PGxpPkEgbGluZSB3aXRoIG9uZSBwb3NpdGl2ZSBpbnRlZ2VyIHYgKDAgJmxlOyB2ICZsZTsgMTAwKTogdGhlIG51bWJlciBvZiBldmVudHMgdGFraW5nIHBsYWNlOzxcL2xpPlxyXG5cdFx0PGxpPlRoZW4gZm9yIGVhY2ggZXZlbnQgYSBsaW5lIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBmb2xsb3dpbmc6XHJcblx0XHQ8dWw+XHJcblx0XHRcdDxsaT5Gb3IgdGhlIGV2ZW50IG9mIGEgbmV3IGN1c3RvbWVyIGpvaW5pbmcgYSBxdWV1ZTogVGhlIHN0cmluZyAmcXVvdDtqb2luJnF1b3Q7IGFuZCB0aHJlZSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlcnMgdDxzdWI+diA8XC9zdWI+KDAgJmx0OyB0PHN1Yj52PFwvc3ViPiAmbGU7IDMwMCksIHRoZSBtb21lbnQgKGJlZ2lubmluZyBvZiB0aGUgbWludXRlKSBhdCB3aGljaCB0aGUgZXZlbnQgb2NjdXJzLCBpPHN1Yj52PFwvc3ViPiAoMCAmbGU7IGk8c3ViPnY8XC9zdWI+ICZsdDsgbSksIHRoZSBxdWV1ZSBhdCB3aGljaCBhIG5ldyBjdXN0b21lciBqb2lucyBhbmQgYzxzdWI+djxcL3N1Yj4gKDAgJmxlOyBjPHN1Yj52IDxcL3N1Yj4mbGU7IDE1KSwgdGhlIGFtb3VudCBvZiBleHRyYSBtaW51dGVzIGl0IHRha2VzIGZvciBhbiBlbXBsb3llZSB0byBoZWxwIHRoaXMgY3VzdG9tZXIuIFRoZSBzdHJpbmcgYW5kIG51bWJlcnMgYXJlIHNlcGFyYXRlZCBieSBzcGFjZXMuIEEgbmV3IGN1c3RvbWVyIGFsd2F5cyB0YWtlcyBwbGFjZSBsYXN0IGluIGxpbmU7PFwvbGk+XHJcblx0XHRcdDxsaT5Gb3IgdGhlIGV2ZW50IG9mIGFuIGVtcGxveWVlIGJlaW5nIHJlcGxhY2VkIGJ5IGFub3RoZXI6IHRoZSBzdHJpbmcgJnF1b3Q7Y2hhbmdlJnF1b3Q7IGFuZCB0aHJlZSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlcnMgdDxzdWI+djxcL3N1Yj4gKDEgJmxlOyB0PHN1Yj52PFwvc3ViPiAmbGU7IDMwMCksIHRoZSBtb21lbnQgKGJlZ2lubmluZyBvZiB0aGUgbWludXRlKSBhdCB3aGljaCB0aGUgZXZlbnQgb2NjdXJzLCBpPHN1Yj52PFwvc3ViPiAoMCAmbGU7IGk8c3ViPnYgPFwvc3ViPiZsdDsgbSksIHRoZSBxdWV1ZSBhdCB3aGljaCB0aGUgZW1wbG95ZWUgd2lsbCBiZSByZXBsYWNlZCBieSBhIG5ldyBvbmUgYW5kIGU8c3ViPnYgPFwvc3ViPigwICZsZTsgZTxzdWI+djxcL3N1Yj4gJmxlOyAxMCksIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBtaW51dGVzIHRoYXQgdGhlIG5ldyBlbXBsb3llZSBmb3IgcXVldWUgaXYgdGFrZXMgdG8gaGVscCBhIGN1c3RvbWVyLjxcL2xpPlxyXG5cdFx0XHQ8bGk+VGhlIHN0cmluZyBhbmQgbnVtYmVycyBhcmUgc2VwYXJhdGVkIGJ5IHNwYWNlcy48XC9saT5cclxuXHRcdDxcL3VsPlxyXG5cdFx0PFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+Tm8gbW9yZSB0aGFuIG9uZSBldmVudCB0YWtlcyBwbGFjZSBpbiB0aGUgc2FtZSBtaW51dGUuIEluIGFkZGl0aW9uLCB0aGVyZSB3aWxsIG5ldmVyIGJlIG1vcmUgdGhhbiAzMCBjdXN0b21lcnMgaW4gYSBxdWV1ZSAoZXhjbHVkaW5nIHRlYW0gTVNYKSBhdCBhbnkgdGltZS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCB0ZXN0IGNhc2UgdGhlIG91dHB1dCBjb250YWlucyBvbmUgbGluZSB3aXRoIGEgc2luZ2xlIGludGVnZXI6IHRoZSBudW1iZXIgb2YgbWludXRlcyB0ZWFtIE1TWCBuZWVkcyB0byB3YWl0IGJlZm9yZSB0aGV5IGNhbiBvcmRlciB0aGVpciBmb29kLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=