IyBUaGlzIHNldCBvZiB0ZXN0cyBjaGVja3MgbG9jYWwtc3BlY2lmaWMgZmVhdHVyZXMsIHVzaW5nIHRoZSAiZnJfRlIiIGxvY2FsZS4gCiMgSXQgaXMgbm90IFBlcmwtY29tcGF0aWJsZS4gV2hlbiBydW4gdmlhIFJ1blRlc3QsIHRoZSBsb2NhbGUgaXMgZWRpdGVkIHRvCiMgYmUgd2hpY2hldmVyIG9mICJmcl9GUiIsICJmcmVuY2giLCBvciAiZnIiIGlzIGZvdW5kIHRvIGV4aXN0LiBUaGVyZSBpcwojIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBjYWxsZWQgd2ludGVzdGlucHV0MyBmb3IgdXNlIG9uIFdpbmRvd3MsCiMgd2hlcmUgdGhlIGxvY2FsZSBpcyBjYWxsZWQgImZyZW5jaCIgYW5kIHRoZSB0ZXN0cyBhcmUgcnVuIHVzaW5nCiMgUnVuVGVzdC5iYXQuIAoKI2ZvcmJpZF91dGYKCi9eW1x3XSsvCiAgICAqKiogRmFpbGVycwpObyBtYXRjaAogICAgyWNvbGUKTm8gbWF0Y2gKCi9eW1x3XSsvbG9jYWxlPWZyZW5jaAogICAgyWNvbGUKIDA6IMljb2xlCgovXltcd10rLwogICAgKioqIEZhaWxlcnMKTm8gbWF0Y2gKICAgIMljb2xlCk5vIG1hdGNoCgovXltcV10rLwogICAgyWNvbGUKIDA6IFx4YzkKCi9eW1xXXSsvbG9jYWxlPWZyZW5jaAogICAgKioqIEZhaWxlcnMKIDA6ICoqKiAKICAgIMljb2xlCk5vIG1hdGNoCgovW1xiXS8KICAgIFxiCiAwOiBceDA4CiAgICAqKiogRmFpbGVycwpObyBtYXRjaAogICAgYQpObyBtYXRjaAoKL1tcYl0vbG9jYWxlPWZyZW5jaAogICAgXGIKIDA6IFx4MDgKICAgICoqKiBGYWlsZXJzCk5vIG1hdGNoCiAgICBhCk5vIG1hdGNoCgovXlx3Ky8KICAgICoqKiBGYWlsZXJzCk5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL15cdysvbG9jYWxlPWZyZW5jaAogICAgyWNvbGUKIDA6IMljb2xlCgovKC4rKVxiKC4rKS8KICAgIMljb2xlCiAwOiBceGM5Y29sZQogMTogXHhjOQogMjogY29sZQoKLyguKylcYiguKykvbG9jYWxlPWZyZW5jaAogICAgKioqIEZhaWxlcnMKIDA6ICoqKiBGYWlsZXJzCiAxOiAqKiogCiAyOiBGYWlsZXJzCiAgICDJY29sZQpObyBtYXRjaAoKL8ljb2xlL2kKICAgIMljb2xlCiAwOiBceGM5Y29sZQogICAgKioqIEZhaWxlcnMKTm8gbWF0Y2gKICAgIOljb2xlCk5vIG1hdGNoCgovyWNvbGUvaSxsb2NhbGU9ZnJlbmNoCiAgICDJY29sZQogMDogyWNvbGUKICAgIOljb2xlCiAwOiDpY29sZQoKL1x3L0kKQ2FwdHVyZSBncm91cCBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogMCAxIDIgMyA0IDUgNiA3IDggOSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIAogIFEgUiBTIFQgVSBWIFcgWCBZIFogXyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogClN1YmplY3QgbGVuZ3RoIGxvd2VyIGJvdW5kID0gMQoKL1x3L0ksbG9jYWxlPWZyZW5jaApDYXB0dXJlIGdyb3VwIGNvdW50ID0gMApTdGFydGluZyBjb2RlIHVuaXRzOiAwIDEgMiAzIDQgNSA2IDcgOCA5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgCiAgUSBSIFMgVCBVIFYgVyBYIFkgWiBfIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiAKICCDIIogjCCOIJognCCeIJ8gqiCyILMgtSC5ILogwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWIAogINgg2SDaINsg3CDdIN4g3yDgIOEg4iDjIOQg5SDmIOcg6CDpIOog6yDsIO0g7iDvIPAg8SDyIPMg9CD1IPYg+CD5IPog+yD8IP0gCiAg/iD/IApTdWJqZWN0IGxlbmd0aCBsb3dlciBib3VuZCA9IDEKCiMgQWxsIHJlbWFpbmluZyB0ZXN0cyBhcmUgaW4gdGhlIGZyZW5jaCBsb2NhbGUsIHNvIHNldCB0aGUgZGVmYXVsdC4KCiNwYXR0ZXJuIGxvY2FsZT1mcmVuY2gKCi9eW1x4YzgtXHhjOV0vaQogICAgyWNvbGUKIDA6IMkKICAgIOljb2xlCiAwOiDpCgovXltceGM4LVx4YzldLwogICAgyWNvbGUKIDA6IMkKICAgICoqKiBGYWlsZXJzIApObyBtYXRjaAogICAg6WNvbGUKTm8gbWF0Y2gKCi9cVysvCiAgICA+Pj5ceGFhPDw8CiAwOiA+Pj4KICAgID4+Plx4YmE8PDwgCiAwOiA+Pj4KCi9bXFddKy8KICAgID4+Plx4YWE8PDwKIDA6ID4+PgogICAgPj4+XHhiYTw8PCAKIDA6ID4+PgoKL1teWzphbHBoYTpdXSsvCiAgICA+Pj5ceGFhPDw8CiAwOiA+Pj4KICAgID4+Plx4YmE8PDwgCiAwOiA+Pj4KCi9cdysvCiAgICA+Pj5ceGFhPDw8CiAwOiCqCiAgICA+Pj5ceGJhPDw8IAogMDogugoKL1tcd10rLwogICAgPj4+XHhhYTw8PAogMDogqgogICAgPj4+XHhiYTw8PCAKIDA6ILoKCi9bWzphbHBoYTpdXSsvCiAgICA+Pj5ceGFhPDw8CiAwOiCqCiAgICA+Pj5ceGJhPDw8IAogMDogugogICAgCi9bWzphbHBoYTpdXVtbOmxvd2VyOl1dW1s6dXBwZXI6XV0vSUIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgQnJhCiAgICAgICAgW0EtWmEtelx4ODNceDhhXHg4Y1x4OGVceDlhXHg5Y1x4OWVceDlmXHhhYVx4YjVceGJhXHhjMC1ceGQ2XHhkOC1ceGY2XHhmOC1ceGZmXQogICAgICAgIFthLXpceDgzXHg5YVx4OWNceDllXHhhYVx4YjVceGJhXHhkZi1ceGY2XHhmOC1ceGZmXQogICAgICAgIFtBLVpceDhhXHg4Y1x4OGVceDlmXHhjMC1ceGQ2XHhkOC1ceGRlXQogICAgICAgIEtldAogICAgICAgIEVuZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2FwdHVyZSBncm91cCBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSBaIAogIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiCDIIogjCCOIJognCCeIJ8gqiC1ILogCiAgwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINgg2SDaINsg3CDdIN4g3yDgIOEg4iDjIOQg5SAKICDmIOcg6CDpIOog6yDsIO0g7iDvIPAg8SDyIPMg9CD1IPYg+CD5IPog+yD8IP0g/iD/IApTdWJqZWN0IGxlbmd0aCBsb3dlciBib3VuZCA9IDMKCiMgRW5kIG9mIHRlc3RpbnB1dDMgCg==