IyMjIHVWaXNpb24yIFByb2plY3QsIChDKSBLZWlsIFNvZnR3YXJlDQojIyMgRG8gbm90IG1vZGlmeSAhDQoNCiBjRXh0ICgqLmMpDQogYUV4dCAoKi5zKjsgKi5zcmM7ICouYSopDQogb0V4dCAoKi5vYmopDQogbEV4dCAoKi5saWIpDQogdEV4dCAoKi50eHQ7ICouaDsgKi5pbmMpDQogcEV4dCAoKi5wbG0pDQogQ3BwWCAoKi5jcHApDQogRGF2ZVRtIHsgMCwwLDAsMCwwLDAsMCwwIH0NCg0KVGFyZ2V0IChGcmVlUlRPU19EZW1vKSwgMHgwMDA0IC8vIFRvb2xzOiAnQVJNLUFEUycNCkdSUE9QVCAxLChEZW1vX1NvdXJjZSksMSwwLDANCkdSUE9QVCAyLChMaWJyYXJpZXMpLDAsMCwwDQpHUlBPUFQgMywoUlRPU19Tb3VyY2UpLDAsMCwwDQpHUlBPUFQgNCwodUlQX1NvdXJjZSksMCwwLDANCg0KT1BURkZGIDEsMSwxLDAsMCwwLDAsMCw8Li5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM+PEJsb2NrUS5jPiANCk9QVEZGRiAxLDIsMSwwLDAsMCwwLDAsPC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM+PGJsb2NrdGltLmM+IA0KT1BURkZGIDEsMywxLDAsMCwwLDAsMCw8Li5cQ29tbW9uXE1pbmltYWxcZGVhdGguYz48ZGVhdGguYz4gDQpPUFRGRkYgMSw0LDEsMCwwLDAsMCwwLDwuLlxDb21tb25cTWluaW1hbFxpbnRlZ2VyLmM+PGludGVnZXIuYz4gDQpPUFRGRkYgMSw1LDEsNTUzNjQ4MTI4LDAsNjcsNjcsMCw8LlxtYWluLmM+PG1haW4uYz4gDQpPUFRGRkYgMSw2LDEsMCwwLDAsMCwwLDwuXFBhclRlc3RcUGFyVGVzdC5jPjxQYXJUZXN0LmM+IA0KT1BURkZGIDEsNywxLDAsMCwwLDAsMCw8Li5cQ29tbW9uXE1pbmltYWxcUG9sbFEuYz48UG9sbFEuYz4gDQpPUFRGRkYgMSw4LDEsMCwwLDAsMCwwLDwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM+PHNlbXRlc3QuYz4gDQpPUFRGRkYgMSw5LDIsMCwwLDAsMCwwLDwuXHN0YXJ0dXBfcnZtZGsuUz48c3RhcnR1cF9ydm1kay5TPiANCk9QVEZGRiAxLDEwLDEsMCwwLDAsMCwwLDwuXHRpbWVydGVzdC5jPjx0aW1lcnRlc3QuYz4gDQpPUFRGRkYgMSwxMSw1LDgyMjA4MzU4NCwwLDAsMCwwLDwuXEZyZWVSVE9TQ29uZmlnLmg+PEZyZWVSVE9TQ29uZmlnLmg+IA0KT1BURkZGIDEsMTIsMSwwLDAsMCwwLDAsPC4uXENvbW1vblxNaW5pbWFsXEdlblFUZXN0LmM+PEdlblFUZXN0LmM+IA0KT1BURkZGIDEsMTMsMSwxLDAsMCwwLDAsPC4uXENvbW1vblxNaW5pbWFsXFFQZWVrLmM+PFFQZWVrLmM+IA0KT1BURkZGIDEsMTQsMSwwLDAsMCwwLDAsPC5cSW50UXVldWVUaW1lci5jPjxJbnRRdWV1ZVRpbWVyLmM+IA0KT1BURkZGIDEsMTUsMSwwLDAsMCwwLDAsPC4uXENvbW1vblxNaW5pbWFsXEludFF1ZXVlLmM+PEludFF1ZXVlLmM+IA0KT1BURkZGIDEsMTYsMSwwLDAsMCwwLDAsPC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM+PHJlY211dGV4LmM+IA0KT1BURkZGIDIsMTcsMSwwLDAsMCwwLDAsPC5ccml0MTI4eDk2eDQuYz48cml0MTI4eDk2eDQuYz4gDQpPUFRGRkYgMiwxOCwxLDAsMCwwLDAsMCw8Llxvc3JhbTEyOHg2NHg0LmM+PG9zcmFtMTI4eDY0eDQuYz4gDQpPUFRGRkYgMiwxOSw0LDAsMCwwLDAsMCw8Li5cQ29tbW9uXGRyaXZlcnNcTHVtaW5hcnlNaWNyb1xLZWlsXGRyaXZlcmxpYi5saWI+PGRyaXZlcmxpYi5saWI+IA0KT1BURkZGIDIsMjAsMSwwLDAsMCwwLDAsPC5cZm9ybWlrZTEyOHgxMjh4MTYuYz48Zm9ybWlrZTEyOHgxMjh4MTYuYz4gDQpPUFRGRkYgMiwyMSw0LDAsMCwwLDAsMCw8Li5cQ29tbW9uXGRyaXZlcnNcTHVtaW5hcnlNaWNyb1xLZWlsXGdybGliLmxpYj48Z3JsaWIubGliPiANCk9QVEZGRiAzLDIyLDEsMCwwLDAsMCwwLDwuLlwuLlxTb3VyY2VcdGFza3MuYz48dGFza3MuYz4gDQpPUFRGRkYgMywyMywxLDAsMCwwLDAsMCw8Li5cLi5cU291cmNlXGxpc3QuYz48bGlzdC5jPiANCk9QVEZGRiAzLDI0LDEsMCwwLDAsMCwwLDwuLlwuLlxTb3VyY2VccXVldWUuYz48cXVldWUuYz4gDQpPUFRGRkYgMywyNSwxLDAsMCwwLDAsMCw8Li5cLi5cU291cmNlXHBvcnRhYmxlXFJWRFNcQVJNX0NNM1xwb3J0LmM+PHBvcnQuYz4gDQpPUFRGRkYgMywyNiwxLDAsMCwwLDAsMCw8Li5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF8yLmM+PGhlYXBfMi5jPiANCk9QVEZGRiA0LDI3LDEsMCwwLDAsMCwwLDwuXHdlYnNlcnZlclx1SVBfVGFzay5jPjx1SVBfVGFzay5jPiANCk9QVEZGRiA0LDI4LDEsMCwwLDAsMCwwLDwuXHdlYnNlcnZlclxlbWFjLmM+PGVtYWMuYz4gDQpPUFRGRkYgNCwyOSwxLDAsMCwwLDAsMCw8Llx3ZWJzZXJ2ZXJcaHR0cGQuYz48aHR0cGQuYz4gDQpPUFRGRkYgNCwzMCwxLDAsMCwwLDAsMCw8Llx3ZWJzZXJ2ZXJcaHR0cGQtY2dpLmM+PGh0dHBkLWNnaS5jPiANCk9QVEZGRiA0LDMxLDEsMCwwLDAsMCwwLDwuXHdlYnNlcnZlclxodHRwZC1mcy5jPjxodHRwZC1mcy5jPiANCk9QVEZGRiA0LDMyLDEsMCwwLDAsMCwwLDwuXHdlYnNlcnZlclxodHRwLXN0cmluZ3MuYz48aHR0cC1zdHJpbmdzLmM+IA0KT1BURkZGIDQsMzMsMSwwLDAsMCwwLDAsPC4uXENvbW1vblxldGhlcm5ldFx1SVBcdWlwLTEuMFx1aXBcdWlwX2FycC5jPjx1aXBfYXJwLmM+IA0KT1BURkZGIDQsMzQsMSwwLDAsMCwwLDAsPC4uXENvbW1vblxldGhlcm5ldFx1SVBcdWlwLTEuMFx1aXBccHNvY2suYz48cHNvY2suYz4gDQpPUFRGRkYgNCwzNSwxLDAsMCwwLDAsMCw8Li5cQ29tbW9uXGV0aGVybmV0XHVJUFx1aXAtMS4wXHVpcFx0aW1lci5jPjx0aW1lci5jPiANCk9QVEZGRiA0LDM2LDEsMCwwLDAsMCwwLDwuLlxDb21tb25cZXRoZXJuZXRcdUlQXHVpcC0xLjBcdWlwXHVpcC5jPjx1aXAuYz4gDQoNCg0KVEFSR09QVCAxLCAoRnJlZVJUT1NfRGVtbykNCiBBRFNDTEs9ODAwMDAwMA0KICBPUFRUVCAwLDEsMSwwDQogIE9QVEhYIDEsNjU1MzUsMCwwLDANCiAgT1BUTFggNzksNjYsOCw8Llxydm1ka1w+DQogIE9QVE9YIDE2DQogIE9QVExUIDEsMSwxLDAsMSwxLDAsMSwwLDAsMCwwDQogIE9QVFhMIDEsMSwxLDEsMSwxLDEsMCwwDQogIE9QVEZMIDEsMCwxDQogIE9QVEFYIDANCiAgT1BUREwgKFNBUk1DTTMuRExMKSgpKERMTS5ETEwpKC1wTE0zUzg5NjIpKFNBUk1DTTMuRExMKSgpKFRMTS5ETEwpKC1wTE0zUzg5NjIpDQogIE9QVERCRyA0ODEyNiw0LCgpKCkoKSgpKCkoKSgpKCkoKSgpIChCSU5cbG1pZGstYWdkaS5kbGwpKCkoKSgpDQogIE9QVEtFWSAwLChETEdUQVJNKSgoMTAxMD0tMSwtMSwtMSwtMSwwKSgxMDA3PS0xLC0xLC0xLC0xLDApKDEwMDg9LTEsLTEsLTEsLTEsMCkoMTAwOT0tMSwtMSwtMSwtMSwwKSgxMTA9LTEsLTEsLTEsLTEsMCkoMTAwPS0xLC0xLC0xLC0xLDApKDEwMT0tMSwtMSwtMSwtMSwwKSgxMDI9LTEsLTEsLTEsLTEsMCkoMTAzPS0xLC0xLC0xLC0xLDApKDEwND0tMSwtMSwtMSwtMSwwKSgxMDU9LTEsLTEsLTEsLTEsMCkoMTA2PS0xLC0xLC0xLC0xLDApKDE2MT0tMSwtMSwtMSwtMSwwKSgxNjI9LTEsLTEsLTEsLTEsMCkoMTYzPS0xLC0xLC0xLC0xLDApKDE2ND0tMSwtMSwtMSwtMSwwKSgxNTA9LTEsLTEsLTEsLTEsMCkoMTUxPS0xLC0xLC0xLC0xLDApKDEwMTE9LTEsLTEsLTEsLTEsMCkoMTAxMj0tMSwtMSwtMSwtMSwwKSgxMDEzPS0xLC0xLC0xLC0xLDApKDE3MT0tMSwtMSwtMSwtMSwwKSgxNzI9LTEsLTEsLTEsLTEsMCkoMTczPS0xLC0xLC0xLC0xLDApKDEwMTQ9LTEsLTEsLTEsLTEsMCkoMTAxNj0tMSwtMSwtMSwtMSwwKSgxMzY9LTEsLTEsLTEsLTEsMCkpDQogIE9QVEtFWSAwLChBUk1EQkdGTEFHUykoKQ0KICBPUFRLRVkgMCwobG1pZGstYWdkaSkoLVUgLU80NjIyIC1TMyAtRk8yOSkNCiAgT1BUS0VZIDAsKERMR1VBUk0pKMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMhwtgd7BdYG5PYSKQ0KICBPUFRERiAweDgwDQogIE9QVExFIDw+DQogIE9QVExDIDw+DQpFbmRPcHQNCg0K