{"id":6316,"date":"2026-07-10T13:12:03","date_gmt":"2026-07-10T13:12:03","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-3-test-1-writing\/"},"modified":"2026-07-12T03:24:51","modified_gmt":"2026-07-12T03:24:51","slug":"celpip-set-3-test-1-writing","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-3-test-1-writing\/","title":{"rendered":"CELPIP Writing \u2014 Set 3 \u00b7 Practice Test 1"},"content":{"rendered":"<div class=\"clpw-wrap\" id=\"clpwApp\"><\/div>\n<p><script>eval(atob(\"dmFyIFdEQVRBPXsibWV0YSI6eyJicmFuZCI6IkNFTFBJUCIsInNldCI6IlNldCAzIFx1MDBiNyBQcmFjdGljZSBUZXN0IDEiLCJ0aXRsZSI6IkNFTFBJUCBXcml0aW5nIFByYWN0aWNlIFRlc3QiLCJ0b3RhbE1pbiI6NTN9LCJ0YXNrcyI6W3siaWQiOjEsImJhclRpdGxlIjoiUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBXcml0aW5nIFRhc2sgMTogV3JpdGluZyBhbiBFbWFpbCIsIm5hbWUiOiJXcml0aW5nIGFuIEVtYWlsIiwibWludXRlcyI6MjcsIndvcmRBaW0iOiIxNTBcdTIwMTMyMDAgd29yZHMiLCJyZWFkSGVhZCI6IlJlYWQgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4iLCJzY2VuYXJpbyI6IllvdSBzYXcgYSBjYXIgYWNjaWRlbnQuIE5vdyB5b3UgaGF2ZSBiZWVuIGFza2VkIHRvIHdyaXRlIGEgcmVwb3J0IGZvciB0aGUgcG9saWNlIGRlc2NyaWJpbmcgdGhlIHNjZW5lLiIsInByb21wdEhlYWQiOiJXcml0ZSBhbiBlbWFpbCB0byB0aGUgcG9saWNlIGluIGFib3V0IDE1MFx1MjAxMzIwMCB3b3Jkcy4gWW91ciBlbWFpbCBzaG91bGQgZG8gdGhlIGZvbGxvd2luZyB0aGluZ3M6IiwiYnVsbGV0cyI6WyJFeHBsYWluIHdoZW4gYW5kIHdoZXJlIHlvdSBzYXcgdGhlIGFjY2lkZW50LiIsIkRlc2NyaWJlIHRoZSByb2FkIGNvbmRpdGlvbnMsIHdoYXQgeW91IHNhdywgYW5kIGhvdyBtYW55IHBlb3BsZSBhbmQgdmVoaWNsZXMgd2VyZSBpbnZvbHZlZC4iLCJFeHBsYWluIHdobyB5b3UgZmVlbCB3YXMgcmVzcG9uc2libGUgYW5kIHdoeS4iXSwib3B0aW9ucyI6bnVsbCwic2FtTm90ZSI6IlRoZXNlIGFyZSBvZmZpY2lhbCBDRUxQSVAgc2FtcGxlIHJlc3BvbnNlcyB0byB0aGlzIFRhc2sgMSBlbWFpbCBwcm9tcHQgXHUyMDE0IGEgY2FyLWFjY2lkZW50IHJlcG9ydCB3cml0dGVuIHRvIHRoZSBwb2xpY2UsIHNob3duIGF0IHRocmVlIHNjb3JlIGxldmVscyAoQ0VMUElQIDRcdTIwMTM1LCA3XHUyMDEzOCBhbmQgMTBcdTIwMTMxMikuIExvd2VyLWxldmVsIHNhbXBsZXMga2VlcCB0aGVpciBvcmlnaW5hbCBtaXN0YWtlcyBvbiBwdXJwb3NlLiIsInNhbXBsZXMiOlt7ImxldmVsIjoiQ0VMUElQIDRcdTIwMTM1IFJlc3BvbnNlIiwibm90ZSI6IkNvbW11bmljYXRlcyB0aGUgYmFzaWMgZmFjdHMgYnV0IHdpdGggaGVhdnkgZ3JhbW1hciBhbmQgc3BlbGxpbmcgZXJyb3JzLCBkaXNqb2ludGVkIHNlbnRlbmNlcyBhbmQgYSB2ZXJ5IGluZm9ybWFsLCBoYXJkLXRvLWZvbGxvdyBmbG93LiIsInRleHQiOiJUbyBwb2xpY2UgaW5zcGVjdG9yLCBmb3ggY3JlZWsgdG93blxuXG5EZWFyIHNpclxcIG1hZGFtLFxuXG4gIEkgd291bGQgbGlrZSB0byBpbmZvcm0gdGhhdCAgdGhlIGkgaGF2ZSAgc2VlbiBhIGh1Z2UgIGNhciBhY2NpZGVudCAgbmVhciB0aGUgIHdhbGwgbWFydCAgbWFsbCB3aGVyZSBkaXZlc3RlZCBmaXZlIGNhcnMgYW5kICBzb21lIHBlb3BsZXMgYXJlIHJlYWxseSBvbiAgdGhlIGNyaXRpY2FsIGNvbmRpdGlvbiB3aGljaCB1bmV4cGVjdGVkLiB2aWN0aW1zIGFyZSBvbiB0aGUgcm9hZCB0aGF0IG5lZWQgc29tZSBib2R5IGhlbHAgZm9yIHRoZW0gYXMgc29vbiBhcyBwb3NzaWJsZS4gaXQgd291bGQgYmUgbW9yZSBhcHByZWNpYXRlIGlmICBzb21lIHJlcHJlaGVuc2l2ZSBzZW5kICB0byB0aGUgb2NjdXJyZWQgcGxhY2UuXG5cbiAgSXQgd2FzIHRlbiBhLm0uIHRoZSBhY2NpZGVudCBoYXBwZW5lZCBuZWFyIHRoZSBtYWxsLCB0aGUgd2VhdGhlciB3YXNuXHUyMDE5dCBjbGVhciB0aGF0IHdoeSB2ZXJ5IGRpZmZpY3VsdCB0byByZWNvZ25pemUgdGhlIHBsYWNlIGR1ZSB0aGUgdGhlIGNpcmN1bXN0YW5jZSBpcyB0byBiYWQgYXMgd2VsbCwgSWYgaSBleHBsYWluIHRoZSBjb25kaXRpb24gb2Ygcm9hZCB3YXMgbm90IHByb3BlciBncmF2ZWwgYWxsIG92ZXIgcHJlY2lzZWx5LCBzcGFyZWQgIHNvaWwgYW5kIHN0b25lcyBhbGwgb3ZlciByb2FkIHRoYXQgbWFkZSBpbmNvbnZlbmllbnQgdG8gdGhlIHZpY3RpbXMgdG8gaWRlbnRpZnkgY29ycmVjdCBkaXJlY3Rpb24uXG5cbiAgVHdvIHBlcnNvbnMgIHdlcmUgaW5qdXJlZCBpbiB0aGUgY2FycyB0aGFuIG90aGVycyB3ZXJlIG9uIHRoZSByb2FkIHRoZXkgYXJlIHVuY29uc2Npb3VzIGJvbGRseS4gdGhlICBJIHdhcyB0aGVyZSB0byBoZWxwIHRoZSB0aGVtIGFuZCBpIGNhbGxlZCB0aGUgYW1idWxhbmNlIGJlZm9yZSBjYWxsIGNhbGxlZCBhbWJ1bGFuY2UgaSBjYWxsIGhlbHAgbGluZS4gVGhlaXIgcmVzcG9uc2Ugd2FzIHBvc2l0aXZlLlxuXG4gIFRoZSByZXNwb25zaWJsZSBpcyBub3Qgb25seSB0aGUgcG9saWNlIG1hbiBiZWNhdXNlIHRoZSBsaWFiaWxpdHkgdG8gYWxsIHB1YmxpYyB0aGlzIGtpbmRzIG9mIGRpdmVzdGVkXG4gIFdlIGNhbiBzYXZlIHNvbWUgbGlmZSBvbiB0aW1lLlxuICBhcHBsaWNhbnQifSx7ImxldmVsIjoiQ0VMUElQIDdcdTIwMTM4IFJlc3BvbnNlIiwibm90ZSI6IkEgY2xlYXIsIGRldGFpbGVkIGV5ZXdpdG5lc3MgYWNjb3VudCB3aXRoIHNwZWNpZmljIGZhY3RzIChjYXJzLCB0aW1lLCBwbGFjZSk7IGdvb2QgY29udHJvbCB3aXRoIG9ubHkgbWlub3Igc2xpcHMgdGhhdCByYXJlbHkgYmxvY2sgbWVhbmluZy4iLCJ0ZXh0IjoiVG8gV2hvbSBJdCBNYXkgQ29uY2VybixcblxuSSBhbSB3cml0aW5nIHRvIHlvdSBhcyBhIHdpdG5lc3MgdG8gYSBjYXIgYWNjaWRlbnQgdGhhdCB0b29rIHBsYWNlIG9uIEZlYnJ1YXJ5IDI2dGggMjAxNSBpbiB3aGljaCBvbmUgY2FyIChIb25kYSBBY2NvcmQgY2Fycnlpbmcgb25lIG1hbGUgcGFzc2VuZ2VyKSBjb2xsaWRlZCB3aXRoIGFub3RoZXIgKEZvcmQgRXNjb3J0IGNhcnJ5aW5nIG9uZSBtYWxlIHBhc3Nlbmdlcikgb24gdGhlIGJ1c3kgaW50ZXJzZWN0aW9uIHRoYXQgaXMgWW9uZ2UgYW5kIEVnbGluZ3RvbiBhdCBhcHByb3hpbWF0ZWx5IDE6MjVwbS5cblxuVGhlIGFjY2lkZW50IGhhcHBlbmVkIHdoZW4gb25lIGNhciAjMSAoSG9uZGEgQWNjb3JkKSBjb3VsZCBub3Qgc3RvcCBpbiB0aW1lIGF0IHRoZSBzZXQgb2YgbGlnaHRzIG9uIFlvbmdlIFN0IGFuZCB0aGUgZW5kIHJlc3VsdCBiZWluZyB0aGUgY2FyIGhhZCBjb2xsaWRlZCB3aXRoIHRoZSBjYXIgIzIgaW4gZnJvbnQgKEZvcmQgRXNjb3J0KSB0aGlzIHdhcyBub3QgZHVlIHRvIHNwZWVkaW5nIGFzIGkgY291bGQgc2VlIHRoZSBjYXIgdHJhdmVsbGluZyBhdCB3aGF0IGkgd291bGQgY29tcHJlaGVuZCBhcyBiZWluZyBhbiBhcHByb3ByaWF0ZSBzcGVlZCBidXQgZHVlIHRvIHRoZSBpY3kgY29uZGl0aW9ucyBvbiB0aGUgcm9hZHMsIEkgYmVsaWV2ZSB0aGUgbWFuIHRyYXZlbGluZyBpbiB0aGUgRm9yZCBFc2NvcnQgd2FzIHJlc3BvbnNpYmxlIGZvciB0aGUgYWNjaWRlbnQgYW5kIHNob3VsZCBoYXZlIHRvb2sgaW50byBhY2NvdW50IHRoZSBpY3kgY29uZGl0aW9ucyBhbmQgc2hvdWxkIGhhdmUgZ2F2ZSBtb3JlIHNwYWNlIGJldHdlZW4gY2FycyBhcyBpdCBsb29rZWQgbGlrZSBoZSB3YXMgdHJhdmVsbGluZyB2ZXJ5IGNsb3NlIHRvIHRoZSBGb3JkIEVzY29ydFxuXG5JIGJlbGlldmUgdGhpcyBpbmZvcm1hdGlvbiB0byBiZSB0cnVlIHRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSxcblxuVGhhbmsgeW91XG5cbkpvc2ggSm9obnNvbiJ9LHsibGV2ZWwiOiJDRUxQSVAgMTBcdTIwMTMxMiBSZXNwb25zZSIsIm5vdGUiOiJQcmVjaXNlLCB3ZWxsLW9yZ2FuaXNlZCBhbmQgYWxtb3N0IGVycm9yLWZyZWUsIHdpdGggY29uY3JldGUgZGV0YWlscyAoc3RyZWV0cywgdmVoaWNsZXMsIHNlcXVlbmNlIG9mIGV2ZW50cykgYW5kIGEgY29uZmlkZW50LCBjbGVhciBjb25jbHVzaW9uLiIsInRleHQiOiJUbyB3aG9tIGl0IG1heSBjb25jZXJuLFxuXG5UaGUgZm9sbG93aW5nIGlzIGFuIGFjY291bnQgb2YgdGhlIHZlaGljbGUgYWNjaWRlbnQgSSB3aXRuZXNzZWQgb24gRmVicnVhcnkgMTZ0aCwgMjAxNCBhdCBhcHByb3hpbWF0ZWx5IDY6NDVwbS4gIFRoZSBhY2NpZGVudCBvY2N1cnJlZCBvbiBpbiB0aGUgaW50ZXJzZWN0aW9uIG9mIEdlb3JnZSBTdHJlZXQgYW5kIE1hc29uIEF2ZW51ZSBpbiBKdW1wdG9uLCBBbGJlcnRhLlxuXG5BdCB0aGF0IHRpbWUgb2YgdGhlIGFjY2lkZW50LCBJIHdhcyB3YWxraW5nIG5vcnRoYm91bmQgb24gR2VvcmdlIFN0cmVldCwgdG93YXJkcyB0aGUgaW50ZXJzZWN0aW9uIHdpdGggTWFzb24gQXZlbnVlLiAgVGhlIHJvYWQgY29uZGl0aW9ucyB3ZXJlIHNsaWNrIGFzIGFuIGludGVuc2UgcmFpbmZhbGwgZXZlbnQgaGFkIGp1c3QgcGFzc2VkIHRocm91Z2ggdGhlIGNpdHksIGhvd2V2ZXIgaXQgd2FzIG5vdCByYWluaW5nIGF0IHRoYXQgdGltZS5cblxuQ2FyIEEgKGEgRm9yZCBGMTUwKSB3YXMgb24gR2VvcmdlIFJvYWQgKGhlYWRpbmcgbm9ydGhib3VuZCksIHdhaXRpbmcgaW4gdGhlIGludGVyc2VjdGlvbiB3aXRoIE1hc29uIFN0cmVldCB0byB0dXJuIGxlZnQuICBXaGVuIHRoZSB0cmFmZmljIGxpZ2h0IHR1cm5lZCByZWQsIENhciBBIGNvbW1lbmNlZCB0dXJuaW5nIGxlZnQgb250byBNYXNvbiBTdHJlZXQuICBIb3dldmVyLCBhdCB0aGUgc2FtZSB0aW1lLCBDYXIgQiAoYSBwdXJwbGUgQ29ydmV0dGUpIHdobyB3YXMgdHJhdmVsbGluZyBzb3V0aGJvdW5kIG9uIEdlb3JnZSBTdHJlZXQsIGFsc28gZW50ZXJlZCB0aGUgaW50ZXJzZWN0aW9uIG9uIHRoZSByZWQgbGlnaHQuXG5cbkNhciBBIGhpdCB0aGUgbGVmdCBzaWRlIG9mIENhciBCLiAgVGhlIGRyaXZlcnMgaW4gYm90aCBjYXJzIHJlcXVpcmVkIG1lZGljYWwgYXR0ZW50aW9uIGZyb20gdGhlIGFtYnVsYW5jZSB0aGF0IGFycml2ZWQgb24gdGhlIHNjZW5lIHNob3J0bHkgYWZ0ZXIuICBObyBvdGhlciBwYXNzZW5nZXJzIG9yIHZlaGljbGVzIHdlcmUgaW52b2x2ZWQgaW4gdGhlIGFjY2lkZW50LlxuXG5JIGJlbGlldmUgQ2FyIEIgd2FzIGF0IGZhdWx0IGZvciBmYWlsaW5nIHRvIHN0b3AgYXQgYSByZWQgbGlnaHQuXG5cblJlZ2FyZHNcblxuTWF2aXMifV19LHsiaWQiOjIsImJhclRpdGxlIjoiUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBXcml0aW5nIFRhc2sgMjogUmVzcG9uZGluZyB0byBTdXJ2ZXkgUXVlc3Rpb25zIiwibmFtZSI6IlJlc3BvbmRpbmcgdG8gU3VydmV5IFF1ZXN0aW9ucyIsIm1pbnV0ZXMiOjI2LCJ3b3JkQWltIjoiMTUwXHUyMDEzMjAwIHdvcmRzIiwicmVhZEhlYWQiOiJSZWFkIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIiwic2NlbmFyaW9IZWFkIjoiU2Nob29sIEx1bmNoIFN1cnZleSIsInNjZW5hcmlvIjoiWW91ciBjaGlsZHJlblx1MjAxOXMgc2Nob29sIHByb3ZpZGVzIGZyZWUgc2Nob29sIGx1bmNoZXMuIFVzdWFsbHkgdGhlIGx1bmNoIGlzIGEgaGFtYnVyZ2VyLCBob3Rkb2csIG9yIHBpenphLiBUaGUgY2hpbGRyZW4gcmVhbGx5IGVuam95IHRoZSBsdW5jaGVzLiBTb21lIHBhcmVudHMgd2FudCB0byBjaGFuZ2UgdGhlIGx1bmNoZXMgc28gdGhhdCB0aGUgY2hpbGRyZW4gZWF0IHNhbGFkIG9yIHZlZ2V0YWJsZXMgZXZlcnkgZGF5LiBUaGUgc2Nob29sIGFza2VkIHlvdSB0byByZXNwb25kIHRvIGFuIG9waW5pb24gc3VydmV5LiIsInByb21wdEhlYWQiOiJDaG9vc2UgdGhlIG9wdGlvbiB0aGF0IHlvdSBwcmVmZXIuIFdoeSBkbyB5b3UgcHJlZmVyIHlvdXIgY2hvaWNlPyBFeHBsYWluIHRoZSByZWFzb25zIGZvciB5b3VyIGNob2ljZS4gV3JpdGUgYWJvdXQgMTUwXHUyMDEzMjAwIHdvcmRzLiIsImJ1bGxldHMiOltdLCJvcHRpb25zIjpbeyJrZXkiOiJBIiwibGFiZWwiOiJPcHRpb24gQTogSSB3b3VsZCBwcmVmZXIgdGhlIGx1bmNoZXMgc3RheWVkIHRoZSBzYW1lLiJ9LHsia2V5IjoiQiIsImxhYmVsIjoiT3B0aW9uIEI6IEkgd291bGQgcHJlZmVyIHRoZXkgY2hhbmdlZCB0aGUgbHVuY2hlcy4ifV0sInNhbU5vdGUiOiJUaGVzZSBhcmUgb2ZmaWNpYWwgQ0VMUElQIHNhbXBsZSByZXNwb25zZXMgdG8gdGhpcyBUYXNrIDIgc2Nob29sLWx1bmNoIHN1cnZleSwgc2hvd24gYXQgdGhyZWUgc2NvcmUgbGV2ZWxzIChDRUxQSVAgNFx1MjAxMzUsIDdcdTIwMTM4IGFuZCAxMFx1MjAxMzEyKS4gTG93ZXItbGV2ZWwgc2FtcGxlcyBrZWVwIHRoZWlyIG9yaWdpbmFsIG1pc3Rha2VzIG9uIHB1cnBvc2UuIiwic2FtcGxlcyI6W3sibGV2ZWwiOiJDRUxQSVAgNFx1MjAxMzUgUmVzcG9uc2UiLCJub3RlIjoiVGFrZXMgYSBzaWRlIGJ1dCB3YW5kZXJzIGJldHdlZW4gaWRlYXM7IGZyZXF1ZW50IGdyYW1tYXIgYW5kIHdvcmQtY2hvaWNlIGVycm9ycyBtYWtlIHRoZSBhcmd1bWVudCBoYXJkIHRvIGZvbGxvdy4iLCJ0ZXh0IjoiRGVhciBNaWtlLFxuXG4gIEluIHRoZSByZXNwb25zZSBvZiBvdXIgZW1haWwgcmVnYXJkaW5nIHRoZSBsdW5jaCBvZiBzY2hvb2wgIGNoaWxkcmVuIGkgd291bGQgcHJlZmVyIHRoYXQgZGl2ZXJzaXR5IGZvb2Qgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBhbmQgYWRtaXJhYmxlIHRvIGFsbCBraWRzIHRoYXQgdGhleSB3b3VsZCBmZWxsIHRoZSBkaWZmZXJlbnQgdGVzdCBhbmQga25vd2xlZGdlIGVpdGhlci4gaSBrbm93ICBwcm92aWRpbmcgYWxsIGtpbmRzIGZvb2QgYXJlIHNvIGRlbGljaW91cyBhcyB3ZWxsLCBIb3dldmVyLCBpIHdvdWxkIHJlc3BlY3QgIHZlcml0eSBvZiBmb29kcy4gTXkgaW50ZW50aW9uIGlzICBpdCB3b3VsZCBiZSBkZWxpZ2h0ZnVsIHdoZW4gYWJsZSB0byBwcm92aWRlIGRpZmZlcmVudCBkaXNoZXMuXG5cbkkgd291bGQgbGlrZSB0byBnaXZlIGNsYXJpZnkgdGhhdCB0aGUgc2FtZSBpcyBub3QgbXVjaCBlbm91Z2ggdml0YW1pbnMgYW5kIG1pbmVyYWxzIHRvIGVuaGFuY2UgcGh5c2ljYWxseSBhbmQgbWVudGFsbHkgaW1wcm92ZW1lbnQgY29uc2VxdWVudGx5LiBZb3UgaGF2ZSBiZWVuIHNlcnZpY2luZyAgYXMgbGlrZSBob3QgZG9ncyAsaG90IGhhbWJ1cmdlcnMgYW5kIHBpenphcyAsIGNvbnRhaW5zIHRoZSBtb3JlIGNob2xlc3Rlcm9sLCBpdCBjYXVzZWQgdG8gdGhlIG9iZXNpdHkgdG8gdGhlbS4gSXMgdGhlIGJlc3Qgb3B0aW9uICB0byBkaW1pbmlzaCAgdGhlIGNob2xlc3Rlcm9sIGlmIHdlIHB1dCBzb21lIHNhbGFkIGluc3RlYWQuXG5cbiBUaHVzLCBJIHdvdWxkIGxpa2UgdG8gaGF2ZSBhbGwga2luZHMgb2YgdG8gcHJvdmlkZSB0aGUgIHRoZW0gbWFrZSAgaGFwcHkgYW5kICBlbmhhbmNlIGtub3dsZWRnZSBhbmQgdG8gdGFrZSBjYXJlIGFib3V0IHRoZSBoZWFsdGggd291bGQgbW9yZSBzdWl0YWJsZS4gV2hpY2ggaGF2ZSBtZW50aW9uIGFib3ZlIHRoYXQgd291bGQgYmUgZ3JlYXQgaWRlYXMgdG8gYWxsLiB0aGFua3MuXG4gIEx1Y3kgSnVuZyJ9LHsibGV2ZWwiOiJDRUxQSVAgN1x1MjAxMzggUmVzcG9uc2UiLCJub3RlIjoiQSBjbGVhciBzdGFuY2UgKGNoYW5nZSB0aGUgbHVuY2hlcykgd2l0aCBvcmdhbmlzZWQsIGRldmVsb3BlZCByZWFzb25zOyBzb2xpZCB2b2NhYnVsYXJ5IGFuZCBvbmx5IG1pbm9yIGVycm9ycy4iLCJ0ZXh0IjoiSW4gbXkgb3BpbmlvbiB0byB0aGlzIHN1cnZleSwgY2hhbmdpbmcgbHVuY2hlcyB3aWxsIGJlIGJlbmVmaWNpYWwgZm9yIGNoaWxkcmVuIGFzIHdlbGwgYXMgcGFyZW50cyBhbmQgdGVhY2hlcnMuXG5cbkZpcnN0bHksIGhhdmluZyBzYW1lIGx1bmNoIGV2ZXJ5ZGF5LCBtYWtlcyBjaGlsZHJlbiBib3JlLiBUaGV5IGVhdCBjYW5kaWVzIGFuZCBvdGhlciBzbmFja3MgaW4gb3JkZXIgdG8gYXZvaWQgaGFtYnVyZ2VyLCBob3Rkb2csIG9yIHBpenphLiBDaGlsZHJlbiBhbHdheXMgd2FudHMgdmFyaWV0eSBpbiBmb29kIHdoaWNoIHNhbGFkIHdpbGwgZ2l2ZSB0aGVtLiBTYWxhZHMgaGF2ZSB2YXJpZXRpZXMgbGlrZSBmcnVpdCBzYWxhZCwgdmVnZXRhYmxlcyBzYWxhZCBhbmQgY29tZXMgd2l0aCBkaWZmZXJlbnQgZmxhdm91cnMgdG9vLlxuXG5TZWNvbmRseSwgY29uc2lkZXJpbmcgaGVhbHRoLCBlYXRpbmcgc2FsYWQgYW5kIHZlZ2V0YWJsZXMgcHJvdmlkZXMgcHJvcGVyIG51dHJpdGlvbiB0byB0aGVtIGFuZCBtYWtlIHRoZW0gbGVzcyBwcm9uZSB0byBzaWNrbmVzcy4gTm8gZG91YnQsIGNoaWxkcmVuIGRvblx1MjAxOXQgbGlrZSB0aGlzIHN0dWZmIGJ1dCB3ZSBjYW4gbWFrZSB2YXJpZXR5IG9mIHNhbGFkcyB1c2luZyBjcmVhbSBjaGVlc2UsIHNvdXIgY3JlYW0sIHNhbGFkIGRyZXNzaW5nIGFuZCBtYW55IG1vcmUuXG5cbkxhc3RseSwgSXQgaXMgZWFzeSB0byBtYWtlIHZlZ2V0YWJsZXMgYW5kIHNhbGFkcyBhcyBjb21wYXJlZCB0byB0aGUganVuayBmb29kLiBJdCB0YWtlcyBmZXcgbWludXRlcyB0byBtYWtlIHNhbGFkcyBieSBqdXN0IGRpcmVjdGx5IG1peGluZyB0aGVtIG9yIGJ5IHN0ZWFtaW5nIHRoZW0uIE92ZXJhbGwsIEkgY2FuIHNheSBpbiB0aGlzIHdheSBvbmx5IGNoaWxkcmVuIHdpbGwgc3RhcnQgZWF0aW5nIHRoZXNlIGhlYWx0aCBjb25zY2lvdXMgZGlldHMgd2hpY2ggd2lsbCBsZWFkIHRvIGxvbmdldml0eSBvZiB0aGVyZSBsaXZlcyBhbmQgc2Nob29sIGlzIHRoZSBwbGFjZSB3aGVyZSB0aGV5IGNhbiBsZWFybiB0aGVzZSB0aGluZ3MgdGhyb3VnaCB0ZWFjaGVycyBhcyB3ZWxsIGFzIGJ5IGltaXRhdGluZyB0aGVyZSBmZWxsb3dzLlxuXG5JIHdpbGwgYXBwcmVjaWF0ZSBpZiB0aGlzIG5ldyBwbGFuIGZvciBjaGFuZ2luZyBtZWFscyB3aWxsIGJlIGluaXRpYXRlZC5cblxuVGhhbmtzIn0seyJsZXZlbCI6IkNFTFBJUCAxMFx1MjAxMzEyIFJlc3BvbnNlIiwibm90ZSI6IkZsdWVudCwgd2VsbC1zdHJ1Y3R1cmVkIGFyZ3VtZW50IHdpdGggcHJlY2lzZSB2b2NhYnVsYXJ5LCBjbGVhciByZWFzb25zIGFuZCBhIHBvbGlzaGVkLCBwcm9mZXNzaW9uYWwgdG9uZS4iLCJ0ZXh0IjoiRGVhciBTaXIvTWFkYW0sXG5cbkluIHJlc3BvbnNlIHRvIHlvdXIgcmVxdWVzdCBmb3IgbXkgb3BpbmlvbiBvbiB0aGUgZm9vZHMgc2VydmVkIGZvciBsdW5jaCBpbiBCZXRoYW55XHUyMDE5cyBzY2hvb2wgSSB0aGluayB0aGF0IGN1cnJlbnQgZm9vZCBwbGFuIHNob3VsZCBiZSB0b3RhbGx5IGNoYW5nZWQgb3IgYXQgbGVhc3QgbW9kaWZpZWQgYmVjYXVzZSBvZiBzZXZlcmFsIHJlYXNvbnMuXG5cbkZpcnN0LCBhcyB3ZSBhbGwga25vdywgcGl6emFzLCBob3Rkb2dzIGFuZCBnZW5lcmFsbHkgYWxsIHRoZSBmb29kcyB0aGF0IGFyZSByaWNoIGluIGZhdCBhcmUgcHJvdmVuIHRvIGJlIGhhcm1mdWwgdG8gaHVtYW5cdTIwMTlzIGhlYWx0aCBhcyB0aGV5IHJlc3VsdCBpbiBvYmVzaXR5IGFuZCBjYXVzZSBtYW55IGRpZmZlcmVudCBjYXJkaW8tdmFzY3VsYXIgZGlzZWFzZXMgaW4gb25lXHUyMDE5cyBib2R5LiBBcyBhbiBlZHVjYXRpb25hbCBpbnN0aXR1dGUgSSBleHBlY3QgeW91IHRvIHRlYWNoIG91ciBjaGlsZHJlbiBvbiB0aGUgbmVnYXRpdmUgZWZmZWN0cyBvZiB0aGVzZSBraW5kIG9mIGZvb2RzIGFuZCBsZXQgdGhlbSB1bmRlcnN0YW5kIHRoYXQgYXZvaWRpbmcgdGhlc2UgZm9vZHMgaXMgYSBiZW5lZmljaWFsIHdheSB0byBoYXZlIGEgaGVhbHRoeSBsaWZlLlxuXG5TZWNvbmQsIGFsbW9zdCBhbGwgdGhlIG51dHJpdGlvbmlzdHMgYW5kIGZvb2Qgc3BlY2lhbGlzdHMgYmVsaWV2ZSB0aGF0IGFkZGluZyBtb3JlIGZyZXNoIGFuZCBvcmdhbmljIGZvb2RzIGxpa2UgdmVnZXRhYmxlcyBhbmQgZnJ1aXRzIHRoYXQgYXJlIHJpY2ggaW4gZmlicmVzIGFuZCB2aXRhbWlucyB0byBkYWlseSBtZWFsIHBsYW5zIG5vdCBvbmx5IGhlbHBzIGh1bWFuIGJvZHkgdG8ga2VlcCBpdHMgaGVhbHRoeSBjb25kaXRpb25zIGJ1dCBhbHNvIHJlc3VsdHMgaW4gbW9yZSBlZmZpY2llbnQgZGFpbHkgc3R1ZGVudCBhY3Rpdml0aWVzIGF0IHRoZSBzY2hvb2wuXG5cblNvLCBpbiBteSBvcGluaW9uIGl0XHUyMDE5cyBtb3JlIHN1aXRhYmxlIHRvIGF0IGxlYXN0IHJlZHVjZSB0aGUgYW1vdW50IG9mIGN1cnJlbnQgZm9vZHMgYW5kIGluY3JlYXNlIHRoZSBhbW91bnQgb2YgaGVhbHRoeSBmb29kcyBsaWtlIHNhbGFkIGFuZCB2ZWdldGFibGVzLlxuXG5UaGFuayB5b3UgZm9yIHlvdXIgZWZmb3J0cyBpbiBpbXByb3ZpbmcgdGhlIHNjaG9vbHMgZm9vZCBzZXJ2aWNlIHF1YWxpdGllcy5cbktpbmRlc3QgcmVnYXJkcyxcbktldmluIE5hZGlyIn1dfV0sInJ1YnJpYyI6W3siayI6IkNvbnRlbnQgLyBDb2hlcmVuY2UiLCJkIjoiQWxsIHJlcXVpcmVkIHBvaW50cyBhcmUgY292ZXJlZCBhbmQgZGV2ZWxvcGVkIHdpdGggY2xlYXIsIGxvZ2ljYWxseSBjb25uZWN0ZWQgaWRlYXMgYW5kIHBhcmFncmFwaHMuIn0seyJrIjoiVm9jYWJ1bGFyeSIsImQiOiJXb3JkIGNob2ljZSBpcyB2YXJpZWQsIHByZWNpc2UgYW5kIHN1aXRzIHRoZSB0b25lIChhIHNlbWktZm9ybWFsIGVtYWlsIC8gYSByZWFzb25lZCBvcGluaW9uKS4ifSx7ImsiOiJSZWFkYWJpbGl0eSIsImQiOiJHcmFtbWFyLCBzcGVsbGluZyBhbmQgcHVuY3R1YXRpb24gYXJlIGFjY3VyYXRlIGVub3VnaCB0aGF0IHRoZSByZWFkZXIgaXMgbmV2ZXIgc2xvd2VkIGRvd24uIn0seyJrIjoiVGFzayBGdWxmaWxsbWVudCIsImQiOiJUaGUgcmVzcG9uc2UgZml0cyB0aGUgcHVycG9zZSBhbmQgYXVkaWVuY2UsIGtlZXBzIHRoZSAxNTBcdTIwMTMyMDAgd29yZCBsZW5ndGgsIGFuZCByZWFkcyBsaWtlIGEgcmVhbCBlbWFpbCAvIHN1cnZleSBhbnN3ZXIuIn1dLCJzY29yaW5nTm90ZSI6IkNFTFBJUCBXcml0aW5nIGlzIHJhdGVkIGJ5IGh1bWFuIHJhdGVycyBvbiBhIHNjYWxlIGZyb20gTSB0byAxMiB0aGF0IG1hcHMgMToxIHRvIHRoZSBDYW5hZGlhbiBMYW5ndWFnZSBCZW5jaG1hcmtzIChDTEIpLiBFYWNoIHRhc2sgaXMganVkZ2VkIGhvbGlzdGljYWxseSBvbiBmb3VyIGRpbWVuc2lvbnMgXHUyMDE0IENvbnRlbnQvQ29oZXJlbmNlLCBWb2NhYnVsYXJ5LCBSZWFkYWJpbGl0eSBhbmQgVGFzayBGdWxmaWxsbWVudC4gVGhlcmUgaXMgbm8gc2luZ2xlIFx1MjAxOGNvcnJlY3RcdTIwMTkgYW5zd2VyLCBzbyB1c2UgdGhlIHNhbXBsZSByZXNwb25zZXMgYW5kIHRoZSBzZWxmLWNoZWNrIGJlbG93IHRvIHNlZSB3aGVyZSB5b3VyIHdyaXRpbmcgc2l0cyBhbmQgd2hhdCB0byBpbXByb3ZlLiJ9OwooZnVuY3Rpb24oKXsKICAidXNlIHN0cmljdCI7CiAgaWYod2luZG93Ll9fY2xwd0luaXQpIHJldHVybjsgd2luZG93Ll9fY2xwd0luaXQgPSB0cnVlOwoKICB2YXIgTFMgPSAiYWU0dV9jbHB3X3MxdDFfdjEiOwogIHZhciBzdGF0ZSA9IHsgYWN0aXZlOjEsIHNhbXBsZXM6ezE6ZmFsc2UsMjpmYWxzZX0sIHRhYjp7MTowLDI6MH0sIG9wdDpudWxsLAogICAgICAgICAgICAgICAgdGV4dDp7MToiIiwyOiIifSwgcnVicmljOnsxOnt9LDI6e319LAogICAgICAgICAgICAgICAgdGltZXI6ezE6e3JlbTpXREFUQS50YXNrc1swXS5taW51dGVzKjYwLHJ1bjpmYWxzZSxpdjpudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgMjp7cmVtOldEQVRBLnRhc2tzWzFdLm1pbnV0ZXMqNjAscnVuOmZhbHNlLGl2Om51bGx9fSB9OwoKICAvLyAtLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGVzYyhzKXsgcmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iik7IH0KICBmdW5jdGlvbiB3YyhzKXsgdmFyIG09KHN8fCIiKS50cmltKCkubWF0Y2goL1xTKy9nKTsgcmV0dXJuIG0\/bS5sZW5ndGg6MDsgfQogIGZ1bmN0aW9uIGZtdChzZWMpeyBzZWM9TWF0aC5tYXgoMCxzZWN8MCk7IHZhciBtPU1hdGguZmxvb3Ioc2VjLzYwKSwgcz1zZWMlNjA7IHJldHVybiAobTwxMD8iMCI6IiIpK20rIjoiKyhzPDEwPyIwIjoiIikrczsgfQogIGZ1bmN0aW9uIGxvYWQoKXsgdHJ5eyB2YXIgbz1KU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExTKSk7IGlmKG8mJnR5cGVvZiBvPT09Im9iamVjdCIpewogICAgICAgIHN0YXRlLnRleHRbMV09by50MXx8IiI7IHN0YXRlLnRleHRbMl09by50Mnx8IiI7IHN0YXRlLm9wdD1vLm9wdHx8bnVsbDsKICAgICAgICBzdGF0ZS5ydWJyaWNbMV09by5yMXx8e307IHN0YXRlLnJ1YnJpY1syXT1vLnIyfHx7fTsgfSB9Y2F0Y2goZSl7fSB9CiAgZnVuY3Rpb24gc2F2ZSgpeyB0cnl7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKExTLCBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgdDE6c3RhdGUudGV4dFsxXSwgdDI6c3RhdGUudGV4dFsyXSwgb3B0OnN0YXRlLm9wdCwgcjE6c3RhdGUucnVicmljWzFdLCByMjpzdGF0ZS5ydWJyaWNbMl0gfSkpOyB9Y2F0Y2goZSl7fQogICAgICAgIGZsYXNoU2F2ZWQoKTsgfQogIHZhciBzYXZlZFRPPW51bGw7CiAgZnVuY3Rpb24gZmxhc2hTYXZlZCgpeyB2YXIgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTYXZlZCIpOyBpZighZWwpIHJldHVybjsKICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCJjbHB3LXNhdmVkLW9uIik7IGlmKHNhdmVkVE8pIGNsZWFyVGltZW91dChzYXZlZFRPKTsKICAgICAgICBzYXZlZFRPPXNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZWwuY2xhc3NMaXN0LnJlbW92ZSgiY2xwdy1zYXZlZC1vbiIpOyB9LDEyMDApOyB9CgogIC8vIC0tLS0tLS0tLS0gQ1NTIC0tLS0tLS0tLS0KICB2YXIgQ1NTID0gIiIKICArIi5jbHB3LXdyYXB7LS1uYXZ5OiMwNTBFMjA7LS1iOTAwOiMwRDIzNTI7LS1iNzAwOiMxMjQ1QTg7LS1iNTAwOiMyNTYzRUI7LS1iNDAwOiMzQjgyRjY7LS1iMjAwOiM5M0M1RkQ7LS1iMTAwOiNEQkVBRkU7LS1iNTA6I0VGRjZGRjstLXRlYWw6IzBEOTQ4ODstLWdyZWVuOiMxMEI5ODE7LS1ncmVlbjUwOiNFQ0ZERjU7LS1yb3NlOiNGNDNGNUU7LS1yb3NlNTA6I0ZGRjFGMzstLW9yYW5nZTojRjk3MzE2Oy0tYW1iZXI1MDojRkZGQkVCOy0tdGV4dDojMEYxNzJBOy0tbXV0ZWQ6IzQ3NTU2OTstLXN1YnRsZTojOTRBM0I4Oy0tYm9yZGVyOiNFMkU4RjA7LS1jcmltc29uOiNCNDJCM0M7LS1wYWdlOiNGOEZBRkY7Zm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS10ZXh0KTttYXgtd2lkdGg6MTE0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoxNnB4IDE2cHggNTZweDtsaW5lLWhlaWdodDoxLjU1O2ZvbnQtc2l6ZToxNnB4O30iCiAgKyIuY2xwdy13cmFwICosLmNscHctd3JhcCAqOjpiZWZvcmUsLmNscHctd3JhcCAqOjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7fSIKICArIi5jbHB3LXdyYXAgYnV0dG9ue2ZvbnQtZmFtaWx5OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7fSIKICArIi5jbHB3LXdyYXAgaDEsLmNscHctd3JhcCBoMiwuY2xwdy13cmFwIGgzLC5jbHB3LXdyYXAgcHttYXJnaW46MDt9IgogIC8vIGhlcm8KICArIi5jbHB3LWhlcm97cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MjJweDtiYWNrZ3JvdW5kOnZhcigtLW5hdnkpO2NvbG9yOiNmZmY7cGFkZGluZzozNHB4IDM4cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTNweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2JveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksMCA0cHggMTJweCAtNnB4IHJnYmEoNSwxNCwzMiwuMyk7fSIKICArIi5jbHB3LWF1cm9yYXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3BvaW50ZXItZXZlbnRzOm5vbmU7fSIKICArIi5jbHB3LWF1cm9yYSBzcGFue3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO2ZpbHRlcjpibHVyKDYwcHgpO29wYWNpdHk6LjU7YW5pbWF0aW9uOmNscHdGbG9hdCAxNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO30iCiAgKyIuY2xwdy1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7d2lkdGg6NDIwcHg7aGVpZ2h0OjQyMHB4O2xlZnQ6LTEyMHB4O3RvcDotMjAwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTt9IgogICsiLmNscHctYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpe3dpZHRoOjM4MHB4O2hlaWdodDozODBweDtyaWdodDotODBweDt0b3A6LTE2MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7YW5pbWF0aW9uLWRlbGF5Oi00czt9IgogICsiLmNscHctYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpe3dpZHRoOjM0MHB4O2hlaWdodDozNDBweDtyaWdodDoyMiU7Ym90dG9tOi0yNDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpO2FuaW1hdGlvbi1kZWxheTotOHM7fSIKICArIkBrZXlmcmFtZXMgY2xwd0Zsb2F0e2Zyb217dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTt9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTt9fSIKICArIi5jbHB3LWhiYWRnZXN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt9IgogICsiLmNscHctYmJyYW5ke2JhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEycHg7bGV0dGVyLXNwYWNpbmc6LjEyZW07cGFkZGluZzo1cHggMTJweDtib3JkZXItcmFkaXVzOjZweDt9IgogICsiLmNscHctYnNldHtjb2xvcjp2YXIoLS1iMjAwKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7fSIKICArIi5jbHB3LWhlcm8gaDF7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpO2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAyZW07bGluZS1oZWlnaHQ6MS4xMjt9IgogICsiLmNscHctaGVyby1zdWJ7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6I0M3RDJFODtmb250LXNpemU6MTVweDttYXgtd2lkdGg6NjBjaDt9IgogICsiLmNscHctaGNoaXBze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30iCiAgKyIuY2xwdy1jaGlwe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpO2JvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO2NvbG9yOiNEQkVBRkU7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czozMnB4O2JhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLGJhY2tncm91bmQgLjI1cyBlYXNlO30iCiAgKyIuY2xwdy1jaGlwOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTUpO30iCiAgKyIuY2xwdy1jdGF7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzoxM3B4IDM0cHg7bWFyZ2luLXRvcDoycHg7Ym94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMzcsOTksMjM1LC42NSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLGJveC1zaGFkb3cgLjIycyBlYXNlLGJhY2tncm91bmQgLjIycyBlYXNlO30iCiAgKyIuY2xwdy1jdGE6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7YmFja2dyb3VuZDp2YXIoLS1iNDAwKTtib3gtc2hhZG93OjAgMTRweCAyNnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjc1KTt9IgogIC8vIHRvb2xiYXIKICArIi5jbHB3LXRvb2xze3Bvc2l0aW9uOnN0aWNreTt0b3A6OHB4O3otaW5kZXg6NjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkzKTtiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo4cHggMTJweDttYXJnaW46MThweCAwIDA7Ym94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7bWluLWhlaWdodDo1MnB4O30iCiAgKyIuY2xwdy13Y291bnR7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLWI5MDApO2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO2JvcmRlci1yYWRpdXM6MzJweDtwYWRkaW5nOjdweCAxNHB4O30iCiAgKyIuY2xwdy1zcGFjZXJ7ZmxleDoxO30iCiAgKyIuY2xwdy1zYXZlZHtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ3JlZW4pO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2U7fSIKICArIi5jbHB3LXNhdmVkLW9ue29wYWNpdHk6MTt9IgogICsiLmNscHctdGJ0bntib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6OXB4IDE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7bWluLWhlaWdodDo0MHB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLGJveC1zaGFkb3cgLjJzIGVhc2UsYmFja2dyb3VuZCAuMnMgZWFzZTt9IgogICsiLmNscHctdGJ0bjpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTtib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTt9IgogIC8vIGRvdHMKICArIi5jbHB3LXNpbXttYXJnaW4tdG9wOjE4cHg7fSIKICArIi5jbHB3LWRvdHN7ZGlzcGxheTpmbGV4O2dhcDo2cHg7bWFyZ2luOjAgMCAxMHB4IDJweDt9IgogICsiLmNscHctZG90e2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tc3VidGxlKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7Ym9yZGVyLXJhZGl1czozMnB4O3BhZGRpbmc6NXB4IDE0cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSxjb2xvciAuMjVzIGVhc2U7fSIKICArIi5jbHB3LWRvdC5vbntiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO30iCiAgKyIuY2xwdy1kb3QuZmlsbGVke2JhY2tncm91bmQ6dmFyKC0tYjEwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWIyMDApO2NvbG9yOnZhcigtLWI5MDApO30iCiAgLy8gY2F0IGNhcmQKICArIi5jbHB3LWNhdHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MXB4IHNvbGlkICNEM0Q5RTA7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6I2ZmZjtib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjIyKSwwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTt9IgogICsiLmNscHctdGFza3tkaXNwbGF5Om5vbmU7fSIKICArIi5jbHB3LXRhc2sub257ZGlzcGxheTpibG9jazt9IgogICsiLmNscHctYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7YmFja2dyb3VuZDojRThFQkVGO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNEM0Q5RTA7Ym9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO3BhZGRpbmc6OXB4IDE0cHg7bWluLWhlaWdodDo0NHB4O30iCiAgKyIuY2xwdy1iYXItdHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzFGMjkzNztmbGV4OjE7bWluLXdpZHRoOjA7fSIKICArIi5jbHB3LWJhci10aW1le2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiMxRjI5Mzc7d2hpdGUtc3BhY2U6bm93cmFwO30iCiAgKyIuY2xwdy1iYXItdGltZSBie2ZvbnQtd2VpZ2h0OjgwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7fSIKICArIi5jbHB3LWJhci10aW1lLmxvdyBie2NvbG9yOnZhcigtLXJvc2UpO30iCiAgLy8gc3BsaXQKICArIi5jbHB3LXNwbGl0e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDIyMHB4LDI5MHB4KSAxZnI7fSIKICArIi5jbHB3LXJlYWR7YmFja2dyb3VuZDojRjRGNkY4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0UzRTZFQTtwYWRkaW5nOjE2cHggMTZweCAxOHB4O30iCiAgKyIuY2xwdy13cml0ZXtiYWNrZ3JvdW5kOiNFQUY0Rjc7cGFkZGluZzoxNnB4IDE4cHggMThweDt9IgogICsiLmNscHctcmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDttYXJnaW4tYm90dG9tOjhweDt9IgogICsiLmNscHctaW5mb3tmbGV4Om5vbmU7d2lkdGg6MThweDtoZWlnaHQ6MThweDttYXJnaW4tdG9wOjFweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtc3R5bGU6aXRhbGljO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjt9IgogICsiLmNscHctcmhlYWQgcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICArIi5jbHB3LXNjZW5hcmlvLWh7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMzMzQxNTU7bWFyZ2luLWJvdHRvbTo0cHg7fSIKICArIi5jbHB3LXNjZW5hcmlve2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6IzMzNDE1NTtsaW5lLWhlaWdodDoxLjY7fSIKICArIi5jbHB3LXNhbXRvZ2dsZXttYXJnaW4tdG9wOjE0cHg7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWNyaW1zb24pO2NvbG9yOnZhcigtLWNyaW1zb24pO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6MTFweCAxMnB4O3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSxjb2xvciAuMnMgZWFzZTt9IgogICsiLmNscHctc2FtdG9nZ2xlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7Y29sb3I6I2ZmZjt9IgogICsiLmNscHctcHJvbXB0cm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHg7fSIKICArIi5jbHB3LXByb21wdHJvdyBwe2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTt9IgogICsiLmNscHctYnVsbGV0c3ttYXJnaW46MCAwIDEycHggMDtwYWRkaW5nLWxlZnQ6MjBweDtjb2xvcjojMzM0MTU1O2ZvbnQtc2l6ZToxMy41cHg7fSIKICArIi5jbHB3LWJ1bGxldHMgbGl7bWFyZ2luOjNweCAwO30iCiAgKyIuY2xwdy1vcHRze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttYXJnaW46MCAwIDEycHg7fSIKICArIi5jbHB3LW9wdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OXB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNENkU4RUQ7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMHB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEzLjVweDtjb2xvcjojMzM0MTU1O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBlYXNlLGJhY2tncm91bmQgLjJzIGVhc2U7fSIKICArIi5jbHB3LW9wdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fSIKICArIi5jbHB3LW9wdC5zZWx7Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2JhY2tncm91bmQ6dmFyKC0tYjUwKTt9IgogICsiLmNscHctb3B0IGlucHV0e21hcmdpbi10b3A6M3B4O2FjY2VudC1jb2xvcjp2YXIoLS1iNTAwKTtmbGV4Om5vbmU7fSIKICArIi5jbHB3LXRhe3dpZHRoOjEwMCU7bWluLWhlaWdodDoyNjBweDtyZXNpemU6dmVydGljYWw7Ym9yZGVyOjFweCBzb2xpZCAjQzlENkRjO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTNweCAxNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjY7Y29sb3I6IzBGMTcyQTtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgxNSwyMyw0MiwuMDUpO30iCiAgKyIuY2xwdy10YTpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO2JveC1zaGFkb3c6MCAwIDAgM3B4IHJnYmEoNTksMTMwLDI0NiwuMTUpO30iCiAgKyIuY2xwdy13bWV0ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjlweDt9IgogICsiLmNscHctd3BpbGx7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxM3B4O2JvcmRlci1yYWRpdXM6MzJweDtwYWRkaW5nOjZweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tbXV0ZWQpO30iCiAgKyIuY2xwdy13cGlsbC5sb3d7Y29sb3I6dmFyKC0tbXV0ZWQpO30iCiAgKyIuY2xwdy13cGlsbC5nb29ke2NvbG9yOiMwNDc4NTc7YmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTtib3JkZXItY29sb3I6I0E3RjNEMDt9IgogICsiLmNscHctd3BpbGwub3Zlcntjb2xvcjojQjQ1MzA5O2JhY2tncm91bmQ6dmFyKC0tYW1iZXI1MCk7Ym9yZGVyLWNvbG9yOiNGREU2OEE7fSIKICArIi5jbHB3LXdwaWxsLm1heHtjb2xvcjojQkUxMjNDO2JhY2tncm91bmQ6dmFyKC0tcm9zZTUwKTtib3JkZXItY29sb3I6I0ZFQ0REMzt9IgogICsiLmNscHctdG1ye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttYXJnaW4tbGVmdDphdXRvO30iCiAgKyIuY2xwdy10bXItYnRue2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6N3B4IDEycHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLGNvbG9yIC4ycyBlYXNlLGJvcmRlci1jb2xvciAuMnMgZWFzZTt9IgogICsiLmNscHctdG1yLWJ0bjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7Y29sb3I6dmFyKC0tYjcwMCk7fSIKICArIi5jbHB3LXRtci1idG4ucnVue2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7fSIKICAvLyBzYW1wbGUgcGFuZWwKICArIi5jbHB3LXNhbXBsZXN7bWFyZ2luLXRvcDoxNHB4O2JvcmRlci10b3A6MXB4IGRhc2hlZCAjRDNEOUUwO3BhZGRpbmc6MTZweCAxOHB4IDIwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDt9IgogICsiLmNscHctc2FtcGxlc1toaWRkZW5de2Rpc3BsYXk6bm9uZTt9IgogICsiLmNscHctc2Ftbm90ZXtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjEycHg7fSIKICArIi5jbHB3LXRhYnN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMnB4O30iCiAgKyIuY2xwdy10YWJ7Ym9yZGVyOjFweCBzb2xpZCAjRDlERUU1O2JhY2tncm91bmQ6I0YxRjNGNjtjb2xvcjojNDc1NTY5O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjlweCAxNnB4O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSxjb2xvciAuMnMgZWFzZTt9IgogICsiLmNscHctdGFiLm9ue2JhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7Ym9yZGVyLWNvbG9yOnZhcigtLWNyaW1zb24pO2NvbG9yOiNmZmY7fSIKICArIi5jbHB3LXNhbWJvZHl7YmFja2dyb3VuZDojRjdGOEZBO2JvcmRlcjoxcHggc29saWQgI0U3RUFFRTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNnB4IDE4cHg7fSIKICArIi5jbHB3LXNhbWx2bHtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLWNyaW1zb24pO21hcmdpbi1ib3R0b206OHB4O30iCiAgKyIuY2xwdy1zYW10ZXh0e2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMxRjI5Mzc7bGluZS1oZWlnaHQ6MS43O3doaXRlLXNwYWNlOnByZS13cmFwO30iCiAgKyIuY2xwdy1zYW1oaW50e21hcmdpbi10b3A6MTJweDtmb250LXNpemU6MTIuNXB4O2NvbG9yOiM0NzU1Njk7YmFja2dyb3VuZDojRUVGMkZGO2JvcmRlcjoxcHggc29saWQgI0RCRTNGRjtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjlweCAxMnB4O30iCiAgKyIuY2xwdy1zYW1oaW50IGJ7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICAvLyBydWJyaWMgLyBzY29yaW5nCiAgKyIuY2xwdy1wYW5lbHttYXJnaW4tdG9wOjE4cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoyMHB4IDIycHg7Ym94LXNoYWRvdzowIDEwcHggMzBweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4yKTt9IgogICsiLmNscHctcGFuZWwgaDJ7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOnZhcigtLWI5MDApO21hcmdpbi1ib3R0b206NHB4O30iCiAgKyIuY2xwdy1wYW5lbCAuY2xwdy1sZWFke2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTRweDt9IgogICsiLmNscHctcnViZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjEwcHg7fSIKICArIi5jbHB3LXJ1YntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMXB4O3BhZGRpbmc6MTJweCAxNHB4O2JhY2tncm91bmQ6I0ZDRkRGRjtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgZWFzZSxiYWNrZ3JvdW5kIC4ycyBlYXNlO30iCiAgKyIuY2xwdy1ydWI6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO30iCiAgKyIuY2xwdy1ydWIuZG9uZXtib3JkZXItY29sb3I6I0E3RjNEMDtiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApO30iCiAgKyIuY2xwdy1ydWIgaW5wdXR7bWFyZ2luLXRvcDozcHg7YWNjZW50LWNvbG9yOnZhcigtLWdyZWVuKTtmbGV4Om5vbmU7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDt9IgogICsiLmNscHctcnViLWt7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICArIi5jbHB3LXJ1Yi1ke2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tdG9wOjJweDt9IgogICsiLmNscHctc2NvcmVib3h7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiMzMzQxNTU7bGluZS1oZWlnaHQ6MS42O2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjE0cHggMTZweDt9IgogICsiLmNscHctc2NvcmVib3ggYntjb2xvcjp2YXIoLS1iOTAwKTt9IgogICsiLmNscHctY2xicm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi10b3A6MTJweDt9IgogICsiLmNscHctY2xidGFne2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iNzAwKTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtib3JkZXItcmFkaXVzOjMycHg7cGFkZGluZzo2cHggMTNweDt9IgogICsiLmNscHctZm9vdHttYXJnaW4tdG9wOjE2cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VidGxlKTt0ZXh0LWFsaWduOmNlbnRlcjt9IgogICsiQG1lZGlhKG1heC13aWR0aDo4MjBweCl7LmNscHctc3BsaXR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjt9LmNscHctcmVhZHtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTNFNkVBO30uY2xwdy1ydWJncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7fS5jbHB3LWhlcm97cGFkZGluZzoyNnB4IDIycHg7fX0iCiAgOwoKICBmdW5jdGlvbiBpbmplY3RDU1MoKXsgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTdHlsZSIpKSByZXR1cm47CiAgICB2YXIgc3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsgc3QuaWQ9ImNscHdTdHlsZSI7IHN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKENTUykpOwogICAgKGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuYXBwZW5kQ2hpbGQoc3QpOyB9CgogIC8vIC0tLS0tLS0tLS0gYnVpbGQgLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHRhc2tIVE1MKHQpewogICAgdmFyIGQ9V0RBVEEudGFza3NbdC0xXTsgdmFyIGg9IiI7CiAgICBoKz0nPGRpdiBjbGFzcz0iY2xwdy10YXNrJysodD09PXN0YXRlLmFjdGl2ZT8nIG9uJzonJykrJyIgZGF0YS10YXNrPSInK3QrJyIgaWQ9ImNscHdUYXNrJyt0KyciPic7CiAgICBoKz0gJzxkaXYgY2xhc3M9ImNscHctYmFyIj48c3BhbiBjbGFzcz0iY2xwdy1iYXItdCI+Jytlc2MoZC5iYXJUaXRsZSkrJzwvc3Bhbj4nCiAgICAgICArJzxzcGFuIGNsYXNzPSJjbHB3LWJhci10aW1lIiBpZD0iY2xwd0JhclRpbWUnK3QrJyI+VGltZSByZW1haW5pbmc6IDxiPicrZm10KHN0YXRlLnRpbWVyW3RdLnJlbSkrJzwvYj48L3NwYW4+JwogICAgICAgKyc8YnV0dG9uIGNsYXNzPSJjbHB3LXRtci1idG4iIGRhdGEtdG5leHQ9IicrdCsnIj4nKyh0PFdEQVRBLnRhc2tzLmxlbmd0aD8nTkVYVCc6J0RPTkUnKSsnPC9idXR0b24+PC9kaXY+JzsKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1zcGxpdCI+JzsKICAgIC8vIGxlZnQKICAgIGgrPSAgJzxkaXYgY2xhc3M9ImNscHctcmVhZCI+JzsKICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXJoZWFkIj48c3BhbiBjbGFzcz0iY2xwdy1pbmZvIj5pPC9zcGFuPjxwPicrZXNjKGQucmVhZEhlYWQpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGQuc2NlbmFyaW9IZWFkKXsgaCs9JzxkaXYgY2xhc3M9ImNscHctc2NlbmFyaW8taCI+Jytlc2MoZC5zY2VuYXJpb0hlYWQpKyc8L2Rpdj4nOyB9CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1zY2VuYXJpbyI+Jytlc2MoZC5zY2VuYXJpbykrJzwvZGl2Pic7CiAgICBoKz0gICAnPGJ1dHRvbiBjbGFzcz0iY2xwdy1zYW10b2dnbGUiIGRhdGEtc2FtdG9nZ2xlPSInK3QrJyI+Q2xpY2sgaGVyZSB0byB2aWV3IHNhbXBsZSByZXNwb25zZXM8L2J1dHRvbj4nOwogICAgaCs9ICAnPC9kaXY+JzsKICAgIC8vIHJpZ2h0CiAgICBoKz0gICc8ZGl2IGNsYXNzPSJjbHB3LXdyaXRlIj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctcHJvbXB0cm93Ij48c3BhbiBjbGFzcz0iY2xwdy1pbmZvIj5pPC9zcGFuPjxwPicrZXNjKGQucHJvbXB0SGVhZCkrJzwvcD48L2Rpdj4nOwogICAgaWYoZC5idWxsZXRzICYmIGQuYnVsbGV0cy5sZW5ndGgpeyBoKz0nPHVsIGNsYXNzPSJjbHB3LWJ1bGxldHMiPic7IGQuYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKGIpeyBoKz0nPGxpPicrZXNjKGIpKyc8L2xpPic7IH0pOyBoKz0nPC91bD4nOyB9CiAgICBpZihkLm9wdGlvbnMpeyBoKz0nPGRpdiBjbGFzcz0iY2xwdy1vcHRzIj4nOyBkLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICBoKz0nPGxhYmVsIGNsYXNzPSJjbHB3LW9wdCcrKHN0YXRlLm9wdD09PW8ua2V5Pycgc2VsJzonJykrJyIgZGF0YS1vcHR3cmFwPSInK28ua2V5KyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY2xwd09wdCIgdmFsdWU9Iicrby5rZXkrJyInKyhzdGF0ZS5vcHQ9PT1vLmtleT8nIGNoZWNrZWQnOicnKSsnPjxzcGFuPicrZXNjKG8ubGFiZWwpKyc8L3NwYW4+PC9sYWJlbD4nOyB9KTsKICAgICAgICBoKz0nPC9kaXY+JzsgfQogICAgaCs9ICAgJzx0ZXh0YXJlYSBjbGFzcz0iY2xwdy10YSIgaWQ9ImNscHdUYScrdCsnIiBkYXRhLXRhPSInK3QrJyIgcGxhY2Vob2xkZXI9IlR5cGUgeW91ciByZXNwb25zZSBoZXJlLi4uIj4nK2VzYyhzdGF0ZS50ZXh0W3RdKSsnPC90ZXh0YXJlYT4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctd21ldGVyIj4nOwogICAgaCs9ICAgICAnPHNwYW4gY2xhc3M9ImNscHctd3BpbGwiIGlkPSJjbHB3V3BpbGwnK3QrJyI+MCB3b3Jkczwvc3Bhbj4nOwogICAgaCs9ICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi41cHg7Y29sb3I6IzY0NzQ4QjsiPmFpbSAnK2VzYyhkLndvcmRBaW0pKyc8L3NwYW4+JzsKICAgIGgrPSAgICAgJzxzcGFuIGNsYXNzPSJjbHB3LXRtciI+JwogICAgICAgICAgICAgKyc8YnV0dG9uIGNsYXNzPSJjbHB3LXRtci1idG4iIGRhdGEtdHN0YXJ0PSInK3QrJyI+U3RhcnQgdGltZXI8L2J1dHRvbj4nCiAgICAgICAgICAgICArJzxidXR0b24gY2xhc3M9ImNscHctdG1yLWJ0biIgZGF0YS10cmVzZXQ9IicrdCsnIj5SZXNldDwvYnV0dG9uPjwvc3Bhbj4nOwogICAgaCs9ICAgJzwvZGl2Pic7CiAgICBoKz0gICc8L2Rpdj4nOwogICAgaCs9ICc8L2Rpdj4nOyAvLyBzcGxpdAogICAgLy8gc2FtcGxlcwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LXNhbXBsZXMiIGlkPSJjbHB3U2FtJyt0KyciIGhpZGRlbj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctc2Ftbm90ZSI+JysoZC5zYW1Ob3RlP2Quc2FtTm90ZTonVGhlc2UgYXJlIHRoZSBvZmZpY2lhbCBwcmFjdGljZSBzYW1wbGUgcmVzcG9uc2VzIGF0IHRocmVlIHNjb3JlIGxldmVscy4gTG93ZXItbGV2ZWwgc2FtcGxlcyBrZWVwIHRoZWlyIG9yaWdpbmFsIG1pc3Rha2VzIG9uIHB1cnBvc2UgJm1kYXNoOyBzdHVkeSB3aGF0IGNoYW5nZXMgYXMgdGhlIHNjb3JlIHJpc2VzLicpKyc8L2Rpdj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctdGFicyIgaWQ9ImNscHdUYWJzJyt0KyciPic7CiAgICBkLnNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihzLGkpeyBoKz0nPGJ1dHRvbiBjbGFzcz0iY2xwdy10YWInKyhpPT09MD8nIG9uJzonJykrJyIgZGF0YS10YWI9IicrdCsnIiBkYXRhLWk9IicraSsnIj4nK2VzYyhzLmxldmVsKSsnPC9idXR0b24+JzsgfSk7CiAgICBoKz0gICAnPC9kaXY+JzsKICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXNhbWJvZHkiIGlkPSJjbHB3U2FtQm9keScrdCsnIj48L2Rpdj4nOwogICAgaCs9ICc8L2Rpdj4nOwogICAgaCs9JzwvZGl2Pic7CiAgICByZXR1cm4gaDsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgdmFyIHJvb3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdBcHAiKTsgaWYoIXJvb3QpIHJldHVybjsKICAgIHZhciBtPVdEQVRBLm1ldGEsIGg9IiI7CiAgICAvLyBoZXJvCiAgICBoKz0nPHNlY3Rpb24gY2xhc3M9ImNscHctaGVybyI+PGRpdiBjbGFzcz0iY2xwdy1hdXJvcmEiPjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2Pic7CiAgICBoKz0gJzxkaXYgY2xhc3M9ImNscHctaGJhZGdlcyI+PHNwYW4gY2xhc3M9ImNscHctYmJyYW5kIj4nK2VzYyhtLmJyYW5kKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWJzZXQiPicrZXNjKG0uc2V0KSsnPC9zcGFuPjwvZGl2Pic7CiAgICBoKz0gJzxoMT4nK2VzYyhtLnRpdGxlKSsnPC9oMT4nOwogICAgaCs9ICc8cCBjbGFzcz0iY2xwdy1oZXJvLXN1YiI+V3JpdGUgeW91ciByZXNwb25zZSwgdGltZSB5b3Vyc2VsZiwgdGhlbiBjb21wYXJlIGl0IHdpdGggb2ZmaWNpYWwgc2FtcGxlIGFuc3dlcnMgYXQgdGhyZWUgc2NvcmUgbGV2ZWxzICZtZGFzaDsgQ0VMUElQIDQmbmRhc2g7NSwgNyZuZGFzaDs4IGFuZCAxMCZuZGFzaDsxMi48L3A+JzsKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1oY2hpcHMiPjxzcGFuIGNsYXNzPSJjbHB3LWNoaXAiPjIgdGFza3M8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2hpcCI+ficrbS50b3RhbE1pbisnIG1pbnV0ZXM8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2hpcCI+MTUwJm5kYXNoOzIwMCB3b3JkcyBlYWNoPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNoaXAiPlNhbXBsZSBhbnN3ZXJzIGluY2x1ZGVkPC9zcGFuPjwvZGl2Pic7CiAgICBoKz0gJzxidXR0b24gY2xhc3M9ImNscHctY3RhIiBpZD0iY2xwd1N0YXJ0Ij5TdGFydCB3cml0aW5nPC9idXR0b24+JzsKICAgIGgrPSc8L3NlY3Rpb24+JzsKICAgIC8vIHRvb2xiYXIKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXRvb2xzIj48c3BhbiBjbGFzcz0iY2xwdy13Y291bnQiIGlkPSJjbHB3VG90V29yZHMiPldvcmRzICZtZGFzaDsgVGFzayAxOiAwICZtaWRkb3Q7IFRhc2sgMjogMDwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1zYXZlZCIgaWQ9ImNscHdTYXZlZCI+RHJhZnQgc2F2ZWQgJiMxMDAwMzs8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctc3BhY2VyIj48L3NwYW4+PGJ1dHRvbiBjbGFzcz0iY2xwdy10YnRuIiBpZD0iY2xwd1Jlc2V0QWxsIj5SZXNldCBhbGw8L2J1dHRvbj48L2Rpdj4nOwogICAgLy8gc2ltCiAgICBoKz0nPHNlY3Rpb24gY2xhc3M9ImNscHctc2ltIj48ZGl2IGNsYXNzPSJjbHB3LWRvdHMiIGlkPSJjbHB3RG90cyI+JzsKICAgIFdEQVRBLnRhc2tzLmZvckVhY2goZnVuY3Rpb24oZCl7IGgrPSc8YnV0dG9uIGNsYXNzPSJjbHB3LWRvdCIgZGF0YS1kb3Q9IicrZC5pZCsnIj5UYXNrICcrZC5pZCsnICZtaWRkb3Q7ICcrZXNjKGQubmFtZSkrJzwvYnV0dG9uPic7IH0pOwogICAgaCs9JzwvZGl2PjxkaXYgY2xhc3M9ImNscHctY2F0IiBpZD0iY2xwd0NhdCI+JzsKICAgIFdEQVRBLnRhc2tzLmZvckVhY2goZnVuY3Rpb24oZCl7IGgrPXRhc2tIVE1MKGQuaWQpOyB9KTsKICAgIGgrPSc8L2Rpdj48L3NlY3Rpb24+JzsKICAgIC8vIHJ1YnJpYyBwYW5lbAogICAgaCs9JzxzZWN0aW9uIGNsYXNzPSJjbHB3LXBhbmVsIj48aDI+U2NvcmUgeW91ciBvd24gd3JpdGluZzwvaDI+PHAgY2xhc3M9ImNscHctbGVhZCI+VGhlcmUgaXMgbm8gYW5zd2VyIGtleSBmb3IgV3JpdGluZy4gUmF0ZSBlYWNoIHJlc3BvbnNlIGFnYWluc3QgdGhlIGZvdXIgb2ZmaWNpYWwgQ0VMUElQIGRpbWVuc2lvbnMuPC9wPic7CiAgICBoKz0nPGRpdiBjbGFzcz0iY2xwdy1ydWJncmlkIiBpZD0iY2xwd1J1YkdyaWQiPjwvZGl2Pic7CiAgICBoKz0nPGRpdiBjbGFzcz0iY2xwdy1zY29yZWJveCI+Jytlc2MoV0RBVEEuc2NvcmluZ05vdGUpKyc8ZGl2IGNsYXNzPSJjbHB3LWNsYnJvdyI+PHNwYW4gY2xhc3M9ImNscHctY2xidGFnIj5NPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNsYnRhZyI+Q0xCIDQmbmRhc2g7NSAmcmFycjsgZGV2ZWxvcGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jbGJ0YWciPkNMQiA3Jm5kYXNoOzggJnJhcnI7IGFkZXF1YXRlJm5kYXNoO2dvb2Q8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2xidGFnIj5DTEIgOSZuZGFzaDsxMiAmcmFycjsgc3Ryb25nPC9zcGFuPjwvZGl2PjwvZGl2Pic7CiAgICBoKz0nPC9zZWN0aW9uPic7CiAgICBoKz0nPGRpdiBjbGFzcz0iY2xwdy1mb290Ij5BbGxFbmdsaXNoNFUgJm1pZGRvdDsgQ0VMUElQIFdyaXRpbmcgUHJhY3RpY2UgJm1pZGRvdDsgJytlc2MoV0RBVEEubWV0YS5zZXQpKyc8L2Rpdj4nOwogICAgcm9vdC5pbm5lckhUTUw9aDsKICAgIGJ1aWxkUnVicmljKCk7CiAgICBXREFUQS50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKGQpeyByZW5kZXJTYW1wbGUoZC5pZCk7IHVwZGF0ZVdDKGQuaWQpOyB9KTsKICAgIHdpcmVFdmVudHMoKTsKICAgIHJlZnJlc2hEb3RzKCk7CiAgICB1cGRhdGVUb3RhbHMoKTsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkUnVicmljKCl7CiAgICB2YXIgZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1J1YkdyaWQiKTsgaWYoIWcpIHJldHVybjsgdmFyIGg9IiI7CiAgICBXREFUQS5ydWJyaWMuZm9yRWFjaChmdW5jdGlvbihyLGkpewogICAgICB2YXIgb24gPSBzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXSAmJiBzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXVtpXTsKICAgICAgaCs9JzxsYWJlbCBjbGFzcz0iY2xwdy1ydWInKyhvbj8nIGRvbmUnOicnKSsnIiBkYXRhLXJ1YndyYXA9IicraSsnIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtcnViPSInK2krJyInKyhvbj8nIGNoZWNrZWQnOicnKSsnPjxzcGFuPjxzcGFuIGNsYXNzPSJjbHB3LXJ1Yi1rIj4nK2VzYyhyLmspKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctcnViLWQiPicrZXNjKHIuZCkrJzwvc3Bhbj48L3NwYW4+PC9sYWJlbD4nOwogICAgfSk7CiAgICBnLmlubmVySFRNTD1oOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyU2FtcGxlKHQpewogICAgdmFyIGQ9V0RBVEEudGFza3NbdC0xXSwgaT1zdGF0ZS50YWJbdF0sIHM9ZC5zYW1wbGVzW2ldOwogICAgdmFyIGJvZHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTYW1Cb2R5Iit0KTsgaWYoIWJvZHkpIHJldHVybjsKICAgIGJvZHkuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJjbHB3LXNhbWx2bCI+Jytlc2Mocy5sZXZlbCkrJzwvZGl2PjxkaXYgY2xhc3M9ImNscHctc2FtdGV4dCI+Jytlc2Mocy50ZXh0KSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9ImNscHctc2FtaGludCI+PGI+V2hhdCBzZXRzIHRoaXMgbGV2ZWwgYXBhcnQ6PC9iPiAnK2VzYyhzLm5vdGUpKyc8L2Rpdj4nOwogICAgdmFyIHRhYnM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdUYWJzIit0KTsgaWYodGFicyl7IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGFicy5jaGlsZHJlbixmdW5jdGlvbihiLGJpKXsgYi5jbGFzc0xpc3QudG9nZ2xlKCJvbiIsYmk9PT1pKTsgfSk7IH0KICB9CgogIGZ1bmN0aW9uIHVwZGF0ZVdDKHQpewogICAgdmFyIG49d2Moc3RhdGUudGV4dFt0XSk7IHZhciBwaWxsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3V3BpbGwiK3QpOyBpZighcGlsbCkgcmV0dXJuOwogICAgcGlsbC50ZXh0Q29udGVudD1uKyhuPT09MT8iIHdvcmQiOiIgd29yZHMiKTsKICAgIHBpbGwuY2xhc3NOYW1lPSJjbHB3LXdwaWxsICIrKG48MTUwPyJsb3ciOihuPD0yMDA\/Imdvb2QiOihuPD0yNTA\/Im92ZXIiOiJtYXgiKSkpOwogICAgdXBkYXRlVG90YWxzKCk7CiAgfQogIGZ1bmN0aW9uIHVwZGF0ZVRvdGFscygpewogICAgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3VG90V29yZHMiKTsgaWYoZWwpIGVsLmlubmVySFRNTD0iV29yZHMgJm1kYXNoOyBUYXNrIDE6ICIrd2Moc3RhdGUudGV4dFsxXSkrIiAmbWlkZG90OyBUYXNrIDI6ICIrd2Moc3RhdGUudGV4dFsyXSk7CiAgfQoKICBmdW5jdGlvbiByZWZyZXNoRG90cygpewogICAgdmFyIGRvdHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdEb3RzIik7IGlmKCFkb3RzKSByZXR1cm47CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvdHMuY2hpbGRyZW4sZnVuY3Rpb24oYil7IHZhciBpZD0rYi5nZXRBdHRyaWJ1dGUoImRhdGEtZG90Iik7CiAgICAgIGIuY2xhc3NMaXN0LnRvZ2dsZSgib24iLGlkPT09c3RhdGUuYWN0aXZlKTsKICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCJmaWxsZWQiLCBpZCE9PXN0YXRlLmFjdGl2ZSAmJiB3YyhzdGF0ZS50ZXh0W2lkXSk+MCk7IH0pOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3VGFzayIrZC5pZCk7IGlmKGVsKSBlbC5jbGFzc0xpc3QudG9nZ2xlKCJvbiIsZC5pZD09PXN0YXRlLmFjdGl2ZSk7IH0pOwogIH0KCiAgZnVuY3Rpb24gc3dpdGNoVGFzayh0KXsgc3RhdGUuYWN0aXZlPXQ7IHJlZnJlc2hEb3RzKCk7IGJ1aWxkUnVicmljKCk7CiAgICB2YXIgY2F0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3Q2F0Iik7IGlmKGNhdCYmY2F0LnNjcm9sbEludG9WaWV3KSBjYXQuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTsgfQoKICAvLyB0aW1lcnMKICBmdW5jdGlvbiB0aWNrKHQpeyB2YXIgVD1zdGF0ZS50aW1lclt0XTsgaWYoVC5yZW08PTApeyBzdG9wVGltZXIodCk7IHJldHVybjsgfSBULnJlbS0tOyBwYWludFRpbWUodCk7IGlmKFQucmVtPD0wKSBzdG9wVGltZXIodCk7IH0KICBmdW5jdGlvbiBwYWludFRpbWUodCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0JhclRpbWUiK3QpOyB2YXIgVD1zdGF0ZS50aW1lclt0XTsKICAgIGlmKGVsKXsgZWwuaW5uZXJIVE1MPSJUaW1lIHJlbWFpbmluZzogPGI+IitmbXQoVC5yZW0pKyI8L2I+IjsgZWwuY2xhc3NMaXN0LnRvZ2dsZSgibG93IixULnJlbTw9MTIwKTsgfQogICAgdmFyIGJ0bj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10c3RhcnQ9IicrdCsnIl0nKTsgaWYoYnRuKXsgYnRuLnRleHRDb250ZW50PVQucnVuPyJQYXVzZSB0aW1lciI6KFQucmVtPD0wPyJUaW1lIHVwIjoiU3RhcnQgdGltZXIiKTsgYnRuLmNsYXNzTGlzdC50b2dnbGUoInJ1biIsVC5ydW4pOyB9IH0KICBmdW5jdGlvbiBzdGFydFRpbWVyKHQpeyB2YXIgVD1zdGF0ZS50aW1lclt0XTsgaWYoVC5yZW08PTApIHJldHVybjsgVC5ydW49dHJ1ZTsgaWYoVC5pdikgY2xlYXJJbnRlcnZhbChULml2KTsgVC5pdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RpY2sodCk7fSwxMDAwKTsgcGFpbnRUaW1lKHQpOyB9CiAgZnVuY3Rpb24gc3RvcFRpbWVyKHQpeyB2YXIgVD1zdGF0ZS50aW1lclt0XTsgVC5ydW49ZmFsc2U7IGlmKFQuaXYpeyBjbGVhckludGVydmFsKFQuaXYpOyBULml2PW51bGw7IH0gcGFpbnRUaW1lKHQpOyB9CiAgZnVuY3Rpb24gdG9nZ2xlVGltZXIodCl7IHN0YXRlLnRpbWVyW3RdLnJ1bj9zdG9wVGltZXIodCk6c3RhcnRUaW1lcih0KTsgfQogIGZ1bmN0aW9uIHJlc2V0VGltZXIodCl7IHN0b3BUaW1lcih0KTsgc3RhdGUudGltZXJbdF0ucmVtPVdEQVRBLnRhc2tzW3QtMV0ubWludXRlcyo2MDsgcGFpbnRUaW1lKHQpOyB9CgogIC8vIC0tLS0tLS0tLS0gZXZlbnRzIC0tLS0tLS0tLS0KICBmdW5jdGlvbiB3aXJlRXZlbnRzKCl7CiAgICB2YXIgcm9vdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0FwcCIpOwogICAgdmFyIHN0YXJ0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3U3RhcnQiKTsKICAgIGlmKHN0YXJ0KSBzdGFydC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3dpdGNoVGFzaygxKTsgc3RhcnRUaW1lcigxKTsgfSk7CiAgICB2YXIgcmVzZXRBbGw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdSZXNldEFsbCIpOwogICAgaWYocmVzZXRBbGwpIHJlc2V0QWxsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpewogICAgICBpZighY29uZmlybSgiQ2xlYXIgYm90aCBkcmFmdHMsIHNlbGVjdGVkIG9wdGlvbiBhbmQgdGltZXJzIG9uIHRoaXMgZGV2aWNlPyIpKSByZXR1cm47CiAgICAgIHN0YXRlLnRleHRbMV09IiI7c3RhdGUudGV4dFsyXT0iIjtzdGF0ZS5vcHQ9bnVsbDtzdGF0ZS5ydWJyaWM9ezE6e30sMjp7fX07CiAgICAgIHJlc2V0VGltZXIoMSk7cmVzZXRUaW1lcigyKTsgc2F2ZSgpOyByZW5kZXIoKTsgfSk7CgogICAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7CiAgICAgIHZhciBlbD1lLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1kb3RdLFtkYXRhLXNhbXRvZ2dsZV0sW2RhdGEtdGFiXSxbZGF0YS10c3RhcnRdLFtkYXRhLXRyZXNldF0sW2RhdGEtdG5leHRdIik7IGlmKCFlbCkgcmV0dXJuOwogICAgICBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtZG90IikpeyBzd2l0Y2hUYXNrKCtlbC5nZXRBdHRyaWJ1dGUoImRhdGEtZG90IikpOyB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXNhbXRvZ2dsZSIpKXsgdmFyIHQ9K2VsLmdldEF0dHJpYnV0ZSgiZGF0YS1zYW10b2dnbGUiKTsgdmFyIHA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTYW0iK3QpOwogICAgICAgIGlmKHApeyBwLmhpZGRlbj0hcC5oaWRkZW47IGVsLnRleHRDb250ZW50PXAuaGlkZGVuPyJDbGljayBoZXJlIHRvIHZpZXcgc2FtcGxlIHJlc3BvbnNlcyI6IkhpZGUgc2FtcGxlIHJlc3BvbnNlcyI7IGlmKCFwLmhpZGRlbikgcmVuZGVyU2FtcGxlKHQpOyB9IH0KICAgICAgZWxzZSBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtdGFiIikpeyB2YXIgdHQ9K2VsLmdldEF0dHJpYnV0ZSgiZGF0YS10YWIiKTsgc3RhdGUudGFiW3R0XT0rZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKTsgcmVuZGVyU2FtcGxlKHR0KTsgfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS10c3RhcnQiKSl7IHRvZ2dsZVRpbWVyKCtlbC5nZXRBdHRyaWJ1dGUoImRhdGEtdHN0YXJ0IikpOyB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXRyZXNldCIpKXsgcmVzZXRUaW1lcigrZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXRyZXNldCIpKTsgfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS10bmV4dCIpKXsgdmFyIGN1cj0rZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXRuZXh0Iik7IGlmKGN1cjxXREFUQS50YXNrcy5sZW5ndGgpeyBzd2l0Y2hUYXNrKGN1cisxKTsgfSB9CiAgICB9KTsKCiAgICByb290LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixmdW5jdGlvbihlKXsgdmFyIHRhPWUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXRhXSIpOyBpZighdGEpIHJldHVybjsKICAgICAgdmFyIHQ9K3RhLmdldEF0dHJpYnV0ZSgiZGF0YS10YSIpOyBzdGF0ZS50ZXh0W3RdPXRhLnZhbHVlOyB1cGRhdGVXQyh0KTsgcmVmcmVzaERvdHMoKTsgc2F2ZSgpOyB9KTsKCiAgICByb290LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZnVuY3Rpb24oZSl7CiAgICAgIHZhciBvcHQ9ZS50YXJnZXQuY2xvc2VzdCgnaW5wdXRbbmFtZT0iY2xwd09wdCJdJyk7CiAgICAgIGlmKG9wdCl7IHN0YXRlLm9wdD1vcHQudmFsdWU7IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtb3B0d3JhcF0iKSxmdW5jdGlvbihsKXsgbC5jbGFzc0xpc3QudG9nZ2xlKCJzZWwiLGwuZ2V0QXR0cmlidXRlKCJkYXRhLW9wdHdyYXAiKT09PXN0YXRlLm9wdCk7IH0pOyBzYXZlKCk7IHJldHVybjsgfQogICAgICB2YXIgcnViPWUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJ1Yl0iKTsKICAgICAgaWYocnViKXsgdmFyIGk9K3J1Yi5nZXRBdHRyaWJ1dGUoImRhdGEtcnViIik7IGlmKCFzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXSkgc3RhdGUucnVicmljW3N0YXRlLmFjdGl2ZV09e307IHN0YXRlLnJ1YnJpY1tzdGF0ZS5hY3RpdmVdW2ldPXJ1Yi5jaGVja2VkOwogICAgICAgIHZhciB3cmFwPXJ1Yi5jbG9zZXN0KCJbZGF0YS1ydWJ3cmFwXSIpOyBpZih3cmFwKSB3cmFwLmNsYXNzTGlzdC50b2dnbGUoImRvbmUiLHJ1Yi5jaGVja2VkKTsgc2F2ZSgpOyB9CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGJvb3QoKXsgbG9hZCgpOyBpbmplY3RDU1MoKTsgcmVuZGVyKCk7IH0KICBpZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixib290KTsgZWxzZSBib290KCk7Cn0pKCk7Cgo=\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Writing Set 3 Practice Test 1: Task 1 (email) and Task 2 (survey response) with timers and word counter, plus a self-assessment guide. 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-6316","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6316","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=6316"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6316\/revisions"}],"predecessor-version":[{"id":6578,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6316\/revisions\/6578"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}