CREATE TABLE docker_base_image ( id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, nice_name VARCHAR(255) NOT NULL, php_ini_path VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME, php_ini LONGBLOB NOT NULL, dockerfile LONGTEXT NOT NULL ); CREATE UNIQUE INDEX UNIQ_457852A05E237E06 ON docker_base_image (name); CREATE UNIQUE INDEX UNIQ_457852A09A4FC499 ON docker_base_image (nice_name); INSERT INTO `docker_base_image` (`id`, `name`, `nice_name`, `php_ini_path`, `created_at`, `updated_at`, `dockerfile`) VALUES ('1', 'test1', 'test1', 'test1', '2016-09-23 00:00:00', '2016-09-23 00:00:00', 'test1') UPDATE docker_base_image SET php_ini = 'W1BIUF0NCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBBYm91dCBwaHAuaW5pICAgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBQSFBcJ3MgaW5pdGlhbGl6YXRpb24gZmlsZSwgZ2VuZXJhbGx5IGNhbGxlZCBwaHAuaW5pLCBpcyByZXNwb25zaWJsZSBmb3INCjsgY29uZmlndXJpbmcgbWFueSBvZiB0aGUgYXNwZWN0cyBvZiBQSFBcJ3MgYmVoYXZpb3IuDQoNCjsgUEhQIGF0dGVtcHRzIHRvIGZpbmQgYW5kIGxvYWQgdGhpcyBjb25maWd1cmF0aW9uIGZyb20gYSBudW1iZXIgb2YgbG9jYXRpb25zLg0KOyBUaGUgZm9sbG93aW5nIGlzIGEgc3VtbWFyeSBvZiBpdHMgc2VhcmNoIG9yZGVyOg0KOyAxLiBTQVBJIG1vZHVsZSBzcGVjaWZpYyBsb2NhdGlvbi4NCjsgMi4gVGhlIFBIUFJDIGVudmlyb25tZW50IHZhcmlhYmxlLiAoQXMgb2YgUEhQIDUuMi4wKQ0KOyAzLiBBIG51bWJlciBvZiBwcmVkZWZpbmVkIHJlZ2lzdHJ5IGtleXMgb24gV2luZG93cyAoQXMgb2YgUEhQIDUuMi4wKQ0KOyA0LiBDdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IChleGNlcHQgQ0xJKQ0KOyA1LiBUaGUgd2ViIHNlcnZlclwncyBkaXJlY3RvcnkgKGZvciBTQVBJIG1vZHVsZXMpLCBvciBkaXJlY3Rvcnkgb2YgUEhQDQo7IChvdGhlcndpc2UgaW4gV2luZG93cykNCjsgNi4gVGhlIGRpcmVjdG9yeSBmcm9tIHRoZSAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aCBjb21waWxlIHRpbWUgb3B0aW9uLCBvciB0aGUNCjsgV2luZG93cyBkaXJlY3RvcnkgKEM6XFx3aW5kb3dzIG9yIEM6XFx3aW5udCkNCjsgU2VlIHRoZSBQSFAgZG9jcyBmb3IgbW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4NCjsgaHR0cDovL3BocC5uZXQvY29uZmlndXJhdGlvbi5maWxlDQoNCjsgVGhlIHN5bnRheCBvZiB0aGUgZmlsZSBpcyBleHRyZW1lbHkgc2ltcGxlLiAgV2hpdGVzcGFjZSBhbmQgbGluZXMNCjsgYmVnaW5uaW5nIHdpdGggYSBzZW1pY29sb24gYXJlIHNpbGVudGx5IGlnbm9yZWQgKGFzIHlvdSBwcm9iYWJseSBndWVzc2VkKS4NCjsgU2VjdGlvbiBoZWFkZXJzIChlLmcuIFtGb29dKSBhcmUgYWxzbyBzaWxlbnRseSBpZ25vcmVkLCBldmVuIHRob3VnaA0KOyB0aGV5IG1pZ2h0IG1lYW4gc29tZXRoaW5nIGluIHRoZSBmdXR1cmUuDQoNCjsgRGlyZWN0aXZlcyBmb2xsb3dpbmcgdGhlIHNlY3Rpb24gaGVhZGluZyBbUEFUSD0vd3d3L215c2l0ZV0gb25seQ0KOyBhcHBseSB0byBQSFAgZmlsZXMgaW4gdGhlIC93d3cvbXlzaXRlIGRpcmVjdG9yeS4gIERpcmVjdGl2ZXMNCjsgZm9sbG93aW5nIHRoZSBzZWN0aW9uIGhlYWRpbmcgW0hPU1Q9d3d3LmV4YW1wbGUuY29tXSBvbmx5IGFwcGx5IHRvDQo7IFBIUCBmaWxlcyBzZXJ2ZWQgZnJvbSB3d3cuZXhhbXBsZS5jb20uICBEaXJlY3RpdmVzIHNldCBpbiB0aGVzZQ0KOyBzcGVjaWFsIHNlY3Rpb25zIGNhbm5vdCBiZSBvdmVycmlkZGVuIGJ5IHVzZXItZGVmaW5lZCBJTkkgZmlsZXMgb3INCjsgYXQgcnVudGltZS4gQ3VycmVudGx5LCBbUEFUSD1dIGFuZCBbSE9TVD1dIHNlY3Rpb25zIG9ubHkgd29yayB1bmRlcg0KOyBDR0kvRmFzdENHSS4NCjsgaHR0cDovL3BocC5uZXQvaW5pLnNlY3Rpb25zDQoNCjsgRGlyZWN0aXZlcyBhcmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4Og0KOyBkaXJlY3RpdmUgPSB2YWx1ZQ0KOyBEaXJlY3RpdmUgbmFtZXMgYXJlICpjYXNlIHNlbnNpdGl2ZSogLSBmb289YmFyIGlzIGRpZmZlcmVudCBmcm9tIEZPTz1iYXIuDQo7IERpcmVjdGl2ZXMgYXJlIHZhcmlhYmxlcyB1c2VkIHRvIGNvbmZpZ3VyZSBQSFAgb3IgUEhQIGV4dGVuc2lvbnMuDQo7IFRoZXJlIGlzIG5vIG5hbWUgdmFsaWRhdGlvbi4gIElmIFBIUCBjYW5cJ3QgZmluZCBhbiBleHBlY3RlZA0KOyBkaXJlY3RpdmUgYmVjYXVzZSBpdCBpcyBub3Qgc2V0IG9yIGlzIG1pc3R5cGVkLCBhIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkLg0KDQo7IFRoZSB2YWx1ZSBjYW4gYmUgYSBzdHJpbmcsIGEgbnVtYmVyLCBhIFBIUCBjb25zdGFudCAoZS5nLiBFX0FMTCBvciBNX1BJKSwgb25lDQo7IG9mIHRoZSBJTkkgY29uc3RhbnRzIChPbiwgT2ZmLCBUcnVlLCBGYWxzZSwgWWVzLCBObyBhbmQgTm9uZSkgb3IgYW4gZXhwcmVzc2lvbg0KOyAoZS5nLiBFX0FMTCAmIH5FX05PVElDRSksIGEgcXVvdGVkIHN0cmluZyAoXCJiYXJcIiksIG9yIGEgcmVmZXJlbmNlIHRvIGENCjsgcHJldmlvdXNseSBzZXQgdmFyaWFibGUgb3IgZGlyZWN0aXZlIChlLmcuICR7Zm9vfSkNCg0KOyBFeHByZXNzaW9ucyBpbiB0aGUgSU5JIGZpbGUgYXJlIGxpbWl0ZWQgdG8gYml0d2lzZSBvcGVyYXRvcnMgYW5kIHBhcmVudGhlc2VzOg0KOyB8ICBiaXR3aXNlIE9SDQo7IF4gIGJpdHdpc2UgWE9SDQo7ICYgIGJpdHdpc2UgQU5EDQo7IH4gIGJpdHdpc2UgTk9UDQo7ICEgIGJvb2xlYW4gTk9UDQoNCjsgQm9vbGVhbiBmbGFncyBjYW4gYmUgdHVybmVkIG9uIHVzaW5nIHRoZSB2YWx1ZXMgMSwgT24sIFRydWUgb3IgWWVzLg0KOyBUaGV5IGNhbiBiZSB0dXJuZWQgb2ZmIHVzaW5nIHRoZSB2YWx1ZXMgMCwgT2ZmLCBGYWxzZSBvciBOby4NCg0KOyBBbiBlbXB0eSBzdHJpbmcgY2FuIGJlIGRlbm90ZWQgYnkgc2ltcGx5IG5vdCB3cml0aW5nIGFueXRoaW5nIGFmdGVyIHRoZSBlcXVhbA0KOyBzaWduLCBvciBieSB1c2luZyB0aGUgTm9uZSBrZXl3b3JkOg0KDQo7ICBmb28gPSAgICAgICAgIDsgc2V0cyBmb28gdG8gYW4gZW1wdHkgc3RyaW5nDQo7ICBmb28gPSBOb25lICAgIDsgc2V0cyBmb28gdG8gYW4gZW1wdHkgc3RyaW5nDQo7ICBmb28gPSBcIk5vbmVcIiAgOyBzZXRzIGZvbyB0byB0aGUgc3RyaW5nIFwnTm9uZVwnDQoNCjsgSWYgeW91IHVzZSBjb25zdGFudHMgaW4geW91ciB2YWx1ZSwgYW5kIHRoZXNlIGNvbnN0YW50cyBiZWxvbmcgdG8gYQ0KOyBkeW5hbWljYWxseSBsb2FkZWQgZXh0ZW5zaW9uIChlaXRoZXIgYSBQSFAgZXh0ZW5zaW9uIG9yIGEgWmVuZCBleHRlbnNpb24pLA0KOyB5b3UgbWF5IG9ubHkgdXNlIHRoZXNlIGNvbnN0YW50cyAqYWZ0ZXIqIHRoZSBsaW5lIHRoYXQgbG9hZHMgdGhlIGV4dGVuc2lvbi4NCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBBYm91dCB0aGlzIGZpbGUgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBQSFAgY29tZXMgcGFja2FnZWQgd2l0aCB0d28gSU5JIGZpbGVzLiBPbmUgdGhhdCBpcyByZWNvbW1lbmRlZCB0byBiZSB1c2VkDQo7IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGFuZCBvbmUgdGhhdCBpcyByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGluDQo7IGRldmVsb3BtZW50IGVudmlyb25tZW50cy4NCg0KOyBwaHAuaW5pLXByb2R1Y3Rpb24gY29udGFpbnMgc2V0dGluZ3Mgd2hpY2ggaG9sZCBzZWN1cml0eSwgcGVyZm9ybWFuY2UgYW5kDQo7IGJlc3QgcHJhY3RpY2VzIGF0IGl0cyBjb3JlLiBCdXQgcGxlYXNlIGJlIGF3YXJlLCB0aGVzZSBzZXR0aW5ncyBtYXkgYnJlYWsNCjsgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIG9yIGxlc3Mgc2VjdXJpdHkgY29uc2NpZW5jZSBhcHBsaWNhdGlvbnMuIFdlDQo7IHJlY29tbWVuZGluZyB1c2luZyB0aGUgcHJvZHVjdGlvbiBpbmkgaW4gcHJvZHVjdGlvbiBhbmQgdGVzdGluZyBlbnZpcm9ubWVudHMuDQoNCjsgcGhwLmluaS1kZXZlbG9wbWVudCBpcyB2ZXJ5IHNpbWlsYXIgdG8gaXRzIHByb2R1Y3Rpb24gdmFyaWFudCwgZXhjZXB0IGl0XCdzDQo7IG11Y2ggbW9yZSB2ZXJib3NlIHdoZW4gaXQgY29tZXMgdG8gZXJyb3JzLiBXZSByZWNvbW1lbmRpbmcgdXNpbmcgdGhlDQo7IGRldmVsb3BtZW50IHZlcnNpb24gb25seSBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgYXMgZXJyb3JzIHNob3duIHRvDQo7IGFwcGxpY2F0aW9uIHVzZXJzIGNhbiBpbmFkdmVydGVudGx5IGxlYWsgb3RoZXJ3aXNlIHNlY3VyZSBpbmZvcm1hdGlvbi4NCg0KOyBUaGlzIGlzIHBocC5pbmktcHJvZHVjdGlvbiBJTkkgZmlsZS4NCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBRdWljayBSZWZlcmVuY2UgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBUaGUgZm9sbG93aW5nIGFyZSBhbGwgdGhlIHNldHRpbmdzIHdoaWNoIGFyZSBkaWZmZXJlbnQgaW4gZWl0aGVyIHRoZSBwcm9kdWN0aW9uDQo7IG9yIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIHRoZSBJTklzIHdpdGggcmVzcGVjdCB0byBQSFBcJ3MgZGVmYXVsdCBiZWhhdmlvci4NCjsgUGxlYXNlIHNlZSB0aGUgYWN0dWFsIHNldHRpbmdzIGxhdGVyIGluIHRoZSBkb2N1bWVudCBmb3IgbW9yZSBkZXRhaWxzIGFzIHRvIHdoeQ0KOyB3ZSByZWNvbW1lbmQgdGhlc2UgY2hhbmdlcyBpbiBQSFBcJ3MgYmVoYXZpb3IuDQoNCjsgZGlzcGxheV9lcnJvcnMNCjsgICBEZWZhdWx0IFZhbHVlOiBPbg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IGRpc3BsYXlfc3RhcnR1cF9lcnJvcnMNCjsgICBEZWZhdWx0IFZhbHVlOiBPZmYNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyBlcnJvcl9yZXBvcnRpbmcNCjsgICBEZWZhdWx0IFZhbHVlOiBFX0FMTCAmIH5FX05PVElDRSAmIH5FX1NUUklDVCAmIH5FX0RFUFJFQ0FURUQNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogRV9BTEwNCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBFX0FMTCAmIH5FX0RFUFJFQ0FURUQgJiB+RV9TVFJJQ1QNCg0KOyBodG1sX2Vycm9ycw0KOyAgIERlZmF1bHQgVmFsdWU6IE9uDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiB2YWx1ZTogT24NCg0KOyBsb2dfZXJyb3JzDQo7ICAgRGVmYXVsdCBWYWx1ZTogT2ZmDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT24NCg0KOyBtYXhfaW5wdXRfdGltZQ0KOyAgIERlZmF1bHQgVmFsdWU6IC0xIChVbmxpbWl0ZWQpDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IDYwICg2MCBzZWNvbmRzKQ0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IDYwICg2MCBzZWNvbmRzKQ0KDQo7IG91dHB1dF9idWZmZXJpbmcNCjsgICBEZWZhdWx0IFZhbHVlOiBPZmYNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogNDA5Ng0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IDQwOTYNCg0KOyByZWdpc3Rlcl9hcmdjX2FyZ3YNCjsgICBEZWZhdWx0IFZhbHVlOiBPbg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPZmYNCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyByZXF1ZXN0X29yZGVyDQo7ICAgRGVmYXVsdCBWYWx1ZTogTm9uZQ0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBcIkdQXCINCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBcIkdQXCINCg0KOyBzZXNzaW9uLmJ1Z19jb21wYXRfNDINCjsgICBEZWZhdWx0IFZhbHVlOiBPbg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IHNlc3Npb24uYnVnX2NvbXBhdF93YXJuDQo7ICAgRGVmYXVsdCBWYWx1ZTogT24NCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyBzZXNzaW9uLmdjX2Rpdmlzb3INCjsgICBEZWZhdWx0IFZhbHVlOiAxMDANCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogMTAwMA0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IDEwMDANCg0KOyBzZXNzaW9uLmhhc2hfYml0c19wZXJfY2hhcmFjdGVyDQo7ICAgRGVmYXVsdCBWYWx1ZTogNA0KOyAgIERldmVsb3BtZW50IFZhbHVlOiA1DQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogNQ0KDQo7IHNob3J0X29wZW5fdGFnDQo7ICAgRGVmYXVsdCBWYWx1ZTogT24NCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT2ZmDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgdHJhY2tfZXJyb3JzDQo7ICAgRGVmYXVsdCBWYWx1ZTogT2ZmDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgdXJsX3Jld3JpdGVyLnRhZ3MNCjsgICBEZWZhdWx0IFZhbHVlOiBcImE9aHJlZixhcmVhPWhyZWYsZnJhbWU9c3JjLGZvcm09LGZpZWxkc2V0PVwiDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IFwiYT1ocmVmLGFyZWE9aHJlZixmcmFtZT1zcmMsaW5wdXQ9c3JjLGZvcm09ZmFrZWVudHJ5XCINCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBcImE9aHJlZixhcmVhPWhyZWYsZnJhbWU9c3JjLGlucHV0PXNyYyxmb3JtPWZha2VlbnRyeVwiDQoNCjsgdmFyaWFibGVzX29yZGVyDQo7ICAgRGVmYXVsdCBWYWx1ZTogXCJFR1BDU1wiDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IFwiR1BDU1wiDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogXCJHUENTXCINCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgcGhwLmluaSBPcHRpb25zICA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBOYW1lIGZvciB1c2VyLWRlZmluZWQgcGhwLmluaSAoLmh0YWNjZXNzKSBmaWxlcy4gRGVmYXVsdCBpcyBcIi51c2VyLmluaVwiDQo7dXNlcl9pbmkuZmlsZW5hbWUgPSBcIi51c2VyLmluaVwiDQoNCjsgVG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUgc2V0IHRoaXMgb3B0aW9uIHRvIGVtcHR5IHZhbHVlDQo7dXNlcl9pbmkuZmlsZW5hbWUgPQ0KDQo7IFRUTCBmb3IgdXNlci1kZWZpbmVkIHBocC5pbmkgZmlsZXMgKHRpbWUtdG8tbGl2ZSkgaW4gc2Vjb25kcy4gRGVmYXVsdCBpcyAzMDAgc2Vjb25kcyAoNSBtaW51dGVzKQ0KO3VzZXJfaW5pLmNhY2hlX3R0bCA9IDMwMA0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBMYW5ndWFnZSBPcHRpb25zIDsNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQoNCjsgRW5hYmxlIHRoZSBQSFAgc2NyaXB0aW5nIGxhbmd1YWdlIGVuZ2luZSB1bmRlciBBcGFjaGUuDQo7IGh0dHA6Ly9waHAubmV0L2VuZ2luZQ0KZW5naW5lID0gT24NCg0KOyBUaGlzIGRpcmVjdGl2ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IFBIUCB3aWxsIHJlY29nbml6ZSBjb2RlIGJldHdlZW4NCjsgPD8gYW5kID8+IHRhZ3MgYXMgUEhQIHNvdXJjZSB3aGljaCBzaG91bGQgYmUgcHJvY2Vzc2VkIGFzIHN1Y2guIEl0IGlzDQo7IGdlbmVyYWxseSByZWNvbW1lbmRlZCB0aGF0IDw/cGhwIGFuZCA/PiBzaG91bGQgYmUgdXNlZCBhbmQgdGhhdCB0aGlzIGZlYXR1cmUNCjsgc2hvdWxkIGJlIGRpc2FibGVkLCBhcyBlbmFibGluZyBpdCBtYXkgcmVzdWx0IGluIGlzc3VlcyB3aGVuIGdlbmVyYXRpbmcgWE1MDQo7IGRvY3VtZW50cywgaG93ZXZlciB0aGlzIHJlbWFpbnMgc3VwcG9ydGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuDQo7IE5vdGUgdGhhdCB0aGlzIGRpcmVjdGl2ZSBkb2VzIG5vdCBjb250cm9sIHRoZSA8Pz0gc2hvcnRoYW5kIHRhZywgd2hpY2ggY2FuIGJlDQo7IHVzZWQgcmVnYXJkbGVzcyBvZiB0aGlzIGRpcmVjdGl2ZS4NCjsgRGVmYXVsdCBWYWx1ZTogT24NCjsgRGV2ZWxvcG1lbnQgVmFsdWU6IE9mZg0KOyBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCjsgaHR0cDovL3BocC5uZXQvc2hvcnQtb3Blbi10YWcNCnNob3J0X29wZW5fdGFnID0gT2ZmDQoNCjsgQWxsb3cgQVNQLXN0eWxlIDwlICU+IHRhZ3MuDQo7IGh0dHA6Ly9waHAubmV0L2FzcC10YWdzDQphc3BfdGFncyA9IE9mZg0KDQo7IFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGRpc3BsYXllZCBpbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLg0KOyBodHRwOi8vcGhwLm5ldC9wcmVjaXNpb24NCnByZWNpc2lvbiA9IDE0DQoNCjsgT3V0cHV0IGJ1ZmZlcmluZyBpcyBhIG1lY2hhbmlzbSBmb3IgY29udHJvbGxpbmcgaG93IG11Y2ggb3V0cHV0IGRhdGENCjsgKGV4Y2x1ZGluZyBoZWFkZXJzIGFuZCBjb29raWVzKSBQSFAgc2hvdWxkIGtlZXAgaW50ZXJuYWxseSBiZWZvcmUgcHVzaGluZyB0aGF0DQo7IGRhdGEgdG8gdGhlIGNsaWVudC4gSWYgeW91ciBhcHBsaWNhdGlvblwncyBvdXRwdXQgZXhjZWVkcyB0aGlzIHNldHRpbmcsIFBIUA0KOyB3aWxsIHNlbmQgdGhhdCBkYXRhIGluIGNodW5rcyBvZiByb3VnaGx5IHRoZSBzaXplIHlvdSBzcGVjaWZ5Lg0KOyBUdXJuaW5nIG9uIHRoaXMgc2V0dGluZyBhbmQgbWFuYWdpbmcgaXRzIG1heGltdW0gYnVmZmVyIHNpemUgY2FuIHlpZWxkIHNvbWUNCjsgaW50ZXJlc3Rpbmcgc2lkZS1lZmZlY3RzIGRlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIGFuZCB3ZWIgc2VydmVyLg0KOyBZb3UgbWF5IGJlIGFibGUgdG8gc2VuZCBoZWFkZXJzIGFuZCBjb29raWVzIGFmdGVyIHlvdVwndmUgYWxyZWFkeSBzZW50IG91dHB1dA0KOyB0aHJvdWdoIHByaW50IG9yIGVjaG8uIFlvdSBhbHNvIG1heSBzZWUgcGVyZm9ybWFuY2UgYmVuZWZpdHMgaWYgeW91ciBzZXJ2ZXIgaXMNCjsgZW1pdHRpbmcgbGVzcyBwYWNrZXRzIGR1ZSB0byBidWZmZXJlZCBvdXRwdXQgdmVyc3VzIFBIUCBzdHJlYW1pbmcgdGhlIG91dHB1dA0KOyBhcyBpdCBnZXRzIGl0LiBPbiBwcm9kdWN0aW9uIHNlcnZlcnMsIDQwOTYgYnl0ZXMgaXMgYSBnb29kIHNldHRpbmcgZm9yIHBlcmZvcm1hbmNlDQo7IHJlYXNvbnMuDQo7IE5vdGU6IE91dHB1dCBidWZmZXJpbmcgY2FuIGFsc28gYmUgY29udHJvbGxlZCB2aWEgT3V0cHV0IEJ1ZmZlcmluZyBDb250cm9sDQo7ICAgZnVuY3Rpb25zLg0KOyBQb3NzaWJsZSBWYWx1ZXM6DQo7ICAgT24gPSBFbmFibGVkIGFuZCBidWZmZXIgaXMgdW5saW1pdGVkLiAoVXNlIHdpdGggY2F1dGlvbikNCjsgICBPZmYgPSBEaXNhYmxlZA0KOyAgIEludGVnZXIgPSBFbmFibGVzIHRoZSBidWZmZXIgYW5kIHNldHMgaXRzIG1heGltdW0gc2l6ZSBpbiBieXRlcy4NCjsgTm90ZTogVGhpcyBkaXJlY3RpdmUgaXMgaGFyZGNvZGVkIHRvIE9mZiBmb3IgdGhlIENMSSBTQVBJDQo7IERlZmF1bHQgVmFsdWU6IE9mZg0KOyBEZXZlbG9wbWVudCBWYWx1ZTogNDA5Ng0KOyBQcm9kdWN0aW9uIFZhbHVlOiA0MDk2DQo7IGh0dHA6Ly9waHAubmV0L291dHB1dC1idWZmZXJpbmcNCm91dHB1dF9idWZmZXJpbmcgPSA0MDk2DQoNCjsgWW91IGNhbiByZWRpcmVjdCBhbGwgb2YgdGhlIG91dHB1dCBvZiB5b3VyIHNjcmlwdHMgdG8gYSBmdW5jdGlvbi4gIEZvcg0KOyBleGFtcGxlLCBpZiB5b3Ugc2V0IG91dHB1dF9oYW5kbGVyIHRvIFwibWJfb3V0cHV0X2hhbmRsZXJcIiwgY2hhcmFjdGVyDQo7IGVuY29kaW5nIHdpbGwgYmUgdHJhbnNwYXJlbnRseSBjb252ZXJ0ZWQgdG8gdGhlIHNwZWNpZmllZCBlbmNvZGluZy4NCjsgU2V0dGluZyBhbnkgb3V0cHV0IGhhbmRsZXIgYXV0b21hdGljYWxseSB0dXJucyBvbiBvdXRwdXQgYnVmZmVyaW5nLg0KOyBOb3RlOiBQZW9wbGUgd2hvIHdyb3RlIHBvcnRhYmxlIHNjcmlwdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gdGhpcyBpbmkNCjsgICBkaXJlY3RpdmUuIEluc3RlYWQsIGV4cGxpY2l0bHkgc2V0IHRoZSBvdXRwdXQgaGFuZGxlciB1c2luZyBvYl9zdGFydCgpLg0KOyAgIFVzaW5nIHRoaXMgaW5pIGRpcmVjdGl2ZSBtYXkgY2F1c2UgcHJvYmxlbXMgdW5sZXNzIHlvdSBrbm93IHdoYXQgc2NyaXB0DQo7ICAgaXMgZG9pbmcuDQo7IE5vdGU6IFlvdSBjYW5ub3QgdXNlIGJvdGggXCJtYl9vdXRwdXRfaGFuZGxlclwiIHdpdGggXCJvYl9pY29udl9oYW5kbGVyXCINCjsgICBhbmQgeW91IGNhbm5vdCB1c2UgYm90aCBcIm9iX2d6aGFuZGxlclwiIGFuZCBcInpsaWIub3V0cHV0X2NvbXByZXNzaW9uXCIuDQo7IE5vdGU6IG91dHB1dF9oYW5kbGVyIG11c3QgYmUgZW1wdHkgaWYgdGhpcyBpcyBzZXQgXCdPblwnICEhISENCjsgICBJbnN0ZWFkIHlvdSBtdXN0IHVzZSB6bGliLm91dHB1dF9oYW5kbGVyLg0KOyBodHRwOi8vcGhwLm5ldC9vdXRwdXQtaGFuZGxlcg0KO291dHB1dF9oYW5kbGVyID0NCg0KOyBUcmFuc3BhcmVudCBvdXRwdXQgY29tcHJlc3Npb24gdXNpbmcgdGhlIHpsaWIgbGlicmFyeQ0KOyBWYWxpZCB2YWx1ZXMgZm9yIHRoaXMgb3B0aW9uIGFyZSBcJ29mZlwnLCBcJ29uXCcsIG9yIGEgc3BlY2lmaWMgYnVmZmVyIHNpemUNCjsgdG8gYmUgdXNlZCBmb3IgY29tcHJlc3Npb24gKGRlZmF1bHQgaXMgNEtCKQ0KOyBOb3RlOiBSZXN1bHRpbmcgY2h1bmsgc2l6ZSBtYXkgdmFyeSBkdWUgdG8gbmF0dXJlIG9mIGNvbXByZXNzaW9uLiBQSFANCjsgICBvdXRwdXRzIGNodW5rcyB0aGF0IGFyZSBmZXcgaHVuZHJlZHMgYnl0ZXMgZWFjaCBhcyBhIHJlc3VsdCBvZg0KOyAgIGNvbXByZXNzaW9uLiBJZiB5b3UgcHJlZmVyIGEgbGFyZ2VyIGNodW5rIHNpemUgZm9yIGJldHRlcg0KOyAgIHBlcmZvcm1hbmNlLCBlbmFibGUgb3V0cHV0X2J1ZmZlcmluZyBpbiBhZGRpdGlvbi4NCjsgTm90ZTogWW91IG5lZWQgdG8gdXNlIHpsaWIub3V0cHV0X2hhbmRsZXIgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQNCjsgICBvdXRwdXRfaGFuZGxlciwgb3Igb3RoZXJ3aXNlIHRoZSBvdXRwdXQgd2lsbCBiZSBjb3JydXB0ZWQuDQo7IGh0dHA6Ly9waHAubmV0L3psaWIub3V0cHV0LWNvbXByZXNzaW9uDQp6bGliLm91dHB1dF9jb21wcmVzc2lvbiA9IE9mZg0KDQo7IGh0dHA6Ly9waHAubmV0L3psaWIub3V0cHV0LWNvbXByZXNzaW9uLWxldmVsDQo7emxpYi5vdXRwdXRfY29tcHJlc3Npb25fbGV2ZWwgPSAtMQ0KDQo7IFlvdSBjYW5ub3Qgc3BlY2lmeSBhZGRpdGlvbmFsIG91dHB1dCBoYW5kbGVycyBpZiB6bGliLm91dHB1dF9jb21wcmVzc2lvbg0KOyBpcyBhY3RpdmF0ZWQgaGVyZS4gVGhpcyBzZXR0aW5nIGRvZXMgdGhlIHNhbWUgYXMgb3V0cHV0X2hhbmRsZXIgYnV0IGluDQo7IGEgZGlmZmVyZW50IG9yZGVyLg0KOyBodHRwOi8vcGhwLm5ldC96bGliLm91dHB1dC1oYW5kbGVyDQo7emxpYi5vdXRwdXRfaGFuZGxlciA9DQoNCjsgSW1wbGljaXQgZmx1c2ggdGVsbHMgUEhQIHRvIHRlbGwgdGhlIG91dHB1dCBsYXllciB0byBmbHVzaCBpdHNlbGYNCjsgYXV0b21hdGljYWxseSBhZnRlciBldmVyeSBvdXRwdXQgYmxvY2suICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB0aGUNCjsgUEhQIGZ1bmN0aW9uIGZsdXNoKCkgYWZ0ZXIgZWFjaCBhbmQgZXZlcnkgY2FsbCB0byBwcmludCgpIG9yIGVjaG8oKSBhbmQgZWFjaA0KOyBhbmQgZXZlcnkgSFRNTCBibG9jay4gIFR1cm5pbmcgdGhpcyBvcHRpb24gb24gaGFzIHNlcmlvdXMgcGVyZm9ybWFuY2UNCjsgaW1wbGljYXRpb25zIGFuZCBpcyBnZW5lcmFsbHkgcmVjb21tZW5kZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyBvbmx5Lg0KOyBodHRwOi8vcGhwLm5ldC9pbXBsaWNpdC1mbHVzaA0KOyBOb3RlOiBUaGlzIGRpcmVjdGl2ZSBpcyBoYXJkY29kZWQgdG8gT24gZm9yIHRoZSBDTEkgU0FQSQ0KaW1wbGljaXRfZmx1c2ggPSBPZmYNCg0KOyBUaGUgdW5zZXJpYWxpemUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgKHdpdGggdGhlIHVuZGVmaW5lZCBjbGFzc1wnDQo7IG5hbWUgYXMgcGFyYW1ldGVyKSwgaWYgdGhlIHVuc2VyaWFsaXplciBmaW5kcyBhbiB1bmRlZmluZWQgY2xhc3MNCjsgd2hpY2ggc2hvdWxkIGJlIGluc3RhbnRpYXRlZC4gQSB3YXJuaW5nIGFwcGVhcnMgaWYgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBpcw0KOyBub3QgZGVmaW5lZCwgb3IgaWYgdGhlIGZ1bmN0aW9uIGRvZXNuXCd0IGluY2x1ZGUvaW1wbGVtZW50IHRoZSBtaXNzaW5nIGNsYXNzLg0KOyBTbyBvbmx5IHNldCB0aGlzIGVudHJ5LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gaW1wbGVtZW50IHN1Y2ggYQ0KOyBjYWxsYmFjay1mdW5jdGlvbi4NCnVuc2VyaWFsaXplX2NhbGxiYWNrX2Z1bmMgPQ0KDQo7IFdoZW4gZmxvYXRzICYgZG91YmxlcyBhcmUgc2VyaWFsaXplZCBzdG9yZSBzZXJpYWxpemVfcHJlY2lzaW9uIHNpZ25pZmljYW50DQo7IGRpZ2l0cyBhZnRlciB0aGUgZmxvYXRpbmcgcG9pbnQuIFRoZSBkZWZhdWx0IHZhbHVlIGVuc3VyZXMgdGhhdCB3aGVuIGZsb2F0cw0KOyBhcmUgZGVjb2RlZCB3aXRoIHVuc2VyaWFsaXplLCB0aGUgZGF0YSB3aWxsIHJlbWFpbiB0aGUgc2FtZS4NCnNlcmlhbGl6ZV9wcmVjaXNpb24gPSAxNw0KDQo7IG9wZW5fYmFzZWRpciwgaWYgc2V0LCBsaW1pdHMgYWxsIGZpbGUgb3BlcmF0aW9ucyB0byB0aGUgZGVmaW5lZCBkaXJlY3RvcnkNCjsgYW5kIGJlbG93LiAgVGhpcyBkaXJlY3RpdmUgbWFrZXMgbW9zdCBzZW5zZSBpZiB1c2VkIGluIGEgcGVyLWRpcmVjdG9yeQ0KOyBvciBwZXItdmlydHVhbGhvc3Qgd2ViIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUuIFRoaXMgZGlyZWN0aXZlIGlzDQo7ICpOT1QqIGFmZmVjdGVkIGJ5IHdoZXRoZXIgU2FmZSBNb2RlIGlzIHR1cm5lZCBPbiBvciBPZmYuDQo7IGh0dHA6Ly9waHAubmV0L29wZW4tYmFzZWRpcg0KO29wZW5fYmFzZWRpciA9DQoNCjsgVGhpcyBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBkaXNhYmxlIGNlcnRhaW4gZnVuY3Rpb25zIGZvciBzZWN1cml0eSByZWFzb25zLg0KOyBJdCByZWNlaXZlcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIGZ1bmN0aW9uIG5hbWVzLiBUaGlzIGRpcmVjdGl2ZSBpcw0KOyAqTk9UKiBhZmZlY3RlZCBieSB3aGV0aGVyIFNhZmUgTW9kZSBpcyB0dXJuZWQgT24gb3IgT2ZmLg0KOyBodHRwOi8vcGhwLm5ldC9kaXNhYmxlLWZ1bmN0aW9ucw0KZGlzYWJsZV9mdW5jdGlvbnMgPSBwY250bF9hbGFybSxwY250bF9mb3JrLHBjbnRsX3dhaXRwaWQscGNudGxfd2FpdCxwY250bF93aWZleGl0ZWQscGNudGxfd2lmc3RvcHBlZCxwY250bF93aWZzaWduYWxlZCxwY250bF93ZXhpdHN0YXR1cyxwY250bF93dGVybXNpZyxwY250bF93c3RvcHNpZyxwY250bF9zaWduYWwscGNudGxfc2lnbmFsX2Rpc3BhdGNoLHBjbnRsX2dldF9sYXN0X2Vycm9yLHBjbnRsX3N0cmVycm9yLHBjbnRsX3NpZ3Byb2NtYXNrLHBjbnRsX3NpZ3dhaXRpbmZvLHBjbnRsX3NpZ3RpbWVkd2FpdCxwY250bF9leGVjLHBjbnRsX2dldHByaW9yaXR5LHBjbnRsX3NldHByaW9yaXR5LA0KDQo7IFRoaXMgZGlyZWN0aXZlIGFsbG93cyB5b3UgdG8gZGlzYWJsZSBjZXJ0YWluIGNsYXNzZXMgZm9yIHNlY3VyaXR5IHJlYXNvbnMuDQo7IEl0IHJlY2VpdmVzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgY2xhc3MgbmFtZXMuIFRoaXMgZGlyZWN0aXZlIGlzDQo7ICpOT1QqIGFmZmVjdGVkIGJ5IHdoZXRoZXIgU2FmZSBNb2RlIGlzIHR1cm5lZCBPbiBvciBPZmYuDQo7IGh0dHA6Ly9waHAubmV0L2Rpc2FibGUtY2xhc3Nlcw0KZGlzYWJsZV9jbGFzc2VzID0NCg0KOyBDb2xvcnMgZm9yIFN5bnRheCBIaWdobGlnaHRpbmcgbW9kZS4gIEFueXRoaW5nIHRoYXRcJ3MgYWNjZXB0YWJsZSBpbg0KOyA8c3BhbiBzdHlsZT1cImNvbG9yOiA/Pz8/Pz8/XCI+IHdvdWxkIHdvcmsuDQo7IGh0dHA6Ly9waHAubmV0L3N5bnRheC1oaWdobGlnaHRpbmcNCjtoaWdobGlnaHQuc3RyaW5nICA9ICNERDAwMDANCjtoaWdobGlnaHQuY29tbWVudCA9ICNGRjk5MDANCjtoaWdobGlnaHQua2V5d29yZCA9ICMwMDc3MDANCjtoaWdobGlnaHQuZGVmYXVsdCA9ICMwMDAwQkINCjtoaWdobGlnaHQuaHRtbCAgICA9ICMwMDAwMDANCg0KOyBJZiBlbmFibGVkLCB0aGUgcmVxdWVzdCB3aWxsIGJlIGFsbG93ZWQgdG8gY29tcGxldGUgZXZlbiBpZiB0aGUgdXNlciBhYm9ydHMNCjsgdGhlIHJlcXVlc3QuIENvbnNpZGVyIGVuYWJsaW5nIGl0IGlmIGV4ZWN1dGluZyBsb25nIHJlcXVlc3RzLCB3aGljaCBtYXkgZW5kIHVwDQo7IGJlaW5nIGludGVycnVwdGVkIGJ5IHRoZSB1c2VyIG9yIGEgYnJvd3NlciB0aW1pbmcgb3V0LiBQSFBcJ3MgZGVmYXVsdCBiZWhhdmlvcg0KOyBpcyB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS4NCjsgaHR0cDovL3BocC5uZXQvaWdub3JlLXVzZXItYWJvcnQNCjtpZ25vcmVfdXNlcl9hYm9ydCA9IE9uDQoNCjsgRGV0ZXJtaW5lcyB0aGUgc2l6ZSBvZiB0aGUgcmVhbHBhdGggY2FjaGUgdG8gYmUgdXNlZCBieSBQSFAuIFRoaXMgdmFsdWUgc2hvdWxkDQo7IGJlIGluY3JlYXNlZCBvbiBzeXN0ZW1zIHdoZXJlIFBIUCBvcGVucyBtYW55IGZpbGVzIHRvIHJlZmxlY3QgdGhlIHF1YW50aXR5IG9mDQo7IHRoZSBmaWxlIG9wZXJhdGlvbnMgcGVyZm9ybWVkLg0KOyBodHRwOi8vcGhwLm5ldC9yZWFscGF0aC1jYWNoZS1zaXplDQo7cmVhbHBhdGhfY2FjaGVfc2l6ZSA9IDE2aw0KDQo7IER1cmF0aW9uIG9mIHRpbWUsIGluIHNlY29uZHMgZm9yIHdoaWNoIHRvIGNhY2hlIHJlYWxwYXRoIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuDQo7IGZpbGUgb3IgZGlyZWN0b3J5LiBGb3Igc3lzdGVtcyB3aXRoIHJhcmVseSBjaGFuZ2luZyBmaWxlcywgY29uc2lkZXIgaW5jcmVhc2luZyB0aGlzDQo7IHZhbHVlLg0KOyBodHRwOi8vcGhwLm5ldC9yZWFscGF0aC1jYWNoZS10dGwNCjtyZWFscGF0aF9jYWNoZV90dGwgPSAxMjANCg0KOyBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBjaXJjdWxhciByZWZlcmVuY2UgY29sbGVjdG9yLg0KOyBodHRwOi8vcGhwLm5ldC96ZW5kLmVuYWJsZS1nYw0KemVuZC5lbmFibGVfZ2MgPSBPbg0KDQo7IElmIGVuYWJsZWQsIHNjcmlwdHMgbWF5IGJlIHdyaXR0ZW4gaW4gZW5jb2RpbmdzIHRoYXQgYXJlIGluY29tcGF0aWJsZSB3aXRoDQo7IHRoZSBzY2FubmVyLiAgQ1A5MzYsIEJpZzUsIENQOTQ5IGFuZCBTaGlmdF9KSVMgYXJlIHRoZSBleGFtcGxlcyBvZiBzdWNoDQo7IGVuY29kaW5ncy4gIFRvIHVzZSB0aGlzIGZlYXR1cmUsIG1ic3RyaW5nIGV4dGVuc2lvbiBtdXN0IGJlIGVuYWJsZWQuDQo7IERlZmF1bHQ6IE9mZg0KO3plbmQubXVsdGlieXRlID0gT2ZmDQoNCjsgQWxsb3dzIHRvIHNldCB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3IgdGhlIHNjcmlwdHMuICBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZA0KOyB1bmxlc3MgXCJkZWNsYXJlKGVuY29kaW5nPS4uLilcIiBkaXJlY3RpdmUgYXBwZWFycyBhdCB0aGUgdG9wIG9mIHRoZSBzY3JpcHQuDQo7IE9ubHkgYWZmZWN0cyBpZiB6ZW5kLm11bHRpYnl0ZSBpcyBzZXQuDQo7IERlZmF1bHQ6IFwiXCINCjt6ZW5kLnNjcmlwdF9lbmNvZGluZyA9DQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IE1pc2NlbGxhbmVvdXMgOw0KOzs7Ozs7Ozs7Ozs7Ozs7OzsNCg0KOyBEZWNpZGVzIHdoZXRoZXIgUEhQIG1heSBleHBvc2UgdGhlIGZhY3QgdGhhdCBpdCBpcyBpbnN0YWxsZWQgb24gdGhlIHNlcnZlcg0KOyAoZS5nLiBieSBhZGRpbmcgaXRzIHNpZ25hdHVyZSB0byB0aGUgV2ViIHNlcnZlciBoZWFkZXIpLiAgSXQgaXMgbm8gc2VjdXJpdHkNCjsgdGhyZWF0IGluIGFueSB3YXksIGJ1dCBpdCBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciB5b3UgdXNlIFBIUA0KOyBvbiB5b3VyIHNlcnZlciBvciBub3QuDQo7IGh0dHA6Ly9waHAubmV0L2V4cG9zZS1waHANCmV4cG9zZV9waHAgPSBPbg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IFJlc291cmNlIExpbWl0cyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQoNCjsgTWF4aW11bSBleGVjdXRpb24gdGltZSBvZiBlYWNoIHNjcmlwdCwgaW4gc2Vjb25kcw0KOyBodHRwOi8vcGhwLm5ldC9tYXgtZXhlY3V0aW9uLXRpbWUNCjsgTm90ZTogVGhpcyBkaXJlY3RpdmUgaXMgaGFyZGNvZGVkIHRvIDAgZm9yIHRoZSBDTEkgU0FQSQ0KbWF4X2V4ZWN1dGlvbl90aW1lID0gMzANCg0KOyBNYXhpbXVtIGFtb3VudCBvZiB0aW1lIGVhY2ggc2NyaXB0IG1heSBzcGVuZCBwYXJzaW5nIHJlcXVlc3QgZGF0YS4gSXRcJ3MgYSBnb29kDQo7IGlkZWEgdG8gbGltaXQgdGhpcyB0aW1lIG9uIHByb2R1Y3Rpb25zIHNlcnZlcnMgaW4gb3JkZXIgdG8gZWxpbWluYXRlIHVuZXhwZWN0ZWRseQ0KOyBsb25nIHJ1bm5pbmcgc2NyaXB0cy4NCjsgTm90ZTogVGhpcyBkaXJlY3RpdmUgaXMgaGFyZGNvZGVkIHRvIC0xIGZvciB0aGUgQ0xJIFNBUEkNCjsgRGVmYXVsdCBWYWx1ZTogLTEgKFVubGltaXRlZCkNCjsgRGV2ZWxvcG1lbnQgVmFsdWU6IDYwICg2MCBzZWNvbmRzKQ0KOyBQcm9kdWN0aW9uIFZhbHVlOiA2MCAoNjAgc2Vjb25kcykNCjsgaHR0cDovL3BocC5uZXQvbWF4LWlucHV0LXRpbWUNCm1heF9pbnB1dF90aW1lID0gNjANCg0KOyBNYXhpbXVtIGlucHV0IHZhcmlhYmxlIG5lc3RpbmcgbGV2ZWwNCjsgaHR0cDovL3BocC5uZXQvbWF4LWlucHV0LW5lc3RpbmctbGV2ZWwNCjttYXhfaW5wdXRfbmVzdGluZ19sZXZlbCA9IDY0DQoNCjsgSG93IG1hbnkgR0VUL1BPU1QvQ09PS0lFIGlucHV0IHZhcmlhYmxlcyBtYXkgYmUgYWNjZXB0ZWQNCjsgbWF4X2lucHV0X3ZhcnMgPSAxMDAwDQoNCjsgTWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IGEgc2NyaXB0IG1heSBjb25zdW1lICgxMjhNQikNCjsgaHR0cDovL3BocC5uZXQvbWVtb3J5LWxpbWl0DQptZW1vcnlfbGltaXQgPSAxMjhNDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBFcnJvciBoYW5kbGluZyBhbmQgbG9nZ2luZyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCg0KOyBUaGlzIGRpcmVjdGl2ZSBpbmZvcm1zIFBIUCBvZiB3aGljaCBlcnJvcnMsIHdhcm5pbmdzIGFuZCBub3RpY2VzIHlvdSB3b3VsZCBsaWtlDQo7IGl0IHRvIHRha2UgYWN0aW9uIGZvci4gVGhlIHJlY29tbWVuZGVkIHdheSBvZiBzZXR0aW5nIHZhbHVlcyBmb3IgdGhpcw0KOyBkaXJlY3RpdmUgaXMgdGhyb3VnaCB0aGUgdXNlIG9mIHRoZSBlcnJvciBsZXZlbCBjb25zdGFudHMgYW5kIGJpdHdpc2UNCjsgb3BlcmF0b3JzLiBUaGUgZXJyb3IgbGV2ZWwgY29uc3RhbnRzIGFyZSBiZWxvdyBoZXJlIGZvciBjb252ZW5pZW5jZSBhcyB3ZWxsIGFzDQo7IHNvbWUgY29tbW9uIHNldHRpbmdzIGFuZCB0aGVpciBtZWFuaW5ncy4NCjsgQnkgZGVmYXVsdCwgUEhQIGlzIHNldCB0byB0YWtlIGFjdGlvbiBvbiBhbGwgZXJyb3JzLCBub3RpY2VzIGFuZCB3YXJuaW5ncyBFWENFUFQNCjsgdGhvc2UgcmVsYXRlZCB0byBFX05PVElDRSBhbmQgRV9TVFJJQ1QsIHdoaWNoIHRvZ2V0aGVyIGNvdmVyIGJlc3QgcHJhY3RpY2VzIGFuZA0KOyByZWNvbW1lbmRlZCBjb2Rpbmcgc3RhbmRhcmRzIGluIFBIUC4gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgaXMgdGhlDQo7IHJlY29tbWVuZCBlcnJvciByZXBvcnRpbmcgc2V0dGluZy4gWW91ciBwcm9kdWN0aW9uIHNlcnZlciBzaG91bGRuXCd0IGJlIHdhc3RpbmcNCjsgcmVzb3VyY2VzIGNvbXBsYWluaW5nIGFib3V0IGJlc3QgcHJhY3RpY2VzIGFuZCBjb2Rpbmcgc3RhbmRhcmRzLiBUaGF0XCdzIHdoYXQNCjsgZGV2ZWxvcG1lbnQgc2VydmVycyBhbmQgZGV2ZWxvcG1lbnQgc2V0dGluZ3MgYXJlIGZvci4NCjsgTm90ZTogVGhlIHBocC5pbmktZGV2ZWxvcG1lbnQgZmlsZSBoYXMgdGhpcyBzZXR0aW5nIGFzIEVfQUxMLiBUaGlzDQo7IG1lYW5zIGl0IHByZXR0eSBtdWNoIHJlcG9ydHMgZXZlcnl0aGluZyB3aGljaCBpcyBleGFjdGx5IHdoYXQgeW91IHdhbnQgZHVyaW5nDQo7IGRldmVsb3BtZW50IGFuZCBlYXJseSB0ZXN0aW5nLg0KOw0KOyBFcnJvciBMZXZlbCBDb25zdGFudHM6DQo7IEVfQUxMICAgICAgICAgICAgIC0gQWxsIGVycm9ycyBhbmQgd2FybmluZ3MgKGluY2x1ZGVzIEVfU1RSSUNUIGFzIG9mIFBIUCA1LjQuMCkNCjsgRV9FUlJPUiAgICAgICAgICAgLSBmYXRhbCBydW4tdGltZSBlcnJvcnMNCjsgRV9SRUNPVkVSQUJMRV9FUlJPUiAgLSBhbG1vc3QgZmF0YWwgcnVuLXRpbWUgZXJyb3JzDQo7IEVfV0FSTklORyAgICAgICAgIC0gcnVuLXRpbWUgd2FybmluZ3MgKG5vbi1mYXRhbCBlcnJvcnMpDQo7IEVfUEFSU0UgICAgICAgICAgIC0gY29tcGlsZS10aW1lIHBhcnNlIGVycm9ycw0KOyBFX05PVElDRSAgICAgICAgICAtIHJ1bi10aW1lIG5vdGljZXMgKHRoZXNlIGFyZSB3YXJuaW5ncyB3aGljaCBvZnRlbiByZXN1bHQNCjsgICAgICAgICAgICAgICAgICAgICBmcm9tIGEgYnVnIGluIHlvdXIgY29kZSwgYnV0IGl0XCdzIHBvc3NpYmxlIHRoYXQgaXQgd2FzDQo7ICAgICAgICAgICAgICAgICAgICAgaW50ZW50aW9uYWwgKGUuZy4sIHVzaW5nIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYW5kDQo7ICAgICAgICAgICAgICAgICAgICAgcmVseWluZyBvbiB0aGUgZmFjdCBpdFwncyBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkIHRvIGFuDQo7ICAgICAgICAgICAgICAgICAgICAgZW1wdHkgc3RyaW5nKQ0KOyBFX1NUUklDVCAgICAgICAgICAtIHJ1bi10aW1lIG5vdGljZXMsIGVuYWJsZSB0byBoYXZlIFBIUCBzdWdnZXN0IGNoYW5nZXMNCjsgICAgICAgICAgICAgICAgICAgICB0byB5b3VyIGNvZGUgd2hpY2ggd2lsbCBlbnN1cmUgdGhlIGJlc3QgaW50ZXJvcGVyYWJpbGl0eQ0KOyAgICAgICAgICAgICAgICAgICAgIGFuZCBmb3J3YXJkIGNvbXBhdGliaWxpdHkgb2YgeW91ciBjb2RlDQo7IEVfQ09SRV9FUlJPUiAgICAgIC0gZmF0YWwgZXJyb3JzIHRoYXQgb2NjdXIgZHVyaW5nIFBIUFwncyBpbml0aWFsIHN0YXJ0dXANCjsgRV9DT1JFX1dBUk5JTkcgICAgLSB3YXJuaW5ncyAobm9uLWZhdGFsIGVycm9ycykgdGhhdCBvY2N1ciBkdXJpbmcgUEhQXCdzDQo7ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzdGFydHVwDQo7IEVfQ09NUElMRV9FUlJPUiAgIC0gZmF0YWwgY29tcGlsZS10aW1lIGVycm9ycw0KOyBFX0NPTVBJTEVfV0FSTklORyAtIGNvbXBpbGUtdGltZSB3YXJuaW5ncyAobm9uLWZhdGFsIGVycm9ycykNCjsgRV9VU0VSX0VSUk9SICAgICAgLSB1c2VyLWdlbmVyYXRlZCBlcnJvciBtZXNzYWdlDQo7IEVfVVNFUl9XQVJOSU5HICAgIC0gdXNlci1nZW5lcmF0ZWQgd2FybmluZyBtZXNzYWdlDQo7IEVfVVNFUl9OT1RJQ0UgICAgIC0gdXNlci1nZW5lcmF0ZWQgbm90aWNlIG1lc3NhZ2UNCjsgRV9ERVBSRUNBVEVEICAgICAgLSB3YXJuIGFib3V0IGNvZGUgdGhhdCB3aWxsIG5vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucw0KOyAgICAgICAgICAgICAgICAgICAgIG9mIFBIUA0KOyBFX1VTRVJfREVQUkVDQVRFRCAtIHVzZXItZ2VuZXJhdGVkIGRlcHJlY2F0aW9uIHdhcm5pbmdzDQo7DQo7IENvbW1vbiBWYWx1ZXM6DQo7ICAgRV9BTEwgKFNob3cgYWxsIGVycm9ycywgd2FybmluZ3MgYW5kIG5vdGljZXMgaW5jbHVkaW5nIGNvZGluZyBzdGFuZGFyZHMuKQ0KOyAgIEVfQUxMICYgfkVfTk9USUNFICAoU2hvdyBhbGwgZXJyb3JzLCBleGNlcHQgZm9yIG5vdGljZXMpDQo7ICAgRV9BTEwgJiB+RV9OT1RJQ0UgJiB+RV9TVFJJQ1QgIChTaG93IGFsbCBlcnJvcnMsIGV4Y2VwdCBmb3Igbm90aWNlcyBhbmQgY29kaW5nIHN0YW5kYXJkcyB3YXJuaW5ncy4pDQo7ICAgRV9DT01QSUxFX0VSUk9SfEVfUkVDT1ZFUkFCTEVfRVJST1J8RV9FUlJPUnxFX0NPUkVfRVJST1IgIChTaG93IG9ubHkgZXJyb3JzKQ0KOyBEZWZhdWx0IFZhbHVlOiBFX0FMTCAmIH5FX05PVElDRSAmIH5FX1NUUklDVCAmIH5FX0RFUFJFQ0FURUQNCjsgRGV2ZWxvcG1lbnQgVmFsdWU6IEVfQUxMDQo7IFByb2R1Y3Rpb24gVmFsdWU6IEVfQUxMICYgfkVfREVQUkVDQVRFRCAmIH5FX1NUUklDVA0KOyBodHRwOi8vcGhwLm5ldC9lcnJvci1yZXBvcnRpbmcNCmVycm9yX3JlcG9ydGluZyA9IEVfQUxMICYgfkVfREVQUkVDQVRFRCAmIH5FX1NUUklDVA0KDQo7IFRoaXMgZGlyZWN0aXZlIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGFuZCB3aGVyZSBQSFAgd2lsbCBvdXRwdXQgZXJyb3JzLA0KOyBub3RpY2VzIGFuZCB3YXJuaW5ncyB0b28uIEVycm9yIG91dHB1dCBpcyB2ZXJ5IHVzZWZ1bCBkdXJpbmcgZGV2ZWxvcG1lbnQsIGJ1dA0KOyBpdCBjb3VsZCBiZSB2ZXJ5IGRhbmdlcm91cyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy4gRGVwZW5kaW5nIG9uIHRoZSBjb2RlDQo7IHdoaWNoIGlzIHRyaWdnZXJpbmcgdGhlIGVycm9yLCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gY291bGQgcG90ZW50aWFsbHkgbGVhaw0KOyBvdXQgb2YgeW91ciBhcHBsaWNhdGlvbiBzdWNoIGFzIGRhdGFiYXNlIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIG9yIHdvcnNlLg0KOyBJdFwncyByZWNvbW1lbmRlZCB0aGF0IGVycm9ycyBiZSBsb2dnZWQgb24gcHJvZHVjdGlvbiBzZXJ2ZXJzIHJhdGhlciB0aGFuDQo7IGhhdmluZyB0aGUgZXJyb3JzIHNlbnQgdG8gU1RET1VULg0KOyBQb3NzaWJsZSBWYWx1ZXM6DQo7ICAgT2ZmID0gRG8gbm90IGRpc3BsYXkgYW55IGVycm9ycw0KOyAgIHN0ZGVyciA9IERpc3BsYXkgZXJyb3JzIHRvIFNUREVSUiAoYWZmZWN0cyBvbmx5IENHSS9DTEkgYmluYXJpZXMhKQ0KOyAgIE9uIG9yIHN0ZG91dCA9IERpc3BsYXkgZXJyb3JzIHRvIFNURE9VVA0KOyBEZWZhdWx0IFZhbHVlOiBPbg0KOyBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQo7IGh0dHA6Ly9waHAubmV0L2Rpc3BsYXktZXJyb3JzDQpkaXNwbGF5X2Vycm9ycyA9IE9mZg0KDQo7IFRoZSBkaXNwbGF5IG9mIGVycm9ycyB3aGljaCBvY2N1ciBkdXJpbmcgUEhQXCdzIHN0YXJ0dXAgc2VxdWVuY2UgYXJlIGhhbmRsZWQNCjsgc2VwYXJhdGVseSBmcm9tIGRpc3BsYXlfZXJyb3JzLiBQSFBcJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBzdXBwcmVzcyB0aG9zZQ0KOyBlcnJvcnMgZnJvbSBjbGllbnRzLiBUdXJuaW5nIHRoZSBkaXNwbGF5IG9mIHN0YXJ0dXAgZXJyb3JzIG9uIGNhbiBiZSB1c2VmdWwgaW4NCjsgZGVidWdnaW5nIGNvbmZpZ3VyYXRpb24gcHJvYmxlbXMuIEJ1dCwgaXRcJ3Mgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB5b3UNCjsgbGVhdmUgdGhpcyBzZXR0aW5nIG9mZiBvbiBwcm9kdWN0aW9uIHNlcnZlcnMuDQo7IERlZmF1bHQgVmFsdWU6IE9mZg0KOyBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQo7IGh0dHA6Ly9waHAubmV0L2Rpc3BsYXktc3RhcnR1cC1lcnJvcnMNCmRpc3BsYXlfc3RhcnR1cF9lcnJvcnMgPSBPZmYNCg0KOyBCZXNpZGVzIGRpc3BsYXlpbmcgZXJyb3JzLCBQSFAgY2FuIGFsc28gbG9nIGVycm9ycyB0byBsb2NhdGlvbnMgc3VjaCBhcyBhDQo7IHNlcnZlci1zcGVjaWZpYyBsb2csIFNUREVSUiwgb3IgYSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGVycm9yX2xvZw0KOyBkaXJlY3RpdmUgZm91bmQgYmVsb3cuIFdoaWxlIGVycm9ycyBzaG91bGQgbm90IGJlIGRpc3BsYXllZCBvbiBwcm9kdWN0aW9ucw0KOyBzZXJ2ZXJzIHRoZXkgc2hvdWxkIHN0aWxsIGJlIG1vbml0b3JlZCBhbmQgbG9nZ2luZyBpcyBhIGdyZWF0IHdheSB0byBkbyB0aGF0Lg0KOyBEZWZhdWx0IFZhbHVlOiBPZmYNCjsgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7IFByb2R1Y3Rpb24gVmFsdWU6IE9uDQo7IGh0dHA6Ly9waHAubmV0L2xvZy1lcnJvcnMNCmxvZ19lcnJvcnMgPSBPbg0KDQo7IFNldCBtYXhpbXVtIGxlbmd0aCBvZiBsb2dfZXJyb3JzLiBJbiBlcnJvcl9sb2cgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBpcw0KOyBhZGRlZC4gVGhlIGRlZmF1bHQgaXMgMTAyNCBhbmQgMCBhbGxvd3MgdG8gbm90IGFwcGx5IGFueSBtYXhpbXVtIGxlbmd0aCBhdCBhbGwuDQo7IGh0dHA6Ly9waHAubmV0L2xvZy1lcnJvcnMtbWF4LWxlbg0KbG9nX2Vycm9yc19tYXhfbGVuID0gMTAyNA0KDQo7IERvIG5vdCBsb2cgcmVwZWF0ZWQgbWVzc2FnZXMuIFJlcGVhdGVkIGVycm9ycyBtdXN0IG9jY3VyIGluIHNhbWUgZmlsZSBvbiBzYW1lDQo7IGxpbmUgdW5sZXNzIGlnbm9yZV9yZXBlYXRlZF9zb3VyY2UgaXMgc2V0IHRydWUuDQo7IGh0dHA6Ly9waHAubmV0L2lnbm9yZS1yZXBlYXRlZC1lcnJvcnMNCmlnbm9yZV9yZXBlYXRlZF9lcnJvcnMgPSBPZmYNCg0KOyBJZ25vcmUgc291cmNlIG9mIG1lc3NhZ2Ugd2hlbiBpZ25vcmluZyByZXBlYXRlZCBtZXNzYWdlcy4gV2hlbiB0aGlzIHNldHRpbmcNCjsgaXMgT24geW91IHdpbGwgbm90IGxvZyBlcnJvcnMgd2l0aCByZXBlYXRlZCBtZXNzYWdlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyBvcg0KOyBzb3VyY2UgbGluZXMuDQo7IGh0dHA6Ly9waHAubmV0L2lnbm9yZS1yZXBlYXRlZC1zb3VyY2UNCmlnbm9yZV9yZXBlYXRlZF9zb3VyY2UgPSBPZmYNCg0KOyBJZiB0aGlzIHBhcmFtZXRlciBpcyBzZXQgdG8gT2ZmLCB0aGVuIG1lbW9yeSBsZWFrcyB3aWxsIG5vdCBiZSBzaG93biAob24NCjsgc3Rkb3V0IG9yIGluIHRoZSBsb2cpLiBUaGlzIGhhcyBvbmx5IGVmZmVjdCBpbiBhIGRlYnVnIGNvbXBpbGUsIGFuZCBpZg0KOyBlcnJvciByZXBvcnRpbmcgaW5jbHVkZXMgRV9XQVJOSU5HIGluIHRoZSBhbGxvd2VkIGxpc3QNCjsgaHR0cDovL3BocC5uZXQvcmVwb3J0LW1lbWxlYWtzDQpyZXBvcnRfbWVtbGVha3MgPSBPbg0KDQo7IFRoaXMgc2V0dGluZyBpcyBvbiBieSBkZWZhdWx0Lg0KO3JlcG9ydF96ZW5kX2RlYnVnID0gMA0KDQo7IFN0b3JlIHRoZSBsYXN0IGVycm9yL3dhcm5pbmcgbWVzc2FnZSBpbiAkcGhwX2Vycm9ybXNnIChib29sZWFuKS4gU2V0dGluZyB0aGlzIHZhbHVlDQo7IHRvIE9uIGNhbiBhc3Npc3QgaW4gZGVidWdnaW5nIGFuZCBpcyBhcHByb3ByaWF0ZSBmb3IgZGV2ZWxvcG1lbnQgc2VydmVycy4gSXQgc2hvdWxkDQo7IGhvd2V2ZXIgYmUgZGlzYWJsZWQgb24gcHJvZHVjdGlvbiBzZXJ2ZXJzLg0KOyBEZWZhdWx0IFZhbHVlOiBPZmYNCjsgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7IFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KOyBodHRwOi8vcGhwLm5ldC90cmFjay1lcnJvcnMNCnRyYWNrX2Vycm9ycyA9IE9mZg0KDQo7IFR1cm4gb2ZmIG5vcm1hbCBlcnJvciByZXBvcnRpbmcgYW5kIGVtaXQgWE1MLVJQQyBlcnJvciBYTUwNCjsgaHR0cDovL3BocC5uZXQveG1scnBjLWVycm9ycw0KO3htbHJwY19lcnJvcnMgPSAwDQoNCjsgQW4gWE1MLVJQQyBmYXVsdENvZGUNCjt4bWxycGNfZXJyb3JfbnVtYmVyID0gMA0KDQo7IFdoZW4gUEhQIGRpc3BsYXlzIG9yIGxvZ3MgYW4gZXJyb3IsIGl0IGhhcyB0aGUgY2FwYWJpbGl0eSBvZiBmb3JtYXR0aW5nIHRoZQ0KOyBlcnJvciBtZXNzYWdlIGFzIEhUTUwgZm9yIGVhc2llciByZWFkaW5nLiBUaGlzIGRpcmVjdGl2ZSBjb250cm9scyB3aGV0aGVyDQo7IHRoZSBlcnJvciBtZXNzYWdlIGlzIGZvcm1hdHRlZCBhcyBIVE1MIG9yIG5vdC4NCjsgTm90ZTogVGhpcyBkaXJlY3RpdmUgaXMgaGFyZGNvZGVkIHRvIE9mZiBmb3IgdGhlIENMSSBTQVBJDQo7IERlZmF1bHQgVmFsdWU6IE9uDQo7IERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyBQcm9kdWN0aW9uIHZhbHVlOiBPbg0KOyBodHRwOi8vcGhwLm5ldC9odG1sLWVycm9ycw0KaHRtbF9lcnJvcnMgPSBPbg0KDQo7IElmIGh0bWxfZXJyb3JzIGlzIHNldCB0byBPbiAqYW5kKiBkb2NyZWZfcm9vdCBpcyBub3QgZW1wdHksIHRoZW4gUEhQDQo7IHByb2R1Y2VzIGNsaWNrYWJsZSBlcnJvciBtZXNzYWdlcyB0aGF0IGRpcmVjdCB0byBhIHBhZ2UgZGVzY3JpYmluZyB0aGUgZXJyb3INCjsgb3IgZnVuY3Rpb24gY2F1c2luZyB0aGUgZXJyb3IgaW4gZGV0YWlsLg0KOyBZb3UgY2FuIGRvd25sb2FkIGEgY29weSBvZiB0aGUgUEhQIG1hbnVhbCBmcm9tIGh0dHA6Ly9waHAubmV0L2RvY3MNCjsgYW5kIGNoYW5nZSBkb2NyZWZfcm9vdCB0byB0aGUgYmFzZSBVUkwgb2YgeW91ciBsb2NhbCBjb3B5IGluY2x1ZGluZyB0aGUNCjsgbGVhZGluZyBcJy9cJy4gWW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lvbiBiZWluZyB1c2VkIGluY2x1ZGluZw0KOyB0aGUgZG90LiBQSFBcJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBsZWF2ZSB0aGVzZSBzZXR0aW5ncyBlbXB0eSwgaW4gd2hpY2gNCjsgY2FzZSBubyBsaW5rcyB0byBkb2N1bWVudGF0aW9uIGFyZSBnZW5lcmF0ZWQuDQo7IE5vdGU6IE5ldmVyIHVzZSB0aGlzIGZlYXR1cmUgZm9yIHByb2R1Y3Rpb24gYm94ZXMuDQo7IGh0dHA6Ly9waHAubmV0L2RvY3JlZi1yb290DQo7IEV4YW1wbGVzDQo7ZG9jcmVmX3Jvb3QgPSBcIi9waHBtYW51YWwvXCINCg0KOyBodHRwOi8vcGhwLm5ldC9kb2NyZWYtZXh0DQo7ZG9jcmVmX2V4dCA9IC5odG1sDQoNCjsgU3RyaW5nIHRvIG91dHB1dCBiZWZvcmUgYW4gZXJyb3IgbWVzc2FnZS4gUEhQXCdzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gbGVhdmUNCjsgdGhpcyBzZXR0aW5nIGJsYW5rLg0KOyBodHRwOi8vcGhwLm5ldC9lcnJvci1wcmVwZW5kLXN0cmluZw0KOyBFeGFtcGxlOg0KO2Vycm9yX3ByZXBlbmRfc3RyaW5nID0gXCI8c3BhbiBzdHlsZT1cJ2NvbG9yOiAjZmYwMDAwXCc+XCINCg0KOyBTdHJpbmcgdG8gb3V0cHV0IGFmdGVyIGFuIGVycm9yIG1lc3NhZ2UuIFBIUFwncyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGxlYXZlDQo7IHRoaXMgc2V0dGluZyBibGFuay4NCjsgaHR0cDovL3BocC5uZXQvZXJyb3ItYXBwZW5kLXN0cmluZw0KOyBFeGFtcGxlOg0KO2Vycm9yX2FwcGVuZF9zdHJpbmcgPSBcIjwvc3Bhbj5cIg0KDQo7IExvZyBlcnJvcnMgdG8gc3BlY2lmaWVkIGZpbGUuIFBIUFwncyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGxlYXZlIHRoaXMgdmFsdWUNCjsgZW1wdHkuDQo7IGh0dHA6Ly9waHAubmV0L2Vycm9yLWxvZw0KOyBFeGFtcGxlOg0KO2Vycm9yX2xvZyA9IHBocF9lcnJvcnMubG9nDQo7IExvZyBlcnJvcnMgdG8gc3lzbG9nIChFdmVudCBMb2cgb24gTlQsIG5vdCB2YWxpZCBpbiBXaW5kb3dzIDk1KS4NCjtlcnJvcl9sb2cgPSBzeXNsb2cNCg0KO3dpbmRvd3Muc2hvd19jcnRfd2FybmluZw0KOyBEZWZhdWx0IHZhbHVlOiAwDQo7IERldmVsb3BtZW50IHZhbHVlOiAwDQo7IFByb2R1Y3Rpb24gdmFsdWU6IDANCg0KOzs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgRGF0YSBIYW5kbGluZyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KDQo7IFRoZSBzZXBhcmF0b3IgdXNlZCBpbiBQSFAgZ2VuZXJhdGVkIFVSTHMgdG8gc2VwYXJhdGUgYXJndW1lbnRzLg0KOyBQSFBcJ3MgZGVmYXVsdCBzZXR0aW5nIGlzIFwiJlwiLg0KOyBodHRwOi8vcGhwLm5ldC9hcmctc2VwYXJhdG9yLm91dHB1dA0KOyBFeGFtcGxlOg0KO2FyZ19zZXBhcmF0b3Iub3V0cHV0ID0gXCImYW1wO1wiDQoNCjsgTGlzdCBvZiBzZXBhcmF0b3IocykgdXNlZCBieSBQSFAgdG8gcGFyc2UgaW5wdXQgVVJMcyBpbnRvIHZhcmlhYmxlcy4NCjsgUEhQXCdzIGRlZmF1bHQgc2V0dGluZyBpcyBcIiZcIi4NCjsgTk9URTogRXZlcnkgY2hhcmFjdGVyIGluIHRoaXMgZGlyZWN0aXZlIGlzIGNvbnNpZGVyZWQgYXMgc2VwYXJhdG9yIQ0KOyBodHRwOi8vcGhwLm5ldC9hcmctc2VwYXJhdG9yLmlucHV0DQo7IEV4YW1wbGU6DQo7YXJnX3NlcGFyYXRvci5pbnB1dCA9IFwiOyZcIg0KDQo7IFRoaXMgZGlyZWN0aXZlIGRldGVybWluZXMgd2hpY2ggc3VwZXIgZ2xvYmFsIGFycmF5cyBhcmUgcmVnaXN0ZXJlZCB3aGVuIFBIUA0KOyBzdGFydHMgdXAuIEcsUCxDLEUgJiBTIGFyZSBhYmJyZXZpYXRpb25zIGZvciB0aGUgZm9sbG93aW5nIHJlc3BlY3RpdmUgc3VwZXINCjsgZ2xvYmFsczogR0VULCBQT1NULCBDT09LSUUsIEVOViBhbmQgU0VSVkVSLiBUaGVyZSBpcyBhIHBlcmZvcm1hbmNlIHBlbmFsdHkNCjsgcGFpZCBmb3IgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGVzZSBhcnJheXMgYW5kIGJlY2F1c2UgRU5WIGlzIG5vdCBhcyBjb21tb25seQ0KOyB1c2VkIGFzIHRoZSBvdGhlcnMsIEVOViBpcyBub3QgcmVjb21tZW5kZWQgb24gcHJvZHVjdGlvbnMgc2VydmVycy4gWW91DQo7IGNhbiBzdGlsbCBnZXQgYWNjZXNzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhyb3VnaCBnZXRlbnYoKSBzaG91bGQgeW91DQo7IG5lZWQgdG8uDQo7IERlZmF1bHQgVmFsdWU6IFwiRUdQQ1NcIg0KOyBEZXZlbG9wbWVudCBWYWx1ZTogXCJHUENTXCINCjsgUHJvZHVjdGlvbiBWYWx1ZTogXCJHUENTXCI7DQo7IGh0dHA6Ly9waHAubmV0L3ZhcmlhYmxlcy1vcmRlcg0KdmFyaWFibGVzX29yZGVyID0gXCJHUENTXCINCg0KOyBUaGlzIGRpcmVjdGl2ZSBkZXRlcm1pbmVzIHdoaWNoIHN1cGVyIGdsb2JhbCBkYXRhIChHLFAsQyxFICYgUykgc2hvdWxkDQo7IGJlIHJlZ2lzdGVyZWQgaW50byB0aGUgc3VwZXIgZ2xvYmFsIGFycmF5IFJFUVVFU1QuIElmIHNvLCBpdCBhbHNvIGRldGVybWluZXMNCjsgdGhlIG9yZGVyIGluIHdoaWNoIHRoYXQgZGF0YSBpcyByZWdpc3RlcmVkLiBUaGUgdmFsdWVzIGZvciB0aGlzIGRpcmVjdGl2ZSBhcmUNCjsgc3BlY2lmaWVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgdmFyaWFibGVzX29yZGVyIGRpcmVjdGl2ZSwgRVhDRVBUIG9uZS4NCjsgTGVhdmluZyB0aGlzIHZhbHVlIGVtcHR5IHdpbGwgY2F1c2UgUEhQIHRvIHVzZSB0aGUgdmFsdWUgc2V0IGluIHRoZQ0KOyB2YXJpYWJsZXNfb3JkZXIgZGlyZWN0aXZlLiBJdCBkb2VzIG5vdCBtZWFuIGl0IHdpbGwgbGVhdmUgdGhlIHN1cGVyIGdsb2JhbHMNCjsgYXJyYXkgUkVRVUVTVCBlbXB0eS4NCjsgRGVmYXVsdCBWYWx1ZTogTm9uZQ0KOyBEZXZlbG9wbWVudCBWYWx1ZTogXCJHUFwiDQo7IFByb2R1Y3Rpb24gVmFsdWU6IFwiR1BcIg0KOyBodHRwOi8vcGhwLm5ldC9yZXF1ZXN0LW9yZGVyDQpyZXF1ZXN0X29yZGVyID0gXCJHUFwiDQoNCjsgVGhpcyBkaXJlY3RpdmUgZGV0ZXJtaW5lcyB3aGV0aGVyIFBIUCByZWdpc3RlcnMgJGFyZ3YgJiAkYXJnYyBlYWNoIHRpbWUgaXQNCjsgcnVucy4gJGFyZ3YgY29udGFpbnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIFBIUCB3aGVuIGEgc2NyaXB0DQo7IGlzIGludm9rZWQuICRhcmdjIGNvbnRhaW5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzDQo7IHRoYXQgd2VyZSBwYXNzZWQgd2hlbiB0aGUgc2NyaXB0IHdhcyBpbnZva2VkLiBUaGVzZSBhcnJheXMgYXJlIGV4dHJlbWVseQ0KOyB1c2VmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiBXaGVuIHRoaXMgZGlyZWN0aXZlIGlzDQo7IGVuYWJsZWQsIHJlZ2lzdGVyaW5nIHRoZXNlIHZhcmlhYmxlcyBjb25zdW1lcyBDUFUgY3ljbGVzIGFuZCBtZW1vcnkgZWFjaCB0aW1lDQo7IGEgc2NyaXB0IGlzIGV4ZWN1dGVkLiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmZWF0dXJlIHNob3VsZCBiZSBkaXNhYmxlZA0KOyBvbiBwcm9kdWN0aW9uIHNlcnZlcnMuDQo7IE5vdGU6IFRoaXMgZGlyZWN0aXZlIGlzIGhhcmRjb2RlZCB0byBPbiBmb3IgdGhlIENMSSBTQVBJDQo7IERlZmF1bHQgVmFsdWU6IE9uDQo7IERldmVsb3BtZW50IFZhbHVlOiBPZmYNCjsgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQo7IGh0dHA6Ly9waHAubmV0L3JlZ2lzdGVyLWFyZ2MtYXJndg0KcmVnaXN0ZXJfYXJnY19hcmd2ID0gT2ZmDQoNCjsgV2hlbiBlbmFibGVkLCB0aGUgRU5WLCBSRVFVRVNUIGFuZCBTRVJWRVIgdmFyaWFibGVzIGFyZSBjcmVhdGVkIHdoZW4gdGhleVwncmUNCjsgZmlyc3QgdXNlZCAoSnVzdCBJbiBUaW1lKSBpbnN0ZWFkIG9mIHdoZW4gdGhlIHNjcmlwdCBzdGFydHMuIElmIHRoZXNlDQo7IHZhcmlhYmxlcyBhcmUgbm90IHVzZWQgd2l0aGluIGEgc2NyaXB0LCBoYXZpbmcgdGhpcyBkaXJlY3RpdmUgb24gd2lsbCByZXN1bHQNCjsgaW4gYSBwZXJmb3JtYW5jZSBnYWluLiBUaGUgUEhQIGRpcmVjdGl2ZSByZWdpc3Rlcl9hcmdjX2FyZ3YgbXVzdCBiZSBkaXNhYmxlZA0KOyBmb3IgdGhpcyBkaXJlY3RpdmUgdG8gaGF2ZSBhbnkgYWZmZWN0Lg0KOyBodHRwOi8vcGhwLm5ldC9hdXRvLWdsb2JhbHMtaml0DQphdXRvX2dsb2JhbHNfaml0ID0gT24NCg0KOyBXaGV0aGVyIFBIUCB3aWxsIHJlYWQgdGhlIFBPU1QgZGF0YS4NCjsgVGhpcyBvcHRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0Lg0KOyBNb3N0IGxpa2VseSwgeW91IHdvblwndCB3YW50IHRvIGRpc2FibGUgdGhpcyBvcHRpb24gZ2xvYmFsbHkuIEl0IGNhdXNlcyAkX1BPU1QNCjsgYW5kICRfRklMRVMgdG8gYWx3YXlzIGJlIGVtcHR5OyB0aGUgb25seSB3YXkgeW91IHdpbGwgYmUgYWJsZSB0byByZWFkIHRoZQ0KOyBQT1NUIGRhdGEgd2lsbCBiZSB0aHJvdWdoIHRoZSBwaHA6Ly9pbnB1dCBzdHJlYW0gd3JhcHBlci4gVGhpcyBjYW4gYmUgdXNlZnVsDQo7IHRvIHByb3h5IHJlcXVlc3RzIG9yIHRvIHByb2Nlc3MgdGhlIFBPU1QgZGF0YSBpbiBhIG1lbW9yeSBlZmZpY2llbnQgZmFzaGlvbi4NCjsgaHR0cDovL3BocC5uZXQvZW5hYmxlLXBvc3QtZGF0YS1yZWFkaW5nDQo7ZW5hYmxlX3Bvc3RfZGF0YV9yZWFkaW5nID0gT2ZmDQoNCjsgTWF4aW11bSBzaXplIG9mIFBPU1QgZGF0YSB0aGF0IFBIUCB3aWxsIGFjY2VwdC4NCjsgSXRzIHZhbHVlIG1heSBiZSAwIHRvIGRpc2FibGUgdGhlIGxpbWl0LiBJdCBpcyBpZ25vcmVkIGlmIFBPU1QgZGF0YSByZWFkaW5nDQo7IGlzIGRpc2FibGVkIHRocm91Z2ggZW5hYmxlX3Bvc3RfZGF0YV9yZWFkaW5nLg0KOyBodHRwOi8vcGhwLm5ldC9wb3N0LW1heC1zaXplDQpwb3N0X21heF9zaXplID0gOE0NCg0KOyBBdXRvbWF0aWNhbGx5IGFkZCBmaWxlcyBiZWZvcmUgUEhQIGRvY3VtZW50Lg0KOyBodHRwOi8vcGhwLm5ldC9hdXRvLXByZXBlbmQtZmlsZQ0KYXV0b19wcmVwZW5kX2ZpbGUgPQ0KDQo7IEF1dG9tYXRpY2FsbHkgYWRkIGZpbGVzIGFmdGVyIFBIUCBkb2N1bWVudC4NCjsgaHR0cDovL3BocC5uZXQvYXV0by1hcHBlbmQtZmlsZQ0KYXV0b19hcHBlbmRfZmlsZSA9DQoNCjsgQnkgZGVmYXVsdCwgUEhQIHdpbGwgb3V0cHV0IGEgY2hhcmFjdGVyIGVuY29kaW5nIHVzaW5nDQo7IHRoZSBDb250ZW50LXR5cGU6IGhlYWRlci4gIFRvIGRpc2FibGUgc2VuZGluZyBvZiB0aGUgY2hhcnNldCwgc2ltcGx5DQo7IHNldCBpdCB0byBiZSBlbXB0eS4NCjsNCjsgUEhQXCdzIGJ1aWx0LWluIGRlZmF1bHQgaXMgdGV4dC9odG1sDQo7IGh0dHA6Ly9waHAubmV0L2RlZmF1bHQtbWltZXR5cGUNCmRlZmF1bHRfbWltZXR5cGUgPSBcInRleHQvaHRtbFwiDQoNCjsgUEhQXCdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldCBpcyBzZXQgdG8gZW1wdHkuDQo7IGh0dHA6Ly9waHAubmV0L2RlZmF1bHQtY2hhcnNldA0KO2RlZmF1bHRfY2hhcnNldCA9IFwiVVRGLThcIg0KDQo7IEFsd2F5cyBwb3B1bGF0ZSB0aGUgJEhUVFBfUkFXX1BPU1RfREFUQSB2YXJpYWJsZS4gUEhQXCdzIGRlZmF1bHQgYmVoYXZpb3IgaXMNCjsgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuIElmIHBvc3QgcmVhZGluZyBpcyBkaXNhYmxlZCB0aHJvdWdoDQo7IGVuYWJsZV9wb3N0X2RhdGFfcmVhZGluZywgJEhUVFBfUkFXX1BPU1RfREFUQSBpcyAqTk9UKiBwb3B1bGF0ZWQuDQo7IGh0dHA6Ly9waHAubmV0L2Fsd2F5cy1wb3B1bGF0ZS1yYXctcG9zdC1kYXRhDQo7YWx3YXlzX3BvcHVsYXRlX3Jhd19wb3N0X2RhdGEgPSBPbg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IFBhdGhzIGFuZCBEaXJlY3RvcmllcyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQoNCjsgVU5JWDogXCIvcGF0aDE6L3BhdGgyXCINCjtpbmNsdWRlX3BhdGggPSBcIi46L3Vzci9zaGFyZS9waHBcIg0KOw0KOyBXaW5kb3dzOiBcIlxccGF0aDE7XFxwYXRoMlwiDQo7aW5jbHVkZV9wYXRoID0gXCIuO2M6XFxwaHBcXGluY2x1ZGVzXCINCjsNCjsgUEhQXCdzIGRlZmF1bHQgc2V0dGluZyBmb3IgaW5jbHVkZV9wYXRoIGlzIFwiLjsvcGF0aC90by9waHAvcGVhclwiDQo7IGh0dHA6Ly9waHAubmV0L2luY2x1ZGUtcGF0aA0KDQo7IFRoZSByb290IG9mIHRoZSBQSFAgcGFnZXMsIHVzZWQgb25seSBpZiBub25lbXB0eS4NCjsgaWYgUEhQIHdhcyBub3QgY29tcGlsZWQgd2l0aCBGT1JDRV9SRURJUkVDVCwgeW91IFNIT1VMRCBzZXQgZG9jX3Jvb3QNCjsgaWYgeW91IGFyZSBydW5uaW5nIHBocCBhcyBhIENHSSB1bmRlciBhbnkgd2ViIHNlcnZlciAob3RoZXIgdGhhbiBJSVMpDQo7IHNlZSBkb2N1bWVudGF0aW9uIGZvciBzZWN1cml0eSBpc3N1ZXMuICBUaGUgYWx0ZXJuYXRlIGlzIHRvIHVzZSB0aGUNCjsgY2dpLmZvcmNlX3JlZGlyZWN0IGNvbmZpZ3VyYXRpb24gYmVsb3cNCjsgaHR0cDovL3BocC5uZXQvZG9jLXJvb3QNCmRvY19yb290ID0NCg0KOyBUaGUgZGlyZWN0b3J5IHVuZGVyIHdoaWNoIFBIUCBvcGVucyB0aGUgc2NyaXB0IHVzaW5nIC9+dXNlcm5hbWUgdXNlZCBvbmx5DQo7IGlmIG5vbmVtcHR5Lg0KOyBodHRwOi8vcGhwLm5ldC91c2VyLWRpcg0KdXNlcl9kaXIgPQ0KDQo7IERpcmVjdG9yeSBpbiB3aGljaCB0aGUgbG9hZGFibGUgZXh0ZW5zaW9ucyAobW9kdWxlcykgcmVzaWRlLg0KOyBodHRwOi8vcGhwLm5ldC9leHRlbnNpb24tZGlyDQo7IGV4dGVuc2lvbl9kaXIgPSBcIi4vXCINCjsgT24gd2luZG93czoNCjsgZXh0ZW5zaW9uX2RpciA9IFwiZXh0XCINCg0KOyBEaXJlY3Rvcnkgd2hlcmUgdGhlIHRlbXBvcmFyeSBmaWxlcyBzaG91bGQgYmUgcGxhY2VkLg0KOyBEZWZhdWx0cyB0byB0aGUgc3lzdGVtIGRlZmF1bHQgKHNlZSBzeXNfZ2V0X3RlbXBfZGlyKQ0KOyBzeXNfdGVtcF9kaXIgPSBcIi90bXBcIg0KDQo7IFdoZXRoZXIgb3Igbm90IHRvIGVuYWJsZSB0aGUgZGwoKSBmdW5jdGlvbi4gIFRoZSBkbCgpIGZ1bmN0aW9uIGRvZXMgTk9UIHdvcmsNCjsgcHJvcGVybHkgaW4gbXVsdGl0aHJlYWRlZCBzZXJ2ZXJzLCBzdWNoIGFzIElJUyBvciBaZXVzLCBhbmQgaXMgYXV0b21hdGljYWxseQ0KOyBkaXNhYmxlZCBvbiB0aGVtLg0KOyBodHRwOi8vcGhwLm5ldC9lbmFibGUtZGwNCmVuYWJsZV9kbCA9IE9mZg0KDQo7IGNnaS5mb3JjZV9yZWRpcmVjdCBpcyBuZWNlc3NhcnkgdG8gcHJvdmlkZSBzZWN1cml0eSBydW5uaW5nIFBIUCBhcyBhIENHSSB1bmRlcg0KOyBtb3N0IHdlYiBzZXJ2ZXJzLiAgTGVmdCB1bmRlZmluZWQsIFBIUCB0dXJucyB0aGlzIG9uIGJ5IGRlZmF1bHQuICBZb3UgY2FuDQo7IHR1cm4gaXQgb2ZmIGhlcmUgQVQgWU9VUiBPV04gUklTSw0KOyAqKllvdSBDQU4gc2FmZWx5IHR1cm4gdGhpcyBvZmYgZm9yIElJUywgaW4gZmFjdCwgeW91IE1VU1QuKioNCjsgaHR0cDovL3BocC5uZXQvY2dpLmZvcmNlLXJlZGlyZWN0DQo7Y2dpLmZvcmNlX3JlZGlyZWN0ID0gMQ0KDQo7IGlmIGNnaS5ucGggaXMgZW5hYmxlZCBpdCB3aWxsIGZvcmNlIGNnaSB0byBhbHdheXMgc2VudCBTdGF0dXM6IDIwMCB3aXRoDQo7IGV2ZXJ5IHJlcXVlc3QuIFBIUFwncyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLg0KO2NnaS5ucGggPSAxDQoNCjsgaWYgY2dpLmZvcmNlX3JlZGlyZWN0IGlzIHR1cm5lZCBvbiwgYW5kIHlvdSBhcmUgbm90IHJ1bm5pbmcgdW5kZXIgQXBhY2hlIG9yIE5ldHNjYXBlDQo7IChpUGxhbmV0KSB3ZWIgc2VydmVycywgeW91IE1BWSBuZWVkIHRvIHNldCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIHRoYXQgUEhQDQo7IHdpbGwgbG9vayBmb3IgdG8ga25vdyBpdCBpcyBPSyB0byBjb250aW51ZSBleGVjdXRpb24uICBTZXR0aW5nIHRoaXMgdmFyaWFibGUgTUFZDQo7IGNhdXNlIHNlY3VyaXR5IGlzc3VlcywgS05PVyBXSEFUIFlPVSBBUkUgRE9JTkcgRklSU1QuDQo7IGh0dHA6Ly9waHAubmV0L2NnaS5yZWRpcmVjdC1zdGF0dXMtZW52DQo7Y2dpLnJlZGlyZWN0X3N0YXR1c19lbnYgPQ0KDQo7IGNnaS5maXhfcGF0aGluZm8gcHJvdmlkZXMgKnJlYWwqIFBBVEhfSU5GTy9QQVRIX1RSQU5TTEFURUQgc3VwcG9ydCBmb3IgQ0dJLiAgUEhQXCdzDQo7IHByZXZpb3VzIGJlaGF2aW91ciB3YXMgdG8gc2V0IFBBVEhfVFJBTlNMQVRFRCB0byBTQ1JJUFRfRklMRU5BTUUsIGFuZCB0byBub3QgZ3Jvaw0KOyB3aGF0IFBBVEhfSU5GTyBpcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFBBVEhfSU5GTywgc2VlIHRoZSBjZ2kgc3BlY3MuICBTZXR0aW5nDQo7IHRoaXMgdG8gMSB3aWxsIGNhdXNlIFBIUCBDR0kgdG8gZml4IGl0cyBwYXRocyB0byBjb25mb3JtIHRvIHRoZSBzcGVjLiAgQSBzZXR0aW5nDQo7IG9mIHplcm8gY2F1c2VzIFBIUCB0byBiZWhhdmUgYXMgYmVmb3JlLiAgRGVmYXVsdCBpcyAxLiAgWW91IHNob3VsZCBmaXggeW91ciBzY3JpcHRzDQo7IHRvIHVzZSBTQ1JJUFRfRklMRU5BTUUgcmF0aGVyIHRoYW4gUEFUSF9UUkFOU0xBVEVELg0KOyBodHRwOi8vcGhwLm5ldC9jZ2kuZml4LXBhdGhpbmZvDQo7Y2dpLmZpeF9wYXRoaW5mbz0xDQoNCjsgRmFzdENHSSB1bmRlciBJSVMgKG9uIFdJTk5UIGJhc2VkIE9TKSBzdXBwb3J0cyB0aGUgYWJpbGl0eSB0byBpbXBlcnNvbmF0ZQ0KOyBzZWN1cml0eSB0b2tlbnMgb2YgdGhlIGNhbGxpbmcgY2xpZW50LiAgVGhpcyBhbGxvd3MgSUlTIHRvIGRlZmluZSB0aGUNCjsgc2VjdXJpdHkgY29udGV4dCB0aGF0IHRoZSByZXF1ZXN0IHJ1bnMgdW5kZXIuICBtb2RfZmFzdGNnaSB1bmRlciBBcGFjaGUNCjsgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgdGhpcyBmZWF0dXJlICgwMy8xNy8yMDAyKQ0KOyBTZXQgdG8gMSBpZiBydW5uaW5nIHVuZGVyIElJUy4gIERlZmF1bHQgaXMgemVyby4NCjsgaHR0cDovL3BocC5uZXQvZmFzdGNnaS5pbXBlcnNvbmF0ZQ0KO2Zhc3RjZ2kuaW1wZXJzb25hdGUgPSAxDQoNCjsgRGlzYWJsZSBsb2dnaW5nIHRocm91Z2ggRmFzdENHSSBjb25uZWN0aW9uLiBQSFBcJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBlbmFibGUNCjsgdGhpcyBmZWF0dXJlLg0KO2Zhc3RjZ2kubG9nZ2luZyA9IDANCg0KOyBjZ2kucmZjMjYxNl9oZWFkZXJzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRlbGxzIFBIUCB3aGF0IHR5cGUgb2YgaGVhZGVycyB0bw0KOyB1c2Ugd2hlbiBzZW5kaW5nIEhUVFAgcmVzcG9uc2UgY29kZS4gSWYgaXRcJ3Mgc2V0IDAgUEhQIHNlbmRzIFN0YXR1czogaGVhZGVyIHRoYXQNCjsgaXMgc3VwcG9ydGVkIGJ5IEFwYWNoZS4gV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gMSBQSFAgd2lsbCBzZW5kDQo7IFJGQzI2MTYgY29tcGxpYW50IGhlYWRlci4NCjsgRGVmYXVsdCBpcyB6ZXJvLg0KOyBodHRwOi8vcGhwLm5ldC9jZ2kucmZjMjYxNi1oZWFkZXJzDQo7Y2dpLnJmYzI2MTZfaGVhZGVycyA9IDANCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBGaWxlIFVwbG9hZHMgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ow0KDQo7IFdoZXRoZXIgdG8gYWxsb3cgSFRUUCBmaWxlIHVwbG9hZHMuDQo7IGh0dHA6Ly9waHAubmV0L2ZpbGUtdXBsb2Fkcw0KZmlsZV91cGxvYWRzID0gT24NCg0KOyBUZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBIVFRQIHVwbG9hZGVkIGZpbGVzICh3aWxsIHVzZSBzeXN0ZW0gZGVmYXVsdCBpZiBub3QNCjsgc3BlY2lmaWVkKS4NCjsgaHR0cDovL3BocC5uZXQvdXBsb2FkLXRtcC1kaXINCjt1cGxvYWRfdG1wX2RpciA9DQoNCjsgTWF4aW11bSBhbGxvd2VkIHNpemUgZm9yIHVwbG9hZGVkIGZpbGVzLg0KOyBodHRwOi8vcGhwLm5ldC91cGxvYWQtbWF4LWZpbGVzaXplDQp1cGxvYWRfbWF4X2ZpbGVzaXplID0gMk0NCg0KOyBNYXhpbXVtIG51bWJlciBvZiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZCB2aWEgYSBzaW5nbGUgcmVxdWVzdA0KbWF4X2ZpbGVfdXBsb2FkcyA9IDIwDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBGb3BlbiB3cmFwcGVycyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCg0KOyBXaGV0aGVyIHRvIGFsbG93IHRoZSB0cmVhdG1lbnQgb2YgVVJMcyAobGlrZSBodHRwOi8vIG9yIGZ0cDovLykgYXMgZmlsZXMuDQo7IGh0dHA6Ly9waHAubmV0L2FsbG93LXVybC1mb3Blbg0KYWxsb3dfdXJsX2ZvcGVuID0gT24NCg0KOyBXaGV0aGVyIHRvIGFsbG93IGluY2x1ZGUvcmVxdWlyZSB0byBvcGVuIFVSTHMgKGxpa2UgaHR0cDovLyBvciBmdHA6Ly8pIGFzIGZpbGVzLg0KOyBodHRwOi8vcGhwLm5ldC9hbGxvdy11cmwtaW5jbHVkZQ0KYWxsb3dfdXJsX2luY2x1ZGUgPSBPZmYNCg0KOyBEZWZpbmUgdGhlIGFub255bW91cyBmdHAgcGFzc3dvcmQgKHlvdXIgZW1haWwgYWRkcmVzcykuIFBIUFwncyBkZWZhdWx0IHNldHRpbmcNCjsgZm9yIHRoaXMgaXMgZW1wdHkuDQo7IGh0dHA6Ly9waHAubmV0L2Zyb20NCjtmcm9tPVwiam9obkBkb2UuY29tXCINCg0KOyBEZWZpbmUgdGhlIFVzZXItQWdlbnQgc3RyaW5nLiBQSFBcJ3MgZGVmYXVsdCBzZXR0aW5nIGZvciB0aGlzIGlzIGVtcHR5Lg0KOyBodHRwOi8vcGhwLm5ldC91c2VyLWFnZW50DQo7dXNlcl9hZ2VudD1cIlBIUFwiDQoNCjsgRGVmYXVsdCB0aW1lb3V0IGZvciBzb2NrZXQgYmFzZWQgc3RyZWFtcyAoc2Vjb25kcykNCjsgaHR0cDovL3BocC5uZXQvZGVmYXVsdC1zb2NrZXQtdGltZW91dA0KZGVmYXVsdF9zb2NrZXRfdGltZW91dCA9IDYwDQoNCjsgSWYgeW91ciBzY3JpcHRzIGhhdmUgdG8gZGVhbCB3aXRoIGZpbGVzIGZyb20gTWFjaW50b3NoIHN5c3RlbXMsDQo7IG9yIHlvdSBhcmUgcnVubmluZyBvbiBhIE1hYyBhbmQgbmVlZCB0byBkZWFsIHdpdGggZmlsZXMgZnJvbQ0KOyB1bml4IG9yIHdpbjMyIHN5c3RlbXMsIHNldHRpbmcgdGhpcyBmbGFnIHdpbGwgY2F1c2UgUEhQIHRvDQo7IGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBFT0wgY2hhcmFjdGVyIGluIHRob3NlIGZpbGVzIHNvIHRoYXQNCjsgZmdldHMoKSBhbmQgZmlsZSgpIHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGZpbGUuDQo7IGh0dHA6Ly9waHAubmV0L2F1dG8tZGV0ZWN0LWxpbmUtZW5kaW5ncw0KO2F1dG9fZGV0ZWN0X2xpbmVfZW5kaW5ncyA9IE9mZg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IER5bmFtaWMgRXh0ZW5zaW9ucyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQoNCjsgSWYgeW91IHdpc2ggdG8gaGF2ZSBhbiBleHRlbnNpb24gbG9hZGVkIGF1dG9tYXRpY2FsbHksIHVzZSB0aGUgZm9sbG93aW5nDQo7IHN5bnRheDoNCjsNCjsgICBleHRlbnNpb249bW9kdWxlbmFtZS5leHRlbnNpb24NCjsNCjsgRm9yIGV4YW1wbGUsIG9uIFdpbmRvd3M6DQo7DQo7ICAgZXh0ZW5zaW9uPW1zcWwuZGxsDQo7DQo7IC4uLiBvciB1bmRlciBVTklYOg0KOw0KOyAgIGV4dGVuc2lvbj1tc3FsLnNvDQo7DQo7IC4uLiBvciB3aXRoIGEgcGF0aDoNCjsNCjsgICBleHRlbnNpb249L3BhdGgvdG8vZXh0ZW5zaW9uL21zcWwuc28NCjsNCjsgSWYgeW91IG9ubHkgcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uLCBQSFAgd2lsbCBsb29rIGZvciBpdCBpbiBpdHMNCjsgZGVmYXVsdCBleHRlbnNpb24gZGlyZWN0b3J5Lg0KOw0KO3plbmRfZXh0ZW5zaW9uPVwiL3Vzci9saWIvcGhwNS8yMDEyMTIxMi94ZGVidWcuc29cIg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBNb2R1bGUgU2V0dGluZ3MgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KDQpbQ0xJIFNlcnZlcl0NCjsgV2hldGhlciB0aGUgQ0xJIHdlYiBzZXJ2ZXIgdXNlcyBBTlNJIGNvbG9yIGNvZGluZyBpbiBpdHMgdGVybWluYWwgb3V0cHV0Lg0KY2xpX3NlcnZlci5jb2xvciA9IE9uDQoNCltEYXRlXQ0KOyBEZWZpbmVzIHRoZSBkZWZhdWx0IHRpbWV6b25lIHVzZWQgYnkgdGhlIGRhdGUgZnVuY3Rpb25zDQo7IGh0dHA6Ly9waHAubmV0L2RhdGUudGltZXpvbmUNCjtkYXRlLnRpbWV6b25lID0NCg0KOyBodHRwOi8vcGhwLm5ldC9kYXRlLmRlZmF1bHQtbGF0aXR1ZGUNCjtkYXRlLmRlZmF1bHRfbGF0aXR1ZGUgPSAzMS43NjY3DQoNCjsgaHR0cDovL3BocC5uZXQvZGF0ZS5kZWZhdWx0LWxvbmdpdHVkZQ0KO2RhdGUuZGVmYXVsdF9sb25naXR1ZGUgPSAzNS4yMzMzDQoNCjsgaHR0cDovL3BocC5uZXQvZGF0ZS5zdW5yaXNlLXplbml0aA0KO2RhdGUuc3VucmlzZV96ZW5pdGggPSA5MC41ODMzMzMNCg0KOyBodHRwOi8vcGhwLm5ldC9kYXRlLnN1bnNldC16ZW5pdGgNCjtkYXRlLnN1bnNldF96ZW5pdGggPSA5MC41ODMzMzMNCg0KW2ZpbHRlcl0NCjsgaHR0cDovL3BocC5uZXQvZmlsdGVyLmRlZmF1bHQNCjtmaWx0ZXIuZGVmYXVsdCA9IHVuc2FmZV9yYXcNCg0KOyBodHRwOi8vcGhwLm5ldC9maWx0ZXIuZGVmYXVsdC1mbGFncw0KO2ZpbHRlci5kZWZhdWx0X2ZsYWdzID0NCg0KW2ljb252XQ0KO2ljb252LmlucHV0X2VuY29kaW5nID0gSVNPLTg4NTktMQ0KO2ljb252LmludGVybmFsX2VuY29kaW5nID0gSVNPLTg4NTktMQ0KO2ljb252Lm91dHB1dF9lbmNvZGluZyA9IElTTy04ODU5LTENCg0KW2ludGxdDQo7aW50bC5kZWZhdWx0X2xvY2FsZSA9DQo7IFRoaXMgZGlyZWN0aXZlIGFsbG93cyB5b3UgdG8gcHJvZHVjZSBQSFAgZXJyb3JzIHdoZW4gc29tZSBlcnJvcg0KOyBoYXBwZW5zIHdpdGhpbiBpbnRsIGZ1bmN0aW9ucy4gVGhlIHZhbHVlIGlzIHRoZSBsZXZlbCBvZiB0aGUgZXJyb3IgcHJvZHVjZWQuDQo7IERlZmF1bHQgaXMgMCwgd2hpY2ggZG9lcyBub3QgcHJvZHVjZSBhbnkgZXJyb3JzLg0KO2ludGwuZXJyb3JfbGV2ZWwgPSBFX1dBUk5JTkcNCg0KW3NxbGl0ZV0NCjsgaHR0cDovL3BocC5uZXQvc3FsaXRlLmFzc29jLWNhc2UNCjtzcWxpdGUuYXNzb2NfY2FzZSA9IDANCg0KW3NxbGl0ZTNdDQo7c3FsaXRlMy5leHRlbnNpb25fZGlyID0NCg0KW1BjcmVdDQo7UENSRSBsaWJyYXJ5IGJhY2t0cmFja2luZyBsaW1pdC4NCjsgaHR0cDovL3BocC5uZXQvcGNyZS5iYWNrdHJhY2stbGltaXQNCjtwY3JlLmJhY2t0cmFja19saW1pdD0xMDAwMDANCg0KO1BDUkUgbGlicmFyeSByZWN1cnNpb24gbGltaXQuDQo7UGxlYXNlIG5vdGUgdGhhdCBpZiB5b3Ugc2V0IHRoaXMgdmFsdWUgdG8gYSBoaWdoIG51bWJlciB5b3UgbWF5IGNvbnN1bWUgYWxsDQo7dGhlIGF2YWlsYWJsZSBwcm9jZXNzIHN0YWNrIGFuZCBldmVudHVhbGx5IGNyYXNoIFBIUCAoZHVlIHRvIHJlYWNoaW5nIHRoZQ0KO3N0YWNrIHNpemUgbGltaXQgaW1wb3NlZCBieSB0aGUgT3BlcmF0aW5nIFN5c3RlbSkuDQo7IGh0dHA6Ly9waHAubmV0L3BjcmUucmVjdXJzaW9uLWxpbWl0DQo7cGNyZS5yZWN1cnNpb25fbGltaXQ9MTAwMDAwDQoNCltQZG9dDQo7IFdoZXRoZXIgdG8gcG9vbCBPREJDIGNvbm5lY3Rpb25zLiBDYW4gYmUgb25lIG9mIFwic3RyaWN0XCIsIFwicmVsYXhlZFwiIG9yIFwib2ZmXCINCjsgaHR0cDovL3BocC5uZXQvcGRvLW9kYmMuY29ubmVjdGlvbi1wb29saW5nDQo7cGRvX29kYmMuY29ubmVjdGlvbl9wb29saW5nPXN0cmljdA0KDQo7cGRvX29kYmMuZGIyX2luc3RhbmNlX25hbWUNCg0KW1Bkb19teXNxbF0NCjsgSWYgbXlzcWxuZCBpcyB1c2VkOiBOdW1iZXIgb2YgY2FjaGUgc2xvdHMgZm9yIHRoZSBpbnRlcm5hbCByZXN1bHQgc2V0IGNhY2hlDQo7IGh0dHA6Ly9waHAubmV0L3Bkb19teXNxbC5jYWNoZV9zaXplDQpwZG9fbXlzcWwuY2FjaGVfc2l6ZSA9IDIwMDANCg0KOyBEZWZhdWx0IHNvY2tldCBuYW1lIGZvciBsb2NhbCBNeVNRTCBjb25uZWN0cy4gIElmIGVtcHR5LCB1c2VzIHRoZSBidWlsdC1pbg0KOyBNeVNRTCBkZWZhdWx0cy4NCjsgaHR0cDovL3BocC5uZXQvcGRvX215c3FsLmRlZmF1bHQtc29ja2V0DQpwZG9fbXlzcWwuZGVmYXVsdF9zb2NrZXQ9DQoNCltQaGFyXQ0KOyBodHRwOi8vcGhwLm5ldC9waGFyLnJlYWRvbmx5DQo7cGhhci5yZWFkb25seSA9IE9uDQoNCjsgaHR0cDovL3BocC5uZXQvcGhhci5yZXF1aXJlLWhhc2gNCjtwaGFyLnJlcXVpcmVfaGFzaCA9IE9uDQoNCjtwaGFyLmNhY2hlX2xpc3QgPQ0KDQpbbWFpbCBmdW5jdGlvbl0NCjsgRm9yIFdpbjMyIG9ubHkuDQo7IGh0dHA6Ly9waHAubmV0L3NtdHANClNNVFAgPSBsb2NhbGhvc3QNCjsgaHR0cDovL3BocC5uZXQvc210cC1wb3J0DQpzbXRwX3BvcnQgPSAyNQ0KDQo7IEZvciBXaW4zMiBvbmx5Lg0KOyBodHRwOi8vcGhwLm5ldC9zZW5kbWFpbC1mcm9tDQo7c2VuZG1haWxfZnJvbSA9IG1lQGV4YW1wbGUuY29tDQoNCjsgRm9yIFVuaXggb25seS4gIFlvdSBtYXkgc3VwcGx5IGFyZ3VtZW50cyBhcyB3ZWxsIChkZWZhdWx0OiBcInNlbmRtYWlsIC10IC1pXCIpLg0KOyBodHRwOi8vcGhwLm5ldC9zZW5kbWFpbC1wYXRoDQo7c2VuZG1haWxfcGF0aCA9DQoNCjsgRm9yY2UgdGhlIGFkZGl0aW9uIG9mIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycyB0byBiZSBwYXNzZWQgYXMgZXh0cmEgcGFyYW1ldGVycw0KOyB0byB0aGUgc2VuZG1haWwgYmluYXJ5LiBUaGVzZSBwYXJhbWV0ZXJzIHdpbGwgYWx3YXlzIHJlcGxhY2UgdGhlIHZhbHVlIG9mDQo7IHRoZSA1dGggcGFyYW1ldGVyIHRvIG1haWwoKSwgZXZlbiBpbiBzYWZlIG1vZGUuDQo7bWFpbC5mb3JjZV9leHRyYV9wYXJhbWV0ZXJzID0NCg0KOyBBZGQgWC1QSFAtT3JpZ2luYXRpbmctU2NyaXB0OiB0aGF0IHdpbGwgaW5jbHVkZSB1aWQgb2YgdGhlIHNjcmlwdCBmb2xsb3dlZCBieSB0aGUgZmlsZW5hbWUNCm1haWwuYWRkX3hfaGVhZGVyID0gT24NCg0KOyBUaGUgcGF0aCB0byBhIGxvZyBmaWxlIHRoYXQgd2lsbCBsb2cgYWxsIG1haWwoKSBjYWxscy4gTG9nIGVudHJpZXMgaW5jbHVkZQ0KOyB0aGUgZnVsbCBwYXRoIG9mIHRoZSBzY3JpcHQsIGxpbmUgbnVtYmVyLCBUbyBhZGRyZXNzIGFuZCBoZWFkZXJzLg0KO21haWwubG9nID0NCjsgTG9nIG1haWwgdG8gc3lzbG9nIChFdmVudCBMb2cgb24gTlQsIG5vdCB2YWxpZCBpbiBXaW5kb3dzIDk1KS4NCjttYWlsLmxvZyA9IHN5c2xvZw0KDQpbU1FMXQ0KOyBodHRwOi8vcGhwLm5ldC9zcWwuc2FmZS1tb2RlDQpzcWwuc2FmZV9tb2RlID0gT2ZmDQoNCltPREJDXQ0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLmRlZmF1bHQtZGINCjtvZGJjLmRlZmF1bHRfZGIgICAgPSAgTm90IHlldCBpbXBsZW1lbnRlZA0KDQo7IGh0dHA6Ly9waHAubmV0L29kYmMuZGVmYXVsdC11c2VyDQo7b2RiYy5kZWZhdWx0X3VzZXIgID0gIE5vdCB5ZXQgaW1wbGVtZW50ZWQNCg0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLmRlZmF1bHQtcHcNCjtvZGJjLmRlZmF1bHRfcHcgICAgPSAgTm90IHlldCBpbXBsZW1lbnRlZA0KDQo7IENvbnRyb2xzIHRoZSBPREJDIGN1cnNvciBtb2RlbC4NCjsgRGVmYXVsdDogU1FMX0NVUlNPUl9TVEFUSUMgKGRlZmF1bHQpLg0KO29kYmMuZGVmYXVsdF9jdXJzb3J0eXBlDQoNCjsgQWxsb3cgb3IgcHJldmVudCBwZXJzaXN0ZW50IGxpbmtzLg0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLmFsbG93LXBlcnNpc3RlbnQNCm9kYmMuYWxsb3dfcGVyc2lzdGVudCA9IE9uDQoNCjsgQ2hlY2sgdGhhdCBhIGNvbm5lY3Rpb24gaXMgc3RpbGwgdmFsaWQgYmVmb3JlIHJldXNlLg0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLmNoZWNrLXBlcnNpc3RlbnQNCm9kYmMuY2hlY2tfcGVyc2lzdGVudCA9IE9uDQoNCjsgTWF4aW11bSBudW1iZXIgb2YgcGVyc2lzdGVudCBsaW5rcy4gIC0xIG1lYW5zIG5vIGxpbWl0Lg0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLm1heC1wZXJzaXN0ZW50DQpvZGJjLm1heF9wZXJzaXN0ZW50ID0gLTENCg0KOyBNYXhpbXVtIG51bWJlciBvZiBsaW5rcyAocGVyc2lzdGVudCArIG5vbi1wZXJzaXN0ZW50KS4gIC0xIG1lYW5zIG5vIGxpbWl0Lg0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLm1heC1saW5rcw0Kb2RiYy5tYXhfbGlua3MgPSAtMQ0KDQo7IEhhbmRsaW5nIG9mIExPTkcgZmllbGRzLiAgUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgdG8gdmFyaWFibGVzLiAgMCBtZWFucw0KOyBwYXNzdGhydS4NCjsgaHR0cDovL3BocC5uZXQvb2RiYy5kZWZhdWx0bHJsDQpvZGJjLmRlZmF1bHRscmwgPSA0MDk2DQoNCjsgSGFuZGxpbmcgb2YgYmluYXJ5IGRhdGEuICAwIG1lYW5zIHBhc3N0aHJ1LCAxIHJldHVybiBhcyBpcywgMiBjb252ZXJ0IHRvIGNoYXIuDQo7IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBvZGJjX2Jpbm1vZGUgYW5kIG9kYmNfbG9uZ3JlYWRsZW4gZm9yIGFuIGV4cGxhbmF0aW9uDQo7IG9mIG9kYmMuZGVmYXVsdGxybCBhbmQgb2RiYy5kZWZhdWx0YmlubW9kZQ0KOyBodHRwOi8vcGhwLm5ldC9vZGJjLmRlZmF1bHRiaW5tb2RlDQpvZGJjLmRlZmF1bHRiaW5tb2RlID0gMQ0KDQo7YmlyZHN0ZXAubWF4X2xpbmtzID0gLTENCg0KW0ludGVyYmFzZV0NCjsgQWxsb3cgb3IgcHJldmVudCBwZXJzaXN0ZW50IGxpbmtzLg0KaWJhc2UuYWxsb3dfcGVyc2lzdGVudCA9IDENCg0KOyBNYXhpbXVtIG51bWJlciBvZiBwZXJzaXN0ZW50IGxpbmtzLiAgLTEgbWVhbnMgbm8gbGltaXQuDQppYmFzZS5tYXhfcGVyc2lzdGVudCA9IC0xDQoNCjsgTWF4aW11bSBudW1iZXIgb2YgbGlua3MgKHBlcnNpc3RlbnQgKyBub24tcGVyc2lzdGVudCkuICAtMSBtZWFucyBubyBsaW1pdC4NCmliYXNlLm1heF9saW5rcyA9IC0xDQoNCjsgRGVmYXVsdCBkYXRhYmFzZSBuYW1lIGZvciBpYmFzZV9jb25uZWN0KCkuDQo7aWJhc2UuZGVmYXVsdF9kYiA9DQoNCjsgRGVmYXVsdCB1c2VybmFtZSBmb3IgaWJhc2VfY29ubmVjdCgpLg0KO2liYXNlLmRlZmF1bHRfdXNlciA9DQoNCjsgRGVmYXVsdCBwYXNzd29yZCBmb3IgaWJhc2VfY29ubmVjdCgpLg0KDQo7IFRoZSBzeW50YXggb2YgdGhlIGZpbGUgaXMgZXh0cmVtZWx5IHNpbXBsZS4gIFdoaXRlc3BhY2UgYW5kIGxpbmVzDQo7IGJlZ2lubmluZyB3aXRoIGEgc2VtaWNvbG9uIGFyZSBzaWxlbnRseSBpZ25vcmVkIChhcyB5b3UgcHJvYmFibHkgZ3Vlc3NlZCkuDQo7IFNlY3Rpb24gaGVhZGVycyAoZS5nLiBbRm9vXSkgYXJlIGFsc28gc2lsZW50bHkgaWdub3JlZCwgZXZlbiB0aG91Z2gNCjsgdGhleSBtaWdodCBtZWFuIHNvbWV0aGluZyBpbiB0aGUgZnV0dXJlLg0KDQo7IERpcmVjdGl2ZXMgZm9sbG93aW5nIHRoZSBzZWN0aW9uIGhlYWRpbmcgW1BBVEg9L3d3dy9teXNpdGVdIG9ubHkNCjsgYXBwbHkgdG8gUEhQIGZpbGVzIGluIHRoZSAvd3d3L215c2l0ZSBkaXJlY3RvcnkuICBEaXJlY3RpdmVzDQo7IGZvbGxvd2luZyB0aGUgc2VjdGlvbiBoZWFkaW5nIFtIT1NUPXd3dy5leGFtcGxlLmNvbV0gb25seSBhcHBseSB0bw0KOyBQSFAgZmlsZXMgc2VydmVkIGZyb20gd3d3LmV4YW1wbGUuY29tLiAgRGlyZWN0aXZlcyBzZXQgaW4gdGhlc2UNCjsgc3BlY2lhbCBzZWN0aW9ucyBjYW5ub3QgYmUgb3ZlcnJpZGRlbiBieSB1c2VyLWRlZmluZWQgSU5JIGZpbGVzIG9yDQo7IGF0IHJ1bnRpbWUuIEN1cnJlbnRseSwgW1BBVEg9XSBhbmQgW0hPU1Q9XSBzZWN0aW9ucyBvbmx5IHdvcmsgdW5kZXINCjsgQ0dJL0Zhc3RDR0kuDQo7IGh0dHA6Ly9waHAubmV0L2luaS5zZWN0aW9ucw0KDQo7IERpcmVjdGl2ZXMgYXJlIHNwZWNpZmllZCB1c2luZyB0aGUgZm9sbG93aW5nIHN5bnRheDoNCjsgZGlyZWN0aXZlID0gdmFsdWUNCjsgRGlyZWN0aXZlIG5hbWVzIGFyZSAqY2FzZSBzZW5zaXRpdmUqIC0gZm9vPWJhciBpcyBkaWZmZXJlbnQgZnJvbSBGT089YmFyLg0KOyBEaXJlY3RpdmVzIGFyZSB2YXJpYWJsZXMgdXNlZCB0byBjb25maWd1cmUgUEhQIG9yIFBIUCBleHRlbnNpb25zLg0KOyBUaGVyZSBpcyBubyBuYW1lIHZhbGlkYXRpb24uICBJZiBQSFAgY2FuXCd0IGZpbmQgYW4gZXhwZWN0ZWQNCjsgZGlyZWN0aXZlIGJlY2F1c2UgaXQgaXMgbm90IHNldCBvciBpcyBtaXN0eXBlZCwgYSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZC4NCg0KOyBUaGUgdmFsdWUgY2FuIGJlIGEgc3RyaW5nLCBhIG51bWJlciwgYSBQSFAgY29uc3RhbnQgKGUuZy4gRV9BTEwgb3IgTV9QSSksIG9uZQ0KOyBvZiB0aGUgSU5JIGNvbnN0YW50cyAoT24sIE9mZiwgVHJ1ZSwgRmFsc2UsIFllcywgTm8gYW5kIE5vbmUpIG9yIGFuIGV4cHJlc3Npb24NCjsgKGUuZy4gRV9BTEwgJiB+RV9OT1RJQ0UpLCBhIHF1b3RlZCBzdHJpbmcgKFwiYmFyXCIpLCBvciBhIHJlZmVyZW5jZSB0byBhDQo7IHByZXZpb3VzbHkgc2V0IHZhcmlhYmxlIG9yIGRpcmVjdGl2ZSAoZS5nLiAke2Zvb30pDQoNCjsgRXhwcmVzc2lvbnMgaW4gdGhlIElOSSBmaWxlIGFyZSBsaW1pdGVkIHRvIGJpdHdpc2Ugb3BlcmF0b3JzIGFuZCBwYXJlbnRoZXNlczoNCjsgfCAgYml0d2lzZSBPUg0KOyBeICBiaXR3aXNlIFhPUg0KOyAmICBiaXR3aXNlIEFORA0KOyB+ICBiaXR3aXNlIE5PVA0KOyAhICBib29sZWFuIE5PVA0KDQo7IEJvb2xlYW4gZmxhZ3MgY2FuIGJlIHR1cm5lZCBvbiB1c2luZyB0aGUgdmFsdWVzIDEsIE9uLCBUcnVlIG9yIFllcy4NCjsgVGhleSBjYW4gYmUgdHVybmVkIG9mZiB1c2luZyB0aGUgdmFsdWVzIDAsIE9mZiwgRmFsc2Ugb3IgTm8uDQoNCjsgQW4gZW1wdHkgc3RyaW5nIGNhbiBiZSBkZW5vdGVkIGJ5IHNpbXBseSBub3Qgd3JpdGluZyBhbnl0aGluZyBhZnRlciB0aGUgZXF1YWwNCjsgc2lnbiwgb3IgYnkgdXNpbmcgdGhlIE5vbmUga2V5d29yZDoNCg0KOyAgZm9vID0gICAgICAgICA7IHNldHMgZm9vIHRvIGFuIGVtcHR5IHN0cmluZw0KOyAgZm9vID0gTm9uZSAgICA7IHNldHMgZm9vIHRvIGFuIGVtcHR5IHN0cmluZw0KOyAgZm9vID0gXCJOb25lXCIgIDsgc2V0cyBmb28gdG8gdGhlIHN0cmluZyBcJ05vbmVcJw0KDQo7IElmIHlvdSB1c2UgY29uc3RhbnRzIGluIHlvdXIgdmFsdWUsIGFuZCB0aGVzZSBjb25zdGFudHMgYmVsb25nIHRvIGENCjsgZHluYW1pY2FsbHkgbG9hZGVkIGV4dGVuc2lvbiAoZWl0aGVyIGEgUEhQIGV4dGVuc2lvbiBvciBhIFplbmQgZXh0ZW5zaW9uKSwNCjsgeW91IG1heSBvbmx5IHVzZSB0aGVzZSBjb25zdGFudHMgKmFmdGVyKiB0aGUgbGluZSB0aGF0IGxvYWRzIHRoZSBleHRlbnNpb24uDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgQWJvdXQgdGhpcyBmaWxlIDsNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgUEhQIGNvbWVzIHBhY2thZ2VkIHdpdGggdHdvIElOSSBmaWxlcy4gT25lIHRoYXQgaXMgcmVjb21tZW5kZWQgdG8gYmUgdXNlZA0KOyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cyBhbmQgb25lIHRoYXQgaXMgcmVjb21tZW5kZWQgdG8gYmUgdXNlZCBpbg0KOyBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuDQoNCjsgcGhwLmluaS1wcm9kdWN0aW9uIGNvbnRhaW5zIHNldHRpbmdzIHdoaWNoIGhvbGQgc2VjdXJpdHksIHBlcmZvcm1hbmNlIGFuZA0KOyBiZXN0IHByYWN0aWNlcyBhdCBpdHMgY29yZS4gQnV0IHBsZWFzZSBiZSBhd2FyZSwgdGhlc2Ugc2V0dGluZ3MgbWF5IGJyZWFrDQo7IGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBvciBsZXNzIHNlY3VyaXR5IGNvbnNjaWVuY2UgYXBwbGljYXRpb25zLiBXZQ0KOyByZWNvbW1lbmRpbmcgdXNpbmcgdGhlIHByb2R1Y3Rpb24gaW5pIGluIHByb2R1Y3Rpb24gYW5kIHRlc3RpbmcgZW52aXJvbm1lbnRzLg0KDQo7IHBocC5pbmktZGV2ZWxvcG1lbnQgaXMgdmVyeSBzaW1pbGFyIHRvIGl0cyBwcm9kdWN0aW9uIHZhcmlhbnQsIGV4Y2VwdCBpdFwncw0KOyBtdWNoIG1vcmUgdmVyYm9zZSB3aGVuIGl0IGNvbWVzIHRvIGVycm9ycy4gV2UgcmVjb21tZW5kaW5nIHVzaW5nIHRoZQ0KOyBkZXZlbG9wbWVudCB2ZXJzaW9uIG9ubHkgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGFzIGVycm9ycyBzaG93biB0bw0KOyBhcHBsaWNhdGlvbiB1c2VycyBjYW4gaW5hZHZlcnRlbnRseSBsZWFrIG90aGVyd2lzZSBzZWN1cmUgaW5mb3JtYXRpb24uDQoNCjsgVGhpcyBpcyBwaHAuaW5pLXByb2R1Y3Rpb24gSU5JIGZpbGUuDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgUXVpY2sgUmVmZXJlbmNlIDsNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgVGhlIGZvbGxvd2luZyBhcmUgYWxsIHRoZSBzZXR0aW5ncyB3aGljaCBhcmUgZGlmZmVyZW50IGluIGVpdGhlciB0aGUgcHJvZHVjdGlvbg0KOyBvciBkZXZlbG9wbWVudCB2ZXJzaW9ucyBvZiB0aGUgSU5JcyB3aXRoIHJlc3BlY3QgdG8gUEhQXCdzIGRlZmF1bHQgYmVoYXZpb3IuDQo7IFBsZWFzZSBzZWUgdGhlIGFjdHVhbCBzZXR0aW5ncyBsYXRlciBpbiB0aGUgZG9jdW1lbnQgZm9yIG1vcmUgZGV0YWlscyBhcyB0byB3aHkNCjsgd2UgcmVjb21tZW5kIHRoZXNlIGNoYW5nZXMgaW4gUEhQXCdzIGJlaGF2aW9yLg0KDQo7IGRpc3BsYXlfZXJyb3JzDQo7ICAgRGVmYXVsdCBWYWx1ZTogT24NCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyBkaXNwbGF5X3N0YXJ0dXBfZXJyb3JzDQo7ICAgRGVmYXVsdCBWYWx1ZTogT2ZmDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgZXJyb3JfcmVwb3J0aW5nDQo7ICAgRGVmYXVsdCBWYWx1ZTogRV9BTEwgJiB+RV9OT1RJQ0UgJiB+RV9TVFJJQ1QgJiB+RV9ERVBSRUNBVEVEDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IEVfQUxMDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogRV9BTEwgJiB+RV9ERVBSRUNBVEVEICYgfkVfU1RSSUNUDQoNCjsgaHRtbF9lcnJvcnMNCjsgICBEZWZhdWx0IFZhbHVlOiBPbg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gdmFsdWU6IE9uDQoNCjsgbG9nX2Vycm9ycw0KOyAgIERlZmF1bHQgVmFsdWU6IE9mZg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9uDQoNCjsgbWF4X2lucHV0X3RpbWUNCjsgICBEZWZhdWx0IFZhbHVlOiAtMSAoVW5saW1pdGVkKQ0KOyAgIERldmVsb3BtZW50IFZhbHVlOiA2MCAoNjAgc2Vjb25kcykNCjsgICBQcm9kdWN0aW9uIFZhbHVlOiA2MCAoNjAgc2Vjb25kcykNCg0KOyBvdXRwdXRfYnVmZmVyaW5nDQo7ICAgRGVmYXVsdCBWYWx1ZTogT2ZmDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IDQwOTYNCjsgICBQcm9kdWN0aW9uIFZhbHVlOiA0MDk2DQoNCjsgcmVnaXN0ZXJfYXJnY19hcmd2DQo7ICAgRGVmYXVsdCBWYWx1ZTogT24NCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT2ZmDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgcmVxdWVzdF9vcmRlcg0KOyAgIERlZmF1bHQgVmFsdWU6IE5vbmUNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogXCJHUFwiDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogXCJHUFwiDQoNCjsgc2Vzc2lvbi5idWdfY29tcGF0XzQyDQo7ICAgRGVmYXVsdCBWYWx1ZTogT24NCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyBzZXNzaW9uLmJ1Z19jb21wYXRfd2Fybg0KOyAgIERlZmF1bHQgVmFsdWU6IE9uDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgc2Vzc2lvbi5nY19kaXZpc29yDQo7ICAgRGVmYXVsdCBWYWx1ZTogMTAwDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IDEwMDANCjsgICBQcm9kdWN0aW9uIFZhbHVlOiAxMDAwDQoNCjsgc2Vzc2lvbi5oYXNoX2JpdHNfcGVyX2NoYXJhY3Rlcg0KOyAgIERlZmF1bHQgVmFsdWU6IDQNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogNQ0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IDUNCg0KOyBzaG9ydF9vcGVuX3RhZw0KOyAgIERlZmF1bHQgVmFsdWU6IE9uDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9mZg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IHRyYWNrX2Vycm9ycw0KOyAgIERlZmF1bHQgVmFsdWU6IE9mZg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IHVybF9yZXdyaXRlci50YWdzDQo7ICAgRGVmYXVsdCBWYWx1ZTogXCJhPWhyZWYsYXJlYT1ocmVmLGZyYW1lPXNyYyxmb3JtPSxmaWVsZHNldD1cIg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBcImE9aHJlZixhcmVhPWhyZWYsZnJhbWU9c3JjLGlucHV0PXNyYyxmb3JtPWZha2VlbnRyeVwiDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogXCJhPWhyZWYsYXJlYT1ocmVmLGZyYW1lPXNyYyxpbnB1dD1zcmMsZm9ybT1mYWtlZW50cnlcIg0KDQo7IHZhcmlhYmxlc19vcmRlcg0KOyAgIERlZmF1bHQgVmFsdWU6IFwiRUdQQ1NcIg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBcIkdQQ1NcIg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IFwiR1BDU1wiDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IHBocC5pbmkgT3B0aW9ucyAgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgTmFtZSBmb3IgdXNlci1kZWZpbmVkIHBocC5pbmkgKC5odGFjY2VzcykgZmlsZXMuIERlZmF1bHQgaXMgXCIudXNlci5pbmlcIg0KO3VzZXJfaW5pLmZpbGVuYW1lID0gXCIudXNlci5pbmlcIg0KDQo7IFRvIGRpc2FibGUgdGhpcyBmZWF0dXJlIHNldCB0aGlzIG9wdGlvbiB0byBlbXB0eSB2YWx1ZQ0KO3VzZXJfaW5pLmZpbGVuYW1lID0NCg0KOyBUVEwgZm9yIHVzZXItZGVmaW5lZCBwaHAuaW5pIGZpbGVzICh0aW1lLXRvLWxpdmUpIGluIHNlY29uZHMuIERlZmF1bHQgaXMgMzAwIHNlY29uZHMgKDUgbWludXRlcykNCjt1c2VyX2luaS5jYWNoZV90dGwgPSAzMDANCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjsgTGFuZ3VhZ2UgT3B0aW9ucyA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KDQo7IEVuYWJsZSB0aGUgUEhQIHNjcmlwdGluZyBsYW5ndWFnZSBlbmdpbmUgdW5kZXIgQXBhY2hlLg0KOyBodHRwOi8vcGhwLm5ldC9lbmdpbmUNCg0KOyBUaGUgc3ludGF4IG9mIHRoZSBmaWxlIGlzIGV4dHJlbWVseSBzaW1wbGUuICBXaGl0ZXNwYWNlIGFuZCBsaW5lcw0KOyBiZWdpbm5pbmcgd2l0aCBhIHNlbWljb2xvbiBhcmUgc2lsZW50bHkgaWdub3JlZCAoYXMgeW91IHByb2JhYmx5IGd1ZXNzZWQpLg0KOyBTZWN0aW9uIGhlYWRlcnMgKGUuZy4gW0Zvb10pIGFyZSBhbHNvIHNpbGVudGx5IGlnbm9yZWQsIGV2ZW4gdGhvdWdoDQo7IHRoZXkgbWlnaHQgbWVhbiBzb21ldGhpbmcgaW4gdGhlIGZ1dHVyZS4NCg0KOyBEaXJlY3RpdmVzIGZvbGxvd2luZyB0aGUgc2VjdGlvbiBoZWFkaW5nIFtQQVRIPS93d3cvbXlzaXRlXSBvbmx5DQo7IGFwcGx5IHRvIFBIUCBmaWxlcyBpbiB0aGUgL3d3dy9teXNpdGUgZGlyZWN0b3J5LiAgRGlyZWN0aXZlcw0KOyBmb2xsb3dpbmcgdGhlIHNlY3Rpb24gaGVhZGluZyBbSE9TVD13d3cuZXhhbXBsZS5jb21dIG9ubHkgYXBwbHkgdG8NCjsgUEhQIGZpbGVzIHNlcnZlZCBmcm9tIHd3dy5leGFtcGxlLmNvbS4gIERpcmVjdGl2ZXMgc2V0IGluIHRoZXNlDQo7IHNwZWNpYWwgc2VjdGlvbnMgY2Fubm90IGJlIG92ZXJyaWRkZW4gYnkgdXNlci1kZWZpbmVkIElOSSBmaWxlcyBvcg0KOyBhdCBydW50aW1lLiBDdXJyZW50bHksIFtQQVRIPV0gYW5kIFtIT1NUPV0gc2VjdGlvbnMgb25seSB3b3JrIHVuZGVyDQo7IENHSS9GYXN0Q0dJLg0KOyBodHRwOi8vcGhwLm5ldC9pbmkuc2VjdGlvbnMNCg0KOyBEaXJlY3RpdmVzIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6DQo7IGRpcmVjdGl2ZSA9IHZhbHVlDQo7IERpcmVjdGl2ZSBuYW1lcyBhcmUgKmNhc2Ugc2Vuc2l0aXZlKiAtIGZvbz1iYXIgaXMgZGlmZmVyZW50IGZyb20gRk9PPWJhci4NCjsgRGlyZWN0aXZlcyBhcmUgdmFyaWFibGVzIHVzZWQgdG8gY29uZmlndXJlIFBIUCBvciBQSFAgZXh0ZW5zaW9ucy4NCjsgVGhlcmUgaXMgbm8gbmFtZSB2YWxpZGF0aW9uLiAgSWYgUEhQIGNhblwndCBmaW5kIGFuIGV4cGVjdGVkDQo7IGRpcmVjdGl2ZSBiZWNhdXNlIGl0IGlzIG5vdCBzZXQgb3IgaXMgbWlzdHlwZWQsIGEgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQuDQoNCjsgVGhlIHZhbHVlIGNhbiBiZSBhIHN0cmluZywgYSBudW1iZXIsIGEgUEhQIGNvbnN0YW50IChlLmcuIEVfQUxMIG9yIE1fUEkpLCBvbmUNCjsgb2YgdGhlIElOSSBjb25zdGFudHMgKE9uLCBPZmYsIFRydWUsIEZhbHNlLCBZZXMsIE5vIGFuZCBOb25lKSBvciBhbiBleHByZXNzaW9uDQo7IChlLmcuIEVfQUxMICYgfkVfTk9USUNFKSwgYSBxdW90ZWQgc3RyaW5nIChcImJhclwiKSwgb3IgYSByZWZlcmVuY2UgdG8gYQ0KOyBwcmV2aW91c2x5IHNldCB2YXJpYWJsZSBvciBkaXJlY3RpdmUgKGUuZy4gJHtmb299KQ0KDQo7IEV4cHJlc3Npb25zIGluIHRoZSBJTkkgZmlsZSBhcmUgbGltaXRlZCB0byBiaXR3aXNlIG9wZXJhdG9ycyBhbmQgcGFyZW50aGVzZXM6DQo7IHwgIGJpdHdpc2UgT1INCjsgXiAgYml0d2lzZSBYT1INCjsgJiAgYml0d2lzZSBBTkQNCjsgfiAgYml0d2lzZSBOT1QNCjsgISAgYm9vbGVhbiBOT1QNCg0KOyBCb29sZWFuIGZsYWdzIGNhbiBiZSB0dXJuZWQgb24gdXNpbmcgdGhlIHZhbHVlcyAxLCBPbiwgVHJ1ZSBvciBZZXMuDQo7IFRoZXkgY2FuIGJlIHR1cm5lZCBvZmYgdXNpbmcgdGhlIHZhbHVlcyAwLCBPZmYsIEZhbHNlIG9yIE5vLg0KDQo7IEFuIGVtcHR5IHN0cmluZyBjYW4gYmUgZGVub3RlZCBieSBzaW1wbHkgbm90IHdyaXRpbmcgYW55dGhpbmcgYWZ0ZXIgdGhlIGVxdWFsDQo7IHNpZ24sIG9yIGJ5IHVzaW5nIHRoZSBOb25lIGtleXdvcmQ6DQoNCjsgIGZvbyA9ICAgICAgICAgOyBzZXRzIGZvbyB0byBhbiBlbXB0eSBzdHJpbmcNCjsgIGZvbyA9IE5vbmUgICAgOyBzZXRzIGZvbyB0byBhbiBlbXB0eSBzdHJpbmcNCjsgIGZvbyA9IFwiTm9uZVwiICA7IHNldHMgZm9vIHRvIHRoZSBzdHJpbmcgXCdOb25lXCcNCg0KOyBJZiB5b3UgdXNlIGNvbnN0YW50cyBpbiB5b3VyIHZhbHVlLCBhbmQgdGhlc2UgY29uc3RhbnRzIGJlbG9uZyB0byBhDQo7IGR5bmFtaWNhbGx5IGxvYWRlZCBleHRlbnNpb24gKGVpdGhlciBhIFBIUCBleHRlbnNpb24gb3IgYSBaZW5kIGV4dGVuc2lvbiksDQo7IHlvdSBtYXkgb25seSB1c2UgdGhlc2UgY29uc3RhbnRzICphZnRlciogdGhlIGxpbmUgdGhhdCBsb2FkcyB0aGUgZXh0ZW5zaW9uLg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IEFib3V0IHRoaXMgZmlsZSA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IFBIUCBjb21lcyBwYWNrYWdlZCB3aXRoIHR3byBJTkkgZmlsZXMuIE9uZSB0aGF0IGlzIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQNCjsgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgYW5kIG9uZSB0aGF0IGlzIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgaW4NCjsgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLg0KDQo7IHBocC5pbmktcHJvZHVjdGlvbiBjb250YWlucyBzZXR0aW5ncyB3aGljaCBob2xkIHNlY3VyaXR5LCBwZXJmb3JtYW5jZSBhbmQNCjsgYmVzdCBwcmFjdGljZXMgYXQgaXRzIGNvcmUuIEJ1dCBwbGVhc2UgYmUgYXdhcmUsIHRoZXNlIHNldHRpbmdzIG1heSBicmVhaw0KOyBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgb3IgbGVzcyBzZWN1cml0eSBjb25zY2llbmNlIGFwcGxpY2F0aW9ucy4gV2UNCjsgcmVjb21tZW5kaW5nIHVzaW5nIHRoZSBwcm9kdWN0aW9uIGluaSBpbiBwcm9kdWN0aW9uIGFuZCB0ZXN0aW5nIGVudmlyb25tZW50cy4NCg0KOyBwaHAuaW5pLWRldmVsb3BtZW50IGlzIHZlcnkgc2ltaWxhciB0byBpdHMgcHJvZHVjdGlvbiB2YXJpYW50LCBleGNlcHQgaXRcJ3MNCjsgbXVjaCBtb3JlIHZlcmJvc2Ugd2hlbiBpdCBjb21lcyB0byBlcnJvcnMuIFdlIHJlY29tbWVuZGluZyB1c2luZyB0aGUNCjsgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvbmx5IGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBhcyBlcnJvcnMgc2hvd24gdG8NCjsgYXBwbGljYXRpb24gdXNlcnMgY2FuIGluYWR2ZXJ0ZW50bHkgbGVhayBvdGhlcndpc2Ugc2VjdXJlIGluZm9ybWF0aW9uLg0KDQo7IFRoaXMgaXMgcGhwLmluaS1wcm9kdWN0aW9uIElOSSBmaWxlLg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IFF1aWNrIFJlZmVyZW5jZSA7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IFRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0aGUgc2V0dGluZ3Mgd2hpY2ggYXJlIGRpZmZlcmVudCBpbiBlaXRoZXIgdGhlIHByb2R1Y3Rpb24NCjsgb3IgZGV2ZWxvcG1lbnQgdmVyc2lvbnMgb2YgdGhlIElOSXMgd2l0aCByZXNwZWN0IHRvIFBIUFwncyBkZWZhdWx0IGJlaGF2aW9yLg0KOyBQbGVhc2Ugc2VlIHRoZSBhY3R1YWwgc2V0dGluZ3MgbGF0ZXIgaW4gdGhlIGRvY3VtZW50IGZvciBtb3JlIGRldGFpbHMgYXMgdG8gd2h5DQo7IHdlIHJlY29tbWVuZCB0aGVzZSBjaGFuZ2VzIGluIFBIUFwncyBiZWhhdmlvci4NCg0KOyBkaXNwbGF5X2Vycm9ycw0KOyAgIERlZmF1bHQgVmFsdWU6IE9uDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgZGlzcGxheV9zdGFydHVwX2Vycm9ycw0KOyAgIERlZmF1bHQgVmFsdWU6IE9mZg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IGVycm9yX3JlcG9ydGluZw0KOyAgIERlZmF1bHQgVmFsdWU6IEVfQUxMICYgfkVfTk9USUNFICYgfkVfU1RSSUNUICYgfkVfREVQUkVDQVRFRA0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBFX0FMTA0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IEVfQUxMICYgfkVfREVQUkVDQVRFRCAmIH5FX1NUUklDVA0KDQo7IGh0bWxfZXJyb3JzDQo7ICAgRGVmYXVsdCBWYWx1ZTogT24NCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIHZhbHVlOiBPbg0KDQo7IGxvZ19lcnJvcnMNCjsgICBEZWZhdWx0IFZhbHVlOiBPZmYNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPbg0KDQo7IG1heF9pbnB1dF90aW1lDQo7ICAgRGVmYXVsdCBWYWx1ZTogLTEgKFVubGltaXRlZCkNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogNjAgKDYwIHNlY29uZHMpDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogNjAgKDYwIHNlY29uZHMpDQoNCjsgb3V0cHV0X2J1ZmZlcmluZw0KOyAgIERlZmF1bHQgVmFsdWU6IE9mZg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiA0MDk2DQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogNDA5Ng0KDQo7IHJlZ2lzdGVyX2FyZ2NfYXJndg0KOyAgIERlZmF1bHQgVmFsdWU6IE9uDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9mZg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IHJlcXVlc3Rfb3JkZXINCjsgICBEZWZhdWx0IFZhbHVlOiBOb25lDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IFwiR1BcIg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IFwiR1BcIg0KDQo7IHNlc3Npb24uYnVnX2NvbXBhdF80Mg0KOyAgIERlZmF1bHQgVmFsdWU6IE9uDQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IE9uDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogT2ZmDQoNCjsgc2Vzc2lvbi5idWdfY29tcGF0X3dhcm4NCjsgICBEZWZhdWx0IFZhbHVlOiBPbg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPbg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IE9mZg0KDQo7IHNlc3Npb24uZ2NfZGl2aXNvcg0KOyAgIERlZmF1bHQgVmFsdWU6IDEwMA0KOyAgIERldmVsb3BtZW50IFZhbHVlOiAxMDAwDQo7ICAgUHJvZHVjdGlvbiBWYWx1ZTogMTAwMA0KDQo7IHNlc3Npb24uaGFzaF9iaXRzX3Blcl9jaGFyYWN0ZXINCjsgICBEZWZhdWx0IFZhbHVlOiA0DQo7ICAgRGV2ZWxvcG1lbnQgVmFsdWU6IDUNCjsgICBQcm9kdWN0aW9uIFZhbHVlOiA1DQoNCjsgc2hvcnRfb3Blbl90YWcNCjsgICBEZWZhdWx0IFZhbHVlOiBPbg0KOyAgIERldmVsb3BtZW50IFZhbHVlOiBPZmYNCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyB0cmFja19lcnJvcnMNCjsgICBEZWZhdWx0IFZhbHVlOiBPZmYNCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogT24NCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBPZmYNCg0KOyB1cmxfcmV3cml0ZXIudGFncw0KOyAgIERlZmF1bHQgVmFsdWU6IFwiYT1ocmVmLGFyZWE9aHJlZixmcmFtZT1zcmMsZm9ybT0sZmllbGRzZXQ9XCINCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogXCJhPWhyZWYsYXJlYT1ocmVmLGZyYW1lPXNyYyxpbnB1dD1zcmMsZm9ybT1mYWtlZW50cnlcIg0KOyAgIFByb2R1Y3Rpb24gVmFsdWU6IFwiYT1ocmVmLGFyZWE9aHJlZixmcmFtZT1zcmMsaW5wdXQ9c3JjLGZvcm09ZmFrZWVudHJ5XCINCg0KOyB2YXJpYWJsZXNfb3JkZXINCjsgICBEZWZhdWx0IFZhbHVlOiBcIkVHUENTXCINCjsgICBEZXZlbG9wbWVudCBWYWx1ZTogXCJHUENTXCINCjsgICBQcm9kdWN0aW9uIFZhbHVlOiBcIkdQQ1NcIg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOyBwaHAuaW5pIE9wdGlvbnMgIDsNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IE5hbWUgZm9yIHVzZXItZGVmaW5lZCBwaHAuaW5pICguaHRhY2Nlc3MpIGZpbGVzLiBEZWZhdWx0IGlzIFwiLnVzZXIuaW5pXCINCjt1c2VyX2luaS5maWxlbmFtZSA9IFwiLnVzZXIuaW5pXCINCg0KOyBUbyBkaXNhYmxlIHRoaXMgZmVhdHVyZSBzZXQgdGhpcyBvcHRpb24gdG8gZW1wdHkgdmFsdWUNCjt1c2VyX2luaS5maWxlbmFtZSA9DQoNCjsgVFRMIGZvciB1c2VyLWRlZmluZWQgcGhwLmluaSBmaWxlcyAodGltZS10by1saXZlKSBpbiBzZWNvbmRzLiBEZWZhdWx0IGlzIDMwMCBzZWNvbmRzICg1IG1pbnV0ZXMpDQo7dXNlcl9pbmkuY2FjaGVfdHRsID0gMzAwDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7IExhbmd1YWdlIE9wdGlvbnMgOw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCg0KOyBFbmFibGUgdGhlIFBIUCBzY3JpcHRpbmcgbGFuZ3VhZ2UgZW5naW5lIHVuZGVyIEFwYWNoZS4NCjsgaHR0cDovL3BocC5uZXQvZW5naW5lDQo7aWJhc2UuZGVmYXVsdF9wYXNzd29yZA==', updated_at = '2016-09-22 08:19:21' WHERE id = 1