IyMjIHVWaXNpb24yIFByb2plY3QsIChDKSBLZWlsIFNvZnR3YXJlDQojIyMgRG8gbm90IG1vZGlmeSAhDQoNClRhcmdldCAoVGFyZ2V0IDEpLCAweDAwMDQgLy8gVG9vbHM6ICdBUk0tQURTJw0KDQpHcm91cCAoU3lzdGVtKQ0KR3JvdXAgKERlbW8gRmlsZXMpDQpHcm91cCAoRnJlZVJUT1MgZmlsZXMpDQoNCkZpbGUgMSwyLDwuXFNUTTMyRjEweC5zPjxTVE0zMkYxMHgucz4NCkZpbGUgMSwxLDwuLlxDb21tb25cZHJpdmVyc1xTVFxTVE0zMkYxMHhGV0xpYlxzcmNcbGNkLmM+PGxjZC5jPg0KRmlsZSAxLDIsPC4uXENvbW1vblxkcml2ZXJzXFNUXFNUTTMyRjEweEZXTGliXHNyY1xjb3J0ZXhtM19tYWNyb19ydmRzLnM+PGNvcnRleG0zX21hY3JvX3J2ZHMucz4NCkZpbGUgMSwxLDwuLlxDb21tb25cZHJpdmVyc1xTVFxTVE0zMkYxMHhGV0xpYlxzcmNcc3RtMzJmMTB4X3VzYXJ0LmM+PHN0bTMyZjEweF91c2FydC5jPg0KRmlsZSAxLDEsPC4uXENvbW1vblxkcml2ZXJzXFNUXFNUTTMyRjEweEZXTGliXHNyY1xzdG0zMmYxMHhfZ3Bpby5jPjxzdG0zMmYxMHhfZ3Bpby5jPg0KRmlsZSAxLDEsPC4uXENvbW1vblxkcml2ZXJzXFNUXFNUTTMyRjEweEZXTGliXHNyY1xzdG0zMmYxMHhfbGliLmM+PHN0bTMyZjEweF9saWIuYz4NCkZpbGUgMSwxLDwuLlxDb21tb25cZHJpdmVyc1xTVFxTVE0zMkYxMHhGV0xpYlxzcmNcc3RtMzJmMTB4X252aWMuYz48c3RtMzJmMTB4X252aWMuYz4NCkZpbGUgMSwxLDwuLlxDb21tb25cZHJpdmVyc1xTVFxTVE0zMkYxMHhGV0xpYlxzcmNcc3RtMzJmMTB4X3JjYy5jPjxzdG0zMmYxMHhfcmNjLmM+DQpGaWxlIDEsMSw8Li5cQ29tbW9uXGRyaXZlcnNcU1RcU1RNMzJGMTB4RldMaWJcc3JjXHN0bTMyZjEweF9zcGkuYz48c3RtMzJmMTB4X3NwaS5jPg0KRmlsZSAxLDEsPC4uXENvbW1vblxkcml2ZXJzXFNUXFNUTTMyRjEweEZXTGliXHNyY1xzdG0zMmYxMHhfc3lzdGljay5jPjxzdG0zMmYxMHhfc3lzdGljay5jPg0KRmlsZSAxLDEsPC4uXENvbW1vblxkcml2ZXJzXFNUXFNUTTMyRjEweEZXTGliXHNyY1xzdG0zMmYxMHhfdGltLmM+PHN0bTMyZjEweF90aW0uYz4NCkZpbGUgMiwxLDwuXFBhclRlc3RcUGFyVGVzdC5jPjxQYXJUZXN0LmM+DQpGaWxlIDIsMSw8LlxzZXJpYWxcc2VyaWFsLmM+PHNlcmlhbC5jPg0KRmlsZSAyLDEsPC5cdGltZXJ0ZXN0LmM+PHRpbWVydGVzdC5jPg0KRmlsZSAyLDEsPC5cbWFpbi5jPjxtYWluLmM+DQpGaWxlIDIsMSw8LlxzcGlfZmxhc2guYz48c3BpX2ZsYXNoLmM+DQpGaWxlIDIsMSw8Li5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jPjxzZW10ZXN0LmM+DQpGaWxlIDIsMSw8Li5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM+PEJsb2NrUS5jPg0KRmlsZSAyLDEsPC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM+PGJsb2NrdGltLmM+DQpGaWxlIDIsMSw8Li5cQ29tbW9uXE1pbmltYWxcY29tdGVzdC5jPjxjb210ZXN0LmM+DQpGaWxlIDIsMSw8Li5cQ29tbW9uXE1pbmltYWxcZGVhdGguYz48ZGVhdGguYz4NCkZpbGUgMiwxLDwuLlxDb21tb25cTWluaW1hbFxmbGFzaC5jPjxmbGFzaC5jPg0KRmlsZSAyLDEsPC4uXENvbW1vblxNaW5pbWFsXGludGVnZXIuYz48aW50ZWdlci5jPg0KRmlsZSAyLDEsPC4uXENvbW1vblxNaW5pbWFsXFBvbGxRLmM+PFBvbGxRLmM+DQpGaWxlIDMsMSw8Li5cLi5cU291cmNlXHRhc2tzLmM+PHRhc2tzLmM+DQpGaWxlIDMsMSw8Li5cLi5cU291cmNlXGxpc3QuYz48bGlzdC5jPg0KRmlsZSAzLDEsPC4uXC4uXFNvdXJjZVxxdWV1ZS5jPjxxdWV1ZS5jPg0KRmlsZSAzLDEsPC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxSVkRTXEFSTV9DTTNccG9ydC5jPjxwb3J0LmM+DQpGaWxlIDMsMSw8Li5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF8yLmM+PGhlYXBfMi5jPg0KDQoNCk9wdGlvbnMgMSwwLDAgIC8vIFRhcmdldCAnVGFyZ2V0IDEnDQogRGV2aWNlIChTVE0zMkYxMDNWQikNCiBWZW5kb3IgKFNUTWljcm9lbGVjdHJvbmljcykNCiBDcHUgKElSQU0oMHgyMDAwMDAwMC0weDIwMDA0RkZGKSBJUk9NKDB4ODAwMDAwMC0weDgwMUZGRkYpIENMT0NLKDgwMDAwMDApIENQVVRZUEUoIkNvcnRleC1NMyIpKQ0KIEZsYXNoVXQgKCkNCiBTdHVwRiAoIlNUQVJUVVBcU1RcU1RNMzJGMTB4LnMiICgiU1RNMzIgU3RhcnR1cCBDb2RlIikpDQogRmxhc2hEUiAoVUwyQ00zKC1PMTQgLVMwIC1DMCAtTjAwKCJBUk0gQ29ydGV4LU0zIikgLUQwMCgxQkEwMDQ3NykgLUwwMCg0KSAtRk83IC1GRDIwMDAwMDAwIC1GQzgwMCAtRk4xIC1GRjBTVE0zMkYxMHhfMTI4IC1GUzA4MDAwMDAwIC1GTDAyMDAwMCkpDQogRGV2SUQgKDQyMjMpDQogUmdmIChzdG0zMmYxMHhfbGliLmgpDQogTWVtICgpDQogQyAoKQ0KIEEgKCkNCiBSTCAoKQ0KIE9IICgpDQogREJDX0lGWCAoKQ0KIERCQ19DTVMgKCkNCiBEQkNfQU1TICgpDQogREJDX0xNUyAoKQ0KIFVzZUVudj0wDQogRW52QmluICgpDQogRW52SW5jICgpDQogRW52TGliICgpDQogRW52UmVnICj/U1RcU1RNMzJGMTB4XCkNCiBPcmdSZWcgKP9TVFxTVE0zMkYxMHhcKQ0KIFRnU3RhdD0xNg0KIE91dERpciAoLlwpDQogT3V0TmFtZSAoUlRPU0RlbW8pDQogR2VuQXBwPTENCiBHZW5MaWI9MA0KIEdlbkhleD0wDQogRGVidWc9MQ0KIEJyb3dzZT0xDQogTHN0RGlyICguXCkNCiBIZXhTZWw9MQ0KIE1HMzJLPTANCiBUR01PUkU9MA0KIFJ1blVzciAwIDAgPD4NCiBSdW5Vc3IgMSAwIDw+DQogQnJ1blVzciAwIDAgPD4NCiBCcnVuVXNyIDEgMCA8Pg0KIENydW5Vc3IgMCAwIDw+DQogQ3J1blVzciAxIDAgPD4NCiBTVkNTSUQgPD4NCiBHTEZMQUdTPTE3OTANCiBBRFNGTEdBIHsgMjQzLDMxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwIH0NCiBBQ1BVVFlQICgiQ29ydGV4LU0zIikNCiBSVkRFViAoKQ0KIEFEU1RGTEdBIHsgMCwxMiwwLDIsOTksMCwwLDY2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwIH0NCiBPQ01BRFNPQ00geyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCB9DQogT0NNQURTSVJBTSB7IDAsMCwwLDAsMzIsMCw4MCwwLDAgfQ0KIE9DTUFEU0lST00geyAxLDAsMCwwLDgsMCwwLDIsMCB9DQogT0NNQURTWFJBTSB7IDAsMCwwLDAsMCwwLDAsMCwwIH0NCiBPQ1JfUlZDVCB7IDEsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsOCwwLDAsMiwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzIsMCw4MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAgfQ0KIFJWX1NUQVZFQyAoKQ0KIEFEU0NDRkxHIHsgNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwIH0NCiBBRFNDTUlTQyAoKQ0KIEFEU0NERUZOIChSVkRTX0FSTUNNM19MTTNTMTAyKQ0KIEFEU0NVREVGICgpDQogQURTQ0lOQ0QgKC4uXENPUlRFWF9TVE0zMkYxMDNfS2VpbDsuLlxDb21tb25caW5jbHVkZTsuLlwuLlxTb3VyY2VcaW5jbHVkZTsuLlxDb21tb25cZHJpdmVyc1xTVFxTVE0zMkYxMHhGV0xpYlxpbmMpDQogQURTQVNGTEcgeyAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAgfQ0KIEFEU0FNSVNDICgpDQogQURTQURFRk4gKCkNCiBBRFNBVURFRiAoKQ0KIEFEU0FJTkNEICgpDQogUHJvcEZsZCB7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCB9DQogSW5jQmxkPTENCiBBbHdheXNCdWlsZD0wDQogR2VuQXNtPTANCiBBc21Bc209MA0KIFB1YmxpY3NPbmx5PTANCiBTdG9wQ29kZT0zDQogQ3VzdEFyZ3MgKCkNCiBMaWJNb2RzICgpDQogQURTTERGRyB7IDE3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAgfQ0KIEFEU0xEVEEgKDB4MDgwMDAwMDApDQogQURTTEREQSAoMHgyMDAwMDAwMCkNCiBBRFNMRFNDICgpDQogQURTTERJQiAoKQ0KIEFEU0xESUMgKCkNCiBBRFNMRE1DICgpDQogQURTTERJRiAoKQ0KIEFEU0xERFcgKCkNCiAgT1BUREwgKFNBUk1DTTMuRExMKSgpKERBUk1TVE0uRExMKSgtcFNUTTMyRjEwM1ZCKShTQVJNQ00zLkRMTCkoKShUQVJNU1RNLkRMTCkoLXBTVE0zMkYxMDNWQikNCiAgT1BUREJHIDQ4MTI2LDEsKCkoKSgpKCkoKSgpKCkoKSgpKCkgKEJJTlxVTDJDTTMuRExMKSgpKCkoKQ0KIEZMQVNIMSB7IDksMCwwLDAsMSwwLDAsMCwxLDE2LDAsMCwwLDAsMCwwLDAsMCwwLDAgfQ0KIEZMQVNIMiAoQklOXFVMMkNNMy5ETEwpDQogRkxBU0gzICgiIiAoKSkNCiBGTEFTSDQgKCkNCkVuZE9wdA0KDQo=