IyBsaWJpY29udjogdHJhbnNsYXRpb24gdG8gQnJhemlsaWFuIFBvcnR1Z3Vlc2UgKHB0X0JSKQojIENvcHlyaWdodCAoQykgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIyBBbGV4YW5kcmUgRm9sbGUgZGUgTWVuZXplcyA8YWZtZW5lekB0ZXJyYS5jb20uYnI+LCAyMDAyLgojIGJhc2VkIG9uIHRoZSB0cmFuc2xhdGlvbiB0byBHYWxpY2lhbiAoZ2wpIGJ5CiMgSmFjb2JvIFRhcnLtbyBCYXJyZWlybyA8anRhcnJpb0B0cmFzbm8ubmV0PiwgMjAwMi4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogbGliaWNvbnYgMS44XG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogYnVnLWdudS1saWJpY29udkBnbnUub3JnXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNi0wNy0xOSAyMToxNiswMjAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDAyLTA3LTIyIDAzOjUwLTAzMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogQWxleGFuZHJlIEZvbGxlIGRlIE1lbmV6ZXMgPGFmbWVuZXpAdGVycmEuY29tLmJyPlxuIgoiTGFuZ3VhZ2UtVGVhbTogQnJhemlsaWFuIFBvcnR1Z3Vlc2UgPGxkcC1ickBiYXphci5jb25lY3RpdmEuY29tLmJyPlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojOiBzcmMvaWNvbnYuYzoxMDcKbXNnaWQgIlVzYWdlOiBpY29udiBbLWNdIFstc10gWy1mIGZyb21jb2RlXSBbLXQgdG9jb2RlXSBbZmlsZSAuLi5dIgptc2dzdHIgIlVzbzogaWNvbnYgWy1jXSBbLXNdIFstZiBmcm9tY29kZV0gWy10IHRvY29kZV0gW2FycXVpdm8gLi4uXSIKCiM6IHNyYy9pY29udi5jOjEwOQptc2dpZCAib3I6ICAgIGljb252IC1sIgptc2dzdHIgIm91OiAgaWNvbnYgLWwiCgojOiBzcmMvaWNvbnYuYzoxMTEKIywgYy1mb3JtYXQKbXNnaWQgIlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMTQKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIlVzYWdlOiAlcyBbT1BUSU9OLi4uXSBbLWYgRU5DT0RJTkddIFstdCBFTkNPRElOR10gW0lOUFVURklMRS4uLl1cbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMTgKIywgZnV6enksIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJvcjogICAgJXMgLWxcbiIKbXNnc3RyICJvdTogIGljb252IC1sIgoKIzogc3JjL2ljb252LmM6MTIzCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJDb252ZXJ0cyB0ZXh0IGZyb20gb25lIGVuY29kaW5nIHRvIGFub3RoZXIgZW5jb2RpbmcuXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTI3CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJPcHRpb25zIGNvbnRyb2xsaW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGZvcm1hdDpcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMzAKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiIKIiAgLWYgRU5DT0RJTkcsIC0tZnJvbS1jb2RlPUVOQ09ESU5HXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZW5jb2Rpbmcgb2YgdGhlIGlucHV0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTM0CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIiCiIgIC10IEVOQ09ESU5HLCAtLXRvLWNvZGU9RU5DT0RJTkdcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBlbmNvZGluZyBvZiB0aGUgb3V0cHV0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTM5CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJPcHRpb25zIGNvbnRyb2xsaW5nIGNvbnZlcnNpb24gcHJvYmxlbXM6XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTQyCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIgIC1jICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkIHVuY29udmVydGlibGUgY2hhcmFjdGVyc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE0NQojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiIgoiICAtLXVuaWNvZGUtc3Vic3Q9Rk9STUFUU1RSSU5HXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gZm9yIHVuY29udmVydGlibGUgVW5pY29kZSBjaGFyYWN0ZXJzXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTQ5CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIgIC0tYnl0ZS1zdWJzdD1GT1JNQVRTVFJJTkcgICBzdWJzdGl0dXRpb24gZm9yIHVuY29udmVydGlibGUgYnl0ZXNcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNTIKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiIKIiAgLS13aWRlY2hhci1zdWJzdD1GT1JNQVRTVFJJTkdcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiBmb3IgdW5jb252ZXJ0aWJsZSB3aWRlIGNoYXJhY3RlcnNcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNTcKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIk9wdGlvbnMgY29udHJvbGxpbmcgZXJyb3Igb3V0cHV0OlxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE2MAojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtcywgLS1zaWxlbnQgICAgICAgICAgICAgICAgc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgYWJvdXQgY29udmVyc2lvbiBwcm9ibGVtc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE2NAojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiSW5mb3JtYXRpdmUgb3V0cHV0OlxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE2NwojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtbCwgLS1saXN0ICAgICAgICAgICAgICAgICAgbGlzdCB0aGUgc3VwcG9ydGVkIGVuY29kaW5nc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE3MAojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXRcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNzMKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTc2Cm1zZ2lkICJSZXBvcnQgYnVncyB0byA8YnVnLWdudS1saWJpY29udkBnbnUub3JnPi5cbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxODYKIywgYy1mb3JtYXQKbXNnaWQgIiIKIlRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PXG4iCiJ3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS5cbiIKbXNnc3RyICIiCiJFc3RlIOkgdW0gc29mdHdhcmUgbGl2cmU7IHZlamEgbyBj82RpZ28gZm9udGUgcGFyYSBjb25kaef1ZXMgZGUgY29weXJpZ2h0LiAiCiJO429cbiIKImV4aXN0ZSBORU5IVU1BIGdhcmFudGlhOyBuZW0gbWVzbW8gYSBnYXJhbnRpYSBpbXBs7WNpdGEgZGUgQ09NRVJDSUFCSUxJREFERSAiCiJvdVxuIgoiQURFUVVBx8NPIMAgUVVBTFFVRVIgRklOQUxJREFERSBQQVJUSUNVTEFSLlxuIgoKIzogc3JjL2ljb252LmM6MTg5CiMsIGMtZm9ybWF0Cm1zZ2lkICJXcml0dGVuIGJ5ICVzLlxuIgptc2dzdHIgIkVzY3JpdG8gcG9yICVzLlxuIgoKIzogc3JjL2ljb252LmM6MjgwCiMsIGMtZm9ybWF0Cm1zZ2lkICIiCiIlcyBhcmd1bWVudDogQSBmb3JtYXQgZGlyZWN0aXZlIHdpdGggYSB2YXJpYWJsZSB3aWR0aCBpcyBub3QgYWxsb3dlZCBoZXJlLiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoyOTEKIywgYy1mb3JtYXQKbXNnaWQgIiIKIiVzIGFyZ3VtZW50OiBBIGZvcm1hdCBkaXJlY3RpdmUgd2l0aCBhIHZhcmlhYmxlIHByZWNpc2lvbiBpcyBub3QgYWxsb3dlZCAiCiJoZXJlLiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzozMDMKIywgYy1mb3JtYXQKbXNnaWQgIiVzIGFyZ3VtZW50OiBBIGZvcm1hdCBkaXJlY3RpdmUgd2l0aCBhIHNpemUgaXMgbm90IGFsbG93ZWQgaGVyZS4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MzQxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlcyBhcmd1bWVudDogVGhlIHN0cmluZyBlbmRzIGluIHRoZSBtaWRkbGUgb2YgYSBkaXJlY3RpdmUuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjM0MwojLCBjLWZvcm1hdAptc2dpZCAiJXMgYXJndW1lbnQ6IFRoZSBjaGFyYWN0ZXIgJyVjJyBpcyBub3QgYSB2YWxpZCBjb252ZXJzaW9uIHNwZWNpZmllci4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MzQ1CiMsIGMtZm9ybWF0Cm1zZ2lkICIiCiIlcyBhcmd1bWVudDogVGhlIGNoYXJhY3RlciB0aGF0IHRlcm1pbmF0ZXMgdGhlIGZvcm1hdCBkaXJlY3RpdmUgaXMgbm90IGEgIgoidmFsaWQgY29udmVyc2lvbiBzcGVjaWZpZXIuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjM1NgojLCBjLWZvcm1hdAptc2dpZCAiIgoiJXMgYXJndW1lbnQ6IFRoZSBmb3JtYXQgc3RyaW5nIGNvbnN1bWVzIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQ6ICV1IGFyZ3VtZW50LiIKbXNnaWRfcGx1cmFsICIiCiIlcyBhcmd1bWVudDogVGhlIGZvcm1hdCBzdHJpbmcgY29uc3VtZXMgbW9yZSB0aGFuIG9uZSBhcmd1bWVudDogJXUgYXJndW1lbnRzLiIKbXNnc3RyWzBdICIiCm1zZ3N0clsxXSAiIgoKIzogc3JjL2ljb252LmM6NDExCiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3QgY29udmVydCBieXRlIHN1YnN0aXR1dGlvbiB0byBVbmljb2RlOiAlcyIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzo0NDcKIywgYy1mb3JtYXQKbXNnaWQgImNhbm5vdCBjb252ZXJ0IHVuaWNvZGUgc3Vic3RpdHV0aW9uIHRvIHRhcmdldCBlbmNvZGluZzogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NDg0CiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3QgY29udmVydCBieXRlIHN1YnN0aXR1dGlvbiB0byB3aWRlIHN0cmluZzogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NTIxCiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3QgY29udmVydCB3aWRlY2hhciBzdWJzdGl0dXRpb24gdG8gdGFyZ2V0IGVuY29kaW5nOiAlcyIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzo1NTgKIywgYy1mb3JtYXQKbXNnaWQgImNhbm5vdCBjb252ZXJ0IGJ5dGUgc3Vic3RpdHV0aW9uIHRvIHRhcmdldCBlbmNvZGluZzogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NTkyIHNyYy9pY29udi5jOjYzNiBzcmMvaWNvbnYuYzo3MTAKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICIlczoldToldTogaW5jb21wbGV0ZSBjaGFyYWN0ZXIgb3Igc2hpZnQgc2VxdWVuY2UiCm1zZ3N0ciAiaWNvbnY6ICVzOiBzZXH86m5jaWEgZGUgY2FyYWN0ZXJlcyBvdSBkZXNsb2NhbWVudG9zIGluY29tcGxldGFcbiIKCiM6IHNyYy9pY29udi5jOjYyNSBzcmMvaWNvbnYuYzo3MDAKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICIlczoldToldTogY2Fubm90IGNvbnZlcnQiCm1zZ3N0ciAiaWNvbnY6ICVzOiBpbXBvc3PtdmVsIGNvbnZlcnRlclxuIgoKIzogc3JjL2ljb252LmM6NjY3IHNyYy9pY29udi5jOjczMAojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgIiVzOiV1OiV1Igptc2dzdHIgImljb252OiAlczogIgoKIzogc3JjL2ljb252LmM6NzQyCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiJXM6IEkvTyBlcnJvciIKbXNnc3RyICJpY29udjogJXM6IGVycm8gZGUgRS9TXG4iCgojOiBzcmMvaWNvbnYuYzo5MjYKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJjb252ZXJzaW9uIGZyb20gJXMgdW5zdXBwb3J0ZWQiCm1zZ3N0ciAiaWNvbnY6IGNvbnZlcnPjbyBkZSAlcyBu428g6SBzdXBvcnRhZGFcbiIKCiM6IHNyYy9pY29udi5jOjkyOAojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgImNvbnZlcnNpb24gdG8gJXMgdW5zdXBwb3J0ZWQiCm1zZ3N0ciAiaWNvbnY6IGNvbnZlcnPjbyBwYXJhICVzIG7jbyDpIHN1cG9ydGFkYVxuIgoKIzogc3JjL2ljb252LmM6OTMwCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIHVuc3VwcG9ydGVkIgptc2dzdHIgImljb252OiBjb252ZXJz428gZGUgJXMgcGFyYSAlcyBu428g6SBzdXBvcnRhZGFcbiIKCiM6IHNyYy9pY29udi5jOjkzMQojLCBjLWZvcm1hdAptc2dpZCAidHJ5ICclcyAtbCcgdG8gZ2V0IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBlbmNvZGluZ3MiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6OTg1Cm1zZ2lkICIoc3RkaW4pIgptc2dzdHIgIihzdGRpbikiCgojOiBzcmMvaWNvbnYuYzo5OTMKIywgYy1mb3JtYXQKbXNnaWQgIiVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjEwMDQKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJJL08gZXJyb3IiCm1zZ3N0ciAiaWNvbnY6IGVycm8gZGUgRS9TXG4iCgojfiBtc2dpZCAiaWNvbnY6ICVzOiAiCiN+IG1zZ3N0ciAiaWNvbnY6ICVzOiAiCgojfiBtc2dpZCAiIgojfiAiVXNhZ2U6IGljb252IFstLWJpbmFyeV0gWy1jXSBbLXNdIFstZiBmcm9tY29kZV0gWy10IHRvY29kZV0gW2ZpbGUgLi4uXSIKI34gbXNnc3RyICIiCiN+ICJVc286IGljb252IFstLWJpbmFyeV0gWy1jXSBbLXNdIFstZiBmcm9tY29kZV0gWy10IHRvY29kZV0gW2FycXVpdm8gLi4uXSIK