IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IG1zZ2NvbnYgb24gYSBQTyBmaWxlIHdpdGggY29udGV4dHMuCgpjYXQgPDxcRU9GID4gbWNvLXRlc3Q1LnBvCm1zZ2lkICIiCm1zZ3N0ciAiIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKCiMuIEEgbWVudSBpdGVtCm1zZ2N0eHQgIkZpbGV8Igptc2dpZCAiT3BlbiIKbXNnc3RyICJPdXZyaXIiCgojLiBBIG1lbnUgaXRlbQptc2djdHh0ICJGaWxlfCIKbXNnaWQgIk5ldyIKbXNnc3RyICJOb3V2ZWF1IgoKIy4gRGVub3RlIGEgbG9jaydzIHN0YXRlCm1zZ2N0eHQgIkxvY2sgc3RhdGUiCm1zZ2lkICJPcGVuIgptc2dzdHIgIk91dmVydCIKCiMuIERlbm90ZSBhIGxvY2sncyBzdGF0ZQptc2djdHh0ICJMb2NrIHN0YXRlIgptc2dpZCAiQ2xvc2VkIgptc2dzdHIgIkZlcm3pIgoKIy4gQSBwcm9kdWN0Cm1zZ2N0eHQgIkF1ZGkiCm1zZ2lkICJjYXIiCm1zZ3N0ciAidm9pdHVyZSIKCiMuIEEgcHJvZHVjdAptc2djdHh0ICJPY+kiCm1zZ2lkICJjb3BpZXIiCm1zZ3N0ciAicGhvdG9jb3BpZXVyIgoKI34gbXNnaWQgIlNhdmUgQXMiCiN+IG1zZ3N0ciAiRW5yZWdpc3RyZXIgbCdhcyIKCiMuIEEgbWVudSBpdGVtCiN+IG1zZ2N0eHQgIkZpbGV8IgojfiBtc2dpZCAiU2F2ZSBBcyIKI34gbXNnc3RyICJFbnJlZ2lzdHJlciBzb3VzIgpFT0YKCjogJHtNU0dDT05WPW1zZ2NvbnZ9CiR7TVNHQ09OVn0gLS10by1jb2RlPVVURi04IC1vIG1jby10ZXN0NS50bXAgbWNvLXRlc3Q1LnBvIHx8IEV4aXQgMQpMQ19BTEw9QyB0ciAtZCAnXHInIDwgbWNvLXRlc3Q1LnRtcCA+IG1jby10ZXN0NS5vdXQgfHwgRXhpdCAxCgpjYXQgPDxcRU9GID4gbWNvLXRlc3Q1Lm9rCm1zZ2lkICIiCm1zZ3N0ciAiIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojLiBBIG1lbnUgaXRlbQptc2djdHh0ICJGaWxlfCIKbXNnaWQgIk9wZW4iCm1zZ3N0ciAiT3V2cmlyIgoKIy4gQSBtZW51IGl0ZW0KbXNnY3R4dCAiRmlsZXwiCm1zZ2lkICJOZXciCm1zZ3N0ciAiTm91dmVhdSIKCiMuIERlbm90ZSBhIGxvY2sncyBzdGF0ZQptc2djdHh0ICJMb2NrIHN0YXRlIgptc2dpZCAiT3BlbiIKbXNnc3RyICJPdXZlcnQiCgojLiBEZW5vdGUgYSBsb2NrJ3Mgc3RhdGUKbXNnY3R4dCAiTG9jayBzdGF0ZSIKbXNnaWQgIkNsb3NlZCIKbXNnc3RyICJGZXJtw6kiCgojLiBBIHByb2R1Y3QKbXNnY3R4dCAiQXVkaSIKbXNnaWQgImNhciIKbXNnc3RyICJ2b2l0dXJlIgoKIy4gQSBwcm9kdWN0Cm1zZ2N0eHQgIk9jw6kiCm1zZ2lkICJjb3BpZXIiCm1zZ3N0ciAicGhvdG9jb3BpZXVyIgoKI34gbXNnaWQgIlNhdmUgQXMiCiN+IG1zZ3N0ciAiRW5yZWdpc3RyZXIgbCdhcyIKCiMuIEEgbWVudSBpdGVtCiN+IG1zZ2N0eHQgIkZpbGV8IgojfiBtc2dpZCAiU2F2ZSBBcyIKI34gbXNnc3RyICJFbnJlZ2lzdHJlciBzb3VzIgpFT0YKCjogJHtESUZGPWRpZmZ9CiR7RElGRn0gbWNvLXRlc3Q1Lm9rIG1jby10ZXN0NS5vdXQKcmVzdWx0PSQ/CgpleGl0ICRyZXN1bHQK