Ly8vIENvcHlyaWdodCBieSBTeW50YWNvcmUgTExDIKkgMjAxNi0yMDIxLiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscwovLy8gQGZpbGUgICAgICAgPHNjcjFfaXBpYy5zdmg+Ci8vLyBAYnJpZWYgICAgICBJUElDIGhlYWRlciBmaWxlCi8vLwoKYGlmbmRlZiBTQ1IxX0lQSUNfU1ZICmBkZWZpbmUgU0NSMV9JUElDX1NWSAoKYGluY2x1ZGUgInNjcjFfYXJjaF9kZXNjcmlwdGlvbi5zdmgiCgpgaWZkZWYgU0NSMV9JUElDX0VOCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQYXJhbWV0ZXJzIGRlY2xhcmF0aW9uCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpwYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVJRX1ZFQ1RfTlVNICAgICAgID0gMTY7ICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCnBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUlFfVkVDVF9XSURUSCAgICAgPSAkY2xvZzIoU0NSMV9JUlFfVkVDVF9OVU0rMSk7CnBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUlFfTElORVNfTlVNICAgICAgPSBTQ1IxX0lSUV9WRUNUX05VTTsKcGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1IxX0lSUV9MSU5FU19XSURUSCAgICA9ICRjbG9nMihTQ1IxX0lSUV9MSU5FU19OVU0pOwpwYXJhbWV0ZXIgICBsb2dpYyBbU0NSMV9JUlFfVkVDVF9XSURUSC0xOjBdIFNDUjFfSVJRX1ZPSURfVkVDVF9OVU0gID0gU0NSMV9JUlFfVkVDVF9XSURUSCcoU0NSMV9JUlFfVkVDVF9OVU0pOwpwYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVJRX0lEWF9XSURUSCAgICAgID0gJGNsb2cyKFNDUjFfSVJRX1ZFQ1RfTlVNKTsKCi8vIEFkZHJlc3MgZGVjb2RpbmcgcGFyYW1ldGVycwpwYXJhbWV0ZXIgICBsb2dpYyBbMjowXSAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVBJQ19DSVNWICAgICAgICAgID0gMydoMDsgICAgLy8gUk8KcGFyYW1ldGVyICAgbG9naWMgWzI6MF0gICAgICAgICAgICAgICAgICAgICBTQ1IxX0lQSUNfQ0lDU1IgICAgICAgICA9IDMnaDE7ICAgIC8vIHtJUCwgSUV9CnBhcmFtZXRlciAgIGxvZ2ljIFsyOjBdICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX0lQUiAgICAgICAgICAgPSAzJ2gyOyAgICAvLyBSVzFDCnBhcmFtZXRlciAgIGxvZ2ljIFsyOjBdICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX0lTVlIgICAgICAgICAgPSAzJ2gzOyAgICAvLyBSTwpwYXJhbWV0ZXIgICBsb2dpYyBbMjowXSAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVBJQ19FT0kgICAgICAgICAgID0gMydoNDsgICAgLy8gUlpXCnBhcmFtZXRlciAgIGxvZ2ljIFsyOjBdICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX1NPSSAgICAgICAgICAgPSAzJ2g1OyAgICAvLyBSWlcKcGFyYW1ldGVyICAgbG9naWMgWzI6MF0gICAgICAgICAgICAgICAgICAgICBTQ1IxX0lQSUNfSURYICAgICAgICAgICA9IDMnaDY7ICAgIC8vIFJXCnBhcmFtZXRlciAgIGxvZ2ljIFsyOjBdICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX0lDU1IgICAgICAgICAgPSAzJ2g3OyAgICAvLyBSVwoKcGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1IxX0lQSUNfSUNTUl9JUCAgICAgICA9IDA7CnBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX0lDU1JfSUUgICAgICAgPSAxOwpwYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVBJQ19JQ1NSX0lNICAgICAgID0gMjsKcGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1IxX0lQSUNfSUNTUl9JTlYgICAgICA9IDM7CnBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX0lDU1JfSVMgICAgICAgPSA0OwpwYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVBJQ19JQ1NSX1BSVl9MU0IgID0gODsKcGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1IxX0lQSUNfSUNTUl9QUlZfTVNCICA9IDk7CnBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NSMV9JUElDX0lDU1JfTE5fTFNCICAgPSAxMjsKcGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1IxX0lQSUNfSUNTUl9MTl9NU0IgICA9IFNDUjFfSVBJQ19JQ1NSX0xOX0xTQgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgU0NSMV9JUlFfTElORVNfV0lEVEg7CgpwYXJhbWV0ZXIgICBsb2dpYyBbMTowXSAgICAgICAgICAgICAgICAgICAgIFNDUjFfSVBJQ19QUlZfTSAgICAgICAgID0gMidiMTE7CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVHlwZXMgZGVjbGFyYXRpb24KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnR5cGVkZWYgZW51bSBsb2dpYyB7CiAgICBTQ1IxX0NTUjJJUElDX1JELAogICAgU0NSMV9DU1IySVBJQ19XUgpgaWZkZWYgU0NSMV9YUFJPUF9FTgogICAgLAogICAgU0NSMV9DU1IySVBJQ19FUlJPUiA9ICd4CmBlbmRpZiAvLyBTQ1IxX1hQUk9QX0VOCn0gdHlwZV9zY3IxX2NzcjJpcGljX3dyX2U7CgpgZW5kaWYgLy8gU0NSMV9JUElDX0VOCmBlbmRpZiAvLyBTQ1IxX0lQSUNfU1ZICg==