{"id":6488,"date":"2026-07-11T12:15:03","date_gmt":"2026-07-11T12:15:03","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-13-test-2-speaking\/"},"modified":"2026-07-12T03:16:11","modified_gmt":"2026-07-12T03:16:11","slug":"celpip-set-13-test-2-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-13-test-2-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 13 \u00b7 Practice Test 2"},"content":{"rendered":"<div id=\"clp-spk-root\" style=\"min-height:300px\">\n<p style=\"text-align:center;padding:40px 0;color:#888\">Loading CELPIP Speaking\u2026<\/p>\n<\/div>\n<p><script>eval(atob(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0IjoxMywidGVzdCI6MiwidGl0bGUiOiJDRUxQSVAgU3BlYWtpbmcgXHUyMDE0IFNldCAxMyBcdTAwYjcgUHJhY3RpY2UgVGVzdCAyIiwiaGVhZGVyIjoiUHJhY3RpY2UgVGVzdCAyIiwiaW1ncyI6eyJzY2VuZSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zMTN0Mi1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MxM3QyLW9wdC1hLmpwZyIsIm9wdEIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEzdDItb3B0LWIuanBnIiwib3B0T3RoZXIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEzdDItb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEzdDItdW51c3VhbC5qcGcifSwib3RoZXJVcmwiOiIvY2VscGlwLXNldC0xMy10ZXN0LTEtc3BlYWtpbmcvIiwidGFza3MiOlt7ImsiOiJ3IiwibnVtIjowLCJ0eXBlRW4iOiJTcGVha2luZyBQcmFjdGljZSBUYXNrIiwicHJlcCI6MzAsInJlYyI6NjAsIndhcm11cCI6dHJ1ZSwicHJvbXB0IjoiVGFsayBhYm91dCBvbmUgb2YgeW91ciBiZXN0IGZyaWVuZHMuIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhlIFByYWN0aWNlIFRhc2sgKHdhcm0tdXApIGlzIE5PVCBzY29yZWQgXHUyMDE0IGl0IGlzIGhlcmUgdG8gaGVscCB5b3UgZ2V0IHVzZWQgdG8gdGhlIGNvbnRyb2xzIGFuZCB3YXJtIHVwIHlvdXIgdm9pY2UuIiwiU3BlYWsgbmF0dXJhbGx5IGFib3V0IGEgYmVzdCBmcmllbmQ6IHRoZWlyIG5hbWUsIGhvdyB5b3UgbWV0LCB0aGVpciBwZXJzb25hbGl0eSwgYSBtZW1vcnkgeW91IHNoYXJlLiIsIlVzZSBpdCB0byBhZGp1c3QgeW91ciBwb3N0dXJlLCBtaWNyb3Bob25lIGRpc3RhbmNlLCBhbmQgc3BlYWtpbmcgcGFjZS4iXSwicGhyYXNlcyI6WyJNeSBiZXN0IGZyaWVuZCdzIG5hbWUgaXNcdTIwMjYiLCJXZSBtZXQgd2hlblx1MjAyNiIsIldoYXQgSSBsaWtlIG1vc3QgYWJvdXQgaGltL2hlciBpc1x1MjAyNiJdfSwiczYiOm51bGwsInM5IjpudWxsfSx7ImsiOiJ0MSIsIm51bSI6MSwidHlwZUVuIjoiR2l2aW5nIEFkdmljZSIsInByZXAiOjMwLCJyZWMiOjkwLCJwcm9tcHQiOiJZb3VyIGNvdXNpbiBoYXMgc3RhcnRlZCB3b3JraW5nIGluIGFuIG9mZmljZS4gVGhlIGpvYidzIGxvbmcgaG91cnMgaW4gZnJvbnQgb2YgYSBjb21wdXRlciBnaXZlIGhpbSBhIGhlYWRhY2hlIGFuZCBtYWtlIGhpbSBmZWVsIHRpcmVkLiBBZHZpc2UgeW91ciBjb3VzaW4gb24gaG93IGhlIGNhbiBhdm9pZCBoZWFkYWNoZXMgYW5kIGRyb3dzaW5lc3Mgd2hlbiB3b3JraW5nIGxvbmcgaG91cnMgYXQgYSBjb21wdXRlci4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJPcGVuaW5nOiBncmVldCB5b3VyIGZyaWVuZCBhbmQgcmVzdGF0ZSB0aGUgc2l0dWF0aW9uIGluIG9uZSBzZW50ZW5jZS4iLCJCb2R5OiBnaXZlIDJcdTIwMTMzIHBpZWNlcyBvZiBhZHZpY2UsIGVhY2ggd2l0aCBhIHJlYXNvbiBvciBleGFtcGxlIChGaXJzdFx1MjAyNiwgYmVjYXVzZVx1MjAyNjsgQW5vdGhlciBpZGVhIGlzXHUyMDI2KS4iLCJDbG9zaW5nOiBlbmNvdXJhZ2UgdGhlbSBhbmQgd2lzaCB0aGVtIGx1Y2suIiwiQWR2aXNlIHlvdXIgY291c2luIG9uIGF2b2lkaW5nIGhlYWRhY2hlcyBhbmQgZHJvd3NpbmVzcyBmcm9tIGxvbmcgaG91cnMgYXQgYSBjb21wdXRlci4gU2hvdWxkIGRvOiB0YWtlIHJlZ3VsYXIgYnJlYWtzIGFuZCB1c2UgdGhlIDIwLTIwLTIwIHJ1bGUgKGV2ZXJ5IDIwIG1pbnV0ZXMsIGxvb2sgYWJvdXQgMjAgZmVldCBhd2F5IGZvciAyMCBzZWNvbmRzKSB0byByZXN0IGhpcyBleWVzOyBkcmluayBwbGVudHkgb2Ygd2F0ZXI7IGZpeCBoaXMgcG9zdHVyZSBhbmQgc2NyZWVuIGhlaWdodCBhbmQgdHVybiBkb3duIHRoZSBicmlnaHRuZXNzIGFuZCBnbGFyZTsgYW5kIGdldCB1cCB0byBzdHJldGNoIGFuZCB3YWxrIGFyb3VuZCBldmVyeSBob3VyLiBTaG91bGQgYXZvaWQ6IHN0YXJpbmcgYXQgdGhlIHNjcmVlbiBub24tc3RvcCwgc2tpcHBpbmcgbWVhbHMsIGFuZCB0b28gbXVjaCBhZnRlcm5vb24gY2FmZmVpbmUgdGhhdCBydWlucyBoaXMgc2xlZXAuIFRlbGwgaGltIHRvIHNlZSBhIGRvY3RvciBvciBnZXQgaGlzIGV5ZXMgY2hlY2tlZCBpZiB0aGUgaGVhZGFjaGVzIGtlZXAgY29taW5nLiJdLCJwaHJhc2VzIjpbIklmIEkgd2VyZSB5b3UsIEknZFx1MjAyNiIsIllvdSBzaG91bGQgZGVmaW5pdGVseVx1MjAyNiIsIkFub3RoZXIgb3B0aW9uIGlzIHRvXHUyMDI2IiwiVHJ1c3QgbWUsIHlvdSB3b24ndCByZWdyZXQgaXQuIl19LCJzNiI6Ik9oLCBwb29yIHlvdSwgY291c2luISBIZWFkYWNoZXMgYW5kIGZlZWxpbmcgc2xlZXB5IGF0IHlvdXIgbmV3IG9mZmljZSBqb2IgaXMgaG9ycmlibGUuIERvIG5vdCB3b3JyeSwgSSBoYXZlIHNvbWUgZ29vZCBhZHZpY2UgdG8gaGVscCB5b3UgZmVlbCBiZXR0ZXIuIEZpcnN0LCBhbmQgdGhpcyBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgb25lLCB0YWtlIGJyZWFrcy4gRG8gbm90IHN0YXJlIGF0IHRoZSBjb21wdXRlciBmb3IgaG91cnMgYW5kIGhvdXJzLiBFdmVyeSB0d2VudHkgbWludXRlcywgbG9vayBmYXIgYXdheSBmcm9tIHRoZSBzY3JlZW4gZm9yIGFib3V0IHR3ZW50eSBzZWNvbmRzLiBUaGlzIHJlc3RzIHlvdXIgZXllcy4gQW5kIGV2ZXJ5IGhvdXIsIHN0YW5kIHVwLCB3YWxrIGEgbGl0dGxlLCBhbmQgc3RyZXRjaCB5b3VyIGJvZHkuIFNlY29uZCwgZHJpbmsgbG90cyBvZiB3YXRlci4gTWFueSBwZW9wbGUgZ2V0IGEgaGVhZGFjaGUganVzdCBiZWNhdXNlIHRoZXkgYXJlIHRoaXJzdHksIHNvIGtlZXAgYSBib3R0bGUgb2Ygd2F0ZXIgb24geW91ciBkZXNrIGFuZCBkcmluayBpdCBhbGwgZGF5LiBUaGlyZCwgY2hlY2sgeW91ciBzY3JlZW4gYW5kIHlvdXIgY2hhaXIuIE1ha2UgdGhlIHNjcmVlbiBub3QgdG9vIGJyaWdodCwgYW5kIHNpdCB1cCBzdHJhaWdodCB3aXRoIGEgZ29vZCBwb3N0dXJlLiBBIGJhZCBjaGFpciBjYW4gaHVydCB5b3VyIG5lY2sgYW5kIGhlYWQuIEZvdXJ0aCwgZG8gbm90IHNraXAgeW91ciBsdW5jaCwgeW91ciBicmFpbiBuZWVkcyBmb29kIGZvciBlbmVyZ3ksIHNvIGVhdCB3ZWxsLiBBbmQgdHJ5IG5vdCB0byBkcmluayB0b28gbXVjaCBjb2ZmZWUgaW4gdGhlIGFmdGVybm9vbiwgb3IgeW91IHdpbGwgbm90IHNsZWVwIGF0IG5pZ2h0LiBHb29kIHNsZWVwIGlzIHZlcnkgaW1wb3J0YW50LiBJZiB5b3UgcmVzdCB5b3VyIGV5ZXMsIGRyaW5rIHdhdGVyLCBhbmQgbW92ZSB5b3VyIGJvZHksIEkgYW0gc3VyZSB5b3Ugd2lsbCBmZWVsIG11Y2ggYmV0dGVyLiBCdXQgaWYgdGhlIGhlYWRhY2hlIGRvZXMgbm90IHN0b3AsIHBsZWFzZSBnbyBhbmQgc2VlIGEgZG9jdG9yLiBUYWtlIGNhcmUsIGNvdXNpbiEiLCJzOSI6Ik9oIG5vLCBwb29yIHlvdSwgdGhhdCBzb3VuZHMgbWlzZXJhYmxlLCBidXQgdGhlIGdvb2QgbmV3cyBpcyB0aGVzZSBjb21wdXRlciBoZWFkYWNoZXMgYXJlIHZlcnkgY29tbW9uIGFuZCB0aGVyZSBpcyBhIGxvdCB5b3UgY2FuIGRvIGFib3V0IHRoZW0uIExldCBtZSBydW4gdGhyb3VnaCB0aGUgZG9zIGFuZCBkb24ndHMuIFRoZSBzaW5nbGUgbW9zdCBpbXBvcnRhbnQgaGFiaXQgaXMgdG8gdGFrZSByZWd1bGFyIGJyZWFrcywgYmVjYXVzZSBzdGFyaW5nIGF0IGEgc2NyZWVuIGZvciBob3VycyBvbiBlbmQgaXMgd2hhdCBzdHJhaW5zIHlvdXIgZXllcyBhbmQgdHJpZ2dlcnMgdGhlIGhlYWRhY2hlcy4gVHJ5IHRoZSAyMC0yMC0yMCBydWxlOiBldmVyeSB0d2VudHkgbWludXRlcywgbG9vayBhdCBzb21ldGhpbmcgYWJvdXQgdHdlbnR5IGZlZXQgYXdheSBmb3IgdHdlbnR5IHNlY29uZHMgdG8gbGV0IHlvdXIgZXllcyByZWxheCwgYW5kIG9uY2UgYW4gaG91ciBhY3R1YWxseSBzdGFuZCB1cCwgc3RyZXRjaCwgYW5kIHdhbGsgYXJvdW5kIGZvciBhIG1pbnV0ZSBvciB0d28uIFNlY29uZCwga2VlcCBoeWRyYXRlZCwgYSBodWdlIHByb3BvcnRpb24gb2YgaGVhZGFjaGVzIGFyZSBzaW1wbHkgZGVoeWRyYXRpb24sIHNvIHBhcmsgYSBiaWcgYm90dGxlIG9mIHdhdGVyIG9uIHlvdXIgZGVzayBhbmQga2VlcCBzaXBwaW5nIGFsbCBkYXkuIFRoaXJkLCBzb3J0IG91dCB5b3VyIHNldHVwOiBwb3NpdGlvbiB0aGUgdG9wIG9mIHRoZSBzY3JlZW4gYXQgZXllIGxldmVsLCBzaXQgdXAgc3RyYWlnaHQgd2l0aCBwcm9wZXIgYmFjayBzdXBwb3J0LCBhbmQgdHVybiB0aGUgYnJpZ2h0bmVzcyBhbmQgZ2xhcmUgZG93biBzbyB5b3UgYXJlIG5vdCBzcXVpbnRpbmcuIEZvdXJ0aCwgcHJvdGVjdCB5b3VyIHNsZWVwIGFuZCB5b3VyIG1lYWxzLCBkbyBub3Qgc2tpcCBsdW5jaCBiZWNhdXNlIHlvdXIgYnJhaW4gbmVlZHMgdGhlIGZ1ZWwsIGFuZCBnbyBlYXN5IG9uIGFmdGVybm9vbiBjYWZmZWluZSBzbyB5b3UgY2FuIHNsZWVwIHByb3Blcmx5IGF0IG5pZ2h0LCBzaW5jZSBwb29yIHNsZWVwIG1ha2VzIGRheXRpbWUgZHJvd3NpbmVzcyBmYXIgd29yc2UuIFdoYXQgeW91IHNob3VsZCBub3QgZG8gaXMgcHVzaCB0aHJvdWdoIGhvdXIgYWZ0ZXIgaG91ciB3aXRob3V0IG1vdmluZywgb3IgcmVseSBvbiBlbmRsZXNzIGNvZmZlZSBhbmQgcGFpbmtpbGxlcnMuIEFuZCBpZiB0aGUgaGVhZGFjaGVzIHBlcnNpc3QgZGVzcGl0ZSBhbGwgdGhpcywgcGxlYXNlIGJvb2sgYSBkb2N0b3IncyBhcHBvaW50bWVudCBhbmQgZ2V0IHlvdXIgZXllcyB0ZXN0ZWQsIGp1c3QgdG8gcnVsZSBhbnl0aGluZyBvdXQuIExvb2sgYWZ0ZXIgeW91cnNlbGYsIGFuZCBJIGJldCB5b3Ugd2lsbCBmZWVsIHNoYXJwZXIgd2l0aGluIGEgd2Vlay4ifSx7ImsiOiJ0MiIsIm51bSI6MiwidHlwZUVuIjoiVGFsa2luZyBhYm91dCBhIFBlcnNvbmFsIEV4cGVyaWVuY2UiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiVGFsayBhYm91dCBhIHRpbWUgd2hlbiB5b3UgbWV0IHNvbWVvbmUgZm9yIHRoZSBmaXJzdCB0aW1lLiBNYXliZSB5b3UgY291bGQgdGFsayBhYm91dCBtZWV0aW5nIHlvdXIgc3BvdXNlLCBhIGZyaWVuZCwgb3IgYSBjby13b3JrZXIuIFdobyBkaWQgeW91IG1lZXQsIGhvdyBkaWQgeW91IG1lZXQgaGltIG9yIGhlciwgYW5kIHdoYXQgZGlkIHlvdSB0aGluayBhYm91dCBoaW0gb3IgaGVyIHdoZW4geW91IGZpcnN0IG1ldD8iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJBbnN3ZXIgZXZlcnkgcGFydCBvZiB0aGUgcXVlc3Rpb24gKHdoYXQgaGFwcGVuZWQgXHUyMDEzIGhvdyBpdCB1bmZvbGRlZCBcdTIwMTMgdGhlIG91dGNvbWUgLyB3aHkgaXQgaXMgbWVtb3JhYmxlKS4iLCJVc2UgcGFzdCB0ZW5zZXMgYW5kIHRlbGwgaXQgaW4gb3JkZXI6IFRoaXMgaGFwcGVuZWRcdTIwMjYgXHUyMTkyIFRoZW5cdTIwMjYgXHUyMTkyIEluIHRoZSBlbmRcdTIwMjYiLCJGaW5pc2ggd2l0aCBhIGZlZWxpbmcgb3IgYSBsZXNzb24gbGVhcm5lZC4iLCJBbnN3ZXIgdGhlIHRocmVlIHBhcnRzOiB3aG8geW91IG1ldCwgaG93IHlvdSBtZXQgdGhlbSwgYW5kIHlvdXIgZmlyc3QgaW1wcmVzc2lvbi4gVGhlIHNhbXBsZXMgZGVzY3JpYmUgbWVldGluZyB5b3VyIG5vdy1iZXN0LWZyaWVuZCBvbiB0aGUgdmVyeSBmaXJzdCBkYXkgb2YgdW5pdmVyc2l0eSwgYm90aCBsb3N0IGFuZCBsb29raW5nIGZvciB0aGUgc2FtZSBsZWN0dXJlIGhhbGwsIHN0cmlraW5nIHVwIGEgbmVydm91cyBjb252ZXJzYXRpb24gdGhhdCB0dXJuZWQgaW50byBhbiBpbnN0YW50LCBsYXN0aW5nIGZyaWVuZHNoaXAuIFBpY2sgb25lIHJlYWwgZmlyc3QgbWVldGluZyBhbmQgaW5jbHVkZSBhIHZpdmlkIGRldGFpbCBhbmQgaG93IHlvdXIgZmlyc3QgaW1wcmVzc2lvbiBjb21wYXJlcyB3aXRoIGhvdyB5b3UgZmVlbCBhYm91dCB0aGUgcGVyc29uIG5vdy4iXSwicGhyYXNlcyI6WyJUaGlzIGhhcHBlbmVkIGFib3V0IHR3byB5ZWFycyBhZ29cdTIwMjYiLCJBdCBmaXJzdFx1MjAyNiwgYnV0IHRoZW5cdTIwMjYiLCJXaGF0IG1hZGUgaXQgdW5mb3JnZXR0YWJsZSB3YXNcdTIwMjYiLCJMb29raW5nIGJhY2ssIFx1MjAyNiJdfSwiczYiOiJJIHdhbnQgdG8gdGFsayBhYm91dCB0aGUgZGF5IEkgbWV0IG15IGJlc3QgZnJpZW5kLCBNYXJpYS4gV2UgbWV0IGFib3V0IHNpeCB5ZWFycyBhZ28sIG9uIHRoZSB2ZXJ5IGZpcnN0IGRheSBvZiB1bml2ZXJzaXR5LiBJIHJlbWVtYmVyIEkgd2FzIHNvIG5lcnZvdXMgYW5kIGNvbXBsZXRlbHkgbG9zdC4gSSBjb3VsZCBub3QgZmluZCBteSBjbGFzc3Jvb20sIGFuZCBJIHdhcyBhbG1vc3QgbGF0ZS4gVGhlbiBJIHNhdyBhbm90aGVyIGdpcmwsIGFuZCBzaGUgbG9va2VkIGp1c3QgYXMgY29uZnVzZWQgYW5kIHdvcnJpZWQgYXMgbWUuIFNoZSB3YXMgaG9sZGluZyBhIG1hcCBhbmQgdHVybmluZyBpdCBhcm91bmQgYW5kIGFyb3VuZC4gSSB3YWxrZWQgdXAgdG8gaGVyIGFuZCBhc2tlZCwgJ0V4Y3VzZSBtZSwgYXJlIHlvdSBhbHNvIGxvb2tpbmcgZm9yIGxlY3R1cmUgaGFsbCBCPycgU2hlIGxhdWdoZWQgYW5kIHNhaWQsICdZZXMhIEkgYW0gdG90YWxseSBsb3N0IHRvbyEnIFNvIHdlIGRlY2lkZWQgdG8gZmluZCBpdCB0b2dldGhlci4gV2hpbGUgd2Ugd2VyZSB3YWxraW5nLCB3ZSBzdGFydGVkIHRhbGtpbmcsIGFuZCB3ZSBkaXNjb3ZlcmVkIHdlIGxpa2VkIHRoZSBzYW1lIG11c2ljIGFuZCB0aGUgc2FtZSBtb3ZpZXMuIFdoZW4gSSBmaXJzdCBtZXQgaGVyLCBJIHRob3VnaHQgc2hlIHdhcyB2ZXJ5IGZyaWVuZGx5LCBmdW5ueSwgYW5kIGVhc3kgdG8gdGFsayB0by4gQnkgdGhlIGVuZCBvZiB0aGF0IGZpcnN0IGRheSwgaXQgZmVsdCBsaWtlIEkgaGFkIGtub3duIGhlciBmb3IgeWVhcnMuIEFuZCB5b3Uga25vdyB3aGF0PyBXZSBoYXZlIGJlZW4gYmVzdCBmcmllbmRzIGV2ZXIgc2luY2UuIEl0IGlzIGZ1bm55IGhvdyBvbmUgc21hbGwgbW9tZW50LCBqdXN0IGJlaW5nIGxvc3Qgb24gdGhlIHNhbWUgZGF5LCBjYW4gZ2l2ZSB5b3UgYSBmcmllbmQgZm9yIHlvdXIgd2hvbGUgbGlmZS4gSSBhbSBzbyBoYXBweSBJIHRhbGtlZCB0byBoZXIuIiwiczkiOiJUaGUgZmlyc3QgbWVldGluZyB0aGF0IGNoYW5nZWQgbXkgbGlmZSB3YXMgdGhlIGRheSBJIG1ldCBteSBiZXN0IGZyaWVuZCwgTWFyaWEsIGFsbW9zdCBzaXggeWVhcnMgYWdvLCBvbiB0aGUgdmVyeSBmaXJzdCBtb3JuaW5nIG9mIHVuaXZlcnNpdHkuIEkgY2FuIHBpY3R1cmUgaXQgcGVyZmVjdGx5LiBJIHdhcyBhIGJ1bmRsZSBvZiBuZXJ2ZXMsIGhvcGVsZXNzbHkgbG9zdCBpbiBhIG1hemUgb2YgdW5mYW1pbGlhciBjb3JyaWRvcnMsIGFuZCBpbmNyZWFzaW5nbHkgY2VydGFpbiBJIHdhcyBnb2luZyB0byB3YWxrIGludG8gbXkgZmlyc3QtZXZlciBsZWN0dXJlIGxhdGUuIEFzIEkgaHVycmllZCBhcm91bmQgYSBjb3JuZXIsIEkgc3BvdHRlZCBhbm90aGVyIGdpcmwgd2hvIGxvb2tlZCBldmVyeSBiaXQgYXMgZmx1c3RlcmVkIGFzIEkgZmVsdCwgZnJvd25pbmcgYXQgYSBjYW1wdXMgbWFwIGFuZCByb3RhdGluZyBpdCBoZWxwbGVzc2x5IGFzIGlmIHRoYXQgbWlnaHQgbWFrZSBpdCBtYWtlIHNlbnNlLiBTb21ldGhpbmcgYWJvdXQgaGVyIG9idmlvdXMgcGFuaWMgbWFkZSBtZSBicmF2ZSwgc28gSSB3ZW50IG92ZXIgYW5kIGFza2VkIHdoZXRoZXIgc2hlIHdhcyBhbHNvIHRyeWluZyB0byBmaW5kIGxlY3R1cmUgaGFsbCBCLiBTaGUgYnVyc3Qgb3V0IGxhdWdoaW5nIGFuZCBhZG1pdHRlZCBzaGUgd2FzIGNvbXBsZXRlbHkgbG9zdCB0b28sIHNvIHdlIGFncmVlZCB0byBodW50IGZvciBpdCB0b2dldGhlci4gT24gdGhlIHdhbGsgd2UgZmVsbCBpbnRvIGVhc3kgY29udmVyc2F0aW9uIGFuZCBxdWlja2x5IHJlYWxpc2VkIHdlIGxvdmVkIHRoZSBzYW1lIGJhbmRzIGFuZCB0aGUgc2FtZSBmaWxtcywgYW5kIGJ5IHRoZSB0aW1lIHdlIGZpbmFsbHkgZm91bmQgdGhlIHJvb20gdGhlIG5lcnZlcyBoYWQgbWVsdGVkIGF3YXkuIE15IHZlcnkgZmlyc3QgaW1wcmVzc2lvbiB3YXMgdGhhdCBzaGUgd2FzIHdhcm0sIGZ1bm55IGFuZCByZW1hcmthYmx5IGVhc3kgdG8gdGFsayB0bywgdGhlIGtpbmQgb2YgcGVyc29uIHlvdSBmZWVsIHlvdSBoYXZlIGtub3duIGZvciBhZ2VzLCBhbmQgdGhhdCBpbXByZXNzaW9uIGhhcyBvbmx5IGRlZXBlbmVkIG92ZXIgdGhlIHllYXJzLiBXaGF0IHN0cmlrZXMgbWUgbW9zdCwgbG9va2luZyBiYWNrLCBpcyBob3cgYSB0aW55LCByYW5kb20gbW9tZW50LCB0d28gc3RyYW5nZXJzIGJlaW5nIGxvc3Qgb24gdGhlIHNhbWUgZGF5LCBibG9zc29tZWQgaW50byB0aGUgY2xvc2VzdCBmcmllbmRzaGlwIG9mIG15IGxpZmUuIEkgYW0gZW5kbGVzc2x5IGdyYXRlZnVsIEkgd29ya2VkIHVwIHRoZSBjb3VyYWdlIHRvIHNheSBoZWxsby4ifSx7ImsiOiJ0MyIsIm51bSI6MywidHlwZUVuIjoiRGVzY3JpYmluZyBhIFNjZW5lIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkRlc2NyaWJlIHNvbWUgdGhpbmdzIHRoYXQgYXJlIGhhcHBlbmluZyBpbiB0aGUgcGljdHVyZSBiZWxvdyBhcyB3ZWxsIGFzIHlvdSBjYW4uIFRoZSBwZXJzb24gd2l0aCB3aG9tIHlvdSBhcmUgc3BlYWtpbmcgY2Fubm90IHNlZSB0aGUgcGljdHVyZS4iLCJpbWciOiJzY2VuZSIsInRpcHMiOnsiYnVsbGV0cyI6WyJGaXJzdCBzZW50ZW5jZTogZ2l2ZSB0aGUgb3ZlcnZpZXcgKHdoZXJlIGl0IGlzLCB3aGF0IHRoZSBhdG1vc3BoZXJlIGlzIGxpa2UpLiIsIkRlc2NyaWJlIDRcdTIwMTM2IGRldGFpbHMgYnkgbG9jYXRpb246IGluIHRoZSBmb3JlZ3JvdW5kIC8gb24gdGhlIGxlZnQgLyBhdCB0aGUgYmFja1x1MjAyNjsgdXNlIHRoZSBwcmVzZW50IGNvbnRpbnVvdXMuIiwiVGhlIGxpc3RlbmVyIENBTk5PVCBzZWUgdGhlIHBpY3R1cmUgXHUyMDE0IGJlIHNwZWNpZmljOyB3aGVuIHVuc3VyZSwgdXNlIHNlZW1zIC8gYXBwZWFycyAvIGxvb2tzIGxpa2UuIiwiQSBidXN5IGNhcm5pdmFsIG9yIGZhaXJncm91bmQgbWlkd2F5IGZ1bGwgb2YgZ2FtZSBib290aHMgdW5kZXIgcmVkLWFuZC15ZWxsb3cgc3RyaXBlZCBhd25pbmdzLCB3aXRoIGEgY3Jvd2Qgb2Ygc2hhZG93eSBwZW9wbGUgaW4gdGhlIGJhY2tncm91bmQuIEdvIGluIG9yZGVyOiBvbiB0aGUgbGVmdCBhIGJveSBzaG9vdHMgaG9vcHMgYXQgYSBiYXNrZXRiYWxsIGdhbWU7IG5leHQgdG8gaXQgYSBzaG9vdGluZy1nYWxsZXJ5IGJvb3RoIHdpdGggYSB3YWxsIG9mIHJlZCB0YXJnZXRzIHdoZXJlIGEgYmFsZCBtYW4gaW4gYSB3aGl0ZSBzaGlydCBpcyBwbGF5aW5nOyBhIGJvb3RoIHdpdGggYSBicmlnaHQgdHVycXVvaXNlIHdhbGwgb2YgcGx1c2ggcHJpemVzICh1bmljb3JucywgdGVkZHkgYmVhcnMsIGEgZ3JlZW4gZGlub3NhdXIsIGEgeWVsbG93IGR1Y2ssIGEgc3RyYXdiZXJyeSkgd2hlcmUgYSBtYW4gaW4gZ3JlZW4gYWltcyBhIHRveSBndW47IGluIHRoZSBtaWRkbGUgYSB3b21hbiBpbiB5ZWxsb3cgYmVuZHMgb3ZlciBhIGNvbG91cmZ1bCBzcGlubmluZyBkcnVtIGdhbWU7IHBlb3BsZSB3YWxraW5nIGFib3V0IHdpdGggcHJpemVzIGFuZCBzbmFja3MsIGEgbWFuIGh1Z2dpbmcgYSBiaWcgcGluayB1bmljb3JuLCBzb21lb25lIGNhcnJ5aW5nIGEgYmxhY2stYW5kLXdoaXRlIGNvdywgYSBsaXR0bGUgZ2lybCB3aXRoIHBpbmsgY290dG9uIGNhbmR5LCBhIGNvdXBsZSBlYXRpbmcsIGEgY2hpbGQgb24gYSBtYW4ncyBzaG91bGRlcnM7IGFuZCBvbiB0aGUgcmlnaHQgYSBiaWcgYmx1ZSBpbmZsYXRhYmxlIHNsaWRlIHdpdGgga2lkcyBjbGltYmluZyBhbmQgc2xpZGluZy4gTWVudGlvbiB0aGUgbGl2ZWx5LCBjb2xvdXJmdWwsIG5vaXN5IGF0bW9zcGhlcmUuIl0sInBocmFzZXMiOlsiSW4gdGhlIGZvcmVncm91bmQsIFx1MjAyNiIsIk9uIHRoZSByaWdodC1oYW5kIHNpZGUsIFx1MjAyNiIsIkl0IGxvb2tzIGxpa2VcdTIwMjYiLCJUaGUgd2hvbGUgcGxhY2UgZmVlbHNcdTIwMjYiXX0sInM2IjoiVGhpcyBwaWN0dXJlIHNob3dzIGEgdmVyeSBidXN5IGFuZCBjb2xvdXJmdWwgY2Fybml2YWwsIG9yIGEgZnVuIGZhaXIuIFRoZXJlIGFyZSBtYW55IGdhbWUgYm9vdGhzIHdpdGggcmVkIGFuZCB5ZWxsb3cgc3RyaXBlZCByb29mcywgYW5kIGJlaGluZCBldmVyeW9uZSBJIGNhbiBzZWUgYSBiaWcgY3Jvd2Qgb2YgcGVvcGxlLCBidXQgdGhleSBhcmUganVzdCBkYXJrIHNoYWRvd3MuIExldCBtZSBkZXNjcmliZSB0aGUgZ2FtZXMuIE9uIHRoZSBmYXIgbGVmdCwgYSBib3kgaXMgcGxheWluZyBiYXNrZXRiYWxsLCB0cnlpbmcgdG8gdGhyb3cgdGhlIGJhbGwgaW50byB0aGUgaG9vcC4gTmV4dCB0byBoaW0sIHRoZXJlIGlzIGEgc2hvb3RpbmcgZ2FtZSB3aXRoIGEgd2FsbCBvZiByZWQgdGFyZ2V0cywgYW5kIGEgYmFsZCBtYW4gaW4gYSB3aGl0ZSBzaGlydCBpcyBwbGF5aW5nIGl0LiBUaGVuIHRoZXJlIGlzIGEgYm9vdGggZnVsbCBvZiBwcml6ZXMsIGxpa2UgdW5pY29ybnMsIHRlZGR5IGJlYXJzLCBhIGdyZWVuIGRpbm9zYXVyLCBhbmQgYSB5ZWxsb3cgZHVjaywgYWxsIGhhbmdpbmcgb24gYSBicmlnaHQgYmx1ZSB3YWxsLiBBIG1hbiBpbiBhIGdyZWVuIHNoaXJ0IGlzIHRoZXJlLCBwb2ludGluZyBhIHRveSBndW4gdG8gd2luIGEgcHJpemUuIEluIHRoZSBtaWRkbGUsIGEgd29tYW4gaW4geWVsbG93IGlzIHBsYXlpbmcgYSBnYW1lIHdpdGggYSBiaWcgY29sb3VyZnVsIHNwaW5uaW5nIGRydW0uIEFsbCBhcm91bmQsIHBlb3BsZSBhcmUgd2Fsa2luZyBhbmQgaGF2aW5nIGZ1bi4gT25lIG1hbiBpcyBjYXJyeWluZyBhIGJpZyBwaW5rIHVuaWNvcm4gdGhhdCBoZSB3b24sIGFuZCBhIGxpdHRsZSBnaXJsIGlzIGhhcHBpbHkgZWF0aW5nIHBpbmsgY290dG9uIGNhbmR5LiBPbiB0aGUgcmlnaHQgc2lkZSwgdGhlcmUgaXMgYSBiaWcgYmx1ZSBzbGlkZSwgYW5kIGNoaWxkcmVuIGFyZSBjbGltYmluZyB1cCBhbmQgc2xpZGluZyBkb3duLiBFdmVyeW9uZSBsb29rcyBzbyBoYXBweS4gSXQgaXMgYSBub2lzeSwgZXhjaXRpbmcsIGFuZCB2ZXJ5IGZ1biBwbGFjZSEiLCJzOSI6IlRoaXMgaXMgYSBsaXZlbHkgY2Fybml2YWwgbWlkd2F5LCBwYWNrZWQgd2l0aCBnYW1lIGJvb3RocyBzaXR0aW5nIHVuZGVyIGNoZWVyZnVsIHJlZC1hbmQteWVsbG93IHN0cmlwZWQgYXduaW5ncywgYW5kIGJlaGluZCBpdCBhbGwgbG9vbXMgYSBkZW5zZSBjcm93ZCBvZiBwZW9wbGUgcmVuZGVyZWQgYXMgZGFyayBzaWxob3VldHRlcy4gVGhlcmUgaXMgc29tZXRoaW5nIGdvaW5nIG9uIGF0IGV2ZXJ5IHN0YWxsLiBPdmVyIG9uIHRoZSBmYXIgbGVmdCwgYSBib3kgaXMgdHJ5aW5nIGhpcyBsdWNrIGF0IGEgYmFza2V0YmFsbCBnYW1lLCB0YWtpbmcgYWltIGF0IHRoZSBob29wLiBSaWdodCBiZXNpZGUgaXQgc3RhbmRzIGEgc2hvb3RpbmcgZ2FsbGVyeSB3aXRoIGEgd2FsbCBvZiByZWQgdGFyZ2V0cywgd2hlcmUgYSBiYWxkIG1hbiBpbiBhIHdoaXRlIHNoaXJ0IGlzIGhhdmluZyBhIGdvLiBOZXh0IGFsb25nIGlzIHRoZSBwcml6ZSBib290aCwgYSBicmlnaHQgdHVycXVvaXNlIHdhbGwgZmVzdG9vbmVkIHdpdGggcGx1c2ggdG95cywgdW5pY29ybnMsIHRlZGR5IGJlYXJzLCBhIGdyaW5uaW5nIGdyZWVuIGRpbm9zYXVyLCBhIHllbGxvdyBkdWNrIGFuZCBldmVuIGEgZ2lhbnQgc3RyYXdiZXJyeSwgYW5kIGEgbWFuIGluIGEgZ3JlZW4gc2hpcnQgaXMgbGV2ZWxsaW5nIGEgdG95IGd1biwgZGV0ZXJtaW5lZCB0byB3aW4gb25lLiBJbiB0aGUgY2VudHJlLCBhIHdvbWFuIGluIGEgeWVsbG93IHRvcCBsZWFucyBvdmVyIGEgYmlnLCBjb2xvdXJmdWwgc3Bpbm5pbmcgZHJ1bSwgc29tZSBraW5kIG9mIGx1Y2t5LWRpcCBnYW1lLiBUaGUgd2Fsa3dheXMgYXJlIGZ1bGwgb2YgaGFwcHkgZmFpci1nb2VycyBsYWRlbiB3aXRoIHByaXplcyBhbmQgc25hY2tzOiBvbmUgbWFuIGlzIGh1Z2dpbmcgYW4gZW5vcm1vdXMgcGluayB1bmljb3JuIGhlIGhhcyBjbGVhcmx5IGp1c3Qgd29uLCBhbm90aGVyIHBlcnNvbiBpcyB0b3RpbmcgYSBibGFjay1hbmQtd2hpdGUgY293LCBhIGxpdHRsZSBnaXJsIGlzIGJsaXNzZnVsbHkgd29ya2luZyB0aHJvdWdoIGEgY2xvdWQgb2YgcGluayBjb3R0b24gY2FuZHksIGEgY291cGxlIHN0cm9sbCBhbG9uZyBzaGFyaW5nIGZvb2QsIGFuZCBhIHNtYWxsIGNoaWxkIHJpZGVzIGhpZ2ggb24gYSBtYW4ncyBzaG91bGRlcnMuIEZpbmFsbHksIG9uIHRoZSByaWdodCwgYSBiaWcgYmx1ZSBpbmZsYXRhYmxlIHNsaWRlIHJpc2VzIHVwLCB3aXRoIGNoaWxkcmVuIHNjcmFtYmxpbmcgdXAgb25lIHNpZGUgYW5kIHdob29zaGluZyBkb3duIHRoZSBvdGhlci4gVGhlIHdob2xlIHNjZW5lIGJ1cnN0cyB3aXRoIGNvbG91ciwgbW92ZW1lbnQgYW5kIG5vaXNlLCBpdCBpcyB0aGUgdmVyeSBwaWN0dXJlIG9mIGEgZnVuIGRheSBvdXQgYXQgdGhlIGZhaXIuIn0seyJrIjoidDQiLCJudW0iOjQsInR5cGVFbiI6Ik1ha2luZyBQcmVkaWN0aW9ucyIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJJbiB0aGlzIHBpY3R1cmUsIHdoYXQgZG8geW91IHRoaW5rIHdpbGwgbW9zdCBwcm9iYWJseSBoYXBwZW4gbmV4dD8iLCJpbWciOiJzY2VuZSIsInRpcHMiOnsiYnVsbGV0cyI6WyJFYWNoIHByZWRpY3Rpb24gPSB3aWxsIC8gYmUgZ29pbmcgdG8gLyB3aWxsIHByb2JhYmx5ICsgYSBSRUFTT04gYmFzZWQgb24gYSBkZXRhaWwgaW4gdGhlIHBpY3R1cmUuIiwiTWFrZSAzXHUyMDEzNCBwcmVkaWN0aW9ucyBhYm91dCBkaWZmZXJlbnQgcGVvcGxlIFx1MjAxNCBkb24ndCBzdG9wIGF0IG9uZSBpZGVhLiIsIkZpbmlzaCB3aXRoIG9uZSBvdmVyYWxsIHByZWRpY3Rpb24gZm9yIHRoZSB3aG9sZSBzY2VuZS4iLCJTYW1lIGNhcm5pdmFsIG1pZHdheSBhcyBUYXNrIDMsIG5vdyBwcmVkaWN0IHdoYXQgaGFwcGVucyBuZXh0OiB0aGUgYm95IHNob290aW5nIGhvb3BzIHdpbGwgZWl0aGVyIHNpbmsgaGlzIHNob3QgYW5kIHdpbiBvciBtaXNzIGFuZCBwYXkgdG8gdHJ5IGFnYWluOyB0aGUgbWFuIHdpdGggdGhlIHRveSBndW4gd2lsbCBrbm9jayBkb3duIGEgdGFyZ2V0IGFuZCB0aGUgd29ya2VyIHdpbGwgaGFuZCBoaW0gYSBwbHVzaCBwcml6ZSBvZmYgdGhlIHR1cnF1b2lzZSB3YWxsOyB0aGUgd29tYW4gYXQgdGhlIHNwaW5uaW5nIGRydW0gd2lsbCBmaW5pc2ggaGVyIGdhbWU7IHRoZSBtYW4gY2FycnlpbmcgdGhlIGJpZyBwaW5rIHVuaWNvcm4gd2lsbCBnaXZlIGl0IHRvIGhpcyBjaGlsZCBvciBwYXJ0bmVyOyB0aGUgbGl0dGxlIGdpcmwgd2lsbCBmaW5pc2ggaGVyIGNvdHRvbiBjYW5keSBhbmQgYmVnIGZvciBhbm90aGVyIHRyZWF0OyBhbmQgdGhlIGtpZHMgb24gdGhlIGJsdWUgc2xpZGUgd2lsbCByYWNlIGJhY2sgcm91bmQgdG8gc2xpZGUgYWdhaW4uIEVuZCB3aXRoIGFuIG92ZXJhbGwgcHJlZGljdGlvbiB0aGF0IHRoZSBjcm93ZCB3aWxsIGtlZXAgZHJpZnRpbmcgZnJvbSBib290aCB0byBib290aCwgd2lubmluZyBwcml6ZXMgYW5kIGVhdGluZyBzbmFja3MsIHVudGlsIHRoZSBmYWlyIHdpbmRzIGRvd24gaW4gdGhlIGV2ZW5pbmcuIl0sInBocmFzZXMiOlsiXHUyMDI2aXMgYWJvdXQgdG9cdTIwMjYiLCJIZSdsbCBtb3N0IGxpa2VseVx1MjAyNiIsIkp1ZGdpbmcgYnlcdTIwMjYsIEkgZXhwZWN0XHUyMDI2IiwiV2l0aGluIG1pbnV0ZXMsIFx1MjAyNiJdfSwiczYiOiJJIHRoaW5rIGluIHRoZSBuZXh0IGZldyBtaW51dGVzLCB0aGlzIGNhcm5pdmFsIHdpbGwgYmUgZXZlbiBtb3JlIGZ1biBhbmQgYnVzeS4gRmlyc3QsIHRoZSBib3kgcGxheWluZyBiYXNrZXRiYWxsIHdpbGwgdGhyb3cgaGlzIGJhbGwuIE1heWJlIGhlIHdpbGwgc2NvcmUgYW5kIHdpbiBhIHByaXplIGFuZCBiZSB2ZXJ5IGhhcHB5LCBvciBtYXliZSBoZSB3aWxsIG1pc3MgYW5kIHBheSBzb21lIG1vbmV5IHRvIHRyeSBhZ2Fpbi4gTmV4dCwgdGhlIG1hbiB3aXRoIHRoZSB0b3kgZ3VuIHdpbGwgcHJvYmFibHkgaGl0IG9uZSBvZiB0aGUgcmVkIHRhcmdldHMsIGFuZCB0aGUgd29ya2VyIGluIHRoZSBib290aCB3aWxsIGdpdmUgaGltIGEgYmlnIHNvZnQgdG95LCBtYXliZSB0aGUgeWVsbG93IGR1Y2sgb3IgdGhlIGdyZWVuIGRpbm9zYXVyLiBUaGUgd29tYW4gaW4geWVsbG93IHdpbGwgZmluaXNoIGhlciBzcGlubmluZyBnYW1lIGFuZCBzZWUgaWYgc2hlIHdvbiBzb21ldGhpbmcuIFRoZSBtYW4gd2hvIGlzIGNhcnJ5aW5nIHRoYXQgYmlnIHBpbmsgdW5pY29ybiB3aWxsIHByb2JhYmx5IGdpdmUgaXQgdG8gaGlzIGxpdHRsZSBkYXVnaHRlciwgYW5kIHNoZSB3aWxsIGJlIHNvIGV4Y2l0ZWQgYW5kIGh1ZyBpdC4gVGhlIGxpdHRsZSBnaXJsIHdpdGggdGhlIGNvdHRvbiBjYW5keSB3aWxsIGZpbmlzaCBlYXRpbmcgaXQgdmVyeSBmYXN0LCBhbmQgdGhlbiBzaGUgd2lsbCBhc2sgaGVyIHBhcmVudHMgZm9yIGFub3RoZXIgc25hY2ssIG9yIGZvciBhIHJpZGUuIEFuZCB0aG9zZSBjaGlsZHJlbiBvbiB0aGUgYmlnIGJsdWUgc2xpZGUgd2lsbCBzbGlkZSBkb3duLCBsYXVnaCwgYW5kIHRoZW4gcnVuIGJhY2sgdXAgdG8gZG8gaXQgYWdhaW4gYW5kIGFnYWluLiBTbyBldmVyeWJvZHkgd2lsbCBrZWVwIG1vdmluZyBmcm9tIGdhbWUgdG8gZ2FtZSwgd2lubmluZyB0b3lzIGFuZCBlYXRpbmcgdHJlYXRzLiBUaGUgZmFpciB3aWxsIHN0YXkgYnVzeSBhbmQgaGFwcHkgdW50aWwgdGhlIHN1biBnb2VzIGRvd24gYW5kIGl0IGlzIHRpbWUgdG8gZ28gaG9tZS4iLCJzOSI6IkdpdmUgdGhpcyBjYXJuaXZhbCBhIGZldyBtb3JlIG1pbnV0ZXMgYW5kIHRoZSBmdW4gd2lsbCBqdXN0IGtlZXAgcm9sbGluZy4gVGFrZSB0aGUgYm95IGF0IHRoZSBiYXNrZXRiYWxsIGdhbWU6IGhlIGlzIGFib3V0IHRvIHJlbGVhc2UgaGlzIHNob3QsIHNvIGVpdGhlciB0aGUgYmFsbCBkcm9wcyBjbGVhbmx5IHRocm91Z2ggdGhlIGhvb3AgYW5kIGhlIHdhbGtzIGF3YXkgd2l0aCBhIHByaXplLCBvciBoZSBuYXJyb3dseSBtaXNzZXMgYW5kLCBsaWtlIGV2ZXJ5b25lIGF0IHRoZXNlIHN0YWxscywgZGlncyBvdXQgbW9yZSBjb2lucyB0byB0cnkganVzdCBvbmUgbW9yZSB0aW1lLiBUaGUgbWFuIGFpbWluZyB0aGUgdG95IGd1biBhdCB0aGUgdHVycXVvaXNlIHByaXplIHdhbGwgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGtub2NrIGRvd24gYSB0YXJnZXQgc29vbmVyIG9yIGxhdGVyLCBhdCB3aGljaCBwb2ludCB0aGUgYm9vdGggYXR0ZW5kYW50IHdpbGwgcmVhY2ggdXAgYW5kIGhhbmQgaGltIG9uZSBvZiB0aGUgcGx1c2ggdG95cywgcGVyaGFwcyB0aGF0IGdyaW5uaW5nIGdyZWVuIGRpbm9zYXVyIG9yIHRoZSB5ZWxsb3cgZHVjay4gVGhlIHdvbWFuIGxlYW5pbmcgb3ZlciB0aGUgc3Bpbm5pbmcgZHJ1bSB3aWxsIGZpbmlzaCBoZXIgcm91bmQgYW5kIGNoZWNrIHdoZXRoZXIgbHVjayB3YXMgb24gaGVyIHNpZGUuIE1lYW53aGlsZSwgdGhlIG1hbiBsdWdnaW5nIHRoYXQgZW5vcm1vdXMgcGluayB1bmljb3JuIGlzIHN1cmVseSBhYm91dCB0byBwcmVzZW50IGl0IHRvIGEgZGVsaWdodGVkIGNoaWxkIG9yIHBhcnRuZXIsIHdobyB3aWxsIHNxdWVhbCBhbmQgdGhyb3cgdGhlaXIgYXJtcyBhcm91bmQgaXQuIFRoZSBsaXR0bGUgZ2lybCBkZXZvdXJpbmcgaGVyIGNvdHRvbiBjYW5keSB3aWxsIHBvbGlzaCBpdCBvZmYgaW4gbm8gdGltZSBhbmQgaW1tZWRpYXRlbHkgc3RhcnQgbG9iYnlpbmcgaGVyIHBhcmVudHMgZm9yIGFub3RoZXIgdHJlYXQgb3IgYSBnbyBvbiBhIHJpZGUuIEFuZCB0aGUgY2hpbGRyZW4gc3dhcm1pbmcgdGhlIGJpZyBibHVlIGluZmxhdGFibGUgc2xpZGUgd2lsbCB3aG9vc2ggZG93biwgcGljayB0aGVtc2VsdmVzIHVwLCBhbmQgY2hhcmdlIHN0cmFpZ2h0IGJhY2sgdXAgdGhlIHN0ZXBzIHRvIGRvIGl0IGFsbCBvdmVyIGFnYWluLiBTdGVwIGJhY2ssIGFuZCB0aGUgc2FmZXN0IHByZWRpY3Rpb24gaXMgc2ltcGx5IG1vcmUgb2YgdGhlIHNhbWUgam95ZnVsIGNodXJuOiB0aGUgY3Jvd2QgZHJpZnRpbmcgZnJvbSBib290aCB0byBib290aCwgd2lubmluZyB0b3lzLCBtdW5jaGluZyBzbmFja3MgYW5kIHNocmlla2luZyB3aXRoIGxhdWdodGVyLCByaWdodCB1cCB1bnRpbCB0aGUgZXZlbmluZyBkcmF3cyBpbiBhbmQgdGhlIGZhaXIgc2xvd2x5IHdpbmRzIGRvd24gZm9yIHRoZSBuaWdodC4ifSx7ImsiOiJ0NSIsIm51bSI6NSwidHlwZUVuIjoiQ29tcGFyaW5nIGFuZCBQZXJzdWFkaW5nIiwicGhhc2VkIjp0cnVlLCJjaG9vc2UiOnsicHJlcCI6NjAsInNpdHVhdGlvbiI6IllvdSBhbmQgYSBjby13b3JrZXIgaGF2ZSBkZWNpZGVkIHRvIHRha2UgZ3VpdGFyIGxlc3NvbnMgaW4gdGhlIGV2ZW5pbmdzIGFmdGVyIHdvcmssIHNvIHlvdSBhcmUgc2VhcmNoaW5nIGZvciBhIHN1aXRhYmxlIG11c2ljIHNjaG9vbC4gWW91IGZvdW5kIHR3byBzdWl0YWJsZSBvcHRpb25zLiBVc2luZyB0aGUgcGljdHVyZXMgYW5kIGluZm9ybWF0aW9uIGJlbG93LCBjaG9vc2UgdGhlIG9wdGlvbiB0aGF0IHlvdSBwcmVmZXIuIEluIHRoZSBuZXh0IHNlY3Rpb24sIHlvdSB3aWxsIG5lZWQgdG8gcGVyc3VhZGUgeW91ciBjby13b3JrZXIgdGhhdCB5b3VyIGNob2ljZSBpcyB0aGUgYmV0dGVyIGNob2ljZS4iLCJub3RlIjoiSWYgeW91IGRvIG5vdCBjaG9vc2UsIHRoZSBjb21wdXRlciB3aWxsIGNob29zZSBvbmUgZm9yIHlvdS4gWW91IGRvIG5vdCBuZWVkIHRvIHNwZWFrIGZvciB0aGlzIHBhcnQuIiwib3B0aW9ucyI6W3sidGl0bGUiOiJKaW0ncyBHdWl0YXIgU2Nob29sIiwiaW1nIjoib3B0QSIsImJ1bGxldHMiOlsiJDQwIGFuIGhvdXIiLCJOZXcgaW5zdHJ1Y3RvciBlYWNoIGxlc3NvbiIsIkxlc3NvbnMgYXZhaWxhYmxlIG9uIFdlZG5lc2RheXMgb25seSIsIjEtaG91ciBkcml2ZSBmcm9tIHlvdXIgd29ya3BsYWNlIl19LHsidGl0bGUiOiJCZWF1dGlmdWwgTXVzaWMiLCJpbWciOiJvcHRCIiwiYnVsbGV0cyI6WyIkMjUgYW4gaG91ciIsIkluc3RydWN0b3JzIGhvbGQgYSBCYWNoZWxvcidzIG9mIE11c2ljIiwiTGVzc29ucyBhdmFpbGFibGUgZXZlcnkgZGF5IG9mIHRoZSB3ZWVrIiwiV2Fsa2luZyBkaXN0YW5jZSBmcm9tIHlvdXIgd29ya3BsYWNlIl19XX0sInNwZWFrIjp7InByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3VyIGNvLXdvcmtlciBpcyBzdWdnZXN0aW5nIGFub3RoZXIgbXVzaWMgc2Nob29sLiBQZXJzdWFkZSB5b3VyIGNvLXdvcmtlciB0aGF0IHRoZSBtdXNpYyBzY2hvb2wgeW91IGNob3NlIGlzIG1vcmUgc3VpdGFibGUgYnkgY29tcGFyaW5nIHRoZSB0d28uIiwib3RoZXJMYWJlbCI6IllvdXIgQ28tV29ya2VyJ3MgU3VnZ2VzdGlvbiIsIm90aGVyIjp7InRpdGxlIjoiTm9ydGggRW5kIEd1aXRhciBXb3Jrc2hvcCIsImltZyI6Im9wdE90aGVyIiwiYnVsbGV0cyI6WyIkMjAgYW4gaG91ciIsIkluc3RydWN0b3JzIGFyZSBzZWxmLXRhdWdodCIsIkxlc3NvbnMgYXZhaWxhYmxlIE1vbmRheSBcdTIwMTMgRnJpZGF5IiwiMTAtbWludXRlIGRyaXZlIGZyb20geW91ciB3b3JrcGxhY2UiXX19LCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RydWN0dXJlOiBhY2tub3dsZWRnZSB0aGUgb3RoZXIgcGVyc29uJ3MgY2hvaWNlIFx1MjE5MiBnaXZlIDJcdTIwMTMzIGFkdmFudGFnZXMgb2YgeW91cnMgKGRpcmVjdCBjb21wYXJpc29uKSBcdTIxOTIgd3JhcCB1cC4iLCJDb21wYXJlIHVzaW5nIHRoZSBudW1iZXJzIG9uIHRoZSBjYXJkczogcHJpY2UsIGR1cmF0aW9uLCBjYXBhY2l0eSwgZXhwZXJpZW5jZS4iLCJZb3UgZG8gTk9UIG5lZWQgdG8gc3BlYWsgZHVyaW5nIHRoZSBjaG9vc2luZyBzdGVwIFx1MjAxNCBqdXN0IGNsaWNrIGFuIG9wdGlvbi4iLCJUaGUgc2FtcGxlcyBjaG9vc2UgQmVhdXRpZnVsIE11c2ljICgkMjUgYW4gaG91ciwgaW5zdHJ1Y3RvcnMgd2hvIGhvbGQgYSBCYWNoZWxvcidzIG9mIE11c2ljLCBsZXNzb25zIGF2YWlsYWJsZSBldmVyeSBkYXkgb2YgdGhlIHdlZWssIHdhbGtpbmcgZGlzdGFuY2UgZnJvbSB3b3JrKS4gSXQgaXMgdGhlIGNsZWFyIGFsbC1yb3VuZCB3aW5uZXI6IHRoZSBjaGVhcGVzdCBvZiB0aGUgcHJvcGVybHkgcXVhbGlmaWVkIG9wdGlvbnMsIHRoZSBtb3N0IGNvbnZlbmllbnQgZm9yIGV2ZW5pbmcgbGVzc29ucyBhZnRlciB3b3JrLCBhbmQgdGhlIG9ubHkgb25lIHdpdGggdHJhaW5lZCB0ZWFjaGVycy4gWW91ciBjby13b3JrZXIncyBOb3J0aCBFbmQgR3VpdGFyIFdvcmtzaG9wIGlzIGEgdG91Y2ggY2hlYXBlciBhdCAkMjAgYnV0IGl0cyBpbnN0cnVjdG9ycyBhcmUgc2VsZi10YXVnaHQsIGFuZCBKaW0ncyBHdWl0YXIgU2Nob29sIGlzIHRoZSB3b3JzdCBkZWFsLCAkNDAgYW4gaG91ciwgYSBkaWZmZXJlbnQgaW5zdHJ1Y3RvciBldmVyeSBsZXNzb24gc28gdGhlcmUgaXMgbm8gY29udGludWl0eSwgV2VkbmVzZGF5cyBvbmx5LCBhbmQgYSBvbmUtaG91ciBkcml2ZS4gQXJndWUgdGhhdCBxdWFsaWZpZWQgdGVhY2hlcnMgcGx1cyB3YWxraW5nIGRpc3RhbmNlIHBsdXMgZGFpbHkgYXZhaWxhYmlsaXR5IGVhc2lseSBiZWF0IHNhdmluZyBhIGZldyBkb2xsYXJzLiBJZiB5b3UgcHJlZmVyIE5vcnRoIEVuZCwgc3RyZXNzIHRoZSByb2NrLWJvdHRvbSBwcmljZSBhbmQgc2hvcnQgZHJpdmUuIl0sInBocmFzZXMiOlsiSSBzZWUgd2h5IHlvdSBsaWtlXHUyMDI2LCBidXRcdTIwMjYiLCJDb21wYXJlZCB0b1x1MjAyNiwgdGhpcyBvbmVcdTIwMjYiLCJJdCdzIGJldHRlciB2YWx1ZTogXHUyMDI2IHZlcnN1cyBcdTIwMjYiLCJJZiB0aGUgZ29hbCBpc1x1MjAyNiwgdGhlIGNob2ljZSBpcyBjbGVhci4iXX0sInM2IjoiSGV5LCBJIGxvb2tlZCBhdCBhbGwgdGhlIGd1aXRhciBzY2hvb2xzLCBhbmQgSSByZWFsbHkgdGhpbmsgd2Ugc2hvdWxkIGNob29zZSBCZWF1dGlmdWwgTXVzaWMuIEkga25vdyB5b3UgbGlrZSBOb3J0aCBFbmQgR3VpdGFyIFdvcmtzaG9wIGJlY2F1c2UgaXQgaXMgY2hlYXAsIG9ubHkgdHdlbnR5IGRvbGxhcnMgYW4gaG91ciwgYnV0IHBsZWFzZSBsaXN0ZW4sIEJlYXV0aWZ1bCBNdXNpYyBpcyBvbmx5IHR3ZW50eS1maXZlIGRvbGxhcnMsIHNvIGl0IGlzIGFsbW9zdCB0aGUgc2FtZSBwcmljZSwgYnV0IGl0IGlzIG11Y2gsIG11Y2ggYmV0dGVyLiBMZXQgbWUgZXhwbGFpbi4gVGhlIG1vc3QgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSB0ZWFjaGVycy4gQXQgTm9ydGggRW5kLCB0aGUgaW5zdHJ1Y3RvcnMgYXJlIHNlbGYtdGF1Z2h0LCBzbyB0aGV5IG5ldmVyIHN0dWRpZWQgbXVzaWMgcHJvcGVybHkuIEJ1dCBhdCBCZWF1dGlmdWwgTXVzaWMsIGFsbCB0aGUgdGVhY2hlcnMgaGF2ZSBhIEJhY2hlbG9yJ3MgZGVncmVlIGluIE11c2ljLiBUaGV5IGFyZSByZWFsIGV4cGVydHMsIHNvIHdlIHdpbGwgbGVhcm4gbXVjaCBmYXN0ZXIgYW5kIGJldHRlci4gU2Vjb25kLCB0aGluayBhYm91dCB0aGUgbG9jYXRpb24uIEJlYXV0aWZ1bCBNdXNpYyBpcyB3YWxraW5nIGRpc3RhbmNlIGZyb20gb3VyIG9mZmljZS4gV2UgY2FuIGp1c3Qgd2FsayB0aGVyZSBhZnRlciB3b3JrLCBzbyBlYXN5ISBUaGlyZCwgdGhlIHNjaGVkdWxlLiBCZWF1dGlmdWwgTXVzaWMgaGFzIGxlc3NvbnMgZXZlcnkgc2luZ2xlIGRheSBvZiB0aGUgd2Vlaywgc28gd2UgY2FuIGNob29zZSBhbnkgZXZlbmluZyB0aGF0IGlzIGdvb2QgZm9yIHVzLiBBbmQgcGxlYXNlLCBsZXQncyBub3QgY2hvb3NlIEppbSdzIEd1aXRhciBTY2hvb2wuIEl0IGlzIGZvcnR5IGRvbGxhcnMsIHZlcnkgZXhwZW5zaXZlLCBvbmx5IG9uIFdlZG5lc2RheXMsIGFuZCBpdCBpcyBhIG9uZS1ob3VyIGRyaXZlISBUaGF0IGlzIHRlcnJpYmxlLiBTbywgZm9yIGdvb2QgdGVhY2hlcnMsIGEgY2xvc2UgbG9jYXRpb24sIGFuZCBhIGZsZXhpYmxlIHNjaGVkdWxlLCBCZWF1dGlmdWwgTXVzaWMgaXMgY2xlYXJseSB0aGUgYmVzdC4gTGV0J3Mgc2lnbiB1cCB0aGVyZSEiLCJzOSI6IlNvIEkgaGF2ZSBjb21wYXJlZCBhbGwgdGhyZWUgZ3VpdGFyIHNjaG9vbHMsIGFuZCBJIGFtIGNvbnZpbmNlZCB3ZSBzaG91bGQgZ28gd2l0aCBCZWF1dGlmdWwgTXVzaWMsIGxldCBtZSB0YWxrIHlvdSB0aHJvdWdoIGl0LiBJIGtub3cgeW91IHdlcmUgZHJhd24gdG8gTm9ydGggRW5kIEd1aXRhciBXb3Jrc2hvcCBiZWNhdXNlIGl0IGlzIHRoZSBjaGVhcGVzdCBhdCB0d2VudHkgZG9sbGFycyBhbiBob3VyLCBidXQgQmVhdXRpZnVsIE11c2ljIGlzIG9ubHkgZml2ZSBkb2xsYXJzIG1vcmUsIHR3ZW50eS1maXZlIGFuIGhvdXIsIGFuZCBmb3IgdGhhdCB0aW55IGRpZmZlcmVuY2UgaXQgYmVhdHMgTm9ydGggRW5kIG9uIGFsbW9zdCBldmVyeXRoaW5nIHRoYXQgbWF0dGVycy4gVGhlIGJpZyBvbmUgaXMgdGhlIHRlYWNoaW5nLiBOb3J0aCBFbmQncyBpbnN0cnVjdG9ycyBhcmUgc2VsZi10YXVnaHQsIHdoaWNoIGlzIGZpbmUgZm9yIGEgaG9iYnkgYnV0IG1lYW5zIHRoZXkgbWF5IGhhdmUgcGlja2VkIHVwIGJhZCBoYWJpdHMgYW5kIGdhcHMsIHdoZXJlYXMgZXZlcnkgdGVhY2hlciBhdCBCZWF1dGlmdWwgTXVzaWMgaG9sZHMgYSBCYWNoZWxvcidzIG9mIE11c2ljLiBXaXRoIHByb3Blcmx5IHRyYWluZWQgaW5zdHJ1Y3RvcnMgd2Ugd2lsbCBsZWFybiBmYXN0ZXIsIGxlYXJuIGNvcnJlY3RseSwgYW5kIGdldCBmYXIgYmV0dGVyIHZhbHVlIGZvciBlYWNoIGhvdXIgd2UgcGF5LiBDb252ZW5pZW5jZSBpcyB0aGUgbmV4dCBzZWxsaW5nIHBvaW50OiBCZWF1dGlmdWwgTXVzaWMgaXMgd2l0aGluIHdhbGtpbmcgZGlzdGFuY2Ugb2YgdGhlIG9mZmljZSwgc28gYWZ0ZXIgYSBsb25nIGRheSB3ZSBjYW4gc2ltcGx5IHN0cm9sbCBvdmVyIHJhdGhlciB0aGFuIGdldCBpbiBhIGNhciwgYW5kIHRoZXkgcnVuIGxlc3NvbnMgZXZlcnkgc2luZ2xlIGRheSBvZiB0aGUgd2Vlaywgc28gd2UgY2FuIHBpY2sgd2hpY2hldmVyIGV2ZW5pbmcgc3VpdHMgdXMgYm90aC4gQ29tcGFyZSB0aGF0IHdpdGggdGhlIHRoaXJkIG9wdGlvbiwgSmltJ3MgR3VpdGFyIFNjaG9vbCwgd2hpY2ggaXMgZnJhbmtseSBhIGJhZCBkZWFsLCBmb3J0eSBkb2xsYXJzIGFuIGhvdXIsIGEgZGlmZmVyZW50IGluc3RydWN0b3IgZXZlcnkgbGVzc29uIHNvIHRoZXJlIGlzIHplcm8gY29udGludWl0eSwgY2xhc3NlcyBvbmx5IG9uIFdlZG5lc2RheXMsIGFuZCBhIGZ1bGwgaG91cidzIGRyaXZlIGVhY2ggd2F5LiBUaGF0IGlzIGV4cGVuc2l2ZSwgaW5jb252ZW5pZW50IGFuZCBkaXNydXB0aXZlLiBTbyB3aGVuIHlvdSB3ZWlnaCBxdWFsaWZpZWQgdGVhY2hlcnMsIGEgd2Fsa2FibGUgbG9jYXRpb24gYW5kIGRhaWx5IGF2YWlsYWJpbGl0eSBhZ2FpbnN0IHNhdmluZyBhIG1lcmUgZml2ZSBkb2xsYXJzLCBCZWF1dGlmdWwgTXVzaWMgd2lucyBoYW5kcyBkb3duLiBTaGFsbCB3ZSBnbyBhbmQgZW5yb2wgdG9nZXRoZXI\/In0seyJrIjoidDYiLCJudW0iOjYsInR5cGVFbiI6IkRlYWxpbmcgd2l0aCBhIERpZmZpY3VsdCBTaXR1YXRpb24iLCJwcmVwIjo2MCwicmVjIjo2MCwicHJvbXB0IjoiWW91ciBiaXJ0aGRheSBpcyBuZXh0IHdlZWsgYW5kIHlvdSBhcmUgaG9zdGluZyBhIGRpbm5lci4gWW91IGhhdmUgaW52aXRlZCB5b3VyIGZyaWVuZCwgd2hvIGlzIGV4Y2l0ZWQgdG8gY29tZSB0byB5b3VyIGJpcnRoZGF5IHBhcnR5LiBIb3dldmVyLCB5b3VyIGF1bnQgaW5zaXN0cyB0aGF0IHRoZSBwYXJ0eSBzaG91bGQgYmUgZm9yIGZhbWlseSBvbmx5LCB0byBtYWtlIGl0IG1vcmUgcHJpdmF0ZSBhbmQgY29tZm9ydGFibGUuIiwiY2hvb3NlT25lIjpbIlRhbGsgdG8geW91ciBhdW50LiBFeHBsYWluIHdoeSB5b3VyIGZyaWVuZCBpcyBzdGlsbCBpbnZpdGVkIHRvIHRoZSBwYXJ0eS4iLCJUYWxrIHRvIHlvdXIgZnJpZW5kLiBFeHBsYWluIHdoeSBoZSBpcyBubyBsb25nZXIgaW52aXRlZCB0byB0aGUgcGFydHkuIl0sImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlBpY2sgT05FIG9wdGlvbiAoRUlUSEVSIG9yIE9SKSBpbW1lZGlhdGVseSBcdTIwMTQgZG9uJ3Qgd2FzdGUgdGltZSBkZWNpZGluZy4iLCJTdHJ1Y3R1cmU6IG9wZW4gcG9saXRlbHkgXHUyMTkyIGV4cGxhaW4geW91ciByZWFzb25zL2V2aWRlbmNlIFx1MjE5MiBwcm9wb3NlIGEgc29sdXRpb24gXHUyMTkyIHNtb290aCB0aGluZ3Mgb3Zlci4iLCJTdGF5IGNhbG0gYW5kIHJlc3BlY3RmdWwgXHUyMDE0IGhvdyB5b3UgaGFuZGxlIHRoZSBzaXR1YXRpb24gaXMgcGFydCBvZiB3aGF0J3MgYmVpbmcgcmF0ZWQgKExpc3RlbmFiaWxpdHkpLiIsIlRoZSBzYW1wbGVzIHBpY2sgb3B0aW9uIDEsIHRhbGtpbmcgdG8geW91ciBhdW50IHRvIGV4cGxhaW4gd2h5IHlvdXIgZnJpZW5kIHNob3VsZCBzdGlsbCBiZSBpbnZpdGVkLiBBY2tub3dsZWRnZSB0aGF0IHRoZSBhdW50IHdhbnRzIGEgcHJpdmF0ZSwgY29tZm9ydGFibGUsIGZhbWlseSBldmVuaW5nLCB0aGVuIHBlcnN1YWRlIGdlbnRseSBidXQgZmlybWx5OiBpdCBpcyB5b3VyIGJpcnRoZGF5LCBzbyB5b3Ugc2hvdWxkIGdldCB0byBjZWxlYnJhdGUgd2l0aCB0aGUgcGVvcGxlIHdobyBtYXR0ZXIgbW9zdCB0byB5b3U7IHRoaXMgZnJpZW5kIGlzIHByYWN0aWNhbGx5IGZhbWlseSBhbmQgd291bGQgbmV2ZXIgbWFrZSB0aGluZ3MgYXdrd2FyZDsgYW5kIG9uZSB3YXJtLCB3ZWxsLW1hbm5lcmVkIGd1ZXN0IHdpbGwgbm90IHNwb2lsIHRoZSBpbnRpbWF0ZSBmZWVsaW5nLCBoZSB3aWxsIGFkZCB0byBpdC4gUmVhc3N1cmUgaGVyIHRoZSBkaW5uZXIgd2lsbCBzdGlsbCBiZSBzbWFsbCwgcHJpdmF0ZSBhbmQgcmVsYXhlZCwgYW5kIG9mZmVyIHRvIGludHJvZHVjZSBoaW0gc28gc2hlIGZlZWxzIGF0IGVhc2UuIl0sInBocmFzZXMiOlsiQ291bGQgSSBqdW1wIGluIGZvciBhIG1vbWVudD8iLCJJIHVuZGVyc3RhbmQgeW91ciBjb25jZXJuLCBidXRcdTIwMjYiLCJIb3cgYWJvdXQgd2VcdTIwMjY\/IiwiSSdsbCB0YWtlIHJlc3BvbnNpYmlsaXR5IGZvciB0aGlzLiJdfSwiczYiOiJIaSBBdW50aWUsIGNhbiB3ZSB0YWxrIGFib3V0IG15IGJpcnRoZGF5IGRpbm5lcj8gSSBoZWFyZCB5b3UgZmVlbCBpdCBzaG91bGQgYmUgb25seSBmYW1pbHksIHNvIGl0IHN0YXlzIHByaXZhdGUgYW5kIGNvbWZvcnRhYmxlLiBJIHVuZGVyc3RhbmQsIGFuZCBJIGxvdmUgdGhhdCB5b3UgY2FyZSBhYm91dCBteSBwYXJ0eS4gQnV0IEkgd2FudCB0byBleHBsYWluIHdoeSBJIHJlYWxseSB3YW50IG15IGZyaWVuZCBUb20gdG8gY29tZSB0b28uIEZpcnN0LCBpdCBpcyBteSBiaXJ0aGRheSwgYW5kIHRoZSBtb3N0IGltcG9ydGFudCB0aGluZyBmb3IgbWUgaXMgdG8gY2VsZWJyYXRlIHdpdGggdGhlIHBlb3BsZSBJIGxvdmUgdGhlIG1vc3QuIFRvbSBpcyBvbmUgb2YgdGhvc2UgcGVvcGxlLiBTZWNvbmQsIFRvbSBpcyBub3QgcmVhbGx5IGFuIG91dHNpZGVyLiBIZSBoYXMgYmVlbiBteSBmcmllbmQgZm9yIHRlbiB5ZWFycyEgSGUga25vd3Mgb3VyIGZhbWlseSBhbHJlYWR5LCBhbmQgaG9uZXN0bHksIGhlIGZlZWxzIGxpa2UgYSBicm90aGVyIHRvIG1lLiBIZSBpcyB2ZXJ5IHBvbGl0ZSBhbmQga2luZCwgc28gaGUgd2lsbCBub3QgbWFrZSB0aGluZ3MgdW5jb21mb3J0YWJsZSwgSSBwcm9taXNlLiBIZSB3aWxsIG9ubHkgbWFrZSB0aGUgbmlnaHQgaGFwcGllci4gQW5kIGRvIG5vdCB3b3JyeSwgdGhlIGRpbm5lciB3aWxsIHN0aWxsIGJlIHNtYWxsIGFuZCBwcml2YXRlLiBPbmUgbW9yZSBnb29kIGZyaWVuZCBhdCB0aGUgdGFibGUgd2lsbCBub3QgY2hhbmdlIHRoYXQgY296eSBmYW1pbHkgZmVlbGluZywgaGUgd2lsbCBqdXN0IGFkZCB0byBpdC4gSG93IGFib3V0IHRoaXMsIHdoZW4gaGUgYXJyaXZlcywgSSB3aWxsIGludHJvZHVjZSBoaW0gdG8gZXZlcnlvbmUsIHNvIHlvdSBmZWVsIHJlbGF4ZWQuIFBsZWFzZSwgQXVudGllLCBpdCB3b3VsZCBtYWtlIG1lIHNvIGhhcHB5IHRvIGhhdmUgaGltIHRoZXJlIG9uIG15IHNwZWNpYWwgZGF5LiBDYW4gd2UgYWdyZWUgb24gdGhpcz8gVGhhbmsgeW91IGZvciB1bmRlcnN0YW5kaW5nLiIsInM5IjoiQXVudGllLCBjb3VsZCB3ZSBoYXZlIGEgcXVpY2sgY2hhdCBhYm91dCBteSBiaXJ0aGRheSBkaW5uZXI\/IEkgZ2F0aGVyIHlvdSBmZWVsIGl0IHNob3VsZCBiZSBmYW1pbHkgb25seSwgdG8ga2VlcCB0aGUgZXZlbmluZyBwcml2YXRlIGFuZCBjb21mb3J0YWJsZSwgYW5kIEkgaG9uZXN0bHkgYXBwcmVjaWF0ZSB0aGF0IHlvdSBjYXJlIHNvIG11Y2ggYWJvdXQgbWFraW5nIG15IGNlbGVicmF0aW9uIHNwZWNpYWwuIEJ1dCBJIHdvdWxkIGxvdmUgdG8gZXhwbGFpbiB3aHkgSSByZWFsbHkgd2FudCBteSBmcmllbmQgVG9tIHRvIGJlIHRoZXJlIHRvbywgYW5kIEkgaG9wZSB5b3Ugd2lsbCBoZWFyIG1lIG91dC4gRmlyc3QsIGl0IGlzIG15IGJpcnRoZGF5LCBhbmQgd2hhdCBtYXR0ZXJzIG1vc3QgdG8gbWUgaXMgYmVpbmcgc3Vycm91bmRlZCBieSB0aGUgcGVvcGxlIEkgYW0gY2xvc2VzdCB0bywgYW5kIFRvbSBpcyBnZW51aW5lbHkgb25lIG9mIHRob3NlIHBlb3BsZS4gU2Vjb25kLCBoZSBpcyBoYXJkbHkgYSBzdHJhbmdlciwgd2UgaGF2ZSBiZWVuIGZyaWVuZHMgZm9yIHRlbiB5ZWFycywgaGUgYWxyZWFkeSBrbm93cyBtb3N0IG9mIHRoZSBmYW1pbHksIGFuZCB0cnV0aGZ1bGx5IGhlIGZlZWxzIG1vcmUgbGlrZSBhIGJyb3RoZXIgdG8gbWUgdGhhbiBhIG1lcmUgZ3Vlc3QuIEhlIGlzIGFsc28gZXh0cmVtZWx5IHBvbGl0ZSwgd2FybSBhbmQgZWFzeS1nb2luZywgc28gdGhlcmUgaXMgbm8gY2hhbmNlIGhlIHdpbGwgbWFrZSBhbnlvbmUgZmVlbCBhd2t3YXJkOyBpZiBhbnl0aGluZywgaGlzIGdvb2QgaHVtb3VyIHdpbGwgbWFrZSB0aGUgd2hvbGUgdGFibGUgbW9yZSByZWxheGVkLiBBbmQgSSBjb21wbGV0ZWx5IHVuZGVyc3RhbmQgeW91ciB3b3JyeSBhYm91dCB0aGUgYXRtb3NwaGVyZSwgc28gbGV0IG1lIHJlYXNzdXJlIHlvdTogdGhlIGRpbm5lciB3aWxsIHN0aWxsIGJlIHNtYWxsLCBpbnRpbWF0ZSBhbmQgcHJpdmF0ZS4gT25lIGV4dHJhIHRob3VnaHRmdWwsIHdlbGwtbWFubmVyZWQgZ3Vlc3QgaXMgbm90IGdvaW5nIHRvIHNoYXR0ZXIgdGhhdCBjb3p5IGZhbWlseSBmZWVsaW5nOyBoZSB3aWxsIHNpbXBseSBhZGQgdG8gdGhlIHdhcm10aC4gSGVyZSBpcyBhbiBpZGVhLCB3aGVuIGhlIGFycml2ZXMsIEkgd2lsbCBwZXJzb25hbGx5IGludHJvZHVjZSBoaW0gYXJvdW5kIHNvIHlvdSBjYW4gc2VlIGZvciB5b3Vyc2VsZiBob3cgd2VsbCBoZSBmaXRzIGluIGFuZCBmZWVsIGNvbXBsZXRlbHkgYXQgZWFzZS4gSXQgd291bGQgbWVhbiB0aGUgd29ybGQgdG8gbWUgdG8gaGF2ZSBoaW0gdGhlcmUgb24gbXkgc3BlY2lhbCBkYXkuIENvdWxkIHdlIG1ha2Ugcm9vbSBmb3IgaGltLCBqdXN0IHRoaXMgb25jZT8gSSBwcm9taXNlIHlvdSB3aWxsIG5vdCByZWdyZXQgaXQuIn0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIHRoYXQgZXZlcnlvbmUgc2hvdWxkIHBheSB0YXhlcyB0b3dhcmRzIGltcHJvdmluZyBhIGNpdHkncyBwdWJsaWMgdHJhbnNwb3J0YXRpb24gc3lzdGVtPyBFeHBsYWluIHlvdXIgcmVhc29ucy4iLCJwcm9tcHRMZWFkIjoiQW5zd2VyIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb24uIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RhdGUgeW91ciBwb3NpdGlvbiBjbGVhcmx5IGluIHRoZSBmaXJzdCBzZW50ZW5jZSAocGlja2luZyBvbmUgc2lkZSBpcyBlYXNpZXIgdG8gZGV2ZWxvcCB0aGFuIHN0YXlpbmcgbmV1dHJhbCkuIiwiR2l2ZSAyXHUyMDEzMyByZWFzb25zLCBlYWNoIGRldmVsb3BlZCBvdmVyIDJcdTIwMTMzIHNlbnRlbmNlcyB3aXRoIGFuIGV4YW1wbGU7IDkwIHNlY29uZHMgaXMgbG9uZyBcdTIwMTQgZG9uJ3Qgc3RvcCBlYXJseS4iLCJBY2tub3dsZWRnZSB0aGUgb3RoZXIgc2lkZSBpbiBvbmUgc2VudGVuY2UgKFRoYXQgc2FpZCwgXHUyMDI2KSB0aGVuIGNvbmNsdWRlIFx1MjAxNCBpdCBzaG93cyBiYWxhbmNlZCB0aGlua2luZy4iLCJUaGUgc2FtcGxlcyBhcmd1ZSBZRVMsIGV2ZXJ5b25lIHNob3VsZCBjb250cmlidXRlIHRheGVzIHRvd2FyZHMgaW1wcm92aW5nIHB1YmxpYyB0cmFuc3BvcnQsIGV2ZW4gcGVvcGxlIHdobyBuZXZlciB1c2UgaXQuIFJlYXNvbnM6IGdvb2QgYnVzZXMgYW5kIHRyYWlucyBiZW5lZml0IHRoZSB3aG9sZSBjaXR5LCBub3QganVzdCByaWRlcnMsIHRoZXkgdGFrZSBjYXJzIG9mZiB0aGUgcm9hZCBzbyBldmVuIGRyaXZlcnMgZ2V0IGEgcXVpY2tlciBjb21tdXRlOyB0aGV5IGN1dCBhaXIgcG9sbHV0aW9uIGFuZCBhY2NpZGVudHMsIGltcHJvdmluZyBldmVyeW9uZSdzIGhlYWx0aCBhbmQgc2FmZXR5OyBhbmQgYWZmb3JkYWJsZSB0cmFuc3BvcnQgaGVscHMgc3R1ZGVudHMsIHRoZSBlbGRlcmx5IGFuZCBsb3ctaW5jb21lIHdvcmtlcnMgcmVhY2ggam9icyBhbmQgc2Nob29sLCB3aGljaCBzdHJlbmd0aGVucyB0aGUgd2hvbGUgZWNvbm9teS4gQ29uY2VkZSB0aGF0IG5vbi11c2VycyBtYXkgZmVlbCBpdCBpcyB1bmZhaXIsIHRoZW4gYW5zd2VyIHRoYXQgd2UgYWxsIHBheSBmb3Igc2hhcmVkIHNlcnZpY2VzIGxpa2Ugcm9hZHMsIHBhcmtzIGFuZCBzY2hvb2xzIHdoZXRoZXIgd2UgdXNlIHRoZW0gb3Igbm90LCBiZWNhdXNlIHRoZXkgbWFrZSB0aGUgY2l0eSBiZXR0ZXIgZm9yIGFsbC4iXSwicGhyYXNlcyI6WyJJZiBJIGhhZCB0byBjaG9vc2UsIEknZCBzYXlcdTIwMjYiLCJNeSBtYWluIHJlYXNvbiBpc1x1MjAyNiIsIkZvciBleGFtcGxlLCBcdTIwMjYiLCJUaGF0IHNhaWQsIFx1MjAyNiIsIkFsbCB0aGluZ3MgY29uc2lkZXJlZCwgXHUyMDI2Il19LCJzNiI6IlllcywgSSBiZWxpZXZlIHRoYXQgZXZlcnlvbmUgc2hvdWxkIHBheSB0YXhlcyB0byBpbXByb3ZlIHRoZSBjaXR5J3MgcHVibGljIHRyYW5zcG9ydGF0aW9uLCBldmVuIHBlb3BsZSB3aG8gZHJpdmUgdGhlaXIgb3duIGNhcnMgYW5kIG5ldmVyIHRha2UgdGhlIGJ1cy4gTGV0IG1lIGV4cGxhaW4gd2h5LiBNeSBmaXJzdCByZWFzb24gaXMgdGhhdCBnb29kIHB1YmxpYyB0cmFuc3BvcnQgaGVscHMgdGhlIHdob2xlIGNpdHksIG5vdCBqdXN0IHRoZSBwZW9wbGUgd2hvIHJpZGUgaXQuIFRoaW5rIGFib3V0IGl0OiBpZiB0aGUgYnVzZXMgYW5kIHRyYWlucyBhcmUgY2hlYXAgYW5kIGdvb2QsIG1vcmUgcGVvcGxlIHdpbGwgbGVhdmUgdGhlaXIgY2FycyBhdCBob21lLiBUaGF0IG1lYW5zIGZld2VyIGNhcnMgb24gdGhlIHJvYWQsIHNvIGxlc3MgdHJhZmZpYy4gU28gZXZlbiBhIGRyaXZlciBnZXRzIHRvIHdvcmsgZmFzdGVyISBFdmVyeWJvZHkgd2lucy4gU2Vjb25kLCBpdCBpcyBnb29kIGZvciBvdXIgaGVhbHRoIGFuZCBvdXIgYWlyLiBGZXdlciBjYXJzIG1lYW5zIGxlc3MgcG9sbHV0aW9uLCBzbyB0aGUgYWlyIGlzIGNsZWFuZXIgZm9yIGFsbCBvZiB1cyB0byBicmVhdGhlLiBUaGlyZCwgcHVibGljIHRyYW5zcG9ydCBoZWxwcyBwZW9wbGUgd2hvIGhhdmUgbm8gY2FyLCBsaWtlIHN0dWRlbnRzLCBvbGQgcGVvcGxlLCBhbmQgd29ya2VycyB3aXRoIGxvdyBzYWxhcmllcy4gVGhleSBuZWVkIHRoZSBidXMgdG8gZ2V0IHRvIHNjaG9vbCBvciB3b3JrLiBJZiB3ZSBoZWxwIHRoZW0sIHRoZSB3aG9sZSBjaXR5IGJlY29tZXMgc3Ryb25nZXIgYW5kIHJpY2hlci4gTm93LCBzb21lIHBlb3BsZSBzYXksICdJIG5ldmVyIHVzZSB0aGUgYnVzLCBzbyB3aHkgc2hvdWxkIEkgcGF5PycgQnV0IHdlIGFsbCBwYXkgdGF4ZXMgZm9yIHJvYWRzLCBwYXJrcywgYW5kIHNjaG9vbHMsIGV2ZW4gaWYgd2UgZG8gbm90IHVzZSB0aGVtIGV2ZXJ5IGRheSwgYmVjYXVzZSB0aGV5IG1ha2Ugb3VyIGNpdHkgYSBiZXR0ZXIgcGxhY2UuIFB1YmxpYyB0cmFuc3BvcnQgaXMgdGhlIHNhbWUuIFNvIHllcywgd2Ugc2hvdWxkIGFsbCBwYXkgdG9nZXRoZXIuIiwiczkiOiJNeSBhbnN3ZXIgaXMgeWVzLCBJIGZpcm1seSBiZWxpZXZlIGV2ZXJ5b25lIHNob3VsZCBjb250cmlidXRlIHRheGVzIHRvd2FyZHMgaW1wcm92aW5nIGEgY2l0eSdzIHB1YmxpYyB0cmFuc3BvcnQsIGV2ZW4gdGhvc2Ugd2hvIG5ldmVyIHNldCBmb290IG9uIGEgYnVzIG9yIHRyYWluLiBIZXJlIGlzIG15IHJlYXNvbmluZy4gTXkgZmlyc3QgcG9pbnQgaXMgdGhhdCBhIGdvb2QgdHJhbnNpdCBzeXN0ZW0gYmVuZWZpdHMgdGhlIGVudGlyZSBjaXR5LCBub3QgbWVyZWx5IHRoZSBwZW9wbGUgd2hvIHJpZGUgaXQuIFdoZW4gYnVzZXMgYW5kIHRyYWlucyBhcmUgY2hlYXAsIGZyZXF1ZW50IGFuZCByZWxpYWJsZSwgbW9yZSBwZW9wbGUgbGVhdmUgdGhlaXIgY2FycyBhdCBob21lLCB3aGljaCBtZWFucyBmZXdlciB2ZWhpY2xlcyBjbG9nZ2luZyB0aGUgcm9hZHMuIFNvIGV2ZW4gYSBjb21taXR0ZWQgZHJpdmVyIHdobyBuZXZlciB1c2VzIHRyYW5zaXQgc3RpbGwgZ2FpbnMsIGJlY2F1c2UgdGhlaXIgb3duIGNvbW11dGUgYmVjb21lcyBxdWlja2VyIGFuZCBsZXNzIGNvbmdlc3RlZC4gU2Vjb25kLCB0aGVyZSBhcmUgdGhlIHNoYXJlZCBiZW5lZml0cyB0byBoZWFsdGggYW5kIHNhZmV0eTogZmV3ZXIgY2FycyBvbiB0aGUgcm9hZCBtZWFucyBsZXNzIGFpciBwb2xsdXRpb24gZm9yIGV2ZXJ5b25lIHRvIGJyZWF0aGUgYW5kIGZld2VyIHRyYWZmaWMgYWNjaWRlbnRzLCB3aGljaCBpcyBnb29kIGZvciB0aGUgd2hvbGUgcG9wdWxhdGlvbiwgZHJpdmVycyBpbmNsdWRlZC4gVGhpcmQsIGFmZm9yZGFibGUgcHVibGljIHRyYW5zcG9ydCBpcyBhIGxpZmVsaW5lIGZvciBzdHVkZW50cywgdGhlIGVsZGVybHkgYW5kIGxvd2VyLWluY29tZSB3b3JrZXJzIHdobyBjYW5ub3QgYWZmb3JkIGEgY2FyOyBpdCBsZXRzIHRoZW0gcmVhY2ggdGhlaXIgam9icywgc2Nob29scyBhbmQgYXBwb2ludG1lbnRzLCBhbmQgdGhhdCBrZWVwcyB0aGUgZW50aXJlIGxvY2FsIGVjb25vbXkgbW92aW5nIGFuZCBwcm9kdWN0aXZlLiBOb3csIEkgZG8gdW5kZXJzdGFuZCB0aGUgb2JqZWN0aW9uLCBzb21lb25lIHdobyBkcml2ZXMgZXZlcnl3aGVyZSBtYXkgZ3J1bWJsZSB0aGF0IGl0IGlzIHVuZmFpciB0byBwYXkgZm9yIGEgc2VydmljZSB0aGV5IG5ldmVyIHVzZS4gQnV0IHRoYXQgYXJndW1lbnQgZG9lcyBub3QgcmVhbGx5IGhvbGQsIGJlY2F1c2Ugd2UgYWxyZWFkeSBwb29sIG91ciB0YXhlcyBmb3IgYWxsIHNvcnRzIG9mIHNoYXJlZCBzZXJ2aWNlcywgcHVibGljIHJvYWRzLCBwYXJrcywgbGlicmFyaWVzLCBzdHJlZXQgbGlnaHRpbmcgYW5kIHNjaG9vbHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBlYWNoIG9mIHVzIHVzZXMgdGhlbSBwZXJzb25hbGx5LCBwcmVjaXNlbHkgYmVjYXVzZSB0aGV5IG1ha2UgdGhlIGNpdHkgYmV0dGVyIGZvciBldmVyeW9uZS4gUHVibGljIHRyYW5zcG9ydCBiZWxvbmdzIGluIGV4YWN0bHkgdGhhdCBjYXRlZ29yeS4gU28gb24gYmFsYW5jZSwgeWVzLCBmdW5kaW5nIGl0IGNvbGxlY3RpdmVseSBpcyBmYWlyLCBzZW5zaWJsZSBhbmQgZ29vZCBmb3IgdXMgYWxsLiJ9LHsiayI6InQ4IiwibnVtIjo4LCJ0eXBlRW4iOiJEZXNjcmliaW5nIGFuIFVudXN1YWwgU2l0dWF0aW9uIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IllvdSBhcmUgYXQgYSBwYXJrIGFuZCB5b3Ugc2VlIGFuIGludGVyZXN0aW5nIHNpZ2h0LiBDYWxsIHlvdXIgZnJpZW5kIExpeiBhbmQgZGVzY3JpYmUgd2hhdCB5b3Ugc2VlLiBBc2sgaGVyIGlmIHNoZSB3b3VsZCBsaWtlIHRvIG1lZXQgeW91IGF0IHRoZSBwYXJrLiIsImltZyI6InVudXN1YWwiLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhpcyBpcyBhIFBIT05FIENBTEw6IGdyZWV0IHRoZSByaWdodCBwZXJzb24gKHRoZSBwb2xpY2UgLyB5b3VyIGZyaWVuZCksIHRoZW4gc2F5IHdoZXJlIHlvdSBhcmUuIiwiRGVzY3JpYmUgZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljOyB0aGUgcGljdHVyZSBpcyBtZWFudCB0byBiZSBzdHJhbmdlIFx1MjAxNCBqdXN0IGRlc2NyaWJlIHdoYXQgeW91IHNlZSwgdXNpbmcgJ0l0IGxvb2tzIGxpa2UgLyBhcyBpZlx1MjAyNicuIiwiRW5kIHdpdGggYSByZXF1ZXN0IGZvciBhY3Rpb24gKHNlbmQgYSBwYXRyb2wgLyBhc2sgd2hlcmUgdG8gYnV5KS4iLCJUaGlzIGlzIGEgcGhvbmUgY2FsbCB0byB5b3VyIGZyaWVuZCBMaXogYWJvdXQgYSBmdW5ueSBzaWdodCBpbiB0aGUgcGFyay4gRGVzY3JpYmUgdGhlIGFjdHVhbCBzY2VuZTogYSBiYWxsb29uIHNlbGxlciBpbiBhIHdoaXRlIHNoaXJ0LCBibGFjayB0cm91c2VycywgYSBibGFjayBjYXAgYW5kIGEgcmVkIGJvdyB0aWUgc3RhbmRzIGJlc2lkZSBoaXMgb2xkLWZhc2hpb25lZCB3b29kZW4gaGFuZGNhcnQgd2l0aCBicmlnaHQgcmVkIHdoZWVscy4gSGUgaGFzIHRpZWQgc3VjaCBhIGh1Z2UgYnVuY2ggb2YgY29sb3VyZnVsIGJhbGxvb25zIChncmVlbiwgcHVycGxlLCBvcmFuZ2UsIHJlZCwgYmx1ZSBhbmQgeWVsbG93KSB0byB0aGUgY2FydCB0aGF0IHRoZXkgYXJlIGxpZnRpbmcgdGhlIGZyb250IG9mIGl0IG9mZiB0aGUgZ3JvdW5kLCBzbyBpdCBsb29rcyBsaWtlIHRoZSB3aG9sZSBjYXJ0IGlzIGFib3V0IHRvIGZsb2F0IGF3YXkgbGlrZSBpbiBhIGNhcnRvb24uIE9uZSBsb25lIHJlZCBiYWxsb29uIGhhcyBhbHJlYWR5IGVzY2FwZWQgYW5kIGlzIGRyaWZ0aW5nIHVwIGludG8gdGhlIHNreS4gQSBsaXR0bGUgYm95IGluIGEgeWVsbG93IHNoaXJ0IGlzIHJlYWNoaW5nIG91dCB0b3dhcmRzIHRoZSB2ZW5kb3IsIGFuZCB0aGVyZSBpcyBhIHBhcmsgYmVuY2ggYW5kIGdyZWVuIHRyZWVzIGFuZCBoaWxscyBhbGwgYXJvdW5kLiBUZWxsIGhlciBpdCBpcyBoaWxhcmlvdXMgYW5kIGFzayBpZiBzaGUgd2FudHMgdG8gY29tZSBhbmQgc2VlIGl0LiJdLCJwaHJhc2VzIjpbIkknbSBjYWxsaW5nIHRvIHJlcG9ydFx1MjAyNiIsIlBpY3R1cmUgdGhpczogXHUyMDI2IiwiSXQgbG9va3MgYXMgaWZcdTIwMjYiLCJDb3VsZCB5b3Ugc2VuZFx1MjAyNiAvIERvIHlvdSBrbm93IHdoZXJlXHUyMDI2PyJdfSwiczYiOiJIZXkgTGl6LCBpdCdzIG1lISBJIGFtIGF0IHRoZSBwYXJrIHJpZ2h0IG5vdywgYW5kIEkgYW0gc2VlaW5nIHRoZSBmdW5uaWVzdCB0aGluZy4gWW91IGhhdmUgdG8gY29tZSBhbmQgc2VlIGl0IHdpdGggeW91ciBvd24gZXllcyEgT2theSwgc28gdGhlcmUgaXMgYSBiYWxsb29uIHNlbGxlciBoZXJlLiBIZSBpcyBhIG1hbiB3ZWFyaW5nIGEgd2hpdGUgc2hpcnQsIGJsYWNrIHBhbnRzLCBhIGxpdHRsZSBibGFjayBoYXQsIGFuZCBhIHJlZCBib3cgdGllLCB2ZXJ5IHNtYXJ0LiBBbmQgaGUgaGFzIGFuIG9sZC1zdHlsZSB3b29kZW4gY2FydCB3aXRoIGJyaWdodCByZWQgd2hlZWxzLCB3aGVyZSBoZSBrZWVwcyBoaXMgYmFsbG9vbnMuIEJ1dCBoZXJlIGlzIHRoZSBmdW5ueSBwYXJ0ISBIZSBoYXMgdGllZCBTTyBtYW55IGJhbGxvb25zIHRvIGhpcyBjYXJ0LCBncmVlbiwgcHVycGxlLCBvcmFuZ2UsIHJlZCwgYmx1ZSwgYW5kIHllbGxvdyBvbmVzLCB0aGF0IHRoZSBiYWxsb29ucyBhcmUgbm93IGxpZnRpbmcgdGhlIGNhcnQgdXAgaW50byB0aGUgYWlyISBUaGUgZnJvbnQgb2YgdGhlIGNhcnQgaXMgYWxyZWFkeSBvZmYgdGhlIGdyb3VuZC4gSXQgbG9va3MgZXhhY3RseSBsaWtlIGEgY2FydG9vbiwgbGlrZSB0aGUgd2hvbGUgY2FydCBpcyBnb2luZyB0byBmbHkgYXdheSBpbnRvIHRoZSBza3kgYXQgYW55IHNlY29uZCEgQW5kIG9uZSByZWQgYmFsbG9vbiBhbHJlYWR5IGVzY2FwZWQsIGFuZCBpdCBpcyBmbG9hdGluZyB1cCwgdXAsIHVwLiBUaGVyZSBpcyBhbHNvIGEgbGl0dGxlIGJveSBpbiBhIHllbGxvdyBzaGlydCB0cnlpbmcgdG8gcmVhY2ggdGhlIHNlbGxlciwgbWF5YmUgaGUgd2FudHMgYSBiYWxsb29uIGJlZm9yZSBpdCBmbGllcyBhd2F5ISBJdCBpcyBzbyBmdW5ueS4gRG8geW91IHdhbnQgdG8gY29tZSB0byB0aGUgcGFyayBhbmQgc2VlIHRoaXMgd2l0aCBtZT8gQ29tZSBxdWlja2x5LCBiZWZvcmUgdGhlIGNhcnQgZmxpZXMgYXdheSEgUGxlYXNlIHNheSB5b3Ugd2lsbCBjb21lISIsInM5IjoiTGl6LCBpdCdzIG1lLCB5b3UgaGF2ZSBnb3QgdG8gaGVhciB3aGF0IEkgYW0gd2F0Y2hpbmcgaW4gdGhlIHBhcmsgcmlnaHQgbm93LCBiZXR0ZXIgeWV0LCB5b3UgaGF2ZSBnb3QgdG8gY29tZSBhbmQgc2VlIGl0LCBiZWNhdXNlIHdvcmRzIGJhcmVseSBkbyBpdCBqdXN0aWNlLiBUaGVyZSBpcyBhIGJhbGxvb24gc2VsbGVyIGhlcmUsIGRyZXNzZWQgdmVyeSBkYXBwZXIgaW4gYSBjcmlzcCB3aGl0ZSBzaGlydCwgYmxhY2sgdHJvdXNlcnMsIGEgbGl0dGxlIGJsYWNrIGNhcCBhbmQgYSBicmlnaHQgcmVkIGJvdyB0aWUsIHN0YW5kaW5nIG5leHQgdG8gaGlzIGxvdmVseSBvbGQtZmFzaGlvbmVkIHdvb2RlbiBoYW5kY2FydCB3aXRoIGNoZWVyZnVsIHJlZCB3aGVlbHMuIEhlcmUgaXMgdGhlIHJpZGljdWxvdXMgcGFydDogaGUgaGFzIHRpZWQgc3VjaCBhbiBlbm9ybW91cyBidW5jaCBvZiBiYWxsb29ucyB0byB0aGUgY2FydCwgZ3JlZW5zLCBwdXJwbGVzLCBvcmFuZ2VzLCByZWRzLCBibHVlcyBhbmQgeWVsbG93cywgYWxsIGJ1bmRsZWQgdG9nZXRoZXIsIHRoYXQgdGhleSBhcmUgbGl0ZXJhbGx5IGxpZnRpbmcgaXQgb2ZmIHRoZSBncm91bmQuIFRoZSBmcm9udCB3aGVlbHMgaGF2ZSBhbHJlYWR5IHJpc2VuIGludG8gdGhlIGFpciwgYW5kIHRoZSB3aG9sZSB0aGluZyBsb29rcyBleGFjdGx5IGxpa2Ugc29tZXRoaW5nIG91dCBvZiBhIGNhcnRvb24sIGFzIGlmIGF0IGFueSBtb21lbnQgdGhlIGVudGlyZSBjYXJ0IGlzIGdvaW5nIHRvIGRyaWZ0IHVwIG92ZXIgdGhlIHRyZWV0b3BzIGFuZCBzYWlsIGF3YXkuIFRvIHRvcCBpdCBvZmYsIG9uZSBsb25lIHJlZCBiYWxsb29uIGhhcyBhbHJlYWR5IG1hZGUgYSBicmVhayBmb3IgaXQgYW5kIGlzIGZsb2F0aW5nIGhpZ2hlciBhbmQgaGlnaGVyIGludG8gdGhlIGJsdWUgc2t5LiBNZWFud2hpbGUsIGEgbGl0dGxlIGJveSBpbiBhIHllbGxvdyBzaGlydCBpcyBzdHJldGNoaW5nIG91dCBoaXMgaGFuZCB0b3dhcmRzIHRoZSB2ZW5kb3IsIGVpdGhlciBob3BpbmcgZm9yIGEgYmFsbG9vbiBvciB0cnlpbmcgdG8gd2FybiBoaW0gdGhhdCBoaXMgY2FydCBpcyBhYm91dCB0byB0YWtlIGZsaWdodC4gVGhlcmUgaXMgYSBwYXJrIGJlbmNoIG5lYXJieSBhbmQgbG92ZWx5IGdyZWVuIHRyZWVzIGFuZCByb2xsaW5nIGhpbGxzIGJlaGluZCBpdCBhbGwuIEl0IGlzIGdlbnVpbmVseSBvbmUgb2YgdGhlIGZ1bm5pZXN0IHRoaW5ncyBJIGhhdmUgc2VlbiBpbiBhZ2VzLiBBbnkgY2hhbmNlIHlvdSBmYW5jeSBjb21pbmcgZG93biB0byB0aGUgcGFyayB0byBjYXRjaCBpdCBiZWZvcmUgaXQgZmxvYXRzIGF3YXk\/IENvbWUgcXVpY2tseSwgSSBwcm9taXNlIGl0IGlzIHdvcnRoIGl0ISJ9XSwidWkiOnsic3RhcnRUZXN0IjoiU3RhcnQgdGhlIHRlc3QiLCJtaWNFbmFibGUiOiJFbmFibGUgbWljcm9waG9uZSIsIm1pY1JlYWR5IjoiTWljcm9waG9uZSByZWFkeSIsIm1pY0Jsb2NrZWQiOiJNaWNyb3Bob25lIGlzIGJsb2NrZWQgb3IgdW5hdmFpbGFibGUgXHUyMDE0IHRoZSBwYWdlIHdpbGwgcnVuIGluIHRpbWVyLW9ubHkgbW9kZSAoeW91IGNhbiBzdGlsbCBwcmFjdGlzZSBzcGVha2luZyBhbG9uZyB3aXRoIHRoZSB0aW1lcnMpLiIsIm1pY05vdGUiOiJSZWNvcmRpbmdzIGFyZSBzdG9yZWQgdGVtcG9yYXJpbHkgaW4geW91ciBicm93c2VyIG9ubHkgXHUyMDE0IG5vdGhpbmcgaXMgdXBsb2FkZWQgdG8gYW55IHNlcnZlci4gVGhleSBhcmUgbG9zdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFnZSwgc28gZG93bmxvYWQgYW55IHlvdSB3YW50IHRvIGtlZXAuIiwicHJlcFRpdGxlIjoiUHJlcGFyYXRpb24gVGltZSIsInJlY1RpdGxlIjoiUmVjb3JkaW5nIiwic3RhcnRQcmVwIjoiXHUyNWI2IFN0YXJ0IHByZXBhcmF0aW9uIiwic2tpcFByZXAiOiJTa2lwIFx1MjAxNCByZWNvcmQgbm93IFx1MDBiYiIsInN0b3BSZWMiOiJcdTI1YTAgU3RvcCByZWNvcmRpbmciLCJyZWNvcmRlZCI6IlJlY29yZGVkIiwicmVSZWNvcmQiOiJcdTIxYmIgUmVjb3JkIGFnYWluIiwiZG93bmxvYWQiOiJcdTJiMDcgRG93bmxvYWQiLCJ0aW1lck9ubHkiOiJUaW1lci1vbmx5IG1vZGUgKG5vdCByZWNvcmRpbmcpIiwic3BlYWtOb3ciOiJTUEVBSyBOT1cgXHUyMDE0IHJlY29yZGluZyBzdG9wcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGltZSBpcyB1cCIsIm5leHQiOiJORVhUIiwiY2hvb3NlSGludCI6IkNsaWNrIHRvIGNob29zZSBvbmUgb3B0aW9uIFx1MjAxNCBpZiB0aGUgNjAgc2Vjb25kcyBydW4gb3V0LCB0aGUgc3lzdGVtIGNob29zZXMgZm9yIHlvdSIsImNvbmZpcm1DaG9pY2UiOiJDb25maXJtIGNob2ljZSAmIGNvbnRpbnVlIFx1MDBiYiIsInlvdXJDaG9pY2UiOiJZb3VyIENob2ljZSIsInRpcHNUb2dnbGUiOiJcdWQ4M2RcdWRjYTEgVGlwcyAmIHNhbXBsZSBhbnN3ZXJzIChvcGVuIGFmdGVyIHlvdSBmaW5pc2ggc3BlYWtpbmcpIiwidGFiVGlwcyI6Ik91dGxpbmUgJiBwaHJhc2VzIiwidGFiUzYiOiJTYW1wbGUgQ0xCIDYiLCJ0YWJTOSI6IlNhbXBsZSBDTEIgOSIsInRhYlJ1YnJpYyI6IlNlbGYtYXNzZXNzbWVudCIsInJ1YnJpY05vdGUiOiJMaXN0ZW4gdG8geW91ciByZWNvcmRpbmcsIHRoZW4gcmF0ZSB5b3Vyc2VsZiAxXHUyMDEzNSBvbiBlYWNoIGNyaXRlcmlvbiAodGhlIDQgb2ZmaWNpYWwgQ0VMUElQIHJhdGluZyBkaW1lbnNpb25zKToiLCJydWJyaWNDcml0IjpbIkNvbnRlbnQgJiBDb2hlcmVuY2UgXHUyMDE0IGNvbXBsZXRlIGlkZWFzLCBsb2dpY2FsIGZsb3ciLCJWb2NhYnVsYXJ5IFx1MjAxNCByYW5nZSBhbmQgcHJlY2lzaW9uIiwiTGlzdGVuYWJpbGl0eSBcdTIwMTQgcHJvbnVuY2lhdGlvbiwgaW50b25hdGlvbiwgZmx1ZW5jeSIsIlRhc2sgRnVsZmlsbG1lbnQgXHUyMDE0IGFkZHJlc3NlcyB0aGUgdGFzaywgYXBwcm9wcmlhdGUgbGVuZ3RoIl0sImVzdGltYXRlIjoiRXN0aW1hdGVkIGxldmVsIChmb3IgcmVmZXJlbmNlKToiLCJlc3REaXNjbGFpbWVyIjoiU2VsZi1hc3Nlc3NtZW50IGlzIGEgcm91Z2ggZ3VpZGUgb25seSBcdTIwMTQgaXQgZG9lcyBub3QgcmVwbGFjZSBhbiBvZmZpY2lhbCBzY29yZS4iLCJ1c2VmdWxQaHJhc2VzIjoiVXNlZnVsIHBocmFzZXMiLCJlbmRUaXRsZSI6IlNwZWFraW5nIHRlc3QgY29tcGxldGUhIiwiZW5kU3ViIjoiUmVwbGF5IGVhY2ggdGFzaywgY29tcGFyZSB5b3VyIGFuc3dlcnMgd2l0aCB0aGUgQ0xCIDYgLyBDTEIgOSBzYW1wbGVzLCB0aGVuIHJhdGUgeW91cnNlbGYuIiwiZW5kTm9SZWMiOiJub3QgcmVjb3JkZWQiLCJlbmRSZWRvIjoiXHUyMWJiIFN0YXJ0IG92ZXIiLCJlbmRUMiI6IkNvbnRpbnVlIHRvIFByYWN0aWNlIFRlc3QiLCJlbmRIdWIiOiJcdTIxOTAgQmFjayB0byBDRUxQSVAgSHViIiwid2FybXVwQmFkZ2UiOiJXYXJtLXVwIFx1MjAxNCBub3Qgc2NvcmVkIiwiaW50cm9Ob3RlcyI6WyJBbiBhY2N1cmF0ZSBzaW11bGF0aW9uIG9mIHRoZSByZWFsIENFTFBJUCBHZW5lcmFsIFNwZWFraW5nIHRlc3Q6IDEgcHJhY3RpY2UgKHdhcm0tdXApIHRhc2sgKyA4IHNjb3JlZCB0YXNrcywgYWJvdXQgMjAgbWludXRlcyBpbiB0b3RhbC4iLCJFYWNoIHRhc2s6IHJlYWQgdGhlIHByb21wdCBcdTIxOTIgPGI+UHJlcGFyYXRpb248L2I+IGNvdW50ZG93biBcdTIxOTIgc3dpdGNoZXMgYXV0b21hdGljYWxseSB0byA8Yj5SZWNvcmRpbmc8L2I+ICh3aXRoIGEgYmVlcCkgXHUyMTkyIHN0b3BzIHdoZW4gdGltZSBpcyB1cC4iLCJPbiB0aGUgcmVhbCB0ZXN0IHlvdSBjYW5ub3QgZ28gYmFjayB0byBhIHByZXZpb3VzIHRhc2suIEluIHByYWN0aWNlIG1vZGUsIHlvdSBjYW4gY2xpY2sgdGhlIG51bWJlcmVkIGNoaXBzIGFib3ZlIHRvIHJldmlzaXQgYW55IHRhc2suIiwiQWZ0ZXIgc3BlYWtpbmcgb24gZWFjaCB0YXNrLCBvcGVuIDxiPlRpcHMgJiBzYW1wbGUgYW5zd2VyczwvYj4gdG8gY29tcGFyZSB5b3VyIHJlc3BvbnNlIHdpdGggdGhlIENMQiA2IGFuZCBDTEIgOSBzYW1wbGVzLiJdLCJoZXJvVGFnIjoiQ0VMUElQIEdlbmVyYWwgXHUyMDE0IFNwZWFraW5nIiwiaGVyb01ldGEiOlsiOCB0YXNrcyArIHdhcm0tdXAiLCJ+MjAgbWludXRlcyIsIlJlY29yZCAmIHJlcGxheSIsIkNMQiA2IC8gQ0xCIDkgc2FtcGxlcyJdfX07Ci8qIENFTFBJUCBTcGVha2luZyBFbmdpbmUgdjEuMCAtIEFsbEVuZ2xpc2g0VSAtIHZhbmlsbGEgSlMsIHByZWZpeCBjbHAtc3BrICovCihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CnZhciBEID0gd2luZG93LkNMUFNQS19EQVRBLCBVID0gRC51aTsKdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwLXNway1yb290Iik7CmlmKCFyb290KSByZXR1cm47CgovKiAtLS0tLS0tLS0tIHN0eWxlIC0tLS0tLS0tLS0gKi8KdmFyIENTUyA9ICIiKwoiLmNscC1zcGstd3JhcHttYXgtd2lkdGg6MTE0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzowIDE0cHggNjBweDtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMyMzI3MmQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0iKwoiLmNscC1zcGstd3JhcCAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0iKwoiLmNscC1zcGstaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzdmMWQxZCAwJSwjYjkxYzFjIDU1JSwjZGMyNjI2IDEwMCUpO2JvcmRlci1yYWRpdXM6MThweDtjb2xvcjojZmZmO3BhZGRpbmc6MzBweCAzMHB4IDI2cHg7bWFyZ2luOjE4cHggMCAyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstaGVybzphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi02MHB4O3RvcDotNjBweDt3aWR0aDoyMjBweDtoZWlnaHQ6MjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9IisKIi5jbHAtc3BrLWhlcm8gLnRhZ3tkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE2KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjM1KTtwYWRkaW5nOjNweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouNnB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstaGVybyBoMXttYXJnaW46MTBweCAwIDZweDtmb250LXNpemU6MjdweDtsaW5lLWhlaWdodDoxLjI1O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGF7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLXRvcDoxMnB4fSIrCiIuY2xwLXNway1oZXJvIC5tZXRhIHNwYW57YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yMik7cGFkZGluZzo0cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHh9IisKIi5jbHAtc3BrLWNoaXBze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbjowIDAgMTRweH0iKwoiLmNscC1zcGstY2hpcHttaW4td2lkdGg6MzhweDtoZWlnaHQ6MzRweDtib3JkZXItcmFkaXVzOjlweDtib3JkZXI6MS41cHggc29saWQgI2QzZDhkZjtiYWNrZ3JvdW5kOiNmZmY7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6IzViNjU3MjtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMTBweH0iKwoiLmNscC1zcGstY2hpcC5jdXJ7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWNoaXAuZG9uZXtiYWNrZ3JvdW5kOiNlNmY0ZWE7Ym9yZGVyLWNvbG9yOiM3YmMzOTQ7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstcGFuZWx7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDMwLDQwLDYwLC4wNil9IisKIi5jbHAtc3BrLWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2JhY2tncm91bmQ6I2VjZWNlZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDVkNWQ4O3BhZGRpbmc6OXB4IDE0cHg7ZmxleC13cmFwOndyYXB9IisKIi5jbHAtc3BrLWJhciAudHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE0LjVweDtjb2xvcjojM2M0MDQ2fSIrCiIuY2xwLXNway1iYXIgLm17bWFyZ2luLWxlZnQ6YXV0bztmb250LXNpemU6MTIuNXB4O2NvbG9yOiM1NTU7d2hpdGUtc3BhY2U6bm93cmFwfSIrCiIuY2xwLXNway1iYXIgLm0gYntjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1uZXh0e2JhY2tncm91bmQ6IzE0NjdjNjtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi44cHg7cGFkZGluZzo3cHggMThweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstbmV4dDpob3ZlcntiYWNrZ3JvdW5kOiMwZjU3YWJ9IisKIi5jbHAtc3BrLWJvZHl7cGFkZGluZzoxOHB4IDIwcHggMjJweH0iKwoiLmNscC1zcGstcHJvbXB0e2Rpc3BsYXk6ZmxleDtnYXA6OXB4O2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNS41cHg7bGluZS1oZWlnaHQ6MS41fSIrCiIuY2xwLXNway1wcm9tcHQgLml7ZmxleDowIDAgYXV0bzt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6IzJjN2NiMDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjgwMDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoycHh9IisKIi5jbHAtc3BrLWxlYWR7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo0cHh9IisKIi5jbHAtc3BrLWNob29zZTF7bWFyZ2luOjE0cHggMCAwO3BhZGRpbmc6MTJweCAxNnB4O2JhY2tncm91bmQ6I2Y1ZjdmYTtib3JkZXI6MXB4IHNvbGlkICNkZmU0ZWE7Ym9yZGVyLXJhZGl1czo5cHg7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjU1fSIrCiIuY2xwLXNway1jaG9vc2UxIC5le2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojOGExZjFmO2xldHRlci1zcGFjaW5nOi40cHh9IisKIi5jbHAtc3BrLWltZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDo1NDBweDt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2NmZDRkYTtib3JkZXItcmFkaXVzOjhweDttYXJnaW46MTZweCAwIDRweH0iKwoiLmNscC1zcGstbm90ZXtmb250LXNpemU6MTJweDtjb2xvcjojOGE5MjljO21hcmdpbi10b3A6NnB4fSIrCiIuY2xwLXNway10aW1lcnJvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MjBweCAwIDZweH0iKwoiLmNscC1zcGstdGltZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweDtiYWNrZ3JvdW5kOiNlOWVjZWY7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE2cHggMjZweDttaW4td2lkdGg6MzAwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIgLmlje3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZjhmOWZhO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjIycHh9IisKIi5jbHAtc3BrLXRpbWVyIC5sYntmb250LXdlaWdodDo3MDA7Y29sb3I6IzMzMzgzZjtmb250LXNpemU6MTVweH0iKwoiLmNscC1zcGstdGltZXIgLm57Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMwYjU3ZDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO21pbi13aWR0aDo1MnB4O3RleHQtYWxpZ246Y2VudGVyfSIrCiIuY2xwLXNway10aW1lci5yZWN7YmFja2dyb3VuZDojZmRlY2ViO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway10aW1lci5yZWMgLm57Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstdGltZXIucmVjIC5pY3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLWRvdHt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2U1MzkzNTtkaXNwbGF5OmlubGluZS1ibG9jazthbmltYXRpb246Y2xwYmxpbmsgMXMgaW5maW5pdGV9IisKIkBrZXlmcmFtZXMgY2xwYmxpbmt7MCUsMTAwJXtvcGFjaXR5OjF9NTAle29wYWNpdHk6LjI1fX0iKwoiLmNscC1zcGstY3Rye2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjoxNHB4IDAgMnB4fSIrCiIuY2xwLXNway1idG57Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzM4M2Y7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzo5cHggMThweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYnRuOmhvdmVye2JvcmRlci1jb2xvcjojOWFhM2FkfSIrCiIuY2xwLXNway1idG4ucHJpe2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1idG4ucHJpOmhvdmVye2JhY2tncm91bmQ6IzBhNGNiNX0iKwoiLmNscC1zcGstYnRuLndhcm57YmFja2dyb3VuZDojYzYyODI4O2JvcmRlci1jb2xvcjojYzYyODI4O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXNwZWFrbm93e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNjNjI4Mjg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6OHB4O2xldHRlci1zcGFjaW5nOi4zcHh9IisKIi5jbHAtc3BrLXJldmlld3ttYXJnaW46MTZweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2YyZjlmMztib3JkZXI6MXB4IHNvbGlkICNiZmUzYzY7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAxOHB4fSIrCiIuY2xwLXNway1yZXZpZXcgLm9re2NvbG9yOiMxZTdiM2U7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNC41cHh9IisKIi5jbHAtc3BrLXJldmlldyBhdWRpb3t3aWR0aDoxMDAlO21hcmdpbjoxMHB4IDAgOHB4fSIrCiIuY2xwLXNway1taWN7bWFyZ2luOjEycHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmZmY4ZTY7Ym9yZGVyOjFweCBzb2xpZCAjZWNkOWEwO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MTNweDtjb2xvcjojN2E1YjEyfSIrCiIuY2xwLXNway1vcHRze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTZweDttYXJnaW46MThweCAwIDRweH0iKwoiLmNscC1zcGstY2FyZHtib3JkZXI6MnB4IHNvbGlkICNkNWRhZTA7Ym9yZGVyLXJhZGl1czoxMXB4O3BhZGRpbmc6MTNweCAxNXB4IDE1cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojZmZmO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXN9IisKIi5jbHAtc3BrLWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM4ZmI0ZTh9IisKIi5jbHAtc3BrLWNhcmQuc2Vse2JvcmRlci1jb2xvcjojMmU5ZTRmO2JhY2tncm91bmQ6I2VlZjlmMH0iKwoiLmNscC1zcGstY2FyZC5wbGFpbntjdXJzb3I6ZGVmYXVsdH0iKwoiLmNscC1zcGstY2FyZCAuaGR7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzZiNzQ4MDtsZXR0ZXItc3BhY2luZzouM3B4O21hcmdpbi1ib3R0b206OHB4fSIrCiIuY2xwLXNway1jYXJkIGltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6N3B4O2JvcmRlcjoxcHggc29saWQgI2UyZTZlYX0iKwoiLmNscC1zcGstY2FyZCAudHR7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjoxMHB4IDAgNnB4O2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLWNhcmQgdWx7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjE4cHg7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU1O2NvbG9yOiMzYzQzNGJ9IisKIi5jbHAtc3BrLWNhcmQgLnBpY2t7bWFyZ2luLXRvcDoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMmU5ZTRmO2ZvbnQtc2l6ZToxM3B4O21pbi1oZWlnaHQ6MThweH0iKwoiLmNscC1zcGstaGludHt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojNmI3NDgwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstYWNje21hcmdpbi10b3A6MjJweDtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMXB4O292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstYWNjPmJ1dHRvbnt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjA7cGFkZGluZzoxMnB4IDE2cHg7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMzYzQwNDY7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpub25lO3BhZGRpbmc6MTRweCAxNnB4IDE4cHg7YmFja2dyb3VuZDojZmZmfSIrCiIuY2xwLXNway1hY2Mub3BlbiAuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnN7ZGlzcGxheTpmbGV4O2dhcDo2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMnB4fSIrCiIuY2xwLXNway10YWJ7Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo2cHggMTVweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNGE1MjVjfSIrCiIuY2xwLXNway10YWIub257YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXRhYnBhbmV7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42NX0iKwoiLmNscC1zcGstdGFicGFuZS5vbntkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJwYW5lIHVse3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbjo4cHggMH0iKwoiLmNscC1zcGstdGFicGFuZSBsaXttYXJnaW46NXB4IDB9IisKIi5jbHAtc3BrLXNhbXBsZXtiYWNrZ3JvdW5kOiNmOGY5ZmI7Ym9yZGVyOjFweCBzb2xpZCAjZTNlN2VjO2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjMGI1N2QwO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTNweCAxNnB4O3doaXRlLXNwYWNlOnByZS13cmFwfSIrCiIuY2xwLXNway1zYW1wbGUuczZ7Ym9yZGVyLWxlZnQtY29sb3I6I2U4YTEzY30iKwoiLmNscC1zcGstcGhye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstcGhyIHNwYW57YmFja2dyb3VuZDojZWVmM2ZiO2JvcmRlcjoxcHggc29saWQgI2NkZGRmNTtjb2xvcjojMTc0YTljO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo0cHggMTJweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstcnVie2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLXJ1YiB0ZHtwYWRkaW5nOjdweCA2cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZjBmM30iKwoiLmNscC1zcGstc3RhcntjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTlweDtjb2xvcjojYzljZmQ2O3BhZGRpbmc6MCAxcHg7dXNlci1zZWxlY3Q6bm9uZX0iKwoiLmNscC1zcGstc3Rhci5vbntjb2xvcjojZjBhNzFifSIrCiIuY2xwLXNway1lc3R7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZThkNDhiO2NvbG9yOiM3YTViMTI7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMTJweDttYXJnaW4tYm90dG9tOjEwcHh9IisKIi5jbHAtc3BrLWludHJvIHVse2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS43O3BhZGRpbmctbGVmdDoyMHB4fSIrCiIuY2xwLXNway1pbnRybyBsaXttYXJnaW46N3B4IDB9IisKIi5jbHAtc3BrLW1pY3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MXB4IHNvbGlkICNlMGU0ZTk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweCAxNnB4O21hcmdpbjoxNnB4IDB9IisKIi5jbHAtc3BrLW1pY3N0e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1taWNzdC5va3tjb2xvcjojMWU3YjNlfS5jbHAtc3BrLW1pY3N0LmJhZHtjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway1lbmQgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjE0cHh9IisKIi5jbHAtc3BrLWVuZCB0ZCwuY2xwLXNway1lbmQgdGh7cGFkZGluZzo5cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2VmZjI7dGV4dC1hbGlnbjpsZWZ0fSIrCiIuY2xwLXNway1lbmQgYXVkaW97aGVpZ2h0OjM0cHg7bWF4LXdpZHRoOjIzMHB4fSIrCiJAbWVkaWEobWF4LXdpZHRoOjcwMHB4KXsuY2xwLXNway1vcHRze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmNscC1zcGstYmFyIC5te29yZGVyOjM7bWFyZ2luLWxlZnQ6MDt3aWR0aDoxMDAlfS5jbHAtc3BrLWhlcm8gaDF7Zm9udC1zaXplOjIycHh9LmNscC1zcGstYm9keXtwYWRkaW5nOjE0cHggMTJweCAxOHB4fX0iOwp2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOyBzdC50ZXh0Q29udGVudCA9IENTUzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CgovKiAtLS0tLS0tLS0tIHN0YXRlIC0tLS0tLS0tLS0gKi8KdmFyIFMgPSB7CiAgY3VyOiAtMSwgICAgICAgICAgICAvKiAtMSBpbnRybywgMC4uOCB0YXNrcywgOTkgZW5kICovCiAgbWljU3RhdGU6ICJpZGxlIiwgICAvKiBpZGxlfG9rfGJhZCAqLwogIHN0cmVhbTogbnVsbCwgcmVjb3JkZXI6IG51bGwsIGNodW5rczogW10sCiAgdGltZXI6IG51bGwsIHBoYXNlOiB7fSwgdDVjaG9pY2U6IHt9LCByZWNzOiB7fSwgcnVicmljOiB7fSwKICBtaW1lOiAiIiwgZXh0OiAid2VibSIKfTsKRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZCA\/ICJjaG9vc2UtaWRsZSIgOiAiaWRsZSI7IH0pOwoKZnVuY3Rpb24gcGlja01pbWUoKXsKICBpZighd2luZG93Lk1lZGlhUmVjb3JkZXIpIHJldHVybiBudWxsOwogIHZhciBjYW5kcyA9IFtbImF1ZGlvL3dlYm07Y29kZWNzPW9wdXMiLCJ3ZWJtIl0sWyJhdWRpby93ZWJtIiwid2VibSJdLFsiYXVkaW8vbXA0IiwibTRhIl0sWyJhdWRpby9vZ2c7Y29kZWNzPW9wdXMiLCJvZ2ciXV07CiAgZm9yKHZhciBpPTA7aTxjYW5kcy5sZW5ndGg7aSsrKXsgdHJ5eyBpZihNZWRpYVJlY29yZGVyLmlzVHlwZVN1cHBvcnRlZChjYW5kc1tpXVswXSkpIHJldHVybiBjYW5kc1tpXTsgfWNhdGNoKGUpe30gfQogIHJldHVybiBbIiIsIndlYm0iXTsKfQpmdW5jdGlvbiBlbnN1cmVNaWMoY2IpewogIGlmKFMubWljU3RhdGU9PT0ib2siKSByZXR1cm4gY2IodHJ1ZSk7CiAgaWYoUy5taWNTdGF0ZT09PSJiYWQiKSByZXR1cm4gY2IoZmFsc2UpOwogIGlmKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fCAhd2luZG93Lk1lZGlhUmVjb3JkZXIpeyBTLm1pY1N0YXRlPSJiYWQiOyByZXR1cm4gY2IoZmFsc2UpOyB9CiAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGZ1bmN0aW9uKHN0cmVhbSl7CiAgICBTLnN0cmVhbSA9IHN0cmVhbTsgdmFyIG0gPSBwaWNrTWltZSgpOyBTLm1pbWUgPSBtWzBdOyBTLmV4dCA9IG1bMV07IFMubWljU3RhdGU9Im9rIjsgY2IodHJ1ZSk7CiAgfSkuY2F0Y2goZnVuY3Rpb24oKXsgUy5taWNTdGF0ZT0iYmFkIjsgY2IoZmFsc2UpOyB9KTsKfQpmdW5jdGlvbiBiZWVwKG4pewogIHRyeXsKICAgIHZhciBjdHggPSB3aW5kb3cuX19jbHBBQyA9IHdpbmRvdy5fX2NscEFDIHx8IG5ldyAod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkoKTsKICAgIHZhciB0MCA9IGN0eC5jdXJyZW50VGltZTsKICAgIGZvcih2YXIgaT0wO2k8bjtpKyspewogICAgICB2YXIgbyA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCksIGcgPSBjdHguY3JlYXRlR2FpbigpOwogICAgICBvLmZyZXF1ZW5jeS52YWx1ZSA9IDg4MDsgby5jb25uZWN0KGcpOyBnLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKTsKICAgICAgZy5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUpOyBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjE4LHQwK2kqMC4yNSswLjAyKTsKICAgICAgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSswLjE4KTsKICAgICAgby5zdGFydCh0MCtpKjAuMjUpOyBvLnN0b3AodDAraSowLjI1KzAuMik7CiAgICB9CiAgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBzdG9wVGltZXIoKXsgaWYoUy50aW1lcil7IGNsZWFySW50ZXJ2YWwoUy50aW1lcik7IFMudGltZXI9bnVsbDsgfSB9CmZ1bmN0aW9uIGNvdW50ZG93bihzZWNzLCBvblRpY2ssIG9uRW5kKXsKICBzdG9wVGltZXIoKTsKICB2YXIgZW5kID0gRGF0ZS5ub3coKSArIHNlY3MqMTAwMDsKICBvblRpY2soc2Vjcyk7CiAgUy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKGVuZC1EYXRlLm5vdygpKS8xMDAwKSk7CiAgICBvblRpY2sobGVmdCk7CiAgICBpZihsZWZ0PD0wKXsgc3RvcFRpbWVyKCk7IG9uRW5kKCk7IH0KICB9LCAyNTApOwp9CmZ1bmN0aW9uIHN0b3BSZWNvcmRpbmcoKXsKICBpZihTLnJlY29yZGVyICYmIFMucmVjb3JkZXIuc3RhdGUhPT0iaW5hY3RpdmUiKXsgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpe30gfQogIFMucmVjb3JkZXIgPSBudWxsOwp9CmZ1bmN0aW9uIGxlYXZlQ2xlYW51cCgpeyBzdG9wVGltZXIoKTsgc3RvcFJlY29yZGluZygpOyB9CgovKiAtLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbCh0YWcsIGNscywgaHRtbCl7IHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsgaWYoY2xzKWUuY2xhc3NOYW1lPWNsczsgaWYoaHRtbCE9bnVsbCllLmlubmVySFRNTD1odG1sOyByZXR1cm4gZTsgfQpmdW5jdGlvbiBmbXRNZXRhKHQpewogIGlmKHQucGhhc2VkKSByZXR1cm4gIiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gdGFza1RpdGxlKHQpewogIGlmKHQud2FybXVwKSByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFByYWN0aWNlIFRhc2siOwogIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgVGFzayAiK3QubnVtKyI6ICIrdC50eXBlRW47Cn0KZnVuY3Rpb24gZXN0VGV4dChhdmcpewogIGlmKGF2Zz49NC41KSByZXR1cm4gIkNMQiA5KyI7IGlmKGF2Zz49My41KSByZXR1cm4gIkNMQiA3XHUyMDEzOCI7IGlmKGF2Zz49Mi41KSByZXR1cm4gIkNMQiA1XHUyMDEzNiI7IHJldHVybiAiQ0xCIDQgb3IgYmVsb3ciOwp9CgovKiAtLS0tLS0tLS0tIHJlbmRlciAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHJlbmRlcigpewogIGxlYXZlQ2xlYW51cCgpOwogIHJvb3QuaW5uZXJIVE1MID0gIiI7CiAgdmFyIHdyYXAgPSBlbCgiZGl2IiwiY2xwLXNway13cmFwIik7CiAgd3JhcC5hcHBlbmRDaGlsZChoZXJvKCkpOwogIGlmKFMuY3VyPj0wICYmIFMuY3VyPEQudGFza3MubGVuZ3RoKSB3cmFwLmFwcGVuZENoaWxkKGNoaXBzKCkpOwogIGlmKFMuY3VyPT09LTEpIHdyYXAuYXBwZW5kQ2hpbGQoaW50cm8oKSk7CiAgZWxzZSBpZihTLmN1cj09PTk5KSB3cmFwLmFwcGVuZENoaWxkKGVuZFNjcmVlbigpKTsKICBlbHNlIHdyYXAuYXBwZW5kQ2hpbGQodGFza1BhbmVsKEQudGFza3NbUy5jdXJdKSk7CiAgcm9vdC5hcHBlbmRDaGlsZCh3cmFwKTsKICB0cnl7IHdpbmRvdy5zY3JvbGxUbyh7dG9wOiByb290Lm9mZnNldFRvcC0xMCwgYmVoYXZpb3I6InNtb290aCJ9KTsgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBoZXJvKCl7CiAgdmFyIGggPSBlbCgiZGl2IiwiY2xwLXNway1oZXJvIik7CiAgaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsInRhZyIsVS5oZXJvVGFnKSk7CiAgaC5hcHBlbmRDaGlsZChlbCgiaDEiLG51bGwsRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gPyAiU3BlYWtpbmcgXHUyMDE0IitELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA6IEQudGl0bGUpKTsKICB2YXIgbSA9IGVsKCJkaXYiLCJtZXRhIik7CiAgVS5oZXJvTWV0YS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBtLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgaC5hcHBlbmRDaGlsZChtKTsKICByZXR1cm4gaDsKfQpmdW5jdGlvbiBjaGlwcygpewogIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hpcHMiKTsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciBiID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKGk9PT1TLmN1cj8iIGN1ciI6KFMucmVjc1t0LmtdPyIgZG9uZSI6IiIpKSwgdC53YXJtdXA\/IlciOlN0cmluZyh0Lm51bSkpOwogICAgYi50aXRsZSA9IHQudHlwZUVuOwogICAgYi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICBjLmFwcGVuZENoaWxkKGIpOwogIH0pOwogIHZhciBlID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKFMuY3VyPT09OTk\/IiBjdXIiOiIiKSwiXHVkODNjXHVkZmMxIik7CiAgZS50aXRsZSA9ICJGaW5pc2giOyBlLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj05OTsgcmVuZGVyKCk7IH07CiAgYy5hcHBlbmRDaGlsZChlKTsKICByZXR1cm4gYzsKfQpmdW5jdGlvbiBpbnRybygpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1pbnRybyIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmciKSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsgbnguc3R5bGUubWFyZ2luTGVmdD0iYXV0byI7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7IHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLCJTcGVha2luZyBUZXN0IEluc3RydWN0aW9ucyIpKTsKICBiLmFwcGVuZENoaWxkKHByKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBVLmludHJvTm90ZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYi5hcHBlbmRDaGlsZCh1bCk7CiAgdmFyIG1pY3JvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLW1pY3JvdyIpOwogIHZhciBtYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5taWNFbmFibGUpOwogIHZhciBtc3QgPSBlbCgic3BhbiIsImNscC1zcGstbWljc3QiLCIiKTsKICBtYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgbWJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24ob2spewogICAgICBtc3QuY2xhc3NOYW1lID0gImNscC1zcGstbWljc3QgIisob2s\/Im9rIjoiYmFkIik7CiAgICAgIG1zdC5pbm5lckhUTUwgPSBvayA\/ICJcdTI3MTQgIitVLm1pY1JlYWR5IDogIlx1MjcxNiAiK1UubWljQmxvY2tlZDsKICAgICAgaWYoIW9rKSBtYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICB9KTsKICB9OwogIG1pY3Jvdy5hcHBlbmRDaGlsZChtYnRuKTsgbWljcm93LmFwcGVuZENoaWxkKG1zdCk7CiAgYi5hcHBlbmRDaGlsZChtaWNyb3cpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5taWNOb3RlKSk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRUZXN0KyIgXHUyNWI2Iik7CiAgZ28uc3R5bGUuZm9udFNpemU9IjE1cHgiOyBnby5zdHlsZS5wYWRkaW5nPSIxMnB4IDI2cHgiOwogIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBjdHIuYXBwZW5kQ2hpbGQoZ28pOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiAtLS0tLS0tLS0tIHRhc2sgcGFuZWwgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0YXNrUGFuZWwodCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0Iix0YXNrVGl0bGUodCkpKTsKICB2YXIgbWV0YSA9IGVsKCJzcGFuIiwibSIsIHQucGhhc2VkID8gcGhhc2VkTWV0YSh0KSA6IGZtdE1ldGEodCkpOwogIGJhci5hcHBlbmRDaGlsZChtZXRhKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1ciA9IChTLmN1cisxIDwgRC50YXNrcy5sZW5ndGgpID8gUy5jdXIrMSA6IDk5OyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBpZih0Lndhcm11cCkgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1iYWRnZSIsVS53YXJtdXBCYWRnZSkpOwogIGlmKHQucGhhc2VkKSByZW5kZXJUNSh0LGIsbWV0YSk7CiAgZWxzZSByZW5kZXJTdGQodCxiKTsKICBpZih0LnRpcHMpIGIuYXBwZW5kQ2hpbGQoYWNjb3JkaW9uKHQpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CmZ1bmN0aW9uIHBoYXNlZE1ldGEodCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdfHwiIjsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5jaG9vc2UucHJlcCsiIHNlY29uZHM8L2I+IjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3Quc3BlYWsucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnNwZWFrLnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiBwcm9tcHRSb3codGV4dCwgbGVhZCl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihsZWFkKXsgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWxlYWQiLGxlYWQpKTsgfQogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsdGV4dCkpOwogIGJveC5hcHBlbmRDaGlsZChwcik7CiAgcmV0dXJuIGJveDsKfQpmdW5jdGlvbiByZW5kZXJTdGQodCxiKXsKICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnByb21wdCwgdC5wcm9tcHRMZWFkKSk7CiAgaWYodC5jaG9vc2VPbmUpewogICAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaG9vc2UxIiwiPGRpdiBjbGFzcz0nZSc+Q2hvb3NlIE9ORTo8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPkVJVEhFUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVswXSsiPC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5PUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVsxXSsiPC9kaXY+Iik7CiAgICBiLmFwcGVuZENoaWxkKGMpOwogIH0KICBpZih0LmltZyAmJiBELmltZ3NbdC5pbWddKXsKICAgIHZhciBpbSA9IGVsKCJpbWciLCJjbHAtc3BrLWltZyIpOyBpbS5zcmMgPSBELmltZ3NbdC5pbWddOyBpbS5hbHQgPSB0LnR5cGVFbjsKICAgIGIuYXBwZW5kQ2hpbGQoaW0pOwogIH0KICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnByZXAsIHQucmVjLCAidCIpKTsKfQpmdW5jdGlvbiByZW5kZXJUNSh0LGIsbWV0YUVsKXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua107CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKXsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuY2hvb3NlLnNpdHVhdGlvbikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIix0LmNob29zZS5ub3RlKSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHQuY2hvb3NlLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvLGlkeCl7CiAgICAgIHZhciBjYXJkID0gZWwoImRpdiIsImNscC1zcGstY2FyZCIrKFMudDVjaG9pY2VbdC5rXT09PWlkeD8iIHNlbCI6IiIpKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMobykpOwogICAgICB2YXIgcGsgPSBlbCgiZGl2IiwicGljayIsIFMudDVjaG9pY2VbdC5rXT09PWlkeCA\/ICJcdTI3MTQgU2VsZWN0ZWQiIDogIiIpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHBrKTsKICAgICAgY2FyZC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICBTLnQ1Y2hvaWNlW3Qua10gPSBpZHg7CiAgICAgICAgZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1jYXJkIikuZm9yRWFjaChmdW5jdGlvbihjZCxqKXsKICAgICAgICAgIGNkLmNsYXNzTmFtZSA9ICJjbHAtc3BrLWNhcmQiKyhqPT09aWR4PyIgc2VsIjoiIik7CiAgICAgICAgICBjZC5xdWVyeVNlbGVjdG9yKCIucGljayIpLnRleHRDb250ZW50ID0gKGo9PT1pZHgpPyJcdTI3MTQgU2VsZWN0ZWQiOiIiOwogICAgICAgIH0pOwogICAgICAgIGNidG4uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwogICAgICB9OwogICAgICBncmlkLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1oaW50IixVLmNob29zZUhpbnQpKTsKICAgIC8qIGNvdW50ZG93biBmb3IgY2hvb3NlIHBoYXNlICovCiAgICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogICAgdG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpKTsKICAgIHZhciBsYiA9IGVsKCJkaXYiKTsgbGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSkpOwogICAgdG0uYXBwZW5kQ2hpbGQobGIpOwogICAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyh0LmNob29zZS5wcmVwKSk7CiAgICB0bS5hcHBlbmRDaGlsZChuKTsKICAgIHRyb3cuYXBwZW5kQ2hpbGQodG0pOwogICAgYi5hcHBlbmRDaGlsZCh0cm93KTsKICAgIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHZhciBjYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmNvbmZpcm1DaG9pY2UpOwogICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gKFMudDVjaG9pY2VbdC5rXSE9bnVsbCk\/ImlubGluZS1ibG9jayI6Im5vbmUiOwogICAgdmFyIGdvU3BlYWsgPSBmdW5jdGlvbigpewogICAgICBzdG9wVGltZXIoKTsKICAgICAgaWYoUy50NWNob2ljZVt0LmtdPT1udWxsKSBTLnQ1Y2hvaWNlW3Qua10gPSAwOwogICAgICBTLnBoYXNlW3Qua10gPSAic3BlYWsiOwogICAgICByZW5kZXIoKTsKICAgIH07CiAgICBzdGFydC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBTLnBoYXNlW3Qua10gPSAiY2hvb3NlLXJ1biI7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9OwogICAgY2J0bi5vbmNsaWNrID0gZ29TcGVhazsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7IGN0ci5hcHBlbmRDaGlsZChjYnRuKTsKICAgIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICAgIGlmKFMucGhhc2VbdC5rXT09PSJjaG9vc2UtcnVuIil7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50PVN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9CiAgfSBlbHNlIHsKICAgIG1ldGFFbC5pbm5lckhUTUwgPSBwaGFzZWRNZXRhKHQpOwogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5zcGVhay5wcm9tcHQpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdmFyIG90aGVyID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiIpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIix0LnNwZWFrLm90aGVyTGFiZWwpKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyh0LnNwZWFrLm90aGVyKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG90aGVyKTsKICAgIHZhciBjaG9zZW4gPSB0LmNob29zZS5vcHRpb25zW1MudDVjaG9pY2VbdC5rXSE9bnVsbCA\/IFMudDVjaG9pY2VbdC5rXSA6IDBdOwogICAgdmFyIG1pbmUgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIHNlbCIpOwogICAgbWluZS5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLFUueW91ckNob2ljZSkpOwogICAgbWluZS5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMoY2hvc2VuKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG1pbmUpOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQuc3BlYWsucHJlcCwgdC5zcGVhay5yZWMsICJ0NXMiKSk7CiAgfQp9CmZ1bmN0aW9uIGltZ1RpdGxlQnVsbGV0cyhvKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKG8uaW1nICYmIEQuaW1nc1tvLmltZ10peyB2YXIgaW0gPSBlbCgiaW1nIik7IGltLnNyYyA9IEQuaW1nc1tvLmltZ107IGltLmFsdCA9IG8udGl0bGU7IGJveC5hcHBlbmRDaGlsZChpbSk7IH0KICBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsInR0IixvLnRpdGxlKSk7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgby5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGJveC5hcHBlbmRDaGlsZCh1bCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSBwcmVwL3JlY29yZCBibG9jayAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRpbWVyQmxvY2soa2V5LCBwcmVwU2VjcywgcmVjU2VjcywgbW9kZSl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICB2YXIgaWMgPSBlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIik7CiAgdmFyIGxiID0gZWwoImRpdiIpOyB2YXIgbGJ0ID0gZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSk7IGxiLmFwcGVuZENoaWxkKGxidCk7CiAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyhwcmVwU2VjcykpOwogIHRtLmFwcGVuZENoaWxkKGljKTsgdG0uYXBwZW5kQ2hpbGQobGIpOyB0bS5hcHBlbmRDaGlsZChuKTsKICB0cm93LmFwcGVuZENoaWxkKHRtKTsgYm94LmFwcGVuZENoaWxkKHRyb3cpOwogIHZhciBzcGVha25vdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXNwZWFrbm93IiwiIik7IGJveC5hcHBlbmRDaGlsZChzcGVha25vdyk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOyBib3guYXBwZW5kQ2hpbGQoY3RyKTsKICB2YXIgcmV2aWV3U2xvdCA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKHJldmlld1Nsb3QpOwogIHZhciBtaWNub3RlID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQobWljbm90ZSk7CgogIGZ1bmN0aW9uIHNob3dJZGxlKCl7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7IHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciI7IGxidC50ZXh0Q29udGVudCA9IFUucHJlcFRpdGxlOyBpYy50ZXh0Q29udGVudCA9ICJcdWQ4M2RcdWRkNTIiOyBuLnRleHRDb250ZW50ID0gU3RyaW5nKHByZXBTZWNzKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBzdGFydFByZXA7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOwogICAgaWYoUy5yZWNzW2tleV0pIHNob3dSZXZpZXcoZmFsc2UpOwogIH0KICBmdW5jdGlvbiBzdGFydFByZXAoKXsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbigpewogICAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICAgIHZhciBza2lwID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLnNraXBQcmVwKTsKICAgICAgc2tpcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgc3RvcFRpbWVyKCk7IHN0YXJ0UmVjKCk7IH07CiAgICAgIGN0ci5hcHBlbmRDaGlsZChza2lwKTsKICAgICAgY291bnRkb3duKHByZXBTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZnVuY3Rpb24oKXsgc3RhcnRSZWMoKTsgfSk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gc3RhcnRSZWMoKXsKICAgIGJlZXAoMik7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciByZWMiOwogICAgaWMuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdjbHAtc3BrLWRvdCc+PC9zcGFuPiI7CiAgICBuLnRleHRDb250ZW50ID0gU3RyaW5nKHJlY1NlY3MpOwogICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgdmFyIHN0b3BwZWQgPSBmYWxzZTsKICAgIHZhciBoYXZlTWljID0gKFMubWljU3RhdGU9PT0ib2siICYmIFMuc3RyZWFtKTsKICAgIGxidC50ZXh0Q29udGVudCA9IGhhdmVNaWMgPyBVLnJlY1RpdGxlIDogVS50aW1lck9ubHk7CiAgICBzcGVha25vdy50ZXh0Q29udGVudCA9IFUuc3BlYWtOb3c7CiAgICBtaWNub3RlLmlubmVySFRNTCA9IGhhdmVNaWMgPyAiIiA6ICI8ZGl2IGNsYXNzPSdjbHAtc3BrLW1pYyc+IitVLm1pY0Jsb2NrZWQrIjwvZGl2PiI7CiAgICB2YXIgdDAgPSBEYXRlLm5vdygpOwogICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uKCl7CiAgICAgIGlmKHN0b3BwZWQpIHJldHVybjsgc3RvcHBlZCA9IHRydWU7CiAgICAgIHN0b3BUaW1lcigpOyBiZWVwKDEpOwogICAgICBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgICB2YXIgc2VjcyA9IE1hdGgubWluKHJlY1NlY3MsIE1hdGgucm91bmQoKERhdGUubm93KCktdDApLzEwMDApKTsKICAgICAgaWYoaGF2ZU1pYyAmJiBTLnJlY29yZGVyKXsKICAgICAgICBTLnJlY29yZGVyLm9uc3RvcCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFMuY2h1bmtzLCBTLm1pbWU\/e3R5cGU6Uy5taW1lfTp1bmRlZmluZWQpOwogICAgICAgICAgaWYoUy5yZWNzW2tleV0gJiYgUy5yZWNzW2tleV0udXJsKXsgdHJ5eyBVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trZXldLnVybCk7IH1jYXRjaChlKXt9IH0KICAgICAgICAgIFMucmVjc1trZXldID0geyBibG9iOiBibG9iLCB1cmw6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIHNlY3M6IHNlY3MgfTsKICAgICAgICAgIFMucmVjb3JkZXIgPSBudWxsOwogICAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgICB9OwogICAgICAgIHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXsgUy5yZWNzW2tleV0gPSB7YmxvYjpudWxsLHVybDpudWxsLHNlY3M6c2Vjc307IHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7IH0KICAgICAgfSBlbHNlIHsKICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjpudWxsLCB1cmw6bnVsbCwgc2Vjczogc2VjcyB9OwogICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgIH0KICAgIH07CiAgICBpZihoYXZlTWljKXsKICAgICAgUy5jaHVua3MgPSBbXTsKICAgICAgdHJ5ewogICAgICAgIFMucmVjb3JkZXIgPSBTLm1pbWUgPyBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSx7bWltZVR5cGU6Uy5taW1lfSkgOiBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSk7CiAgICAgICAgUy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBmdW5jdGlvbihldil7IGlmKGV2LmRhdGEgJiYgZXYuZGF0YS5zaXplKSBTLmNodW5rcy5wdXNoKGV2LmRhdGEpOyB9OwogICAgICAgIFMucmVjb3JkZXIuc3RhcnQoKTsKICAgICAgfWNhdGNoKGUpeyBTLnJlY29yZGVyID0gbnVsbDsgaGF2ZU1pYyA9IGZhbHNlOyBsYnQudGV4dENvbnRlbnQgPSBVLnRpbWVyT25seTsgfQogICAgfQogICAgdmFyIHN0b3AgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gd2FybiIsVS5zdG9wUmVjKTsKICAgIHN0b3Aub25jbGljayA9IGZpbmlzaDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdG9wKTsKICAgIGNvdW50ZG93bihyZWNTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZmluaXNoKTsKICB9CiAgZnVuY3Rpb24gc2hvd1JldmlldyhzY3JvbGxUbyl7CiAgICB2YXIgciA9IFMucmVjc1trZXldOyBpZighcikgcmV0dXJuOwogICAgcmV2aWV3U2xvdC5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBydiA9IGVsKCJkaXYiLCJjbHAtc3BrLXJldmlldyIpOwogICAgcnYuYXBwZW5kQ2hpbGQoZWwoImRpdiIsIm9rIiwiXHUyNzE0ICIrVS5yZWNvcmRlZCsiICgiK3Iuc2VjcysicykiKSk7CiAgICBpZihyLnVybCl7CiAgICAgIHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOwogICAgICBydi5hcHBlbmRDaGlsZChhdSk7CiAgICAgIHZhciByb3cgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgICAgdmFyIGRsID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5kb3dubG9hZCk7CiAgICAgIGRsLmhyZWYgPSByLnVybDsgZGwuZG93bmxvYWQgPSAiY2VscGlwLXMiK0Quc2V0KyJ0IitELnRlc3QrIi10YXNrIisoa2V5PT09InciPyIwIjprZXkucmVwbGFjZSgidCIsIiIpKSsiLiIrUy5leHQ7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkbCk7CiAgICAgIHJ2LmFwcGVuZENoaWxkKHJvdyk7CiAgICB9CiAgICByZXZpZXdTbG90LmFwcGVuZENoaWxkKHJ2KTsKICAgIGlmKHNjcm9sbFRvKXsgdHJ5eyBydi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KTsgfWNhdGNoKGUpe30gfQogIH0KICBzaG93SWRsZSgpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gdGlwcy9zYW1wbGVzIGFjY29yZGlvbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGFjY29yZGlvbih0KXsKICB2YXIgYWNjID0gZWwoImRpdiIsImNscC1zcGstYWNjIik7CiAgdmFyIGJ0biA9IGVsKCJidXR0b24iLG51bGwsVS50aXBzVG9nZ2xlKTsKICBidG4ub25jbGljayA9IGZ1bmN0aW9uKCl7IGFjYy5jbGFzc05hbWUgPSBhY2MuY2xhc3NOYW1lLmluZGV4T2YoIm9wZW4iKT4tMSA\/ICJjbHAtc3BrLWFjYyIgOiAiY2xwLXNway1hY2Mgb3BlbiI7IH07CiAgYWNjLmFwcGVuZENoaWxkKGJ0bik7CiAgdmFyIGJvZHkgPSBlbCgiZGl2IiwiY2xwLXNway1hY2Nib2R5Iik7CiAgdmFyIHRhYnMgPSBlbCgiZGl2IiwiY2xwLXNway10YWJzIik7CiAgdmFyIHBhbmVzID0gW107CiAgZnVuY3Rpb24gYWRkVGFiKGxhYmVsLCBwYW5lQnVpbGRlcil7CiAgICB2YXIgaSA9IHBhbmVzLmxlbmd0aDsKICAgIHZhciB0YiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLXRhYiIrKGk9PT0wPyIgb24iOiIiKSxsYWJlbCk7CiAgICB2YXIgcG4gPSBlbCgiZGl2IiwiY2xwLXNway10YWJwYW5lIisoaT09PTA\/IiBvbiI6IiIpKTsKICAgIHBhbmVCdWlsZGVyKHBuKTsKICAgIHRiLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICB0YWJzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYiIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWIiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgICBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYnBhbmUiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFicGFuZSIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICB9OwogICAgdGFicy5hcHBlbmRDaGlsZCh0Yik7IHBhbmVzLnB1c2gocG4pOwogIH0KICBhZGRUYWIoVS50YWJUaXBzLCBmdW5jdGlvbihwbil7CiAgICB2YXIgdWwgPSBlbCgidWwiKTsKICAgIHQudGlwcy5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodWwpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLnVzZWZ1bFBocmFzZXMrIjo8L2I+IikpOwogICAgdmFyIHBoID0gZWwoImRpdiIsImNscC1zcGstcGhyIik7CiAgICB0LnRpcHMucGhyYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBwaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQocGgpOwogIH0pOwogIGlmKHQuczYpIGFkZFRhYihVLnRhYlM2LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSBzNiIsdC5zNikpOyB9KTsKICBpZih0LnM5KSBhZGRUYWIoVS50YWJTOSwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUiLHQuczkpKTsgfSk7CiAgaWYoIXQud2FybXVwKSBhZGRUYWIoVS50YWJSdWJyaWMsIGZ1bmN0aW9uKHBuKXsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsVS5ydWJyaWNOb3RlKSk7CiAgICB2YXIgdGIgPSBlbCgidGFibGUiLCJjbHAtc3BrLXJ1YiIpOwogICAgaWYoIVMucnVicmljW3Qua10pIFMucnVicmljW3Qua10gPSBbMCwwLDAsMF07CiAgICB2YXIgZXN0RCA9IGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsIiIpOwogICAgVS5ydWJyaWNDcml0LmZvckVhY2goZnVuY3Rpb24oY3IsY2kpewogICAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLGNyKSk7CiAgICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOyB0ZC5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7IHRkLnN0eWxlLnRleHRBbGlnbiA9ICJyaWdodCI7CiAgICAgIGZvcih2YXIgczI9MTtzMjw9NTtzMisrKXsKICAgICAgICAoZnVuY3Rpb24oc3YpewogICAgICAgICAgdmFyIHNwID0gZWwoInNwYW4iLCJjbHAtc3BrLXN0YXIiKyhTLnJ1YnJpY1t0LmtdW2NpXT49c3Y\/IiBvbiI6IiIpLCJcdTI2MDUiKTsKICAgICAgICAgIHNwLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgICAgICBTLnJ1YnJpY1t0LmtdW2NpXSA9IHN2OwogICAgICAgICAgICB0ZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1zdGFyIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXN0YXIiKyhqPHN2PyIgb24iOiIiKTsgfSk7CiAgICAgICAgICAgIHVwZCgpOwogICAgICAgICAgfTsKICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHNwKTsKICAgICAgICB9KShzMik7CiAgICAgIH0KICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgICB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHRiKTsKICAgIHBuLmFwcGVuZENoaWxkKGVzdEQpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgICBmdW5jdGlvbiB1cGQoKXsKICAgICAgdmFyIGFyciA9IFMucnVicmljW3Qua107IHZhciBkb25lID0gYXJyLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSk7CiAgICAgIGVzdEQudGV4dENvbnRlbnQgPSBkb25lID8gKFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXJyLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2I7fSwwKS80KSkgOiAiIjsKICAgIH0KICAgIHVwZCgpOwogIH0pOwogIGJvZHkuaW5zZXJ0QmVmb3JlKHRhYnMsIGJvZHkuZmlyc3RDaGlsZCk7CiAgcGFuZXMuZm9yRWFjaChmdW5jdGlvbihwbil7IGJvZHkuYXBwZW5kQ2hpbGQocG4pOyB9KTsKICBhY2MuYXBwZW5kQ2hpbGQoYm9keSk7CiAgcmV0dXJuIGFjYzsKfQoKLyogLS0tLS0tLS0tLSBlbmQgc2NyZWVuIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZW5kU2NyZWVuKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWVuZCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmcgXHUyMDE0ICIrVS5lbmRUaXRsZSkpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS5lbmRUaXRsZSsiPC9iPiAiK1UuZW5kU3ViKSk7CiAgdmFyIHRiID0gZWwoInRhYmxlIik7CiAgdmFyIHRociA9IGVsKCJ0ciIpOyBbIlRhc2siLCJUeXBlIiwiUmVjb3JkaW5nIiwiIl0uZm9yRWFjaChmdW5jdGlvbihoKXsgdGhyLmFwcGVuZENoaWxkKGVsKCJ0aCIsbnVsbCxoKSk7IH0pOwogIHRiLmFwcGVuZENoaWxkKHRocik7CiAgdmFyIG5yZWMgPSAwOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIHRyID0gZWwoInRyIik7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsIjxiPiIrKHQud2FybXVwPyJXIjp0Lm51bSkrIjwvYj4iKSk7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsdC50eXBlRW4pKTsKICAgIHZhciByID0gUy5yZWNzW3Qua107CiAgICB2YXIgdGQgPSBlbCgidGQiKTsKICAgIGlmKHIgJiYgci51cmwpeyBucmVjKys7IHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOyB0ZC5hcHBlbmRDaGlsZChhdSk7IH0KICAgIGVsc2UgaWYocil7IG5yZWMrKzsgdGQudGV4dENvbnRlbnQgPSByLnNlY3MrInMgKCIrVS50aW1lck9ubHkrIikiOyB9CiAgICBlbHNlIHRkLmlubmVySFRNTCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6I2M2MjgyOCc+IitVLmVuZE5vUmVjKyI8L3NwYW4+IjsKICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgIHZhciB0ZDIgPSBlbCgidGQiKTsKICAgIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsIlx1MjE5MiIpOwogICAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgdGQyLmFwcGVuZENoaWxkKGdvKTsKICAgIHRyLmFwcGVuZENoaWxkKHRkMik7CiAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgfSk7CiAgYi5hcHBlbmRDaGlsZCh0Yik7CiAgLyogcnVicmljIGF2ZyAqLwogIHZhciB2YWxzID0gW107CiAgT2JqZWN0LmtleXMoUy5ydWJyaWMpLmZvckVhY2goZnVuY3Rpb24oayl7IHZhciBhPVMucnVicmljW2tdOyBpZihhICYmIGEuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KSkgdmFscy5wdXNoKGEucmVkdWNlKGZ1bmN0aW9uKHgseSl7cmV0dXJuIHgreTt9LDApLzQpOyB9KTsKICBpZih2YWxzLmxlbmd0aCl7CiAgICB2YXIgYXZnID0gdmFscy5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYStjO30sMCkvdmFscy5sZW5ndGg7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhdmcpKyIgKCIrdmFscy5sZW5ndGgrIiB0YXNrKHMpIHNlbGYtcmF0ZWQpIikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICB9CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciByZWRvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmVuZFJlZG8pOwogIHJlZG8ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBPYmplY3Qua2V5cyhTLnJlY3MpLmZvckVhY2goZnVuY3Rpb24oayl7IGlmKFMucmVjc1trXSYmUy5yZWNzW2tdLnVybCl7IHRyeXtVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trXS51cmwpO31jYXRjaChlKXt9IH0gfSk7CiAgICBTLnJlY3MgPSB7fTsgUy5ydWJyaWMgPSB7fTsgUy50NWNob2ljZSA9IHt9OwogICAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZD8iY2hvb3NlLWlkbGUiOiJpZGxlIjsgfSk7CiAgICBTLmN1ciA9IC0xOyByZW5kZXIoKTsKICB9OwogIHZhciB0MiA9IGVsKCJhIiwiY2xwLXNway1idG4gcHJpIixVLmVuZFQyKyIgIisoRC50ZXN0PT09MT8yOjEpKyIgXHUyMTkyIik7IHQyLmhyZWYgPSBELm90aGVyVXJsOwogIHZhciBodWIgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmVuZEh1Yik7IGh1Yi5ocmVmID0gIi9jZWxwaXAvIjsKICBjdHIuYXBwZW5kQ2hpbGQocmVkbyk7IGN0ci5hcHBlbmRDaGlsZCh0Mik7IGN0ci5hcHBlbmRDaGlsZChodWIpOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW1pYyIsVS5taWNOb3RlKSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogZXhwb3NlIGZvciB0ZXN0cyAqLwp3aW5kb3cuQ0xQU1BLID0geyBzdGF0ZTogUywgZGF0YTogRCwgZ290bzogZnVuY3Rpb24oaSl7IFMuY3VyPWk7IHJlbmRlcigpOyB9LCByZW5kZXI6IHJlbmRlciB9OwpyZW5kZXIoKTsKfSkoKTsK\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 13 Practice Test 2: all 8 official-style tasks with on-screen prep and recording timers, sample responses and self-assessment tips. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6488","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6488"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6488\/revisions"}],"predecessor-version":[{"id":6504,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6488\/revisions\/6504"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}