IyBUaGlzIHNldCBvZiB0ZXN0cyBjaGVja3MgbG9jYWwtc3BlY2lmaWMgZmVhdHVyZXMsIHVzaW5nIHRoZSAiZnJfRlIiIGxvY2FsZS4gCiMgSXQgaXMgbm90IFBlcmwtY29tcGF0aWJsZS4gV2hlbiBydW4gdmlhIFJ1blRlc3QsIHRoZSBsb2NhbGUgaXMgZWRpdGVkIHRvCiMgYmUgd2hpY2hldmVyIG9mICJmcl9GUiIsICJmcmVuY2giLCBvciAiZnIiIGlzIGZvdW5kIHRvIGV4aXN0LiBUaGVyZSBpcwojIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBjYWxsZWQgd2ludGVzdGlucHV0MyBmb3IgdXNlIG9uIFdpbmRvd3MsCiMgd2hlcmUgdGhlIGxvY2FsZSBpcyBjYWxsZWQgImZyZW5jaCIgYW5kIHRoZSB0ZXN0cyBhcmUgcnVuIHVzaW5nCiMgUnVuVGVzdC5iYXQuIAoKI2ZvcmJpZF91dGYKCi9eW1x3XSsvCiAgICAqKiogRmFpbGVycwpObyBtYXRjaAogICAgyWNvbGUKTm8gbWF0Y2gKCi9eW1x3XSsvbG9jYWxlPWZyZW5jaAogICAgyWNvbGUKIDA6IMljb2xlCgovXltcd10rLwogICAgKioqIEZhaWxlcnMKTm8gbWF0Y2gKICAgIMljb2xlCk5vIG1hdGNoCgovXltcV10rLwogICAgyWNvbGUKIDA6IFx4YzkKCi9eW1xXXSsvbG9jYWxlPWZyZW5jaAogICAgKioqIEZhaWxlcnMKIDA6ICoqKiAKICAgIMljb2xlCk5vIG1hdGNoCgovW1xiXS8KICAgIFxiCiAwOiBceDA4CiAgICAqKiogRmFpbGVycwpObyBtYXRjaAogICAgYQpObyBtYXRjaAoKL1tcYl0vbG9jYWxlPWZyZW5jaAogICAgXGIKIDA6IFx4MDgKICAgICoqKiBGYWlsZXJzCk5vIG1hdGNoCiAgICBhCk5vIG1hdGNoCgovXlx3Ky8KICAgICoqKiBGYWlsZXJzCk5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL15cdysvbG9jYWxlPWZyZW5jaAogICAgyWNvbGUKIDA6IMljb2xlCgovKC4rKVxiKC4rKS8KICAgIMljb2xlCiAwOiBceGM5Y29sZQogMTogXHhjOQogMjogY29sZQoKLyguKylcYiguKykvbG9jYWxlPWZyZW5jaAogICAgKioqIEZhaWxlcnMKIDA6ICoqKiBGYWlsZXJzCiAxOiAqKiogCiAyOiBGYWlsZXJzCiAgICDJY29sZQpObyBtYXRjaAoKL8ljb2xlL2kKICAgIMljb2xlCiAwOiBceGM5Y29sZQogICAgKioqIEZhaWxlcnMKTm8gbWF0Y2gKICAgIOljb2xlCk5vIG1hdGNoCgovyWNvbGUvaSxsb2NhbGU9ZnJlbmNoCiAgICDJY29sZQogMDogyWNvbGUKICAgIOljb2xlCiAwOiDpY29sZQoKL1x3L0kKQ2FwdHVyaW5nIHN1YnBhdHRlcm4gY291bnQgPSAwClN0YXJ0aW5nIGNvZGUgdW5pdHM6IDAgMSAyIDMgNCA1IDYgNyA4IDkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCAKICBRIFIgUyBUIFUgViBXIFggWSBaIF8gYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSB6IApTdWJqZWN0IGxlbmd0aCBsb3dlciBib3VuZCA9IDEKCi9cdy9JLGxvY2FsZT1mcmVuY2gKQ2FwdHVyaW5nIHN1YnBhdHRlcm4gY291bnQgPSAwClN0YXJ0aW5nIGNvZGUgdW5pdHM6IDAgMSAyIDMgNCA1IDYgNyA4IDkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCAKICBRIFIgUyBUIFUgViBXIFggWSBaIF8gYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSB6IAogIIMgiiCMII4gmiCcIJ4gnyCqILIgsyC1ILkguiDAIMEgwiDDIMQgxSDGIMcgyCDJIMogyyDMIM0gziDPINAg0SDSINMg1CDVINYgCiAg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SDuIO8g8CDxIPIg8yD0IPUg9iD4IPkg+iD7IPwg/SAKICD+IP8gClN1YmplY3QgbGVuZ3RoIGxvd2VyIGJvdW5kID0gMQoKIyBBbGwgcmVtYWluaW5nIHRlc3RzIGFyZSBpbiB0aGUgZnJlbmNoIGxvY2FsZSwgc28gc2V0IHRoZSBkZWZhdWx0LgoKI3BhdHRlcm4gbG9jYWxlPWZyZW5jaAoKL15bXHhjOC1ceGM5XS9pCiAgICDJY29sZQogMDogyQogICAg6WNvbGUKIDA6IOkKCi9eW1x4YzgtXHhjOV0vCiAgICDJY29sZQogMDogyQogICAgKioqIEZhaWxlcnMgCk5vIG1hdGNoCiAgICDpY29sZQpObyBtYXRjaAoKL1xXKy8KICAgID4+Plx4YWE8PDwKIDA6ID4+PgogICAgPj4+XHhiYTw8PCAKIDA6ID4+PgoKL1tcV10rLwogICAgPj4+XHhhYTw8PAogMDogPj4+CiAgICA+Pj5ceGJhPDw8IAogMDogPj4+CgovW15bOmFscGhhOl1dKy8KICAgID4+Plx4YWE8PDwKIDA6ID4+PgogICAgPj4+XHhiYTw8PCAKIDA6ID4+PgoKL1x3Ky8KICAgID4+Plx4YWE8PDwKIDA6IKoKICAgID4+Plx4YmE8PDwgCiAwOiC6CgovW1x3XSsvCiAgICA+Pj5ceGFhPDw8CiAwOiCqCiAgICA+Pj5ceGJhPDw8IAogMDogugoKL1tbOmFscGhhOl1dKy8KICAgID4+Plx4YWE8PDwKIDA6IKoKICAgID4+Plx4YmE8PDwgCiAwOiC6CiAgICAKL1tbOmFscGhhOl1dW1s6bG93ZXI6XV1bWzp1cHBlcjpdXS9JQgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBCcmEKICAgICAgICBbQS1aYS16XHg4M1x4OGFceDhjXHg4ZVx4OWFceDljXHg5ZVx4OWZceGFhXHhiMlx4YjNceGI1XHhiOVx4YmFceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZdCiAgICAgICAgW2Etelx4ODNceDlhXHg5Y1x4OWVceGFhXHhiNVx4YmFceGRmLVx4ZjZceGY4LVx4ZmZdCiAgICAgICAgW0EtWlx4OGFceDhjXHg4ZVx4OWZceGMwLVx4ZDZceGQ4LVx4ZGVdCiAgICAgICAgS2V0CiAgICAgICAgRW5kCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDYXB0dXJpbmcgc3VicGF0dGVybiBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSBaIAogIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiCDIIogjCCOIJognCCeIJ8gqiCyILMgCiAgtSC5ILogwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINgg2SDaINsg3CDdIN4g3yDgIOEg4iAKICDjIOQg5SDmIOcg6CDpIOog6yDsIO0g7iDvIPAg8SDyIPMg9CD1IPYg+CD5IPog+yD8IP0g/iD/IApTdWJqZWN0IGxlbmd0aCBsb3dlciBib3VuZCA9IDMKCiMgRW5kIG9mIHRlc3RpbnB1dDMgCg==