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cyBvdXQgb2YgcmFuZ2UAJXM6ICVzOiBiYWQgaW50ZXJwcmV0ZXIAJXM6ICVzOiBtdXN0IHVzZSBzdWJzY3JpcHQgd2hlbiBhc3NpZ25pbmcgYXNzb2NpYXRpdmUgYXJyYXkAJXM6IGFtYmlndW91cyBqb2Igc3BlYwAlczogYW1iaWd1b3VzIHJlZGlyZWN0ACVzOiBhcmd1bWVudHMgbXVzdCBiZSBwcm9jZXNzIG9yIGpvYiBJRHMAJXM6IGJhZCBuZXR3b3JrIHBhdGggc3BlY2lmaWNhdGlvbgAlczogYmFkIHN1YnN0aXR1dGlvbgAlczogYmluYXJ5IG9wZXJhdG9yIGV4cGVjdGVkACVzOiBjYW5ub3QgYXNzaWduIGxpc3QgdG8gYXJyYXkgbWVtYmVyACVzOiBjYW5ub3QgYXNzaWduIHRvIG5vbi1udW1lcmljIGluZGV4ACVzOiBjYW5ub3QgY29udmVydCBhc3NvY2lhdGl2ZSB0byBpbmRleGVkIGFycmF5ACVzOiBjYW5ub3QgY29udmVydCBpbmRleGVkIHRvIGFzc29jaWF0aXZlIGFycmF5ACVzOiBjYW5ub3QgY3JlYXRlOiAlcwAlczogY2Fubm90IGRlbGV0ZTogJXMAJXM6IGNhbm5vdCBkZXN0cm95IGFycmF5IHZhcmlhYmxlcyBpbiB0aGlzIHdheQAlczogY2Fubm90IGV4ZWN1dGUgYmluYXJ5IGZpbGUAJXM6IGNhbm5vdCBleGVjdXRlOiAlcwAlczogY2Fubm90IGdldCBsaW1pdDogJXMAJXM6IGNhbm5vdCBtb2RpZnkgbGltaXQ6ICVzACVzOiBjYW5ub3Qgb3BlbiB0ZW1wIGZpbGU6ICVzACVzOiBjYW5ub3Qgb3BlbjogJXMAJXM6IGNhbm5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZQAlczogY2Fubm90IHJlYWQ6ICVzACVzOiBjYW5ub3QgdW5zZXQAJXM6IGNhbm5vdCB1bnNldDogcmVhZG9ubHkgJXMAJXM6IGNvbW1hbmQgbm90IGZvdW5kACVzOiBlcnJvciByZXRyaWV2aW5nIGN1cnJlbnQgZGlyZWN0b3J5OiAlczogJXMKACVzOiBleHByZXNzaW9uIGVycm9yCgAlczogZmlsZSBpcyB0b28gbGFyZ2UAJXM6IGZpbGUgbm90IGZvdW5kACVzOiBmaXJzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgbm90IGAiJwAlczogaGFzaCB0YWJsZSBlbXB0eQoAJXM6IGhpc3RvcnkgZXhwYW5zaW9uIGZhaWxlZAAlczogaG9zdCB1bmtub3duACVzOiBpbGxlZ2FsIG9wdGlvbiAtLSAlYwoAJXM6IGlubGliIGZhaWxlZAAlczogaW50ZWdlciBleHByZXNzaW9uIGV4cGVjdGVkACVzOiBpbnZhbGlkIGFjdGlvbiBuYW1lACVzOiBpbnZhbGlkIGFycmF5IG9yaWdpbgAlczogaW52YWxpZCBhc3NvY2lhdGl2ZSBhcnJheSBrZXkAJXM6IGludmFsaWQgY2FsbGJhY2sgcXVhbnR1bQAlczogaW52YWxpZCBmaWxlIGRlc2NyaXB0b3Igc3BlY2lmaWNhdGlvbgAlczogaW52YWxpZCBsaW1pdCBhcmd1bWVudAAlczogaW52YWxpZCBsaW5lIGNvdW50ACVzOiBpbnZhbGlkIG9wdGlvbgAlczogaW52YWxpZCBvcHRpb24gbmFtZQAlczogaW52YWxpZCBzZXJ2aWNlACVzOiBpbnZhbGlkIHNoZWxsIG9wdGlvbiBuYW1lACVzOiBpbnZhbGlkIHNpZ25hbCBzcGVjaWZpY2F0aW9uACVzOiBpbnZhbGlkIHRpbWVvdXQgc3BlY2lmaWNhdGlvbgAlczogaXMgYSBkaXJlY3RvcnkAJXM6IGpvYiAlZCBhbHJlYWR5IGluIGJhY2tncm91bmQAJXM6IGpvYiBoYXMgdGVybWluYXRlZAAlczogbGluZSAlZDogACVzOiBtaXNzaW5nIGNvbG9uIHNlcGFyYXRvcgAlczogbm8gY29tcGxldGlvbiBzcGVjaWZpY2F0aW9uACVzOiBubyBqb2IgY29udHJvbAAlczogbm8gc3VjaCBqb2IAJXM6IG5vdCBhIGZ1bmN0aW9uACVzOiBub3QgYSByZWd1bGFyIGZpbGUAJXM6IG5vdCBhIHNoZWxsIGJ1aWx0aW4AJXM6IG5vdCBhbiBhcnJheSB2YXJpYWJsZQAlczogbm90IGR5bmFtaWNhbGx5IGxvYWRlZAAlczogbm90IGZvdW5kACVzOiBudW1lcmljIGFyZ3VtZW50IHJlcXVpcmVkACVzOiBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQAJXM6IG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCAtLSAlYwoAJXM6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQAJXM6IHJlYWRvbmx5IGZ1bmN0aW9uACVzOiByZWFkb25seSB2YXJpYWJsZQAlczogcmVzdHJpY3RlZAAlczogcmVzdHJpY3RlZDogY2Fubm90IHJlZGlyZWN0IG91dHB1dAAlczogcmVzdHJpY3RlZDogY2Fubm90IHNwZWNpZnkgYC8nIGluIGNvbW1hbmQgbmFtZXMAJXM6IHN1YnN0cmluZyBleHByZXNzaW9uIDwgMAAlczogdW5hcnkgb3BlcmF0b3IgZXhwZWN0ZWQAJXM6IHVuYm91bmQgdmFyaWFibGUAJXM6IHVzYWdlOiAAKCggZXhwcmVzc2lvbiApKQAoY29yZSBkdW1wZWQpIAAod2Qgbm93OiAlcykKAC4gZmlsZW5hbWUgW2FyZ3VtZW50c10AL2Rldi8odGNwfHVkcCkvaG9zdC9wb3J0IG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBuZXR3b3JraW5nAC90bXAgbXVzdCBiZSBhIHZhbGlkIGRpcmVjdG9yeSBuYW1lADoAPG5vIGN1cnJlbnQgZGlyZWN0b3J5PgBBQk9SVCBpbnN0cnVjdGlvbgBBYm9ydGluZy4uLgBBZGQgZGlyZWN0b3JpZXMgdG8gc3RhY2suCiAgICAKICAgIEFkZHMgYSBkaXJlY3RvcnkgdG8gdGhlIHRvcCBvZiB0aGUgZGlyZWN0b3J5IHN0YWNrLCBvciByb3RhdGVzCiAgICB0aGUgc3RhY2ssIG1ha2luZyB0aGUgbmV3IHRvcCBvZiB0aGUgc3RhY2sgdGhlIGN1cnJlbnQgd29ya2luZwogICAgZGlyZWN0b3J5LiAgV2l0aCBubyBhcmd1bWVudHMsIGV4Y2hhbmdlcyB0aGUgdG9wIHR3byBkaXJlY3Rvcmllcy4KICAgIAogICAgT3B0aW9uczoKICAgICAgLW4JU3VwcHJlc3NlcyB0aGUgbm9ybWFsIGNoYW5nZSBvZiBkaXJlY3Rvcnkgd2hlbiBhZGRpbmcKICAgIAlkaXJlY3RvcmllcyB0byB0aGUgc3RhY2ssIHNvIG9ubHkgdGhlIHN0YWNrIGlzIG1hbmlwdWxhdGVkLgogICAgCiAgICBBcmd1bWVudHM6CiAgICAgICtOCVJvdGF0ZXMgdGhlIHN0YWNrIHNvIHRoYXQgdGhlIE50aCBkaXJlY3RvcnkgKGNvdW50aW5nCiAgICAJZnJvbSB0aGUgbGVmdCBvZiB0aGUgbGlzdCBzaG93biBieSBgZGlycycsIHN0YXJ0aW5nIHdpdGgKICAgIAl6ZXJvKSBpcyBhdCB0aGUgdG9wLgogICAgCiAgICAgIC1OCVJvdGF0ZXMgdGhlIHN0YWNrIHNvIHRoYXQgdGhlIE50aCBkaXJlY3RvcnkgKGNvdW50aW5nCiAgICAJZnJvbSB0aGUgcmlnaHQgb2YgdGhlIGxpc3Qgc2hvd24gYnkgYGRpcnMnLCBzdGFydGluZyB3aXRoCiAgICAJemVybykgaXMgYXQgdGhlIHRvcC4KICAgIAogICAgICBkaXIJQWRkcyBESVIgdG8gdGhlIGRpcmVjdG9yeSBzdGFjayBhdCB0aGUgdG9wLCBtYWtpbmcgaXQgdGhlCiAgICAJbmV3IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAgICAKICAgIFRoZSBgZGlycycgYnVpbHRpbiBkaXNwbGF5cyB0aGUgZGlyZWN0b3J5IHN0YWNrLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgYW4gaW52YWxpZCBhcmd1bWVudCBpcyBzdXBwbGllZCBvciB0aGUgZGlyZWN0b3J5CiAgICBjaGFuZ2UgZmFpbHMuAEFsYXJtIChwcm9maWxlKQBBbGFybSAodmlydHVhbCkAQWxhcm0gY2xvY2sAQXJpdGhtZXRpYyBmb3IgbG9vcC4KICAgIAogICAgRXF1aXZhbGVudCB0bwogICAgCSgoIEVYUDEgKSkKICAgIAl3aGlsZSAoKCBFWFAyICkpOyBkbwogICAgCQlDT01NQU5EUwogICAgCQkoKCBFWFAzICkpCiAgICAJZG9uZQogICAgRVhQMSwgRVhQMiwgYW5kIEVYUDMgYXJlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuICBJZiBhbnkgZXhwcmVzc2lvbiBpcwogICAgb21pdHRlZCwgaXQgYmVoYXZlcyBhcyBpZiBpdCBldmFsdWF0ZXMgdG8gMS4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZC4AQlBUIHRyYWNlL3RyYXAAQmFkIHN5c3RlbSBjYWxsAEJvZ3VzIHNpZ25hbABCcm9rZW4gcGlwZQBCdXMgZXJyb3IAQ1BVIGxpbWl0AENoaWxkIGRlYXRoIG9yIHN0b3AAQ29tbW9uIHNoZWxsIHZhcmlhYmxlIG5hbWVzIGFuZCB1c2FnZS4KICAgIAogICAgQkFTSF9WRVJTSU9OCVZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoaXMgQmFzaC4KICAgIENEUEFUSAlBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaAogICAgCQlmb3IgZGlyZWN0b3JpZXMgZ2l2ZW4gYXMgYXJndW1lbnRzIHRvIGBjZCcuCiAgICBHTE9CSUdOT1JFCUEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgcGF0dGVybnMgZGVzY3JpYmluZyBmaWxlbmFtZXMgdG8KICAgIAkJYmUgaWdub3JlZCBieSBwYXRobmFtZSBleHBhbnNpb24uCiAgICBISVNURklMRQlUaGUgbmFtZSBvZiB0aGUgZmlsZSB3aGVyZSB5b3VyIGNvbW1hbmQgaGlzdG9yeSBpcyBzdG9yZWQuCiAgICBISVNURklMRVNJWkUJVGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRoaXMgZmlsZSBjYW4gY29udGFpbi4KICAgIEhJU1RTSVpFCVRoZSBtYXhpbXVtIG51bWJlciBvZiBoaXN0b3J5IGxpbmVzIHRoYXQgYSBydW5uaW5nCiAgICAJCXNoZWxsIGNhbiBhY2Nlc3MuCiAgICBIT01FCVRoZSBjb21wbGV0ZSBwYXRobmFtZSB0byB5b3VyIGxvZ2luIGRpcmVjdG9yeS4KICAgIEhPU1ROQU1FCVRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGhvc3QuCiAgICBIT1NUVFlQRQlUaGUgdHlwZSBvZiBDUFUgdGhpcyB2ZXJzaW9uIG9mIEJhc2ggaXMgcnVubmluZyB1bmRlci4KICAgIElHTk9SRUVPRglDb250cm9scyB0aGUgYWN0aW9uIG9mIHRoZSBzaGVsbCBvbiByZWNlaXB0IG9mIGFuIEVPRgogICAgCQljaGFyYWN0ZXIgYXMgdGhlIHNvbGUgaW5wdXQuICBJZiBzZXQsIHRoZW4gdGhlIHZhbHVlCiAgICAJCW9mIGl0IGlzIHRoZSBudW1iZXIgb2YgRU9GIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgc2VlbgogICAgCQlpbiBhIHJvdyBvbiBhbiBlbXB0eSBsaW5lIGJlZm9yZSB0aGUgc2hlbGwgd2lsbCBleGl0CiAgICAJCShkZWZhdWx0IDEwKS4gIFdoZW4gdW5zZXQsIEVPRiBzaWduaWZpZXMgdGhlIGVuZCBvZiBpbnB1dC4KICAgIE1BQ0hUWVBFCUEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgc3lzdGVtIEJhc2ggaXMgcnVubmluZyBvbi4KICAgIE1BSUxDSEVDSwlIb3cgb2Z0ZW4sIGluIHNlY29uZHMsIEJhc2ggY2hlY2tzIGZvciBuZXcgbWFpbC4KICAgIE1BSUxQQVRICUEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZW5hbWVzIHdoaWNoIEJhc2ggY2hlY2tzCiAgICAJCWZvciBuZXcgbWFpbC4KICAgIE9TVFlQRQlUaGUgdmVyc2lvbiBvZiBVbml4IHRoaXMgdmVyc2lvbiBvZiBCYXNoIGlzIHJ1bm5pbmcgb24uCiAgICBQQVRICUEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHdoZW4KICAgIAkJbG9va2luZyBmb3IgY29tbWFuZHMuCiAgICBQUk9NUFRfQ09NTUFORAlBIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBwcmludGluZyBvZiBlYWNoCiAgICAJCXByaW1hcnkgcHJvbXB0LgogICAgUFMxCQlUaGUgcHJpbWFyeSBwcm9tcHQgc3RyaW5nLgogICAgUFMyCQlUaGUgc2Vjb25kYXJ5IHByb21wdCBzdHJpbmcuCiAgICBQV0QJCVRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgIFNIRUxMT1BUUwlBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGVuYWJsZWQgc2hlbGwgb3B0aW9ucy4KICAgIFRFUk0JVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGVybWluYWwgdHlwZS4KICAgIFRJTUVGT1JNQVQJVGhlIG91dHB1dCBmb3JtYXQgZm9yIHRpbWluZyBzdGF0aXN0aWNzIGRpc3BsYXllZCBieSB0aGUKICAgIAkJYHRpbWUnIHJlc2VydmVkIHdvcmQuCiAgICBhdXRvX3Jlc3VtZQlOb24tbnVsbCBtZWFucyBhIGNvbW1hbmQgd29yZCBhcHBlYXJpbmcgb24gYSBsaW5lIGJ5CiAgICAJCWl0c2VsZiBpcyBmaXJzdCBsb29rZWQgZm9yIGluIHRoZSBsaXN0IG9mIGN1cnJlbnRseQogICAgCQlzdG9wcGVkIGpvYnMuICBJZiBmb3VuZCB0aGVyZSwgdGhhdCBqb2IgaXMgZm9yZWdyb3VuZGVkLgogICAgCQlBIHZhbHVlIG9mIGBleGFjdCcgbWVhbnMgdGhhdCB0aGUgY29tbWFuZCB3b3JkIG11c3QKICAgIAkJZXhhY3RseSBtYXRjaCBhIGNvbW1hbmQgaW4gdGhlIGxpc3Qgb2Ygc3RvcHBlZCBqb2JzLiAgQQogICAgCQl2YWx1ZSBvZiBgc3Vic3RyaW5nJyBtZWFucyB0aGF0IHRoZSBjb21tYW5kIHdvcmQgbXVzdAogICAgCQltYXRjaCBhIHN1YnN0cmluZyBvZiB0aGUgam9iLiAgQW55IG90aGVyIHZhbHVlIG1lYW5zIHRoYXQKICAgIAkJdGhlIGNvbW1hbmQgbXVzdCBiZSBhIHByZWZpeCBvZiBhIHN0b3BwZWQgam9iLgogICAgaGlzdGNoYXJzCUNoYXJhY3RlcnMgY29udHJvbGxpbmcgaGlzdG9yeSBleHBhbnNpb24gYW5kIHF1aWNrCiAgICAJCXN1YnN0aXR1dGlvbi4gIFRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgdGhlIGhpc3RvcnkKICAgIAkJc3Vic3RpdHV0aW9uIGNoYXJhY3RlciwgdXN1YWxseSBgIScuICBUaGUgc2Vjb25kIGlzCiAgICAJCXRoZSBgcXVpY2sgc3Vic3RpdHV0aW9uJyBjaGFyYWN0ZXIsIHVzdWFsbHkgYF4nLiAgVGhlCiAgICAJCXRoaXJkIGlzIHRoZSBgaGlzdG9yeSBjb21tZW50JyBjaGFyYWN0ZXIsIHVzdWFsbHkgYCMnLgogICAgSElTVElHTk9SRQlBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIHBhdHRlcm5zIHVzZWQgdG8gZGVjaWRlIHdoaWNoCiAgICAJCWNvbW1hbmRzIHNob3VsZCBiZSBzYXZlZCBvbiB0aGUgaGlzdG9yeSBsaXN0LgoAQ29udGludWUAQ3JlYXRlIGEgY29wcm9jZXNzIG5hbWVkIE5BTUUuCiAgICAKICAgIEV4ZWN1dGUgQ09NTUFORCBhc3luY2hyb25vdXNseSwgd2l0aCB0aGUgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZAogICAgaW5wdXQgb2YgdGhlIGNvbW1hbmQgY29ubmVjdGVkIHZpYSBhIHBpcGUgdG8gZmlsZSBkZXNjcmlwdG9ycyBhc3NpZ25lZAogICAgdG8gaW5kaWNlcyAwIGFuZCAxIG9mIGFuIGFycmF5IHZhcmlhYmxlIE5BTUUgaW4gdGhlIGV4ZWN1dGluZyBzaGVsbC4KICAgIFRoZSBkZWZhdWx0IE5BTUUgaXMgIkNPUFJPQyIuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgQ09NTUFORC4ARGVmaW5lIG9yIGRpc3BsYXkgYWxpYXNlcy4KICAgIAogICAgV2l0aG91dCBhcmd1bWVudHMsIGBhbGlhcycgcHJpbnRzIHRoZSBsaXN0IG9mIGFsaWFzZXMgaW4gdGhlIHJldXNhYmxlCiAgICBmb3JtIGBhbGlhcyBOQU1FPVZBTFVFJyBvbiBzdGFuZGFyZCBvdXRwdXQuCiAgICAKICAgIE90aGVyd2lzZSwgYW4gYWxpYXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBOQU1FIHdob3NlIFZBTFVFIGlzIGdpdmVuLgogICAgQSB0cmFpbGluZyBzcGFjZSBpbiBWQUxVRSBjYXVzZXMgdGhlIG5leHQgd29yZCB0byBiZSBjaGVja2VkIGZvcgogICAgYWxpYXMgc3Vic3RpdHV0aW9uIHdoZW4gdGhlIGFsaWFzIGlzIGV4cGFuZGVkLgogICAgCiAgICBPcHRpb25zOgogICAgICAtcAlQcmludCBhbGwgZGVmaW5lZCBhbGlhc2VzIGluIGEgcmV1c2FibGUgZm9ybWF0CiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgYWxpYXMgcmV0dXJucyB0cnVlIHVubGVzcyBhIE5BTUUgaXMgc3VwcGxpZWQgZm9yIHdoaWNoIG5vIGFsaWFzIGhhcyBiZWVuCiAgICBkZWZpbmVkLgBEZWZpbmUgc2hlbGwgZnVuY3Rpb24uCiAgICAKICAgIENyZWF0ZSBhIHNoZWxsIGZ1bmN0aW9uIG5hbWVkIE5BTUUuICBXaGVuIGludm9rZWQgYXMgYSBzaW1wbGUgY29tbWFuZCwKICAgIE5BTUUgcnVucyBDT01NQU5EcyBpbiB0aGUgY2FsbGluZyBzaGVsbCdzIGNvbnRleHQuICBXaGVuIE5BTUUgaXMgaW52b2tlZCwKICAgIHRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gYXMgJDEuLi4kbiwgYW5kIHRoZSBmdW5jdGlvbidzCiAgICBuYW1lIGlzIGluICRGVU5DTkFNRS4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3MgdW5sZXNzIE5BTUUgaXMgcmVhZG9ubHkuAERpc3BsYXkgZGlyZWN0b3J5IHN0YWNrLgogICAgCiAgICBEaXNwbGF5IHRoZSBsaXN0IG9mIGN1cnJlbnRseSByZW1lbWJlcmVkIGRpcmVjdG9yaWVzLiAgRGlyZWN0b3JpZXMKICAgIGZpbmQgdGhlaXIgd2F5IG9udG8gdGhlIGxpc3Qgd2l0aCB0aGUgYHB1c2hkJyBjb21tYW5kOyB5b3UgY2FuIGdldAogICAgYmFjayB1cCB0aHJvdWdoIHRoZSBsaXN0IHdpdGggdGhlIGBwb3BkJyBjb21tYW5kLgogICAgCiAgICBPcHRpb25zOgogICAgICAtYwljbGVhciB0aGUgZGlyZWN0b3J5IHN0YWNrIGJ5IGRlbGV0aW5nIGFsbCBvZiB0aGUgZWxlbWVudHMKICAgICAgLWwJZG8gbm90IHByaW50IHRpbGRlLXByZWZpeGVkIHZlcnNpb25zIG9mIGRpcmVjdG9yaWVzIHJlbGF0aXZlCiAgICAJdG8geW91ciBob21lIGRpcmVjdG9yeQogICAgICAtcAlwcmludCB0aGUgZGlyZWN0b3J5IHN0YWNrIHdpdGggb25lIGVudHJ5IHBlciBsaW5lCiAgICAgIC12CXByaW50IHRoZSBkaXJlY3Rvcnkgc3RhY2sgd2l0aCBvbmUgZW50cnkgcGVyIGxpbmUgcHJlZml4ZWQKICAgIAl3aXRoIGl0cyBwb3NpdGlvbiBpbiB0aGUgc3RhY2sKICAgIAogICAgQXJndW1lbnRzOgogICAgICArTglEaXNwbGF5cyB0aGUgTnRoIGVudHJ5IGNvdW50aW5nIGZyb20gdGhlIGxlZnQgb2YgdGhlIGxpc3Qgc2hvd24gYnkKICAgIAlkaXJzIHdoZW4gaW52b2tlZCB3aXRob3V0IG9wdGlvbnMsIHN0YXJ0aW5nIHdpdGggemVyby4KICAgIAogICAgICAtTglEaXNwbGF5cyB0aGUgTnRoIGVudHJ5IGNvdW50aW5nIGZyb20gdGhlIHJpZ2h0IG9mIHRoZSBsaXN0IHNob3duIGJ5CiAgICAJZGlycyB3aGVuIGludm9rZWQgd2l0aG91dCBvcHRpb25zLCBzdGFydGluZyB3aXRoIHplcm8uCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyBzdWNjZXNzIHVubGVzcyBhbiBpbnZhbGlkIG9wdGlvbiBpcyBzdXBwbGllZCBvciBhbiBlcnJvciBvY2N1cnMuAERpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYnVpbHRpbiBjb21tYW5kcy4KICAgIAogICAgRGlzcGxheXMgYnJpZWYgc3VtbWFyaWVzIG9mIGJ1aWx0aW4gY29tbWFuZHMuICBJZiBQQVRURVJOIGlzCiAgICBzcGVjaWZpZWQsIGdpdmVzIGRldGFpbGVkIGhlbHAgb24gYWxsIGNvbW1hbmRzIG1hdGNoaW5nIFBBVFRFUk4sCiAgICBvdGhlcndpc2UgdGhlIGxpc3Qgb2YgaGVscCB0b3BpY3MgaXMgcHJpbnRlZC4KICAgIAogICAgT3B0aW9uczoKICAgICAgLWQJb3V0cHV0IHNob3J0IGRlc2NyaXB0aW9uIGZvciBlYWNoIHRvcGljCiAgICAgIC1tCWRpc3BsYXkgdXNhZ2UgaW4gcHNldWRvLW1hbnBhZ2UgZm9ybWF0CiAgICAgIC1zCW91dHB1dCBvbmx5IGEgc2hvcnQgdXNhZ2Ugc3lub3BzaXMgZm9yIGVhY2ggdG9waWMgbWF0Y2hpbmcKICAgIAlQQVRURVJOCiAgICAKICAgIEFyZ3VtZW50czoKICAgICAgUEFUVEVSTglQYXR0ZXJuIHNwZWNpZml5aW5nIGEgaGVscCB0b3BpYwogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgUEFUVEVSTiBpcyBub3QgZm91bmQgb3IgYW4gaW52YWxpZCBvcHRpb24gaXMgZ2l2ZW4uAERpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgY29tbWFuZCB0eXBlLgogICAgCiAgICBGb3IgZWFjaCBOQU1FLCBpbmRpY2F0ZSBob3cgaXQgd291bGQgYmUgaW50ZXJwcmV0ZWQgaWYgdXNlZCBhcyBhCiAgICBjb21tYW5kIG5hbWUuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1hCWRpc3BsYXkgYWxsIGxvY2F0aW9ucyBjb250YWluaW5nIGFuIGV4ZWN1dGFibGUgbmFtZWQgTkFNRTsKICAgIAlpbmNsdWRlcyBhbGlhc2VzLCBidWlsdGlucywgYW5kIGZ1bmN0aW9ucywgaWYgYW5kIG9ubHkgaWYKICAgIAl0aGUgYC1wJyBvcHRpb24gaXMgbm90IGFsc28gdXNlZAogICAgICAtZglzdXBwcmVzcyBzaGVsbCBmdW5jdGlvbiBsb29rdXAKICAgICAgLVAJZm9yY2UgYSBQQVRIIHNlYXJjaCBmb3IgZWFjaCBOQU1FLCBldmVuIGlmIGl0IGlzIGFuIGFsaWFzLAogICAgCWJ1aWx0aW4sIG9yIGZ1bmN0aW9uLCBhbmQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZGlzayBmaWxlCiAgICAJdGhhdCB3b3VsZCBiZSBleGVjdXRlZAogICAgICAtcAlyZXR1cm5zIGVpdGhlciB0aGUgbmFtZSBvZiB0aGUgZGlzayBmaWxlIHRoYXQgd291bGQgYmUgZXhlY3V0ZWQsCiAgICAJb3Igbm90aGluZyBpZiBgdHlwZSAtdCBOQU1FJyB3b3VsZCBub3QgcmV0dXJuIGBmaWxlJy4KICAgICAgLXQJb3V0cHV0IGEgc2luZ2xlIHdvcmQgd2hpY2ggaXMgb25lIG9mIGBhbGlhcycsIGBrZXl3b3JkJywKICAgIAlgZnVuY3Rpb24nLCBgYnVpbHRpbicsIGBmaWxlJyBvciBgJywgaWYgTkFNRSBpcyBhbiBhbGlhcywgc2hlbGwKICAgIAlyZXNlcnZlZCB3b3JkLCBzaGVsbCBmdW5jdGlvbiwgc2hlbGwgYnVpbHRpbiwgZGlzayBmaWxlLCBvciBub3QKICAgIAlmb3VuZCwgcmVzcGVjdGl2ZWx5CiAgICAKICAgIEFyZ3VtZW50czoKICAgICAgTkFNRQlDb21tYW5kIG5hbWUgdG8gYmUgaW50ZXJwcmV0ZWQuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyBzdWNjZXNzIGlmIGFsbCBvZiB0aGUgTkFNRXMgYXJlIGZvdW5kOyBmYWlscyBpZiBhbnkgYXJlIG5vdCBmb3VuZC4ARGlzcGxheSBvciBleGVjdXRlIGNvbW1hbmRzIGZyb20gdGhlIGhpc3RvcnkgbGlzdC4KICAgIAogICAgZmMgaXMgdXNlZCB0byBsaXN0IG9yIGVkaXQgYW5kIHJlLWV4ZWN1dGUgY29tbWFuZHMgZnJvbSB0aGUgaGlzdG9yeSBsaXN0LgogICAgRklSU1QgYW5kIExBU1QgY2FuIGJlIG51bWJlcnMgc3BlY2lmeWluZyB0aGUgcmFuZ2UsIG9yIEZJUlNUIGNhbiBiZSBhCiAgICBzdHJpbmcsIHdoaWNoIG1lYW5zIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kIGJlZ2lubmluZyB3aXRoIHRoYXQKICAgIHN0cmluZy4KICAgIAogICAgT3B0aW9uczoKICAgICAgLWUgRU5BTUUJc2VsZWN0IHdoaWNoIGVkaXRvciB0byB1c2UuICBEZWZhdWx0IGlzIEZDRURJVCwgdGhlbiBFRElUT1IsCiAgICAJCXRoZW4gdmkKICAgICAgLWwgCWxpc3QgbGluZXMgaW5zdGVhZCBvZiBlZGl0aW5nCiAgICAgIC1uCW9taXQgbGluZSBudW1iZXJzIHdoZW4gbGlzdGluZwogICAgICAtcglyZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgbGluZXMgKG5ld2VzdCBsaXN0ZWQgZmlyc3QpCiAgICAKICAgIFdpdGggdGhlIGBmYyAtcyBbcGF0PXJlcCAuLi5dIFtjb21tYW5kXScgZm9ybWF0LCBDT01NQU5EIGlzCiAgICByZS1leGVjdXRlZCBhZnRlciB0aGUgc3Vic3RpdHV0aW9uIE9MRD1ORVcgaXMgcGVyZm9ybWVkLgogICAgCiAgICBBIHVzZWZ1bCBhbGlhcyB0byB1c2Ugd2l0aCB0aGlzIGlzIHI9J2ZjIC1zJywgc28gdGhhdCB0eXBpbmcgYHIgY2MnCiAgICBydW5zIHRoZSBsYXN0IGNvbW1hbmQgYmVnaW5uaW5nIHdpdGggYGNjJyBhbmQgdHlwaW5nIGByJyByZS1leGVjdXRlcwogICAgdGhlIGxhc3QgY29tbWFuZC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3Mgb3Igc3RhdHVzIG9mIGV4ZWN1dGVkIGNvbW1hbmQ7IG5vbi16ZXJvIGlmIGFuIGVycm9yIG9jY3Vycy4ARGlzcGxheSBvciBtYW5pcHVsYXRlIHRoZSBoaXN0b3J5IGxpc3QuCiAgICAKICAgIERpc3BsYXkgdGhlIGhpc3RvcnkgbGlzdCB3aXRoIGxpbmUgbnVtYmVycywgcHJlZml4aW5nIGVhY2ggbW9kaWZpZWQKICAgIGVudHJ5IHdpdGggYSBgKicuICBBbiBhcmd1bWVudCBvZiBOIGxpc3RzIG9ubHkgdGhlIGxhc3QgTiBlbnRyaWVzLgogICAgCiAgICBPcHRpb25zOgogICAgICAtYwljbGVhciB0aGUgaGlzdG9yeSBsaXN0IGJ5IGRlbGV0aW5nIGFsbCBvZiB0aGUgZW50cmllcwogICAgICAtZCBvZmZzZXQJZGVsZXRlIHRoZSBoaXN0b3J5IGVudHJ5IGF0IG9mZnNldCBPRkZTRVQuCiAgICAKICAgICAgLWEJYXBwZW5kIGhpc3RvcnkgbGluZXMgZnJvbSB0aGlzIHNlc3Npb24gdG8gdGhlIGhpc3RvcnkgZmlsZQogICAgICAtbglyZWFkIGFsbCBoaXN0b3J5IGxpbmVzIG5vdCBhbHJlYWR5IHJlYWQgZnJvbSB0aGUgaGlzdG9yeSBmaWxlCiAgICAgIC1yCXJlYWQgdGhlIGhpc3RvcnkgZmlsZSBhbmQgYXBwZW5kIHRoZSBjb250ZW50cyB0byB0aGUgaGlzdG9yeQogICAgCWxpc3QKICAgICAgLXcJd3JpdGUgdGhlIGN1cnJlbnQgaGlzdG9yeSB0byB0aGUgaGlzdG9yeSBmaWxlCiAgICAJYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBoaXN0b3J5IGxpc3QKICAgIAogICAgICAtcAlwZXJmb3JtIGhpc3RvcnkgZXhwYW5zaW9uIG9uIGVhY2ggQVJHIGFuZCBkaXNwbGF5IHRoZSByZXN1bHQKICAgIAl3aXRob3V0IHN0b3JpbmcgaXQgaW4gdGhlIGhpc3RvcnkgbGlzdAogICAgICAtcwlhcHBlbmQgdGhlIEFSR3MgdG8gdGhlIGhpc3RvcnkgbGlzdCBhcyBhIHNpbmdsZSBlbnRyeQogICAgCiAgICBJZiBGSUxFTkFNRSBpcyBnaXZlbiwgaXQgaXMgdXNlZCBhcyB0aGUgaGlzdG9yeSBmaWxlLiAgT3RoZXJ3aXNlLAogICAgaWYgJEhJU1RGSUxFIGhhcyBhIHZhbHVlLCB0aGF0IGlzIHVzZWQsIGVsc2Ugfi8uYmFzaF9oaXN0b3J5LgogICAgCiAgICBJZiB0aGUgJEhJU1RUSU1FRk9STUFUIHZhcmlhYmxlIGlzIHNldCBhbmQgbm90IG51bGwsIGl0cyB2YWx1ZSBpcyB1c2VkCiAgICBhcyBhIGZvcm1hdCBzdHJpbmcgZm9yIHN0cmZ0aW1lKDMpIHRvIHByaW50IHRoZSB0aW1lIHN0YW1wIGFzc29jaWF0ZWQKICAgIHdpdGggZWFjaCBkaXNwbGF5ZWQgaGlzdG9yeSBlbnRyeS4gIE5vIHRpbWUgc3RhbXBzIGFyZSBwcmludGVkIG90aGVyd2lzZS4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3MgdW5sZXNzIGFuIGludmFsaWQgb3B0aW9uIGlzIGdpdmVuIG9yIGFuIGVycm9yIG9jY3Vycy4ARGlzcGxheSBvciBzZXQgZmlsZSBtb2RlIG1hc2suCiAgICAKICAgIFNldHMgdGhlIHVzZXIgZmlsZS1jcmVhdGlvbiBtYXNrIHRvIE1PREUuICBJZiBNT0RFIGlzIG9taXR0ZWQsIHByaW50cwogICAgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1hc2suCiAgICAKICAgIElmIE1PREUgYmVnaW5zIHdpdGggYSBkaWdpdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gb2N0YWwgbnVtYmVyOwogICAgb3RoZXJ3aXNlIGl0IGlzIGEgc3ltYm9saWMgbW9kZSBzdHJpbmcgbGlrZSB0aGF0IGFjY2VwdGVkIGJ5IGNobW9kKDEpLgogICAgCiAgICBPcHRpb25zOgogICAgICAtcAlpZiBNT0RFIGlzIG9taXR0ZWQsIG91dHB1dCBpbiBhIGZvcm0gdGhhdCBtYXkgYmUgcmV1c2VkIGFzIGlucHV0CiAgICAgIC1TCW1ha2VzIHRoZSBvdXRwdXQgc3ltYm9saWM7IG90aGVyd2lzZSBhbiBvY3RhbCBudW1iZXIgaXMgb3V0cHV0CiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyBzdWNjZXNzIHVubGVzcyBNT0RFIGlzIGludmFsaWQgb3IgYW4gaW52YWxpZCBvcHRpb24gaXMgZ2l2ZW4uAERpc3BsYXkgcG9zc2libGUgY29tcGxldGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zLgogICAgCiAgICBJbnRlbmRlZCB0byBiZSB1c2VkIGZyb20gd2l0aGluIGEgc2hlbGwgZnVuY3Rpb24gZ2VuZXJhdGluZyBwb3NzaWJsZQogICAgY29tcGxldGlvbnMuICBJZiB0aGUgb3B0aW9uYWwgV09SRCBhcmd1bWVudCBpcyBzdXBwbGllZCwgbWF0Y2hlcyBhZ2FpbnN0CiAgICBXT1JEIGFyZSBnZW5lcmF0ZWQuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyBzdWNjZXNzIHVubGVzcyBhbiBpbnZhbGlkIG9wdGlvbiBpcyBzdXBwbGllZCBvciBhbiBlcnJvciBvY2N1cnMuAERpc3BsYXkgcHJvY2VzcyB0aW1lcy4KICAgIAogICAgUHJpbnRzIHRoZSBhY2N1bXVsYXRlZCB1c2VyIGFuZCBzeXN0ZW0gdGltZXMgZm9yIHRoZSBzaGVsbCBhbmQgYWxsIG9mIGl0cwogICAgY2hpbGQgcHJvY2Vzc2VzLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIEFsd2F5cyBzdWNjZWVkcy4ARGlzcGxheSB0aGUgbGlzdCBvZiBjdXJyZW50bHkgcmVtZW1iZXJlZCBkaXJlY3Rvcmllcy4gIERpcmVjdG9yaWVzCiAgICBmaW5kIHRoZWlyIHdheSBvbnRvIHRoZSBsaXN0IHdpdGggdGhlIGBwdXNoZCcgY29tbWFuZDsgeW91IGNhbiBnZXQKICAgIGJhY2sgdXAgdGhyb3VnaCB0aGUgbGlzdCB3aXRoIHRoZSBgcG9wZCcgY29tbWFuZC4KICAgIAogICAgT3B0aW9uczoKICAgICAgLWMJY2xlYXIgdGhlIGRpcmVjdG9yeSBzdGFjayBieSBkZWxldGluZyBhbGwgb2YgdGhlIGVsZW1lbnRzCiAgICAgIC1sCWRvIG5vdCBwcmludCB0aWxkZS1wcmVmaXhlZCB2ZXJzaW9ucyBvZiBkaXJlY3RvcmllcyByZWxhdGl2ZQogICAgCXRvIHlvdXIgaG9tZSBkaXJlY3RvcnkKICAgICAgLXAJcHJpbnQgdGhlIGRpcmVjdG9yeSBzdGFjayB3aXRoIG9uZSBlbnRyeSBwZXIgbGluZQogICAgICAtdglwcmludCB0aGUgZGlyZWN0b3J5IHN0YWNrIHdpdGggb25lIGVudHJ5IHBlciBsaW5lIHByZWZpeGVkCiAgICAJd2l0aCBpdHMgcG9zaXRpb24gaW4gdGhlIHN0YWNrCiAgICAKICAgIEFyZ3VtZW50czoKICAgICAgK04JRGlzcGxheXMgdGhlIE50aCBlbnRyeSBjb3VudGluZyBmcm9tIHRoZSBsZWZ0IG9mIHRoZSBsaXN0IHNob3duIGJ5CiAgICAJZGlycyB3aGVuIGludm9rZWQgd2l0aG91dCBvcHRpb25zLCBzdGFydGluZyB3aXRoIHplcm8uCiAgICAKICAgICAgLU4JRGlzcGxheXMgdGhlIE50aCBlbnRyeSBjb3VudGluZyBmcm9tIHRoZSByaWdodCBvZiB0aGUgbGlzdCBzaG93biBieQoJZGlycyB3aGVuIGludm9rZWQgd2l0aG91dCBvcHRpb25zLCBzdGFydGluZyB3aXRoIHplcm8uAERvbmUARG9uZSglZCkARU1UIGluc3RydWN0aW9uAEVuYWJsZSBhbmQgZGlzYWJsZSBzaGVsbCBidWlsdGlucy4KICAgIAogICAgRW5hYmxlcyBhbmQgZGlzYWJsZXMgYnVpbHRpbiBzaGVsbCBjb21tYW5kcy4gIERpc2FibGluZyBhbGxvd3MgeW91IHRvCiAgICBleGVjdXRlIGEgZGlzayBjb21tYW5kIHdoaWNoIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgc2hlbGwgYnVpbHRpbgogICAgd2l0aG91dCB1c2luZyBhIGZ1bGwgcGF0aG5hbWUuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1hCXByaW50IGEgbGlzdCBvZiBidWlsdGlucyBzaG93aW5nIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgZW5hYmxlZAogICAgICAtbglkaXNhYmxlIGVhY2ggTkFNRSBvciBkaXNwbGF5IGEgbGlzdCBvZiBkaXNhYmxlZCBidWlsdGlucwogICAgICAtcAlwcmludCB0aGUgbGlzdCBvZiBidWlsdGlucyBpbiBhIHJldXNhYmxlIGZvcm1hdAogICAgICAtcwlwcmludCBvbmx5IHRoZSBuYW1lcyBvZiBQb3NpeCBgc3BlY2lhbCcgYnVpbHRpbnMKICAgIAogICAgT3B0aW9ucyBjb250cm9sbGluZyBkeW5hbWljIGxvYWRpbmc6CiAgICAgIC1mCUxvYWQgYnVpbHRpbiBOQU1FIGZyb20gc2hhcmVkIG9iamVjdCBGSUxFTkFNRQogICAgICAtZAlSZW1vdmUgYSBidWlsdGluIGxvYWRlZCB3aXRoIC1mCiAgICAKICAgIFdpdGhvdXQgb3B0aW9ucywgZWFjaCBOQU1FIGlzIGVuYWJsZWQuCiAgICAKICAgIFRvIHVzZSB0aGUgYHRlc3QnIGZvdW5kIGluICRQQVRIIGluc3RlYWQgb2YgdGhlIHNoZWxsIGJ1aWx0aW4KICAgIHZlcnNpb24sIHR5cGUgYGVuYWJsZSAtbiB0ZXN0Jy4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3MgdW5sZXNzIE5BTUUgaXMgbm90IGEgc2hlbGwgYnVpbHRpbiBvciBhbiBlcnJvciBvY2N1cnMuAEV2YWx1YXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbi4KICAgIAogICAgVGhlIEVYUFJFU1NJT04gaXMgZXZhbHVhdGVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgZm9yIGFyaXRobWV0aWMKICAgIGV2YWx1YXRpb24uICBFcXVpdmFsZW50IHRvICJsZXQgRVhQUkVTU0lPTiIuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyAxIGlmIEVYUFJFU1NJT04gZXZhbHVhdGVzIHRvIDA7IHJldHVybnMgMCBvdGhlcndpc2UuAEV2YWx1YXRlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uCiAgICAKICAgIFRoaXMgaXMgYSBzeW5vbnltIGZvciB0aGUgInRlc3QiIGJ1aWx0aW4sIGJ1dCB0aGUgbGFzdCBhcmd1bWVudCBtdXN0CiAgICBiZSBhIGxpdGVyYWwgYF0nLCB0byBtYXRjaCB0aGUgb3BlbmluZyBgWycuAEV4ZWN1dGUgYSBzaW1wbGUgY29tbWFuZCBvciBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGNvbW1hbmRzLgogICAgCiAgICBSdW5zIENPTU1BTkQgd2l0aCBBUkdTIHN1cHByZXNzaW5nICBzaGVsbCBmdW5jdGlvbiBsb29rdXAsIG9yIGRpc3BsYXkKICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgQ09NTUFORHMuICBDYW4gYmUgdXNlZCB0byBpbnZva2UgY29tbWFuZHMKICAgIG9uIGRpc2sgd2hlbiBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBleGlzdHMuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1wCXVzZSBhIGRlZmF1bHQgdmFsdWUgZm9yIFBBVEggdGhhdCBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG9mCiAgICAJdGhlIHN0YW5kYXJkIHV0aWxpdGllcwogICAgICAtdglwcmludCBhIGRlc2NyaXB0aW9uIG9mIENPTU1BTkQgc2ltaWxhciB0byB0aGUgYHR5cGUnIGJ1aWx0aW4KICAgICAgLVYJcHJpbnQgYSBtb3JlIHZlcmJvc2UgZGVzY3JpcHRpb24gb2YgZWFjaCBDT01NQU5ECiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyBleGl0IHN0YXR1cyBvZiBDT01NQU5ELCBvciBmYWlsdXJlIGlmIENPTU1BTkQgaXMgbm90IGZvdW5kLgBFeGVjdXRlIGFyZ3VtZW50cyBhcyBhIHNoZWxsIGNvbW1hbmQuCiAgICAKICAgIENvbWJpbmUgQVJHcyBpbnRvIGEgc2luZ2xlIHN0cmluZywgdXNlIHRoZSByZXN1bHQgYXMgaW5wdXQgdG8gdGhlIHNoZWxsLAogICAgYW5kIGV4ZWN1dGUgdGhlIHJlc3VsdGluZyBjb21tYW5kcy4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIGV4aXQgc3RhdHVzIG9mIGNvbW1hbmQgb3Igc3VjY2VzcyBpZiBjb21tYW5kIGlzIG51bGwuAEV4ZWN1dGUgY29tbWFuZHMgYXMgbG9uZyBhcyBhIHRlc3QgZG9lcyBub3Qgc3VjY2VlZC4KICAgIAogICAgRXhwYW5kIGFuZCBleGVjdXRlIENPTU1BTkRTIGFzIGxvbmcgYXMgdGhlIGZpbmFsIGNvbW1hbmQgaW4gdGhlCiAgICBgdW50aWwnIENPTU1BTkRTIGhhcyBhbiBleGl0IHN0YXR1cyB3aGljaCBpcyBub3QgemVyby4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZC4ARXhlY3V0ZSBjb21tYW5kcyBhcyBsb25nIGFzIGEgdGVzdCBzdWNjZWVkcy4KICAgIAogICAgRXhwYW5kIGFuZCBleGVjdXRlIENPTU1BTkRTIGFzIGxvbmcgYXMgdGhlIGZpbmFsIGNvbW1hbmQgaW4gdGhlCiAgICBgd2hpbGUnIENPTU1BTkRTIGhhcyBhbiBleGl0IHN0YXR1cyBvZiB6ZXJvLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgbGFzdCBjb21tYW5kIGV4ZWN1dGVkLgBFeGVjdXRlIGNvbW1hbmRzIGJhc2VkIG9uIGNvbmRpdGlvbmFsLgogICAgCiAgICBUaGUgYGlmIENPTU1BTkRTJyBsaXN0IGlzIGV4ZWN1dGVkLiAgSWYgaXRzIGV4aXQgc3RhdHVzIGlzIHplcm8sIHRoZW4gdGhlCiAgICBgdGhlbiBDT01NQU5EUycgbGlzdCBpcyBleGVjdXRlZC4gIE90aGVyd2lzZSwgZWFjaCBgZWxpZiBDT01NQU5EUycgbGlzdCBpcwogICAgZXhlY3V0ZWQgaW4gdHVybiwgYW5kIGlmIGl0cyBleGl0IHN0YXR1cyBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZwogICAgYHRoZW4gQ09NTUFORFMnIGxpc3QgaXMgZXhlY3V0ZWQgYW5kIHRoZSBpZiBjb21tYW5kIGNvbXBsZXRlcy4gIE90aGVyd2lzZSwKICAgIHRoZSBgZWxzZSBDT01NQU5EUycgbGlzdCBpcyBleGVjdXRlZCwgaWYgcHJlc2VudC4gIFRoZSBleGl0IHN0YXR1cyBvZiB0aGUKICAgIGVudGlyZSBjb25zdHJ1Y3QgaXMgdGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQsIG9yIHplcm8KICAgIGlmIG5vIGNvbmRpdGlvbiB0ZXN0ZWQgdHJ1ZS4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZC4ARXhlY3V0ZSBjb21tYW5kcyBiYXNlZCBvbiBwYXR0ZXJuIG1hdGNoaW5nLgogICAgCiAgICBTZWxlY3RpdmVseSBleGVjdXRlIENPTU1BTkRTIGJhc2VkIHVwb24gV09SRCBtYXRjaGluZyBQQVRURVJOLiAgVGhlCiAgICBgfCcgaXMgdXNlZCB0byBzZXBhcmF0ZSBtdWx0aXBsZSBwYXR0ZXJucy4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZC4ARXhlY3V0ZSBjb21tYW5kcyBmb3IgZWFjaCBtZW1iZXIgaW4gYSBsaXN0LgogICAgCiAgICBUaGUgYGZvcicgbG9vcCBleGVjdXRlcyBhIHNlcXVlbmNlIG9mIGNvbW1hbmRzIGZvciBlYWNoIG1lbWJlciBpbiBhCiAgICBsaXN0IG9mIGl0ZW1zLiAgSWYgYGluIFdPUkRTIC4uLjsnIGlzIG5vdCBwcmVzZW50LCB0aGVuIGBpbiAiJEAiJyBpcwogICAgYXNzdW1lZC4gIEZvciBlYWNoIGVsZW1lbnQgaW4gV09SRFMsIE5BTUUgaXMgc2V0IHRvIHRoYXQgZWxlbWVudCwgYW5kCiAgICB0aGUgQ09NTUFORFMgYXJlIGV4ZWN1dGVkLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgbGFzdCBjb21tYW5kIGV4ZWN1dGVkLgBFeGVjdXRlIGNvbW1hbmRzIGZyb20gYSBmaWxlIGluIHRoZSBjdXJyZW50IHNoZWxsLgogICAgCiAgICBSZWFkIGFuZCBleGVjdXRlIGNvbW1hbmRzIGZyb20gRklMRU5BTUUgaW4gdGhlIGN1cnJlbnQgc2hlbGwuICBUaGUKICAgIGVudHJpZXMgaW4gJFBBVEggYXJlIHVzZWQgdG8gZmluZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgRklMRU5BTUUuCiAgICBJZiBhbnkgQVJHVU1FTlRTIGFyZSBzdXBwbGllZCwgdGhleSBiZWNvbWUgdGhlIHBvc2l0aW9uYWwgcGFyYW1ldGVycwogICAgd2hlbiBGSUxFTkFNRSBpcyBleGVjdXRlZC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZCBpbiBGSUxFTkFNRTsgZmFpbHMgaWYKICAgIEZJTEVOQU1FIGNhbm5vdCBiZSByZWFkLgBFeGVjdXRlIGNvbmRpdGlvbmFsIGNvbW1hbmQuCiAgICAKICAgIFJldHVybnMgYSBzdGF0dXMgb2YgMCBvciAxIGRlcGVuZGluZyBvbiB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgY29uZGl0aW9uYWwKICAgIGV4cHJlc3Npb24gRVhQUkVTU0lPTi4gIEV4cHJlc3Npb25zIGFyZSBjb21wb3NlZCBvZiB0aGUgc2FtZSBwcmltYXJpZXMgdXNlZAogICAgYnkgdGhlIGB0ZXN0JyBidWlsdGluLCBhbmQgbWF5IGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3JzOgogICAgCiAgICAgICggRVhQUkVTU0lPTiApCVJldHVybnMgdGhlIHZhbHVlIG9mIEVYUFJFU1NJT04KICAgICAgISBFWFBSRVNTSU9OCQlUcnVlIGlmIEVYUFJFU1NJT04gaXMgZmFsc2U7IGVsc2UgZmFsc2UKICAgICAgRVhQUjEgJiYgRVhQUjIJVHJ1ZSBpZiBib3RoIEVYUFIxIGFuZCBFWFBSMiBhcmUgdHJ1ZTsgZWxzZSBmYWxzZQogICAgICBFWFBSMSB8fCBFWFBSMglUcnVlIGlmIGVpdGhlciBFWFBSMSBvciBFWFBSMiBpcyB0cnVlOyBlbHNlIGZhbHNlCiAgICAKICAgIFdoZW4gdGhlIGA9PScgYW5kIGAhPScgb3BlcmF0b3JzIGFyZSB1c2VkLCB0aGUgc3RyaW5nIHRvIHRoZSByaWdodCBvZgogICAgdGhlIG9wZXJhdG9yIGlzIHVzZWQgYXMgYSBwYXR0ZXJuIGFuZCBwYXR0ZXJuIG1hdGNoaW5nIGlzIHBlcmZvcm1lZC4KICAgIFdoZW4gdGhlIGA9ficgb3BlcmF0b3IgaXMgdXNlZCwgdGhlIHN0cmluZyB0byB0aGUgcmlnaHQgb2YgdGhlIG9wZXJhdG9yCiAgICBpcyBtYXRjaGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uLgogICAgCiAgICBUaGUgJiYgYW5kIHx8IG9wZXJhdG9ycyBkbyBub3QgZXZhbHVhdGUgRVhQUjIgaWYgRVhQUjEgaXMgc3VmZmljaWVudCB0bwogICAgZGV0ZXJtaW5lIHRoZSBleHByZXNzaW9uJ3MgdmFsdWUuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgMCBvciAxIGRlcGVuZGluZyBvbiB2YWx1ZSBvZiBFWFBSRVNTSU9OLgBFeGVjdXRlIHNoZWxsIGJ1aWx0aW5zLgogICAgCiAgICBFeGVjdXRlIFNIRUxMLUJVSUxUSU4gd2l0aCBhcmd1bWVudHMgQVJHcyB3aXRob3V0IHBlcmZvcm1pbmcgY29tbWFuZAogICAgbG9va3VwLiAgVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2lzaCB0byByZWltcGxlbWVudCBhIHNoZWxsIGJ1aWx0aW4KICAgIGFzIGEgc2hlbGwgZnVuY3Rpb24sIGJ1dCBuZWVkIHRvIGV4ZWN1dGUgdGhlIGJ1aWx0aW4gd2l0aGluIHRoZSBmdW5jdGlvbi4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBTSEVMTC1CVUlMVElOLCBvciBmYWxzZSBpZiBTSEVMTC1CVUlMVElOIGlzCiAgICBub3QgYSBzaGVsbCBidWlsdGluLi4ARXhpdCAlZABFeGl0IGEgbG9naW4gc2hlbGwuCiAgICAKICAgIEV4aXRzIGEgbG9naW4gc2hlbGwgd2l0aCBleGl0IHN0YXR1cyBOLiAgUmV0dXJucyBhbiBlcnJvciBpZiBub3QgZXhlY3V0ZWQKICAgIGluIGEgbG9naW4gc2hlbGwuAEV4aXQgZm9yLCB3aGlsZSwgb3IgdW50aWwgbG9vcHMuCiAgICAKICAgIEV4aXQgYSBGT1IsIFdISUxFIG9yIFVOVElMIGxvb3AuICBJZiBOIGlzIHNwZWNpZmllZCwgYnJlYWsgTiBlbmNsb3NpbmcKICAgIGxvb3BzLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFRoZSBleGl0IHN0YXR1cyBpcyAwIHVubGVzcyBOIGlzIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4ARXhpdCB0aGUgc2hlbGwuCiAgICAKICAgIEV4aXRzIHRoZSBzaGVsbCB3aXRoIGEgc3RhdHVzIG9mIE4uICBJZiBOIGlzIG9taXR0ZWQsIHRoZSBleGl0IHN0YXR1cwogICAgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kIGV4ZWN1dGVkLgBGaWxlIGxpbWl0AEZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbgBHTlUgYmFzaCwgdmVyc2lvbiAlcyAoJXMpCgBHTlUgYmFzaCwgdmVyc2lvbiAlcy0oJXMpCgBHTlUgbG9uZyBvcHRpb25zOgoAR3JvdXAgY29tbWFuZHMgYXMgYSB1bml0LgogICAgCiAgICBSdW4gYSBzZXQgb2YgY29tbWFuZHMgaW4gYSBncm91cC4gIFRoaXMgaXMgb25lIHdheSB0byByZWRpcmVjdCBhbgogICAgZW50aXJlIHNldCBvZiBjb21tYW5kcy4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZC4ASEZUIGlucHV0IGRhdGEgcGVuZGluZwBIRlQgbW9uaXRvciBtb2RlIGdyYW50ZWQASEZUIG1vbml0b3IgbW9kZSByZXRyYWN0ZWQASEZUIHNvdW5kIHNlcXVlbmNlIGhhcyBjb21wbGV0ZWQASE9NRSBub3Qgc2V0AEhhbmd1cABJIGhhdmUgbm8gbmFtZSEASS9PIHJlYWR5AElsbGVnYWwgaW5zdHJ1Y3Rpb24ASW5mb3JtYXRpb24gcmVxdWVzdABJbnRlcnJ1cHQAS2lsbGVkAExpY2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciA8aHR0cDovL2dudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWw+CgBNb3ZlIGpvYiB0byB0aGUgZm9yZWdyb3VuZC4KICAgIAogICAgUGxhY2UgdGhlIGpvYiBpZGVudGlmaWVkIGJ5IEpPQl9TUEVDIGluIHRoZSBmb3JlZ3JvdW5kLCBtYWtpbmcgaXQgdGhlCiAgICBjdXJyZW50IGpvYi4gIElmIEpPQl9TUEVDIGlzIG5vdCBwcmVzZW50LCB0aGUgc2hlbGwncyBub3Rpb24gb2YgdGhlCiAgICBjdXJyZW50IGpvYiBpcyB1c2VkLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFN0YXR1cyBvZiBjb21tYW5kIHBsYWNlZCBpbiBmb3JlZ3JvdW5kLCBvciBmYWlsdXJlIGlmIGFuIGVycm9yIG9jY3Vycy4ATW92ZSBqb2JzIHRvIHRoZSBiYWNrZ3JvdW5kLgogICAgCiAgICBQbGFjZSB0aGUgam9icyBpZGVudGlmaWVkIGJ5IGVhY2ggSk9CX1NQRUMgaW4gdGhlIGJhY2tncm91bmQsIGFzIGlmIHRoZXkKICAgIGhhZCBiZWVuIHN0YXJ0ZWQgd2l0aCBgJicuICBJZiBKT0JfU1BFQyBpcyBub3QgcHJlc2VudCwgdGhlIHNoZWxsJ3Mgbm90aW9uCiAgICBvZiB0aGUgY3VycmVudCBqb2IgaXMgdXNlZC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3MgdW5sZXNzIGpvYiBjb250cm9sIGlzIG5vdCBlbmFibGVkIG9yIGFuIGVycm9yIG9jY3Vycy4ATnVsbCBjb21tYW5kLgogICAgCiAgICBObyBlZmZlY3Q7IHRoZSBjb21tYW5kIGRvZXMgbm90aGluZy4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBBbHdheXMgc3VjY2VlZHMuAE9MRFBXRCBub3Qgc2V0AFBhcnNlIG9wdGlvbiBhcmd1bWVudHMuCiAgICAKICAgIEdldG9wdHMgaXMgdXNlZCBieSBzaGVsbCBwcm9jZWR1cmVzIHRvIHBhcnNlIHBvc2l0aW9uYWwgcGFyYW1ldGVycwogICAgYXMgb3B0aW9ucy4KICAgIAogICAgT1BUU1RSSU5HIGNvbnRhaW5zIHRoZSBvcHRpb24gbGV0dGVycyB0byBiZSByZWNvZ25pemVkOyBpZiBhIGxldHRlcgogICAgaXMgZm9sbG93ZWQgYnkgYSBjb2xvbiwgdGhlIG9wdGlvbiBpcyBleHBlY3RlZCB0byBoYXZlIGFuIGFyZ3VtZW50LAogICAgd2hpY2ggc2hvdWxkIGJlIHNlcGFyYXRlZCBmcm9tIGl0IGJ5IHdoaXRlIHNwYWNlLgogICAgCiAgICBFYWNoIHRpbWUgaXQgaXMgaW52b2tlZCwgZ2V0b3B0cyB3aWxsIHBsYWNlIHRoZSBuZXh0IG9wdGlvbiBpbiB0aGUKICAgIHNoZWxsIHZhcmlhYmxlICRuYW1lLCBpbml0aWFsaXppbmcgbmFtZSBpZiBpdCBkb2VzIG5vdCBleGlzdCwgYW5kCiAgICB0aGUgaW5kZXggb2YgdGhlIG5leHQgYXJndW1lbnQgdG8gYmUgcHJvY2Vzc2VkIGludG8gdGhlIHNoZWxsCiAgICB2YXJpYWJsZSBPUFRJTkQuICBPUFRJTkQgaXMgaW5pdGlhbGl6ZWQgdG8gMSBlYWNoIHRpbWUgdGhlIHNoZWxsIG9yCiAgICBhIHNoZWxsIHNjcmlwdCBpcyBpbnZva2VkLiAgV2hlbiBhbiBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQsCiAgICBnZXRvcHRzIHBsYWNlcyB0aGF0IGFyZ3VtZW50IGludG8gdGhlIHNoZWxsIHZhcmlhYmxlIE9QVEFSRy4KICAgIAogICAgZ2V0b3B0cyByZXBvcnRzIGVycm9ycyBpbiBvbmUgb2YgdHdvIHdheXMuICBJZiB0aGUgZmlyc3QgY2hhcmFjdGVyCiAgICBvZiBPUFRTVFJJTkcgaXMgYSBjb2xvbiwgZ2V0b3B0cyB1c2VzIHNpbGVudCBlcnJvciByZXBvcnRpbmcuICBJbgogICAgdGhpcyBtb2RlLCBubyBlcnJvciBtZXNzYWdlcyBhcmUgcHJpbnRlZC4gIElmIGFuIGludmFsaWQgb3B0aW9uIGlzCiAgICBzZWVuLCBnZXRvcHRzIHBsYWNlcyB0aGUgb3B0aW9uIGNoYXJhY3RlciBmb3VuZCBpbnRvIE9QVEFSRy4gIElmIGEKICAgIHJlcXVpcmVkIGFyZ3VtZW50IGlzIG5vdCBmb3VuZCwgZ2V0b3B0cyBwbGFjZXMgYSAnOicgaW50byBOQU1FIGFuZAogICAgc2V0cyBPUFRBUkcgdG8gdGhlIG9wdGlvbiBjaGFyYWN0ZXIgZm91bmQuICBJZiBnZXRvcHRzIGlzIG5vdCBpbgogICAgc2lsZW50IG1vZGUsIGFuZCBhbiBpbnZhbGlkIG9wdGlvbiBpcyBzZWVuLCBnZXRvcHRzIHBsYWNlcyAnPycgaW50bwogICAgTkFNRSBhbmQgdW5zZXRzIE9QVEFSRy4gIElmIGEgcmVxdWlyZWQgYXJndW1lbnQgaXMgbm90IGZvdW5kLCBhICc/JwogICAgaXMgcGxhY2VkIGluIE5BTUUsIE9QVEFSRyBpcyB1bnNldCwgYW5kIGEgZGlhZ25vc3RpYyBtZXNzYWdlIGlzCiAgICBwcmludGVkLgogICAgCiAgICBJZiB0aGUgc2hlbGwgdmFyaWFibGUgT1BURVJSIGhhcyB0aGUgdmFsdWUgMCwgZ2V0b3B0cyBkaXNhYmxlcyB0aGUKICAgIHByaW50aW5nIG9mIGVycm9yIG1lc3NhZ2VzLCBldmVuIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YKICAgIE9QVFNUUklORyBpcyBub3QgYSBjb2xvbi4gIE9QVEVSUiBoYXMgdGhlIHZhbHVlIDEgYnkgZGVmYXVsdC4KICAgIAogICAgR2V0b3B0cyBub3JtYWxseSBwYXJzZXMgdGhlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyAoJDAgLSAkOSksIGJ1dCBpZgogICAgbW9yZSBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGV5IGFyZSBwYXJzZWQgaW5zdGVhZC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3MgaWYgYW4gb3B0aW9uIGlzIGZvdW5kOyBmYWlscyBpZiB0aGUgZW5kIG9mIG9wdGlvbnMgaXMKICAgIGVuY291bnRlcmVkIG9yIGFuIGVycm9yIG9jY3Vycy4AUHJpbnQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1MCXByaW50IHRoZSB2YWx1ZSBvZiAkUFdEIGlmIGl0IG5hbWVzIHRoZSBjdXJyZW50IHdvcmtpbmcKICAgIAlkaXJlY3RvcnkKICAgICAgLVAJcHJpbnQgdGhlIHBoeXNpY2FsIGRpcmVjdG9yeSwgd2l0aG91dCBhbnkgc3ltYm9saWMgbGlua3MKICAgIAogICAgQnkgZGVmYXVsdCwgYHB3ZCcgYmVoYXZlcyBhcyBpZiBgLUwnIHdlcmUgc3BlY2lmaWVkLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgMCB1bmxlc3MgYW4gaW52YWxpZCBvcHRpb24gaXMgZ2l2ZW4gb3IgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICBjYW5ub3QgYmUgcmVhZC4AUXVpdABSZWFkIGxpbmVzIGZyb20gYSBmaWxlIGludG8gYW4gYXJyYXkgdmFyaWFibGUuCiAgICAKICAgIEEgc3lub255bSBmb3IgYG1hcGZpbGUnLgBSZWNvcmQgbG9jawBSZW1vdmUgZGlyZWN0b3JpZXMgZnJvbSBzdGFjay4KICAgIAogICAgUmVtb3ZlcyBlbnRyaWVzIGZyb20gdGhlIGRpcmVjdG9yeSBzdGFjay4gIFdpdGggbm8gYXJndW1lbnRzLCByZW1vdmVzCiAgICB0aGUgdG9wIGRpcmVjdG9yeSBmcm9tIHRoZSBzdGFjaywgYW5kIGNoYW5nZXMgdG8gdGhlIG5ldyB0b3AgZGlyZWN0b3J5LgogICAgCiAgICBPcHRpb25zOgogICAgICAtbglTdXBwcmVzc2VzIHRoZSBub3JtYWwgY2hhbmdlIG9mIGRpcmVjdG9yeSB3aGVuIHJlbW92aW5nCiAgICAJZGlyZWN0b3JpZXMgZnJvbSB0aGUgc3RhY2ssIHNvIG9ubHkgdGhlIHN0YWNrIGlzIG1hbmlwdWxhdGVkLgogICAgCiAgICBBcmd1bWVudHM6CiAgICAgICtOCVJlbW92ZXMgdGhlIE50aCBlbnRyeSBjb3VudGluZyBmcm9tIHRoZSBsZWZ0IG9mIHRoZSBsaXN0CiAgICAJc2hvd24gYnkgYGRpcnMnLCBzdGFydGluZyB3aXRoIHplcm8uICBGb3IgZXhhbXBsZTogYHBvcGQgKzAnCiAgICAJcmVtb3ZlcyB0aGUgZmlyc3QgZGlyZWN0b3J5LCBgcG9wZCArMScgdGhlIHNlY29uZC4KICAgIAogICAgICAtTglSZW1vdmVzIHRoZSBOdGggZW50cnkgY291bnRpbmcgZnJvbSB0aGUgcmlnaHQgb2YgdGhlIGxpc3QKICAgIAlzaG93biBieSBgZGlycycsIHN0YXJ0aW5nIHdpdGggemVyby4gIEZvciBleGFtcGxlOiBgcG9wZCAtMCcKICAgIAlyZW1vdmVzIHRoZSBsYXN0IGRpcmVjdG9yeSwgYHBvcGQgLTEnIHRoZSBuZXh0IHRvIGxhc3QuCiAgICAKICAgIFRoZSBgZGlycycgYnVpbHRpbiBkaXNwbGF5cyB0aGUgZGlyZWN0b3J5IHN0YWNrLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgYW4gaW52YWxpZCBhcmd1bWVudCBpcyBzdXBwbGllZCBvciB0aGUgZGlyZWN0b3J5CiAgICBjaGFuZ2UgZmFpbHMuAFJlbW92ZSBlYWNoIE5BTUUgZnJvbSB0aGUgbGlzdCBvZiBkZWZpbmVkIGFsaWFzZXMuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1hCXJlbW92ZSBhbGwgYWxpYXMgZGVmaW5pdGlvbnMuCiAgICAKICAgIFJldHVybiBzdWNjZXNzIHVubGVzcyBhIE5BTUUgaXMgbm90IGFuIGV4aXN0aW5nIGFsaWFzLgBSZW1vdmUgam9icyBmcm9tIGN1cnJlbnQgc2hlbGwuCiAgICAKICAgIFJlbW92ZXMgZWFjaCBKT0JTUEVDIGFyZ3VtZW50IGZyb20gdGhlIHRhYmxlIG9mIGFjdGl2ZSBqb2JzLiAgV2l0aG91dAogICAgYW55IEpPQlNQRUNzLCB0aGUgc2hlbGwgdXNlcyBpdHMgbm90aW9uIG9mIHRoZSBjdXJyZW50IGpvYi4KICAgIAogICAgT3B0aW9uczoKICAgICAgLWEJcmVtb3ZlIGFsbCBqb2JzIGlmIEpPQlNQRUMgaXMgbm90IHN1cHBsaWVkCiAgICAgIC1oCW1hcmsgZWFjaCBKT0JTUEVDIHNvIHRoYXQgU0lHSFVQIGlzIG5vdCBzZW50IHRvIHRoZSBqb2IgaWYgdGhlCiAgICAJc2hlbGwgcmVjZWl2ZXMgYSBTSUdIVVAKICAgICAgLXIJcmVtb3ZlIG9ubHkgcnVubmluZyBqb2JzCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyBzdWNjZXNzIHVubGVzcyBhbiBpbnZhbGlkIG9wdGlvbiBvciBKT0JTUEVDIGlzIGdpdmVuLgBSZW1vdmVzIGVudHJpZXMgZnJvbSB0aGUgZGlyZWN0b3J5IHN0YWNrLiAgV2l0aCBubyBhcmd1bWVudHMsIHJlbW92ZXMKICAgIHRoZSB0b3AgZGlyZWN0b3J5IGZyb20gdGhlIHN0YWNrLCBhbmQgY2hhbmdlcyB0byB0aGUgbmV3IHRvcCBkaXJlY3RvcnkuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1uCVN1cHByZXNzZXMgdGhlIG5vcm1hbCBjaGFuZ2Ugb2YgZGlyZWN0b3J5IHdoZW4gcmVtb3ZpbmcKICAgIAlkaXJlY3RvcmllcyBmcm9tIHRoZSBzdGFjaywgc28gb25seSB0aGUgc3RhY2sgaXMgbWFuaXB1bGF0ZWQuCiAgICAKICAgIEFyZ3VtZW50czoKICAgICAgK04JUmVtb3ZlcyB0aGUgTnRoIGVudHJ5IGNvdW50aW5nIGZyb20gdGhlIGxlZnQgb2YgdGhlIGxpc3QKICAgIAlzaG93biBieSBgZGlycycsIHN0YXJ0aW5nIHdpdGggemVyby4gIEZvciBleGFtcGxlOiBgcG9wZCArMCcKICAgIAlyZW1vdmVzIHRoZSBmaXJzdCBkaXJlY3RvcnksIGBwb3BkICsxJyB0aGUgc2Vjb25kLgogICAgCiAgICAgIC1OCVJlbW92ZXMgdGhlIE50aCBlbnRyeSBjb3VudGluZyBmcm9tIHRoZSByaWdodCBvZiB0aGUgbGlzdAogICAgCXNob3duIGJ5IGBkaXJzJywgc3RhcnRpbmcgd2l0aCB6ZXJvLiAgRm9yIGV4YW1wbGU6IGBwb3BkIC0wJwogICAgCXJlbW92ZXMgdGhlIGxhc3QgZGlyZWN0b3J5LCBgcG9wZCAtMScgdGhlIG5leHQgdG8gbGFzdC4KICAgIAogICAgVGhlIGBkaXJzJyBidWlsdGluIGRpc3BsYXlzIHRoZSBkaXJlY3Rvcnkgc3RhY2suAFJlcGxhY2UgdGhlIHNoZWxsIHdpdGggdGhlIGdpdmVuIGNvbW1hbmQuCiAgICAKICAgIEV4ZWN1dGUgQ09NTUFORCwgcmVwbGFjaW5nIHRoaXMgc2hlbGwgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2dyYW0uCiAgICBBUkdVTUVOVFMgYmVjb21lIHRoZSBhcmd1bWVudHMgdG8gQ09NTUFORC4gIElmIENPTU1BTkQgaXMgbm90IHNwZWNpZmllZCwKICAgIGFueSByZWRpcmVjdGlvbnMgdGFrZSBlZmZlY3QgaW4gdGhlIGN1cnJlbnQgc2hlbGwuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1hIG5hbWUJcGFzcyBOQU1FIGFzIHRoZSB6ZXJvdGggYXJndW1lbnQgdG8gQ09NTUFORAogICAgICAtYwkJZXhlY3V0ZSBDT01NQU5EIHdpdGggYW4gZW1wdHkgZW52aXJvbm1lbnQKICAgICAgLWwJCXBsYWNlIGEgZGFzaCBpbiB0aGUgemVyb3RoIGFyZ3VtZW50IHRvIENPTU1BTkQKICAgIAogICAgSWYgdGhlIGNvbW1hbmQgY2Fubm90IGJlIGV4ZWN1dGVkLCBhIG5vbi1pbnRlcmFjdGl2ZSBzaGVsbCBleGl0cywgdW5sZXNzCiAgICB0aGUgc2hlbGwgb3B0aW9uIGBleGVjZmFpbCcgaXMgc2V0LgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgQ09NTUFORCBpcyBub3QgZm91bmQgb3IgYSByZWRpcmVjdGlvbiBlcnJvciBvY2N1cnMuAFJlcG9ydCB0aW1lIGNvbnN1bWVkIGJ5IHBpcGVsaW5lJ3MgZXhlY3V0aW9uLgogICAgCiAgICBFeGVjdXRlIFBJUEVMSU5FIGFuZCBwcmludCBhIHN1bW1hcnkgb2YgdGhlIHJlYWwgdGltZSwgdXNlciBDUFUgdGltZSwKICAgIGFuZCBzeXN0ZW0gQ1BVIHRpbWUgc3BlbnQgZXhlY3V0aW5nIFBJUEVMSU5FIHdoZW4gaXQgdGVybWluYXRlcy4KICAgIAogICAgT3B0aW9uczoKICAgICAgLXAJcHJpbnQgdGhlIHRpbWluZyBzdW1tYXJ5IGluIHRoZSBwb3J0YWJsZSBQb3NpeCBmb3JtYXQKICAgIAogICAgVGhlIHZhbHVlIG9mIHRoZSBUSU1FRk9STUFUIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIG91dHB1dCBmb3JtYXQuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgVGhlIHJldHVybiBzdGF0dXMgaXMgdGhlIHJldHVybiBzdGF0dXMgb2YgUElQRUxJTkUuAFJlc3VtZSBmb3IsIHdoaWxlLCBvciB1bnRpbCBsb29wcy4KICAgIAogICAgUmVzdW1lcyB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGVuY2xvc2luZyBGT1IsIFdISUxFIG9yIFVOVElMIGxvb3AuCiAgICBJZiBOIGlzIHNwZWNpZmllZCwgcmVzdW1lcyB0aGUgTnRoIGVuY2xvc2luZyBsb29wLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFRoZSBleGl0IHN0YXR1cyBpcyAwIHVubGVzcyBOIGlzIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4AUmVzdW1lIGpvYiBpbiBmb3JlZ3JvdW5kLgogICAgCiAgICBFcXVpdmFsZW50IHRvIHRoZSBKT0JfU1BFQyBhcmd1bWVudCB0byB0aGUgYGZnJyBjb21tYW5kLiAgUmVzdW1lIGEKICAgIHN0b3BwZWQgb3IgYmFja2dyb3VuZCBqb2IuICBKT0JfU1BFQyBjYW4gc3BlY2lmeSBlaXRoZXIgYSBqb2IgbmFtZQogICAgb3IgYSBqb2IgbnVtYmVyLiAgRm9sbG93aW5nIEpPQl9TUEVDIHdpdGggYSBgJicgcGxhY2VzIHRoZSBqb2IgaW4KICAgIHRoZSBiYWNrZ3JvdW5kLCBhcyBpZiB0aGUgam9iIHNwZWNpZmljYXRpb24gaGFkIGJlZW4gc3VwcGxpZWQgYXMgYW4KICAgIGFyZ3VtZW50IHRvIGBiZycuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgUmV0dXJucyB0aGUgc3RhdHVzIG9mIHRoZSByZXN1bWVkIGpvYi4AUmV0dXJuIGEgc3VjY2Vzc2Z1bCByZXN1bHQuCiAgICAKICAgIEV4aXQgU3RhdHVzOgogICAgQWx3YXlzIHN1Y2NlZWRzLgBSZXR1cm4gYW4gdW5zdWNjZXNzZnVsIHJlc3VsdC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBBbHdheXMgZmFpbHMuAFJldHVybiBmcm9tIGEgc2hlbGwgZnVuY3Rpb24uCiAgICAKICAgIENhdXNlcyBhIGZ1bmN0aW9uIG9yIHNvdXJjZWQgc2NyaXB0IHRvIGV4aXQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlCiAgICBzcGVjaWZpZWQgYnkgTi4gIElmIE4gaXMgb21pdHRlZCwgdGhlIHJldHVybiBzdGF0dXMgaXMgdGhhdCBvZiB0aGUKICAgIGxhc3QgY29tbWFuZCBleGVjdXRlZCB3aXRoaW4gdGhlIGZ1bmN0aW9uIG9yIHNjcmlwdC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIE4sIG9yIGZhaWx1cmUgaWYgdGhlIHNoZWxsIGlzIG5vdCBleGVjdXRpbmcgYSBmdW5jdGlvbiBvciBzY3JpcHQuAFJldHVybiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBzdWJyb3V0aW5lIGNhbGwuCiAgICAKICAgIFdpdGhvdXQgRVhQUiwgcmV0dXJucyAiJGxpbmUgJGZpbGVuYW1lIi4gIFdpdGggRVhQUiwgcmV0dXJucwogICAgIiRsaW5lICRzdWJyb3V0aW5lICRmaWxlbmFtZSI7IHRoaXMgZXh0cmEgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgdG8KICAgIHByb3ZpZGUgYSBzdGFjayB0cmFjZS4KICAgIAogICAgVGhlIHZhbHVlIG9mIEVYUFIgaW5kaWNhdGVzIGhvdyBtYW55IGNhbGwgZnJhbWVzIHRvIGdvIGJhY2sgYmVmb3JlIHRoZQogICAgY3VycmVudCBvbmU7IHRoZSB0b3AgZnJhbWUgaXMgZnJhbWUgMC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIDAgdW5sZXNzIHRoZSBzaGVsbCBpcyBub3QgZXhlY3V0aW5nIGEgc2hlbGwgZnVuY3Rpb24gb3IgRVhQUgogICAgaXMgaW52YWxpZC4AUmV0dXJucyB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBzdWJyb3V0aW5lIGNhbGwuCiAgICAKICAgIFdpdGhvdXQgRVhQUiwgcmV0dXJucyAAUnVubmluZwBTZWdtZW50YXRpb24gZmF1bHQAU2VsZWN0IHdvcmRzIGZyb20gYSBsaXN0IGFuZCBleGVjdXRlIGNvbW1hbmRzLgogICAgCiAgICBUaGUgV09SRFMgYXJlIGV4cGFuZGVkLCBnZW5lcmF0aW5nIGEgbGlzdCBvZiB3b3Jkcy4gIFRoZQogICAgc2V0IG9mIGV4cGFuZGVkIHdvcmRzIGlzIHByaW50ZWQgb24gdGhlIHN0YW5kYXJkIGVycm9yLCBlYWNoCiAgICBwcmVjZWRlZCBieSBhIG51bWJlci4gIElmIGBpbiBXT1JEUycgaXMgbm90IHByZXNlbnQsIGBpbiAiJEAiJwogICAgaXMgYXNzdW1lZC4gIFRoZSBQUzMgcHJvbXB0IGlzIHRoZW4gZGlzcGxheWVkIGFuZCBhIGxpbmUgcmVhZAogICAgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQuICBJZiB0aGUgbGluZSBjb25zaXN0cyBvZiB0aGUgbnVtYmVyCiAgICBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgZGlzcGxheWVkIHdvcmRzLCB0aGVuIE5BTUUgaXMgc2V0CiAgICB0byB0aGF0IHdvcmQuICBJZiB0aGUgbGluZSBpcyBlbXB0eSwgV09SRFMgYW5kIHRoZSBwcm9tcHQgYXJlCiAgICByZWRpc3BsYXllZC4gIElmIEVPRiBpcyByZWFkLCB0aGUgY29tbWFuZCBjb21wbGV0ZXMuICBBbnkgb3RoZXIKICAgIHZhbHVlIHJlYWQgY2F1c2VzIE5BTUUgdG8gYmUgc2V0IHRvIG51bGwuICBUaGUgbGluZSByZWFkIGlzIHNhdmVkCiAgICBpbiB0aGUgdmFyaWFibGUgUkVQTFkuICBDT01NQU5EUyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgZWFjaCBzZWxlY3Rpb24KICAgIHVudGlsIGEgYnJlYWsgY29tbWFuZCBpcyBleGVjdXRlZC4KICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29tbWFuZCBleGVjdXRlZC4AU2VuZCBhIHNpZ25hbCB0byBhIGpvYi4KICAgIAogICAgU2VuZCB0aGUgcHJvY2Vzc2VzIGlkZW50aWZpZWQgYnkgUElEIG9yIEpPQlNQRUMgdGhlIHNpZ25hbCBuYW1lZCBieQogICAgU0lHU1BFQyBvciBTSUdOVU0uICBJZiBuZWl0aGVyIFNJR1NQRUMgbm9yIFNJR05VTSBpcyBwcmVzZW50LCB0aGVuCiAgICBTSUdURVJNIGlzIGFzc3VtZWQuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1zIHNpZwlTSUcgaXMgYSBzaWduYWwgbmFtZQogICAgICAtbiBzaWcJU0lHIGlzIGEgc2lnbmFsIG51bWJlcgogICAgICAtbAlsaXN0IHRoZSBzaWduYWwgbmFtZXM7IGlmIGFyZ3VtZW50cyBmb2xsb3cgYC1sJyB0aGV5IGFyZQogICAgCWFzc3VtZWQgdG8gYmUgc2lnbmFsIG51bWJlcnMgZm9yIHdoaWNoIG5hbWVzIHNob3VsZCBiZSBsaXN0ZWQKICAgIAogICAgS2lsbCBpcyBhIHNoZWxsIGJ1aWx0aW4gZm9yIHR3byByZWFzb25zOiBpdCBhbGxvd3Mgam9iIElEcyB0byBiZSB1c2VkCiAgICBpbnN0ZWFkIG9mIHByb2Nlc3MgSURzLCBhbmQgYWxsb3dzIHByb2Nlc3NlcyB0byBiZSBraWxsZWQgaWYgdGhlIGxpbWl0CiAgICBvbiBwcm9jZXNzZXMgdGhhdCB5b3UgY2FuIGNyZWF0ZSBpcyByZWFjaGVkLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgYW4gaW52YWxpZCBvcHRpb24gaXMgZ2l2ZW4gb3IgYW4gZXJyb3Igb2NjdXJzLgBTZXQgYW5kIHVuc2V0IHNoZWxsIG9wdGlvbnMuCiAgICAKICAgIENoYW5nZSB0aGUgc2V0dGluZyBvZiBlYWNoIHNoZWxsIG9wdGlvbiBPUFROQU1FLiAgV2l0aG91dCBhbnkgb3B0aW9uCiAgICBhcmd1bWVudHMsIGxpc3QgYWxsIHNoZWxsIG9wdGlvbnMgd2l0aCBhbiBpbmRpY2F0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGVhY2gKICAgIGlzIHNldC4KICAgIAogICAgT3B0aW9uczoKICAgICAgLW8JcmVzdHJpY3QgT1BUTkFNRXMgdG8gdGhvc2UgZGVmaW5lZCBmb3IgdXNlIHdpdGggYHNldCAtbycKICAgICAgLXAJcHJpbnQgZWFjaCBzaGVsbCBvcHRpb24gd2l0aCBhbiBpbmRpY2F0aW9uIG9mIGl0cyBzdGF0dXMKICAgICAgLXEJc3VwcHJlc3Mgb3V0cHV0CiAgICAgIC1zCWVuYWJsZSAoc2V0KSBlYWNoIE9QVE5BTUUKICAgICAgLXUJZGlzYWJsZSAodW5zZXQpIGVhY2ggT1BUTkFNRQogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyBpZiBPUFROQU1FIGlzIGVuYWJsZWQ7IGZhaWxzIGlmIGFuIGludmFsaWQgb3B0aW9uIGlzCiAgICBnaXZlbiBvciBPUFROQU1FIGlzIGRpc2FibGVkLgBTZXQgZXhwb3J0IGF0dHJpYnV0ZSBmb3Igc2hlbGwgdmFyaWFibGVzLgogICAgCiAgICBNYXJrcyBlYWNoIE5BTUUgZm9yIGF1dG9tYXRpYyBleHBvcnQgdG8gdGhlIGVudmlyb25tZW50IG9mIHN1YnNlcXVlbnRseQogICAgZXhlY3V0ZWQgY29tbWFuZHMuICBJZiBWQUxVRSBpcyBzdXBwbGllZCwgYXNzaWduIFZBTFVFIGJlZm9yZSBleHBvcnRpbmcuCiAgICAKICAgIE9wdGlvbnM6CiAgICAgIC1mCXJlZmVyIHRvIHNoZWxsIGZ1bmN0aW9ucwogICAgICAtbglyZW1vdmUgdGhlIGV4cG9ydCBwcm9wZXJ0eSBmcm9tIGVhY2ggTkFNRQogICAgICAtcAlkaXNwbGF5IGEgbGlzdCBvZiBhbGwgZXhwb3J0ZWQgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMKICAgIAogICAgQW4gYXJndW1lbnQgb2YgYC0tJyBkaXNhYmxlcyBmdXJ0aGVyIG9wdGlvbiBwcm9jZXNzaW5nLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgYW4gaW52YWxpZCBvcHRpb24gaXMgZ2l2ZW4gb3IgTkFNRSBpcyBpbnZhbGlkLgBTZXQgdmFyaWFibGUgdmFsdWVzIGFuZCBhdHRyaWJ1dGVzLgogICAgCiAgICBPYnNvbGV0ZS4gIFNlZSBgaGVscCBkZWNsYXJlJy4AU2hlbGwgY29tbWFuZHMgbWF0Y2hpbmcga2V5d29yZCBgAFNoZWxsIGNvbW1hbmRzIG1hdGNoaW5nIGtleXdvcmRzIGAAU2hlbGwgb3B0aW9uczoKAFNoaWZ0IHBvc2l0aW9uYWwgcGFyYW1ldGVycy4KICAgIAogICAgUmVuYW1lIHRoZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgJE4rMSwkTisyIC4uLiB0byAkMSwkMiAuLi4gIElmIE4gaXMKICAgIG5vdCBnaXZlbiwgaXQgaXMgYXNzdW1lZCB0byBiZSAxLgogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3MgTiBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gJCMuAFNpZ25hbCAlZABTdG9wcGVkAFN0b3BwZWQgKHNpZ25hbCkAU3RvcHBlZCAodHR5IGlucHV0KQBTdG9wcGVkICh0dHkgb3V0cHV0KQBTdG9wcGVkKCVzKQBTdXNwZW5kIHNoZWxsIGV4ZWN1dGlvbi4KICAgIAogICAgU3VzcGVuZCB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgc2hlbGwgdW50aWwgaXQgcmVjZWl2ZXMgYSBTSUdDT05UIHNpZ25hbC4KICAgIFVubGVzcyBmb3JjZWQsIGxvZ2luIHNoZWxscyBjYW5ub3QgYmUgc3VzcGVuZGVkLgogICAgCiAgICBPcHRpb25zOgogICAgICAtZglmb3JjZSB0aGUgc3VzcGVuZCwgZXZlbiBpZiB0aGUgc2hlbGwgaXMgYSBsb2dpbiBzaGVsbAogICAgCiAgICBFeGl0IFN0YXR1czoKICAgIFJldHVybnMgc3VjY2VzcyB1bmxlc3Mgam9iIGNvbnRyb2wgaXMgbm90IGVuYWJsZWQgb3IgYW4gZXJyb3Igb2NjdXJzLgBUSU1FRk9STUFUOiBgJWMnOiBpbnZhbGlkIGZvcm1hdCBjaGFyYWN0ZXIAVGVybWluYXRlZABUaGUgbWFpbCBpbiAlcyBoYXMgYmVlbiByZWFkCgBUaGVyZSBhcmUgcnVubmluZyBqb2JzLgoAVGhlcmUgYXJlIHN0b3BwZWQgam9icy4KAFRoZXNlIHNoZWxsIGNvbW1hbmRzIGFyZSBkZWZpbmVkIGludGVybmFsbHkuICBUeXBlIGBoZWxwJyB0byBzZWUgdGhpcyBsaXN0LgpUeXBlIGBoZWxwIG5hbWUnIHRvIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIGZ1bmN0aW9uIGBuYW1lJy4KVXNlIGBpbmZvIGJhc2gnIHRvIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIHNoZWxsIGluIGdlbmVyYWwuClVzZSBgbWFuIC1rJyBvciBgaW5mbycgdG8gZmluZCBvdXQgbW9yZSBhYm91dCBjb21tYW5kcyBub3QgaW4gdGhpcyBsaXN0LgoKQSBzdGFyICgqKSBuZXh0IHRvIGEgbmFtZSBtZWFucyB0aGF0IHRoZSBjb21tYW5kIGlzIGRpc2FibGVkLgoKAFR5cGUgYCVzIC1jICJoZWxwIHNldCInIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHNoZWxsIG9wdGlvbnMuCgBUeXBlIGAlcyAtYyBoZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBzaGVsbCBidWlsdGluIGNvbW1hbmRzLgoAVW5rbm93biBTaWduYWwgIwBVbmtub3duIFNpZ25hbCAjJWQAVW5rbm93biBlcnJvcgBVbmtub3duIHN0YXR1cwBVcmdlbnQgSU8gY29uZGl0aW9uAFVzYWdlOgklcyBbR05VIGxvbmcgb3B0aW9uXSBbb3B0aW9uXSAuLi4KCSVzIFtHTlUgbG9uZyBvcHRpb25dIFtvcHRpb25dIHNjcmlwdC1maWxlIC4uLgoAVXNlICIlcyIgdG8gbGVhdmUgdGhlIHNoZWxsLgoAVXNlIHRoZSBgYmFzaGJ1ZycgY29tbWFuZCB0byByZXBvcnQgYnVncy4KAFVzZXIgc2lnbmFsIDEAVXNlciBzaWduYWwgMgBXaW5kb3cgY2hhbmdlZABXcml0ZSBhcmd1bWVudHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4KICAgIAogICAgRGlzcGxheSB0aGUgQVJHcyBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0IGZvbGxvd2VkIGJ5IGEgbmV3bGluZS4KICAgIAogICAgT3B0aW9uczoKICAgICAgLW4JZG8gbm90IGFwcGVuZCBhIG5ld2xpbmUKICAgIAogICAgRXhpdCBTdGF0dXM6CiAgICBSZXR1cm5zIHN1Y2Nlc3MgdW5sZXNzIGEgd3JpdGUgZXJyb3Igb2NjdXJzLgBZb3UgaGF2ZSBtYWlsIGluICRfAFlvdSBoYXZlIG5ldyBtYWlsIGluICRfAFsgYXJnLi4uIF0AW1sgZXhwcmVzc2lvbiBdXQBgJWMnOiBiYWQgY29tbWFuZABgJWMnOiBpbnZhbGlkIGZvcm1hdCBjaGFyYWN0ZXIAYCVjJzogaW52YWxpZCBzeW1ib2xpYyBtb2RlIGNoYXJhY3RlcgBgJWMnOiBpbnZhbGlkIHN5bWJvbGljIG1vZGUgb3BlcmF0b3IAYCVzJzogY2Fubm90IHVuYmluZABgJXMnOiBpbnZhbGlkIGtleW1hcCBuYW1lAGAlcyc6IG1pc3NpbmcgZm9ybWF0IGNoYXJhY3RlcgBgJXMnOiBub3QgYSBwaWQgb3IgdmFsaWQgam9iIHNwZWMAYCVzJzogbm90IGEgdmFsaWQgaWRlbnRpZmllcgBgJXMnOiB1bmtub3duIGZ1bmN0aW9uIG5hbWUAYCknIGV4cGVjdGVkAGApJyBleHBlY3RlZCwgZm91bmQgJXMAYDonIGV4cGVjdGVkIGZvciBjb25kaXRpb25hbCBleHByZXNzaW9uAGFkZF9wcm9jZXNzOiBwaWQgJTVsZCAoJXMpIG1hcmtlZCBhcyBzdGlsbCBhbGl2ZQBhZGRfcHJvY2VzczogcHJvY2VzcyAlNWxkICglcykgaW4gdGhlX3BpcGVsaW5lAGFsaWFzIFstcF0gW25hbWVbPXZhbHVlXSAuLi4gXQBhbGxfbG9jYWxfdmFyaWFibGVzOiBubyBmdW5jdGlvbiBjb250ZXh0IGF0IGN1cnJlbnQgc2NvcGUAYXJndW1lbnQAYXJndW1lbnQgZXhwZWN0ZWQAYXJyYXkgdmFyaWFibGUgc3VwcG9ydCByZXF1aXJlZABhdHRlbXB0ZWQgYXNzaWdubWVudCB0byBub24tdmFyaWFibGUAYmFkIGFycmF5IHN1YnNjcmlwdABiYWQgY29tbWFuZCB0eXBlAGJhZCBjb25uZWN0b3IAYmFkIGp1bXAAYmFkIHN1YnN0aXR1dGlvbjogbm8gY2xvc2luZyAiYCIgaW4gJXMAYmFkIHN1YnN0aXR1dGlvbjogbm8gY2xvc2luZyBgJXMnIGluICVzAGJhc2hfZXhlY3V0ZV91bml4X2NvbW1hbmQ6IGNhbm5vdCBmaW5kIGtleW1hcCBmb3IgY29tbWFuZABiZyBbam9iX3NwZWMgLi4uXQBicmVhayBbbl0AYnVnOiBiYWQgZXhwYXNzaWduIHRva2VuAGJ1aWx0aW4gW3NoZWxsLWJ1aWx0aW4gW2FyZyAuLi5dXQBjYWxsZXIgW2V4cHJdAGNhbiBvbmx5IGByZXR1cm4nIGZyb20gYSBmdW5jdGlvbiBvciBzb3VyY2VkIHNjcmlwdABjYW4gb25seSBiZSB1c2VkIGluIGEgZnVuY3Rpb24AY2Fubm90IGFsbG9jYXRlIG5ldyBmaWxlIGRlc2NyaXB0b3IgZm9yIGJhc2ggaW5wdXQgZnJvbSBmZCAlZABjYW5ub3QgY3JlYXRlIHRlbXAgZmlsZSBmb3IgaGVyZS1kb2N1bWVudDogJXMAY2Fubm90IGR1cGxpY2F0ZSBmZCAlZCB0byBmZCAlZABjYW5ub3QgZHVwbGljYXRlIG5hbWVkIHBpcGUgJXMgYXMgZmQgJWQAY2Fubm90IGZpbmQgJXMgaW4gc2hhcmVkIG9iamVjdCAlczogJXMAY2Fubm90IG1ha2UgY2hpbGQgZm9yIGNvbW1hbmQgc3Vic3RpdHV0aW9uAGNhbm5vdCBtYWtlIGNoaWxkIGZvciBwcm9jZXNzIHN1YnN0aXR1dGlvbgBjYW5ub3QgbWFrZSBwaXBlIGZvciBjb21tYW5kIHN1YnN0aXR1dGlvbgBjYW5ub3QgbWFrZSBwaXBlIGZvciBwcm9jZXNzIHN1YnN0aXR1dGlvbgBjYW5ub3Qgb3BlbiBuYW1lZCBwaXBlICVzIGZvciByZWFkaW5nAGNhbm5vdCBvcGVuIG5hbWVkIHBpcGUgJXMgZm9yIHdyaXRpbmcAY2Fubm90IG9wZW4gc2hhcmVkIG9iamVjdCAlczogJXMAY2Fubm90IHJlZGlyZWN0IHN0YW5kYXJkIGlucHV0IGZyb20gL2Rldi9udWxsOiAlcwBjYW5ub3QgcmVzZXQgbm9kZWxheSBtb2RlIGZvciBmZCAlZABjYW5ub3Qgc2V0IGFuZCB1bnNldCBzaGVsbCBvcHRpb25zIHNpbXVsdGFuZW91c2x5AGNhbm5vdCBzZXQgdGVybWluYWwgcHJvY2VzcyBncm91cCAoJWQpAGNhbm5vdCBzaW11bHRhbmVvdXNseSB1bnNldCBhIGZ1bmN0aW9uIGFuZCBhIHZhcmlhYmxlAGNhbm5vdCBzdXNwZW5kAGNhbm5vdCBzdXNwZW5kIGEgbG9naW4gc2hlbGwAY2Fubm90IHVzZSBgLWYnIHRvIG1ha2UgZnVuY3Rpb25zAGNhbm5vdCB1c2UgbW9yZSB0aGFuIG9uZSBvZiAtYW5ydwBjYXNlIFdPUkQgaW4gW1BBVFRFUk4gW3wgUEFUVEVSTl0uLi4pIENPTU1BTkRTIDs7XS4uLiBlc2FjAGNoaWxkIHNldHBnaWQgKCVsZCB0byAlbGQpAGNvbW1hbmQgWy1wVnZdIGNvbW1hbmQgW2FyZyAuLi5dAGNvbW1hbmRfc3Vic3RpdHV0ZTogY2Fubm90IGR1cGxpY2F0ZSBwaXBlIGFzIGZkIDEAY29tcGdlbiBbLWFiY2RlZmdqa3N1dl0gWy1vIG9wdGlvbl0gIFstQSBhY3Rpb25dIFstRyBnbG9icGF0XSBbLVcgd29yZGxpc3RdICBbLUYgZnVuY3Rpb25dIFstQyBjb21tYW5kXSBbLVggZmlsdGVycGF0XSBbLVAgcHJlZml4XSBbLVMgc3VmZml4XSBbd29yZF0AY29tcGxldGlvbjogZnVuY3Rpb24gYCVzJyBub3QgZm91bmQAY29uZGl0aW9uYWwgYmluYXJ5IG9wZXJhdG9yIGV4cGVjdGVkAGNvbnRpbnVlIFtuXQBjb3Byb2MgW05BTUVdIGNvbW1hbmQgW3JlZGlyZWN0aW9uc10AY291bGQgbm90IGZpbmQgL3RtcCwgcGxlYXNlIGNyZWF0ZSEAY3ByaW50ZjogYCVjJzogaW52YWxpZCBmb3JtYXQgY2hhcmFjdGVyAGN1cnJlbnQAZGVsZXRpbmcgc3RvcHBlZCBqb2IgJWQgd2l0aCBwcm9jZXNzIGdyb3VwICVsZABkZXNjcmliZV9waWQ6ICVsZDogbm8gc3VjaCBwaWQAZGlyZWN0b3J5IHN0YWNrIGVtcHR5AGRpcmVjdG9yeSBzdGFjayBpbmRleABkaXJzIFstY2xwdl0gWytOXSBbLU5dAGRpc293biBbLWhdIFstYXJdIFtqb2JzcGVjIC4uLl0AZGl2aXNpb24gYnkgMABkeW5hbWljIGxvYWRpbmcgbm90IGF2YWlsYWJsZQBlY2hvIFstbl0gW2FyZyAuLi5dAGVjaG8gWy1uZUVdIFthcmcgLi4uXQBlbXB0eSBhcnJheSB2YXJpYWJsZSBuYW1lAGVuYWJsZSBbLWFdIFstZG5wc10gWy1mIGZpbGVuYW1lXSBbbmFtZSAuLi5dAGVycm9yIGdldHRpbmcgdGVybWluYWwgYXR0cmlidXRlczogJXMAZXJyb3IgaW1wb3J0aW5nIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIGAlcycAZXJyb3Igc2V0dGluZyB0ZXJtaW5hbCBhdHRyaWJ1dGVzOiAlcwBldmFsIFthcmcgLi4uXQBleGVjIFstY2xdIFstYSBuYW1lXSBbY29tbWFuZCBbYXJndW1lbnRzIC4uLl1dIFtyZWRpcmVjdGlvbiAuLi5dAGV4aXQgW25dAGV4cGVjdGVkIGApJwBleHBvbmVudCBsZXNzIHRoYW4gMABleHBvcnQgWy1mbl0gW25hbWVbPXZhbHVlXSAuLi5dIG9yIGV4cG9ydCAtcABleHByZXNzaW9uIGV4cGVjdGVkAGV4cHJlc3Npb24gcmVjdXJzaW9uIGxldmVsIGV4Y2VlZGVkAGZhbHNlAGZjIFstZSBlbmFtZV0gWy1sbnJdIFtmaXJzdF0gW2xhc3RdIG9yIGZjIC1zIFtwYXQ9cmVwXSBbY29tbWFuZF0AZmcgW2pvYl9zcGVjXQBmaWxlIGRlc2NyaXB0b3Igb3V0IG9mIHJhbmdlAGZpbGVuYW1lIGFyZ3VtZW50IHJlcXVpcmVkAGZvciAoKCBleHAxOyBleHAyOyBleHAzICkpOyBkbyBDT01NQU5EUzsgZG9uZQBmb3IgTkFNRSBbaW4gV09SRFMgLi4uIF0gOyBkbyBDT01NQU5EUzsgZG9uZQBmb3JrZWQgcGlkICVkIGFwcGVhcnMgaW4gcnVubmluZyBqb2IgJWQAZnJlZTogY2FsbGVkIHdpdGggYWxyZWFkeSBmcmVlZCBibG9jayBhcmd1bWVudABmcmVlOiBjYWxsZWQgd2l0aCB1bmFsbG9jYXRlZCBibG9jayBhcmd1bWVudABmcmVlOiBzdGFydCBhbmQgZW5kIGNodW5rIHNpemVzIGRpZmZlcgBmcmVlOiB1bmRlcmZsb3cgZGV0ZWN0ZWQ7IG1oX25ieXRlcyBvdXQgb2YgcmFuZ2UAZnVuY3Rpb24gbmFtZSB7IENPTU1BTkRTIDsgfSBvciBuYW1lICgpIHsgQ09NTUFORFMgOyB9AGdldGN3ZDogY2Fubm90IGFjY2VzcyBwYXJlbnQgZGlyZWN0b3JpZXMAZ2V0b3B0cyBvcHRzdHJpbmcgbmFtZSBbYXJnXQBoYXNoIFstbHJdIFstcCBwYXRobmFtZV0gWy1kdF0gW25hbWUgLi4uXQBoYXNoaW5nIGRpc2FibGVkAGhlcmUtZG9jdW1lbnQgYXQgbGluZSAlZCBkZWxpbWl0ZWQgYnkgZW5kLW9mLWZpbGUgKHdhbnRlZCBgJXMnKQBoaXN0b3J5IFstY10gWy1kIG9mZnNldF0gW25dIG9yIGhpc3RvcnkgLWFucncgW2ZpbGVuYW1lXSBvciBoaXN0b3J5IC1wcyBhcmcgW2FyZy4uLl0AaGlzdG9yeSBwb3NpdGlvbgBoaXN0b3J5IHNwZWNpZmljYXRpb24AaGl0cwljb21tYW5kCgBpZGVudGlmaWVyIGV4cGVjdGVkIGFmdGVyIHByZS1pbmNyZW1lbnQgb3IgcHJlLWRlY3JlbWVudABpZiBDT01NQU5EUzsgdGhlbiBDT01NQU5EUzsgWyBlbGlmIENPTU1BTkRTOyB0aGVuIENPTU1BTkRTOyBdLi4uIFsgZWxzZSBDT01NQU5EUzsgXSBmaQBpbml0aWFsaXplX2pvYl9jb250cm9sOiBnZXRwZ3JwIGZhaWxlZABpbml0aWFsaXplX2pvYl9jb250cm9sOiBsaW5lIGRpc2NpcGxpbmUAaW5pdGlhbGl6ZV9qb2JfY29udHJvbDogc2V0cGdpZABpbnZhbGlkIGFyaXRobWV0aWMgYmFzZQBpbnZhbGlkIGJhc2UAaW52YWxpZCBjaGFyYWN0ZXIgJWQgaW4gZXhwb3J0c3RyIGZvciAlcwBpbnZhbGlkIGhleCBudW1iZXIAaW52YWxpZCBudW1iZXIAaW52YWxpZCBvY3RhbCBudW1iZXIAaW52YWxpZCBzaWduYWwgbnVtYmVyAGpvYiAlZCBzdGFydGVkIHdpdGhvdXQgam9iIGNvbnRyb2wAam9iX3NwZWMgWyZdAGpvYnMgWy1sbnByc10gW2pvYnNwZWMgLi4uXSBvciBqb2JzIC14IGNvbW1hbmQgW2FyZ3NdAGtpbGwgWy1zIHNpZ3NwZWMgfCAtbiBzaWdudW0gfCAtc2lnc3BlY10gcGlkIHwgam9ic3BlYyAuLi4gb3Iga2lsbCAtbCBbc2lnc3BlY10AbGFzdCBjb21tYW5kOiAlcwoAbGV0IGFyZyBbYXJnIC4uLl0AbGltaXQAbGluZSAlZDogAGxpbmUgZWRpdGluZyBub3QgZW5hYmxlZABsb2NhbCBbb3B0aW9uXSBuYW1lWz12YWx1ZV0gLi4uAGxvZ291dAoAbG9nb3V0IFtuXQBsb29wIGNvdW50AG1ha2VfaGVyZV9kb2N1bWVudDogYmFkIGluc3RydWN0aW9uIHR5cGUgJWQAbWFrZV9sb2NhbF92YXJpYWJsZTogbm8gZnVuY3Rpb24gY29udGV4dCBhdCBjdXJyZW50IHNjb3BlAG1ha2VfcmVkaXJlY3Rpb246IHJlZGlyZWN0aW9uIGluc3RydWN0aW9uIGAlZCcgb3V0IG9mIHJhbmdlAG1hbGxvYzogYmxvY2sgb24gZnJlZSBsaXN0IGNsb2JiZXJlZABtYWxsb2M6IGZhaWxlZCBhc3NlcnRpb246ICVzCgBtYXBmaWxlIFstbiBjb3VudF0gWy1PIG9yaWdpbl0gWy1zIGNvdW50XSBbLXRdIFstdSBmZF0gWy1DIGNhbGxiYWNrXSBbLWMgcXVhbnR1bV0gW2FycmF5XQBtaWdyYXRlIHByb2Nlc3MgdG8gYW5vdGhlciBDUFUAbWlzc2luZyBgKScAbWlzc2luZyBgXScAbWlzc2luZyBoZXggZGlnaXQgZm9yIFx4AG5ldHdvcmsgb3BlcmF0aW9ucyBub3Qgc3VwcG9ydGVkAG5vIGA9JyBpbiBleHBvcnRzdHIgZm9yICVzAG5vIGNsb3NpbmcgYCVjJyBpbiAlcwBubyBjb21tYW5kIGZvdW5kAG5vIGhlbHAgdG9waWNzIG1hdGNoIGAlcycuICBUcnkgYGhlbHAgaGVscCcgb3IgYG1hbiAtayAlcycgb3IgYGluZm8gJXMnLgBubyBqb2IgY29udHJvbABubyBqb2IgY29udHJvbCBpbiB0aGlzIHNoZWxsAG5vIG1hdGNoOiAlcwBubyBvdGhlciBkaXJlY3RvcnkAbm8gb3RoZXIgb3B0aW9ucyBhbGxvd2VkIHdpdGggYC14JwBub3QgY3VycmVudGx5IGV4ZWN1dGluZyBjb21wbGV0aW9uIGZ1bmN0aW9uAG5vdCBsb2dpbiBzaGVsbDogdXNlIGBleGl0JwBvY3RhbCBudW1iZXIAb25seSBtZWFuaW5nZnVsIGluIGEgYGZvcicsIGB3aGlsZScsIG9yIGB1bnRpbCcgbG9vcABwaXBlIGVycm9yAHBvcF9zY29wZTogaGVhZCBvZiBzaGVsbF92YXJpYWJsZXMgbm90IGEgdGVtcG9yYXJ5IGVudmlyb25tZW50IHNjb3BlAHBvcF92YXJfY29udGV4dDogaGVhZCBvZiBzaGVsbF92YXJpYWJsZXMgbm90IGEgZnVuY3Rpb24gY29udGV4dABwb3BfdmFyX2NvbnRleHQ6IG5vIGdsb2JhbF92YXJpYWJsZXMgY29udGV4dABwb3BkIFstbl0gWytOIHwgLU5dAHBvd2VyIGZhaWx1cmUgaW1taW5lbnQAcHJpbnRfY29tbWFuZDogYmFkIGNvbm5lY3RvciBgJWQnAHByaW50ZiBbLXYgdmFyXSBmb3JtYXQgW2FyZ3VtZW50c10AcHJvZ2NvbXBfaW5zZXJ0OiAlczogTlVMTCBDT01QU1BFQwBwcm9ncmFtbWluZyBlcnJvcgBwdXNoZCBbLW5dIFsrTiB8IC1OIHwgZGlyXQBwd2QgWy1MUF0AcmVhZCBlcnJvcjogJWQ6ICVzAHJlYWRhcnJheSBbLW4gY291bnRdIFstTyBvcmlnaW5dIFstcyBjb3VudF0gWy10XSBbLXUgZmRdIFstQyBjYWxsYmFja10gWy1jIHF1YW50dW1dIFthcnJheV0AcmVhbGxvYzogY2FsbGVkIHdpdGggdW5hbGxvY2F0ZWQgYmxvY2sgYXJndW1lbnQAcmVhbGxvYzogc3RhcnQgYW5kIGVuZCBjaHVuayBzaXplcyBkaWZmZXIAcmVhbGxvYzogdW5kZXJmbG93IGRldGVjdGVkOyBtaF9uYnl0ZXMgb3V0IG9mIHJhbmdlAHJlY3Vyc2lvbiBzdGFjayB1bmRlcmZsb3cAcmVkaXJlY3Rpb24gZXJyb3I6IGNhbm5vdCBkdXBsaWNhdGUgZmQAcmVnaXN0ZXJfYWxsb2M6ICVwIGFscmVhZHkgaW4gdGFibGUgYXMgYWxsb2NhdGVkPwoAcmVnaXN0ZXJfYWxsb2M6IGFsbG9jIHRhYmxlIGlzIGZ1bGwgd2l0aCBGSU5EX0FMTE9DPwoAcmVnaXN0ZXJfZnJlZTogJXAgYWxyZWFkeSBpbiB0YWJsZSBhcyBmcmVlPwoAcmVzdHJpY3RlZAByZXR1cm4gW25dAHJ1bl9wZW5kaW5nX3RyYXBzOiBiYWQgdmFsdWUgaW4gdHJhcF9saXN0WyVkXTogJXAAcnVuX3BlbmRpbmdfdHJhcHM6IHNpZ25hbCBoYW5kbGVyIGlzIFNJR19ERkwsIHJlc2VuZGluZyAlZCAoJXMpIHRvIG15c2VsZgBzYXZlX2Jhc2hfaW5wdXQ6IGJ1ZmZlciBhbHJlYWR5IGV4aXN0cyBmb3IgbmV3IGZkICVkAHNlbGVjdCBOQU1FIFtpbiBXT1JEUyAuLi4gO10gZG8gQ09NTUFORFM7IGRvbmUAc2hlbGwgbGV2ZWwgKCVkKSB0b28gaGlnaCwgcmVzZXR0aW5nIHRvIDEAc2hpZnQgW25dAHNoaWZ0IGNvdW50AHNob3B0IFstcHFzdV0gWy1vXSBbb3B0bmFtZSAuLi5dAHNpZ3Byb2NtYXNrOiAlZDogaW52YWxpZCBvcGVyYXRpb24Ac291cmNlIGZpbGVuYW1lIFthcmd1bWVudHNdAHN0YXJ0X3BpcGVsaW5lOiBwZ3JwIHBpcGUAc3VzcGVuZCBbLWZdAHN5bnRheCBlcnJvcgBzeW50YXggZXJyb3IgaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgBzeW50YXggZXJyb3IgaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbjogdW5leHBlY3RlZCB0b2tlbiBgJXMnAHN5bnRheCBlcnJvciBpbiBleHByZXNzaW9uAHN5bnRheCBlcnJvciBuZWFyIGAlcycAc3ludGF4IGVycm9yIG5lYXIgdW5leHBlY3RlZCB0b2tlbiBgJXMnAHN5bnRheCBlcnJvcjogYCgoJXMpKScAc3ludGF4IGVycm9yOiBgOycgdW5leHBlY3RlZABzeW50YXggZXJyb3I6IGFyaXRobWV0aWMgZXhwcmVzc2lvbiByZXF1aXJlZABzeW50YXggZXJyb3I6IGludmFsaWQgYXJpdGhtZXRpYyBvcGVyYXRvcgBzeW50YXggZXJyb3I6IG9wZXJhbmQgZXhwZWN0ZWQAc3ludGF4IGVycm9yOiB1bmV4cGVjdGVkIGVuZCBvZiBmaWxlAHN5c3RlbSBjcmFzaCBpbW1pbmVudAB0ZXN0IFtleHByXQB0aW1lIFstcF0gcGlwZWxpbmUAdGltZXMAdG9vIG1hbnkgYXJndW1lbnRzAHRyYXAgWy1scF0gW1thcmddIHNpZ25hbF9zcGVjIC4uLl0AdHJhcF9oYW5kbGVyOiBiYWQgc2lnbmFsICVkAHRydWUAdHlwZSBbLWFmcHRQXSBuYW1lIFtuYW1lIC4uLl0AdW1hc2sgWy1wXSBbLVNdIFttb2RlXQB1bmFsaWFzIFstYV0gbmFtZSBbbmFtZSAuLi5dAHVuZXhwZWN0ZWQgRU9GIHdoaWxlIGxvb2tpbmcgZm9yIGBdXScAdW5leHBlY3RlZCBFT0Ygd2hpbGUgbG9va2luZyBmb3IgbWF0Y2hpbmcgYCVjJwB1bmV4cGVjdGVkIEVPRiB3aGlsZSBsb29raW5nIGZvciBtYXRjaGluZyBgKScAdW5leHBlY3RlZCBhcmd1bWVudCBgJXMnIHRvIGNvbmRpdGlvbmFsIGJpbmFyeSBvcGVyYXRvcgB1bmV4cGVjdGVkIGFyZ3VtZW50IGAlcycgdG8gY29uZGl0aW9uYWwgdW5hcnkgb3BlcmF0b3IAdW5leHBlY3RlZCBhcmd1bWVudCB0byBjb25kaXRpb25hbCBiaW5hcnkgb3BlcmF0b3IAdW5leHBlY3RlZCBhcmd1bWVudCB0byBjb25kaXRpb25hbCB1bmFyeSBvcGVyYXRvcgB1bmV4cGVjdGVkIHRva2VuICVkIGluIGNvbmRpdGlvbmFsIGNvbW1hbmQAdW5leHBlY3RlZCB0b2tlbiBgJWMnIGluIGNvbmRpdGlvbmFsIGNvbW1hbmQAdW5leHBlY3RlZCB0b2tlbiBgJXMnIGluIGNvbmRpdGlvbmFsIGNvbW1hbmQAdW5leHBlY3RlZCB0b2tlbiBgJXMnLCBjb25kaXRpb25hbCBiaW5hcnkgb3BlcmF0b3IgZXhwZWN0ZWQAdW5leHBlY3RlZCB0b2tlbiBgJXMnLCBleHBlY3RlZCBgKScAdW5rbm93bgB1bmtub3duIGNvbW1hbmQgZXJyb3IAdW50aWwgQ09NTUFORFM7IGRvIENPTU1BTkRTOyBkb25lAHZhbHVlIHRvbyBncmVhdCBmb3IgYmFzZQB2YXJpYWJsZXMgLSBOYW1lcyBhbmQgbWVhbmluZ3Mgb2Ygc29tZSBzaGVsbCB2YXJpYWJsZXMAd2FpdDogcGlkICVsZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIHNoZWxsAHdhaXRfZm9yOiBObyByZWNvcmQgb2YgcHJvY2VzcyAlbGQAd2FpdF9mb3Jfam9iOiBqb2IgJWQgaXMgc3RvcHBlZAB3YXJuaW5nOiAAd2FybmluZzogJXM6ICVzAHdhcm5pbmc6IC1DIG9wdGlvbiBtYXkgbm90IHdvcmsgYXMgeW91IGV4cGVjdAB3YXJuaW5nOiAtRiBvcHRpb24gbWF5IG5vdCB3b3JrIGFzIHlvdSBleHBlY3QAd2hpbGUgQ09NTUFORFM7IGRvIENPTU1BTkRTOyBkb25lAHdyaXRlIGVycm9yOiAlcwB7IENPTU1BTkRTIDsgfQBQcm9qZWN0LUlkLVZlcnNpb246IGJhc2ggNC4yClJlcG9ydC1Nc2dpZC1CdWdzLVRvOiAKUE9ULUNyZWF0aW9uLURhdGU6IDIwMTQtMDItMTEgMTE6MTktMDUwMApQTy1SZXZpc2lvbi1EYXRlOiAyMDExLTAzLTE4IDAxOjM2KzAxMDAKTGFzdC1UcmFuc2xhdG9yOiBLZW5uZXRoIE5pZWxzZW4gPGsubmllbHNlbjgxQGdtYWlsLmNvbT4KTGFuZ3VhZ2UtVGVhbTogRGFuaXNoIDxkYW5za0BkYW5zay1ncnVwcGVuLmRrPgpMYW5ndWFnZTogZGEKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKWC1HZW5lcmF0b3I6IEtCYWJlbCAxLjExLjQKUGx1cmFsLUZvcm1zOiAgbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpOwoAB3RpZHN1ZGzDuGIgbWVucyBkZXIgdmVudGVkZXMgcMOlIGlucHV0OiBhdXRvLWxvZ3VkCgAJVGlsdmFsZyAtJXMgZWxsZXIgLW8KAA0KbWFsbG9jOiAlczolZDogaMOmdmRlbHNlIGZvcmtsdWRyZXQNCgAgICh3ZDogJXMpACAoc21lZCBrZXJuZSkAIGxpbmplIAAkJXM6IGthbiBpa2tlIHRpbGRlbGUgcMOlIGRlbm5lIG3DpWRlACVjJWM6IHVneWxkaWd0IHRpbHZhbGcAJWQ6IHVneWxkaWcgZmlsYmVza3JpdmVsc2U6ICVzACVzIGthbiBrYWxkZXMgdmlhIAAlcyBlciAlcwoAJXMgZXIgZW4gZnVua3Rpb24KACVzIGVyIGluZGJ5Z2dldCBpIHNrYWxsZW4KACVzIGVyIGV0IHNrYWxuw7hnbGVvcmQKACVzIGVyIGFsaWFzc2V0IHRpbCAiJXMiCgAlcyBlciBoYXNoZXQgKCVzKQoAJXMgZXIgaWtrZSBidW5kZXQgdGlsIG5vZ2VuIHRhc3Rlci4KACVzIHVkZW5mb3IgcsOma2tldmlkZGUAJXMlcyVzOiAlcyAoZmVqbGVsZW1lbnQgZXIgIiVzIikAJXM6ICVzIHVkZW5mb3IgcsOma2tldmlkZGUAJXM6ICVzOiBkw6VybGlnIGZvcnRvbGtlcgAlczogJXM6IGV0IGluZGVrcyBza2FsIGJydWdlcyB2ZWQgdGlsZGVsaW5nIHRpbCBhc3NvY2lhdGl2dCBhcnJheQAlczogdHZldHlkaWcgam9iLXNwZWMAJXM6IHR2ZXR5ZGlnIHZpZGVyZXNlbmRlbHNlACVzOiBhcmd1bWVudGVyIHNrYWwgdsOmcmUgcHJvY2Vzc2VyIGVsbGVyIGpvYi1pZCdlcgAlczogZMOlcmxpZyBzcGVjaWZpa2F0aW9uIGZvciBuZXR2w6Zya3NzdGkAJXM6IGTDpXJsaWcgdWRza2lmdG5pbmcAJXM6IGJpbsOmciBvcGVyYXRvciBmb3J2ZW50ZXQAJXM6IGthbiBpa2tlIHRpbGRlbGUgbGlzdGUgdGlsIGFycmF5ZWxlbWVudGVyACVzOiBrYW4gaWtrZSB0aWxkZWxlIHRpbCBpa2tlbnVtZXJpc2sgaW5kZWtzACVzOiBrYW4gaWtrZSBrb252ZXJ0ZXJlIGFzc29jaWF0aXZ0IHRpbCBpbmRla3NlcmV0IGFycmF5ACVzOiBrYW4gaWtrZSBrb252ZXJ0ZXJlIGluZGVrc2VyZXQgdGlsIGFzc29jaWF0aXZ0IGFycmF5ACVzOiBrYW4gaWtrZSBvcHJldHRlICVzACVzOiBrYW4gaWtrZSBzbGV0dGU6ICVzACVzOiBrYW4gaWtrZSBkZXN0cnVlcmUgYXJyYXl2YXJpYWJlbCBww6UgZGVubmUgbcOlZGUAJXM6IGthbiBpa2tlIGVrc2VrdmVyZSBiaW7DpnIgZmlsACVzOiBrYW4gaWtrZSBla3Nla3ZlcmU6ICVzACVzOiBrYW4gaWtrZSBpbmRoZW50ZSBncsOmbnNlOiAlcwAlczoga2FuIGlra2UgbW9kaWZpY2VyZSBncsOmbnNlOiAlcwAlczoga2FuIGlra2Ugw6VibmUgbWlkbC4gZmlsOiAlcwAlczoga2FuIGlra2Ugw6VibmU6ICVzACVzOiBrYW4gaWtrZSBvdmVyc2tyaXZlIGVrc2lzdGVyZW5kZSBmaWwAJXM6IGthbiBpa2tlIGzDpnNlOiAlcwAlczoga2FuIGlra2UgZmplcm5lACVzOiBrYW4gaWtrZSBmamVybmU6IHNrcml2ZWJlc2t5dHRldCAlcwAlczoga29tbWFuZG8gaWtrZSBmdW5kZXQAJXM6IGZlamwgdmVkIGluZGhlbnRuaW5nIGFmIG51dsOmcmVuZGUgbWFwcGU6ICVzOiAlcwoAJXM6IGZlamwgaSB1ZHRyeWsKACVzOiBmaWwgZXIgZm9yIHN0b3IAJXM6IGZpbCBpa2tlIGZ1bmRldAAlczogZsO4cnN0ZSBpa2tlLWJsYW5rLXRlZ24gZXIgaWtrZSAnIicAJXM6IGhhc2gtdGFiZWwgdG9tCgAlczogaGlzdG9yaWt1ZHZpZGVsc2UgZmVqbGVkZQAlczogdsOmcnQgdWtlbmR0ACVzOiB1Z3lsZGlndCB0aWx2YWxnIC0tICVjCgAlczogaW5saWIgZmVqbGVkZQAlczogaGVsdGFsc3VkdHJ5ayBmb3J2ZW50ZXQAJXM6IHVneWxkaWd0IGhhbmRsaW5nc25hdm4AJXM6IHVneWxkaWcgYXJyYXktc3RhcnRpbmRla3MAJXM6IHVneWxkaWcgbsO4Z2xlIHRpbCBhc3NvY2lhdGl2dCBhcnJheQAlczogdWd5bGRpZ3QgdGlsYmFnZWthbGRza3ZhbnR1bQAlczogdWd5bGRpZyBmaWxiZXNrcml2ZWxzZXNzcGVjaWZpa2F0aW9uACVzOiB1Z3lsZGlndCBncsOmbnNlYXJndW1lbnQAJXM6IHVneWxkaWd0IGFudGFsIGxpbmplcgAlczogdWd5bGRpZ3QgdGlsdmFsZwAlczogdWd5bGRpZ3QgdGlsdmFsZ3NuYXZuACVzOiB1Z3lsZGlnIHRqZW5lc3RlACVzOiB1Z3lsZGlndCBuYXZuIGZvciBza2FsdGlsdmFsZwAlczogdWd5bGRpZyBzaWduYWxzcGVjaWZpa2F0aW9uACVzOiB1Z3lsZGlnIHNwZWNpZmlrYXRpb24gYWYgdGlkc3VkbMO4YgAlczogZXIgZW4gbWFwcGUAJXM6IGpvYiAlZCBlciBhbGxlcmVkZSBpIGJhZ2dydW5kZW4AJXM6IGpvYiBlciBhZmJydWR0ACVzOiBsaW5qZSAlZDogACVzOiBtYW5nbGVuZGUga29sb25zZXBhcmF0b3IAJXM6IGluZ2VuIGZ1bGRmw7hyc2Vsc3NwZWNpZmlrYXRpb24AJXM6IGluZ2VuIGpvYmtvbnRyb2wAJXM6IGludGV0IHPDpWRhbnQgam9iACVzOiBpa2tlIGVuIGZ1bmt0aW9uACVzOiBpa2tlIGVuIHJlZ3Vsw6ZyIGZpbAAlczogaWtrZSBpbmRieWdnZXQgaSBza2FsbGVuACVzOiBpa2tlIGVuIGFycmF5dmFyaWFiZWwAJXM6IGlra2UgZHluYW1pc2sgaW5kbMOmc3QAJXM6IGlra2UgZnVuZGV0ACVzOiBudW1lcmlzayBhcmd1bWVudCBww6VrcsOmdmV0ACVzOiB0aWx2YWxnIGtyw6Z2ZXIgZXQgYXJndW1lbnQAJXM6IGV0IGFyZ3VtZW50IGVyIHDDpWtyw6Z2ZXQgdGlsIHRpbHZhbGdldCAtLSAlYwoAJXM6IHBhcmFtZXRlciBudWxsIGVsbGVyIGlra2UgaW5kc3RpbGxldAAlczogc2tyaXZlYmVza3l0dGV0IGZ1bmt0aW9uACVzOiBza3JpdmViZXNreXR0ZXQgdmFyaWFiZWwAJXM6IGJlZ3LDpm5zZXQAJXM6IGJlZ3LDpm5zZXQ6IGthbiBpa2tlIHZpZGVyZXNlbmRlIG91dHB1dAAlczogYmVncsOmbnNldDoga2FuIGlra2Ugc3BlY2lmaWNlcmUgIi8iIGkga29tbWFuZG9uYXZuZQAlczogdW5kZXJzdHJlbmctdWR0cnlrIDwgMAAlczogdW7DpnIgb3BlcmF0b3IgZm9ydmVudGV0ACVzOiB1YnVuZGV0IHZhcmlhYmVsACVzOiBicnVnOiAAKCggdWR0cnlrICkpAChzbWVkIGtlcm5lKSAAKHdkIG51OiAlcykKAC4gZmlsbmF2biBbYXJndW1lbnRlcl0AL2Rldi8odGNwfHVkcCkvdsOmcnQvcG9ydCBpa2tlIHVuZGVyc3TDuHR0ZXQgdWRlbiBuZXR2w6ZyawAvdG1wIHNrYWwgdsOmcmUgZXQgZ3lsZGlndCBtYXBwZW5hdm4AOgA8aW5nZW4gbnV2w6ZyZW5kZSBtYXBwZT4AQUJPUlQtaW5zdHJ1a3Rpb24AQWZicnlkZXIuLi4AVGlsZsO4amVyIG1hcHBlciB0aWwgc3Rha2tlbi4KICAgIAogICAgVGlsZsO4amVyIGVuIG1hcHBlIHRpbCB0b3BwZW4gYWYgc3Rha2tlbiwgZWxsZXIgcm90ZXJlciBzdGFra2VuLCBzw6VsZWRlcwogICAgYXQgZGVuIG55ZSB0b3AgYWYgc3Rha2tlbiBibGl2ZXIgZGVuIGFrdHVlbGxlIG1hcHBlLiBVZGVuIGFyZ3VtZW50ZXIKICAgIG9tYnl0dGVzIGRlIHRvIMO4dmVyc3RlIG1hcHBlci4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLW4JVW5kZXJ0cnlra2VyIGRldCBtYXBwZXNraWZ0IGRlciBub3JtYWx0IGbDuGxnZXIgbWVkIHRpbGbDuGplbHNlCiAgICAJYWYgbWFwcGVyIHRpbCBzdGFra2VuLCBzw6VsZWRlcyBhdCBrdW4gc3Rha2tlbiDDpm5kcmVzLgogICAgCiAgICBBcmd1bWVudGVyOgogICAgICArTglSb3RlcmVyIHN0YWtrZW4gc8OlbGVkZXMgYXQgZGVuIE4ndGUgbWFwcGUgKHRhbHQgZnJhIHZlbnN0cmUgaQogICAgCWxpc3RlbiBzb20gdmlzZXMgYWYgImRpcnMiLCBzdGFydGVuZGUgbWVkIG51bCkgdmlsIGJsaXZlIHBsYWNlcmV0IGkKICAgIAl0b3BwZW4uCiAgICAKICAgICAgLU4JUm90ZXJlciBzdGFra2VuIHPDpWxlZGVzIGF0IGRlbiBOJ3RlIG1hcHBlICh0YWx0IGZyYSBow7hqcmUgaQogICAgCWxpc3RlbiBzb20gdmlzZXMgYWYgImRpcnMiLCBzdGFydGVuZGUgbWVkIG51bCkgdmlsIGJsaXZlIHBsYWNlcmV0IGkKICAgIAl0b3BwZW4uCiAgICAKICAgICAgbWFwcGUJVGlsZsO4amVyIE1BUFBFIHRpbCB0b3BwZW4gYWYgbWFwcGVzdGFra2VuLCBzw6VsZWRlcyBhdCBkZW4KICAgIAlibGl2ZXIgZGVuIGFrdHVlbGxlIG1hcHBlLgogICAgICAKICAgICAgRGVuIGluZGJ5Z2dlZGUgImRpcnMiIHZpc2VyIG1hcHBlc3Rha2tlbi4KICAgICAgCiAgICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgICBSZXR1cm5lcmVyIHN1Y2NlcyBtZWQgbWluZHJlIGRlciBhbmdpdmVzIGV0IHVneWxkaWd0IHRpbHZhbGcsIGVsbGVyIGh2aXMKICAgICAgbWFwcGVza2lmdGV0IG1pc2x5a2tlcy4AQWxhcm0gKHByb2ZpbCkAQWxhcm0gKHZpcnR1ZWwpAEFsYXJta2xva2tlAEFyaXRtZXRpc2sgZm9yLWzDuGtrZS4KICAgIAogICAgw4Zrdml2YWxlbnQgdGlsCiAgICAJKCggVURUUllLICkpCiAgICAJd2hpbGUgKCggVURUUllLICkpOyBkbwogICAgCQlLT01NQU5ET0VSCiAgICAJCSgoIFVEVFJZSzMgKSkKICAgIAlkb25lCiAgICBVRFRSWUsxLCBVRFRSWUsyIG9nIFVEVFJZSzMgZXIgYXJpdG1ldGlzayB1ZHRyeWsuIEh2aXMgZXQgYWYgdWR0cnlra2VuZQogICAgbWFuZ2xlciwgdmlsIHJlc3VsdGF0ZXQgdsOmcmUgc29tIG9tIGRldCBldmFsdWVyZWRlcyB0aWwgMS4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIGFmc2x1dG5pbmdzc3RhdHVzc2VuIGZvciBkZW4gc2lkc3QgZWtzZWt2ZXJlZGUga29tbWFuZG8uAEJQVC1zcG9yL2ZhbmcAVWd5bGRpZ3Qgc3lzdGVta2FsZABGYWxzayBzaWduYWwAw5hkZWxhZ3QgZGF0YWthbmFsAEJ1cy1mZWpsAENQVS1ncsOmbnNlAETDuGQgZWxsZXIgc3RvcCBhZiB1bmRlcnByb2NlcwBOYXZuZW5lIHDDpSBhbG1pbmRlbGlnZSBza2FsdmFyaWFibGUgb2cgZGVyZXMgYnJ1Zy4KICAgIAogICAgQkFTSF9WRVJTSU9OCVZlcnNpb25zaW5mb3JtYXRpb24gZm9yIGRlbm5lIEJhc2guCiAgICBDRFBBVEgJRW4ga29sb25zZXBhcmVyZXQgbGlzdGUgYWYgbWFwcGVyIHNvbSBrYW4gZ2VubmVtc8O4Z2VzIGZvciBhdAogICAgCQlmaW5kZSBtYXBwZXIgc29tIGVyIGdpdmV0IHNvbSBhcmd1bWVudCB0aWwgY2QuCiAgICBHTE9CSUdOT1JFCUVuIGtvbG9uc2VwYXJlcmV0IGxpc3RlIGFmIG3DuG5zdHJlIHNvbSBiZXNrcml2ZXIgZmlsbmF2bmUgc29tCiAgICAJCXNrYWwgaWdub3JlcmVzIHZlZCBzdGluYXZuc3VkdmlkZWxzZS4KICAgIEhJU1RGSUxFCU5hdm5ldCBww6UgZGVuIGZpbCBodm9yaSBkaW4ga29tbWFuZG9oaXN0b3JpayBnZW1tZXMuCiAgICBISVNURklMRVNJWkUJRGV0IG1ha3NpbWFsZSBhbnRhbCBsaW5qZXIgZGVubmUgZmlsIGthbiBpbmRlaG9sZGUuCiAgICBISVNUU0laRQlEZXQgbWFrc2ltYWxlIGFudGFsIGxpbmplciBzb20gZW4ga8O4cmVuZGUgc2thbCBrYW4gdGlsZ8OlLgogICAgSE9NRQlEZXQga29tcGxldHRlIHN0aW5hdm4gdGlsIGRpbiBsb2dpbmRtYXBwZS4KICAgIEhPU1ROQU1FCU5hdm5ldCBww6UgZGVuIGFrdHVlbGxlIHbDpnJ0LgogICAgSE9TVFRZUEUJRGVuIHR5cGUgYWYgQ1BVIHNvbSBkZW5uZSB2ZXJzaW9uIGFmIEJhc2gga8O4cmVyIHVuZGVyLgogICAgSUdOT1JFRU9GCUtvbnRyb2xsZXJlciBza2FsbGVucyBoYW5kbGluZ2VyIGh2aXMgZGVuIG1vZHRhZ2VyIGV0IEVPRi10ZWduCiAgICAJCXNvbSBlbmVzdGUgaW5wdXQuIEh2aXMgZGVuIGVyIGluZHN0aWxsZXQsIGFuZ2l2ZXIgZGVuIGRldCBhbnRhbAogICAgCQlFT0YtdGVnbiBzb20gc2thbCBmw7hsZ2UgbGlnZSBlZnRlciBoaW5hbmRlbiBww6UgZW4gdG9tIGxpbmplLAogICAgCQlmw7hyIHNrYWxsZW4gYWZzbHV0dGVyIChzdGFuZGFyZHbDpnJkaWVuIGVyIDEwKS4gSHZpcyBkZW4gaWtrZSBlcgogICAgICAgICAgICAgICAgaW5kc3RpbGxldCB2aWwgRU9GIGJldHlkZSBzbHV0bmluZ2VuIGFmIGlucHV0LgogICAgTUFDSFRZUEUJRW4gc3RyZW5nIHNvbSBiZXNrcml2ZXIgZGV0IGFrdHVlbGxlIHN5c3RlbSBzb20gQmFzaCBrw7hyZXIgcMOlLgogICAgTUFJTENIRUNLCUh2b3Igb2Z0ZSBCYXNoIHRqZWtrZXIgZm9yIG55IHBvc3QsIGkgc2VrdW5kZXIuCiAgICBNQUlMUEFUSAlFbiBrb2xvbnNlcGFyZXJldCBsaXN0ZSBhZiBmaWxuYXZuZSBzb20gQmFzaCB0amVra2VyIGZvciBueQogICAgCQlwb3N0LgogICAgT1NUWVBFCURlbiB2ZXJzaW9uIGFmIFVuaXggc29tIGRlbm5lIHZlcnNpb24gYWYgQmFzaCBrw7hyZXIgcMOlLgogICAgUEFUSAlFbiBrb2xvbnNlcGFyZXJldCBsaXN0ZSBhZiBtYXBwZXIgc29tIGRlciBzw7hnZXMgaSBlZnRlciBrb21tYW5kb2VyLgogICAgUFJPTVBUX0NPTU1BTkQJRW4ga29tbWFuZG8gc29tIHNrYWwgZWtzZWt2ZXJlcyBmw7hyIGh2ZXIgcHJpbcOmcmUgcHJvbXB0CiAgICAJCXVkc2tyaXZlcy4KICAgIFBTMQkJU3RyZW5nIGZvciBkZW4gcHJpbcOmcmUgcHJvbXB0LgogICAgUFMyCQlTdHJlbmcgZm9yIGRlbiBzZWt1bmTDpnJlIHByb21wdC4KICAgIFBXRAkJRGV0IGZ1bGRlIHN0aW5hdm4gZm9yIGRlbiBha3R1ZWxsZSBtYXBwZS4KICAgIFNIRUxMT1BUUwlFbiBrb2xvbnNlcGFyZXJldCBsaXN0ZSBhZiBha3RpdmVyZWRlIHNrYWx0aWx2YWxnLgogICAgVEVSTQlOYXZuZXQgcMOlIGRlbiBha3R1ZWxsZSBza2FsdHlwZS4KICAgIFRJTUVGT1JNQVQJT3V0cHV0Zm9ybWF0ZXQgZm9yIHRpbWluZ3N0YXRpc3RpayBzb20gdmlzZXMgdmVkIGhqw6ZscCBhZiBkZXQKICAgIAkJcmVzZXJ2ZXJlZGUgb3JkICJ0aW1lIi4KICAgIGF1dG9fcmVzdW1lCUlra2UtbnVsbCBiZXR5ZGVyIGF0IGZvciBldCBrb21tYW5kb29yZCwgc29tIG9wdHLDpmRlciBmb3Igc2lnIHNlbHYKICAgIAkJcMOlIGVuIGxpbmplLCB2aWwgZGVyIGbDuHJzdCBibGl2ZSBraWdnZXQgZWZ0ZXIgZGV0IGkgbGlzdGVuIG92ZXIKICAgIAkJYWt0dWVsdCBzdG9wcGVkZSBqb2JzLiBIdmlzIGRldCBmaW5kZXMgZGVyLCB2aWwgZGV0dGUgam9iIGJsaXZlCiAgICAgICAgICAgICAgICBicmFndCBpIGZvcmdydW5kZW4uIFbDpnJkaWVuICJleGFjdCIgYmV0eWRlciBhdCBrb21tYW5kb29yZGV0CiAgICAgICAgICAgICAgICBza2FsIG1hdGNoZSBldCBvcmQgZnJhIGxpc3RlbiBvdmVyIHN0b3BwZWRlIGpvYnMgcHLDpmNpc3QuCiAgICAgICAgICAgICAgICBWw6ZyZGllbiAic3Vic3RyaW5nIiBiZXR5ZGVyIGF0IGtvbW1hbmRvb3JkZXQgc2thbCBtYXRjaGUgZW4KICAgICAgICAgICAgICAgIGRlbHN0cmVuZyBhZiBqb2JiZXQuIEVuaHZlciBhbmRlbiB2w6ZyZGkgYmV0eWRlciBhdCBrb21tYW5kb2VuCiAgICAgICAgICAgICAgICBza2FsIHbDpnJlIGV0IHByw6ZmaWtzIGZvciBldCBzdG9wcGV0IGpvYi4KICAgIGhpc3RjaGFycwlUZWduIHNvbSBrb250cm9sbGVyZXIgaGlzdG9yaWt1ZHZpZGVsc2Ugb2cgaHVydGlnIHN1YnN0aXR1dGlvbgogICAgCQlpIGhpc3RvcmlrLiBEZXQgZsO4cnN0ZSB0ZWduIGVyIGhpc3RvcmlrLXN1YnN0aXR1dGlvbnN0ZWduZXQsIHNvbQogICAgICAgICAgICAgICAgcmVnZWwgIiEiLiBEZXQgYW5kZXQgdGVnbiBlciBodXJ0aWdzdWJzdGl0dXRpb25zdGVnbmV0LCBzb20KICAgIAkJcmVnZWwgIl4iLiBEZXQgdHJlZGplIHRlZ24gZXIgaGlzdG9yaWsta29tbWVudGFydGVnbmV0LCBzb20KICAgIAkJcmVnZWwgIiMiLgogICAgSElTVElHTk9SRQlFbiBrb2xvbnNlcGFyZXJldCBsaXN0ZSBhZiBtw7huc3RyZSBzb20gYmxpdmVyIGJydWd0IHRpbCBhdAogICAgCQliZXN0ZW1tZSBodmlsa2Uga29tbWFuZG9lciBkZXIgc2thbCBnZW1tZXMgaSBoaXN0b3Jpa2tlbi4KAEZvcnRzw6Z0AE9wcmV0IGVuIGNvcHJvY2VzIHZlZCBuYXZuIE5BVk4uCiAgICAKICAgIEVrc2VrdmVyIEtPTU1BTkRPIGFzeW5rcm9udCwgbWVkIHN0YW5kYXJkb3V0cHV0IG9nIHN0YW5kYXJkaW5wdXQKICAgIGZvciBrb21tYW5kb2VuIGZvcmJ1bmRldCB2aWEgZW4gZGF0YWthbmFsIChwaXBlKSwgdGlsIGZpbGRlc2tyaXB0b3Jlcm5lCiAgICB0aWxkZWx0IHRpbCBpbmRla3MgMCBvZyAxIGkgZW4gYXJyYXl2YXJpYWJlbCBOQVZOIGkgZGVuIGVrc2VrdmVyZW5kZSBza2FsLgogICAgU3RhbmRhcmRuYXZuZXQgTkFWTiBlciAiQ09QUk9DIi4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIGFmc2x1dG5pbmdzc3RhdHVzc2VuIGZvciBLT01NQU5ETy4ARGVmaW5lciBlbGxlciB2aXMgYWxpYXNzZXIuCiAgICAKICAgIFVkZW4gYXJndW1lbnRlciB2aWwgImFsaWFzIiB1ZHNrcml2ZSBlbiBsaXN0ZSBhZiBhbGlhc3NlciBww6UgZGVuCiAgICBnZW5hbnZlbmRlbGlnZSBmb3JtIGFsaWFzIE5BVk49VsOGUkRJIHRpbCBzdGFuZGFyZG91dHB1dC4KICAgIAogICAgRWxsZXJzIHZpbCBkZXIgYmxpdmUgZGVmaW5lcmV0IGV0IGFsaWFzIGZvciBodmVydCBOQVZOLCBzb20gZGVyIGVyIGFuLQogICAgZ2l2ZXQgZW4gVsOGUkRJIHRpbC4gRXQgZWZ0ZXJmw7hsZ2VuZGUgbWVsbGVtcnVtIGkgVsOGUkRJIHZpbCBtZWRmw7hyZSwKICAgIGF0IGRldCBuw6ZzdGUgb3JkIHZpbCBibGl2ZSBrb250cm9sbGVyZXQgZm9yIGFsaWFzLXVkc2tpZnRuaW5nLCBuw6VyCiAgICBhbGlhc3NldCB1ZHZpZGVzLgogICAgCiAgICBUaWx2YWxnOgogICAgICAtcAlVZHNrcml2ZXIgYWxsZSBkZWZpbmVyZWRlIGFsaWFzc2VyIGkgZXQgZ2VuYW52ZW5kZWxpZyBmb3JtYXQKICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBhbGlhcyByZXR1cm5lcmVyIHNhbmQgbWVkIG1pbmRyZSBkZXIgZ2l2ZXMgZXQgTkFWTiBzb20gZGVyIGlra2UgZXIKICAgIGRlZmluZXJldCBub2dldCBhbGlhcyBmb3IuAERlZmluZXIgc2thbGZ1bmt0aW9uLgogICAgCiAgICBPcHJldCBlbiBza2FsZnVua3Rpb24gdmVkIG5hdm4gTkFWTi4gTsOlciBkZW4ga8O4cmVzIHNvbSBlbiBzaW1wZWwga29tbWFuZG8sCiAgICBOQVZOIGvDuHJlciBLT01NQU5ET2VyIGkgZGVuIGthbGRlbmRlIHNrYWxzIGtvbnRla3N0LiBOw6VyIE5BVk4ga2FsZGVzLCBibGl2ZXIKICAgIGFyZ3VtZW50ZXIgc2VuZHQgdmlkZXJlIHNvbSAkMS4uJG4sIG9nIGZ1bmt0aW9uZW5zIG5hdm4gc29tICRGVU5DTkFNRS4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIHN1Y2NlcyBtZWQgbWluZHJlIE5BVk4gZXIgc2tyaXZlYmVza3l0dGV0LgBWaXMgbWFwcGVzdGFra2VuLgogICAgCiAgICBWaXMgbGlzdGVuIGFmIGh1c2tlZGUgbWFwcGVyLiBNYXBwZXIgdGlsZsO4amVzIGRlbm5lIGxpc3RlIHZlZCBoasOmbHAKICAgIGFmICJwdXNoZCIta29tbWFuZG9lbi4gRHUga2FuIGtvbW1lIHRpbGJhZ2UgZ2VubmVtIGxpc3RlbiBtZWQgInBvcGQiLQogICAga29tbWFuZG9lbi4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLWMJcnlkIG1hcHBlc3Rha2tlbiB2ZWQgYXQgc2xldHRlIGFsbGUgZGVucyBlbGVtZW50ZXIKICAgICAgLWwJdWRza3JpdiBpa2tlIG1hcHBlciByZWxhdGl2dCB0aWwgZGluIGhqZW1tZW1hcHBlIG1lZCBldAogICAgICAgIGZvcmFuc3RpbGxldCB0aWxkZXRlZ24KICAgICAgLXAJdWRza3JpdiBtYXBwZXN0YWtrZW4gbWVkIGV0IGVsZW1lbnQgcGVyIGxpbmplCiAgICAgIC12CXVkc2tyaXYgbWFwcGVzdGFra2VuIG1lZCBldCBlbGVtZW50IHBlciBsaW5qZSwgbWVkIGRldHMKICAgIAlwb3NpdGlvbiBpIHN0YWtrZW4gZm9yYW5zdGlsbGV0CiAgICAKICAgIEFyZ3VtZW50ZXI6CiAgICAgICtOCVZpc2VyIGRldCBOJ3RlIGVsZW1lbnQsIHRhbHQgZnJhIHZlbnN0cmUgaSBsaXN0ZW4gc29tIGRlbiB2aXNlcwogICAgICAgIGFmICJkaXJzIiBrw7hydCB1ZGVuIGFyZ3VtZW50ZXIsIHRhbHQgZnJhIG51bC4KICAgICAgLU4JVmlzZXIgZGV0IE4ndGUgZWxlbWVudCwgdGFsdCBmcmEgaMO4anJlIGkgbGlzdGVuIHNvbSBkZW4gdmlzZXMgYWYKICAgIAkiZGlycyIga8O4cnQgdWRlbiBhcmd1bWVudGVyLCB0YWx0IGZyYSBudWwuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdWNjZXMgbWVkIG1pbmRyZSBkZXIgYW5naXZlcyBldCB1Z3lsZGlndCB0aWx2YWxnLCBlbGxlciBodmlzIGRlcgogICAgb3BzdMOlciBlbiBmZWpsLgBWaXMgaW5mb3JtYXRpb24gb20gaW5kYnlnZ2VkZSBrb21tYW5kb2VyLgogICAgCiAgICBWaXNlciBrb3J0ZSBzYW1tZW5kcmFnIG9tIGluZGJ5Z2dlZGUga29tbWFuZG9lci4gSHZpcyBNw5hOU1RFUiBlciBhbmdpdmV0LAogICAgdmlsIGRlciBibGl2ZSBnaXZldCBlbiBkZXRhbGplcmV0IGhqw6ZscCwgb20gYWxsZSBkZSBrb21tYW5kb2VyIHNvbSBtYXRjaGVyCiAgICBNw5hOU1RFUiwgZWxsZXJzIHZpbCBkZXIgYmxpdmUgdWRza3JldmV0IGVuIGxpc3RlIG92ZXIgaGrDpmxwZWVtbmVyLgogICAgCiAgICBUaWx2YWxnOgogICAgICAtZAl1ZHNrcml2ZXIga29ydCBiZXNrcml2ZWxzZSBmb3IgaHZlcnQgZW1uZQogICAgICAtbQl2aXNlciBicnVnc2luZm9ybWF0aW9uIGkgcHNldWRvLW1hbnNpZGVmb3JtYXQKICAgICAgLXMJdmlzIGt1biBlbiBrb3J0IHN5bm9wc2lzIGZvciBodmVydCBlbW5lIHNvbSBtYXRjaGVyIE3DmE5TVEVSCiAgICAKICAgIEFyZ3VtZW50ZXI6CiAgICAgIE3DmE5TVEVSCU3DuG5zdGVyIHNvbSBzcGVjaWZpY2VyZXIgZXQgaGrDpmxwZWVtbmUKICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIHN1Y2NlcyBtZWQgbWluZHJlIE3DmE5TVEVSIGlra2Uga2FuIGZpbmRlcywgZWxsZXIgaHZpcyBkZXIKICAgIGFuZ2l2ZXMgZXQgdWd5bGRpZ3QgdGlsdmFsZy4AVmlzIGluZm9ybWF0aW9uIG9tIGtvbW1hbmRvZXJzIHR5cGUuCiAgICAKICAgIE9wbHlzIGZvciBodmVydCBOQVZOLCBodm9yZGFuIGRldCB2aWxsZSBibGl2ZSB0b2xrZXQsIGh2aXMgZGV0IGJsZXYgYnJ1Z3QKICAgIHNvbSBlbiBrb21tYW5kby4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLWEJdmlzIGFsbGUgcGxhY2VyaW5nZXIgc29tIGluZGVob2xkZXIgZW4gZWtzZWt2ZXJiYXIgdmVkIG5hdm4gTkFWTjsKICAgIAlpbmtsdWRlciBhbGlhc3NlciwgaW5kYnlnZ2VkZSBvZyBmdW5rdGlvbmVyLCBodmlzIG9nIGt1biBodmlzIHRpbHZhbGdldAogICAgCSItcCIgaWtrZSBvZ3PDpSBicnVnZXMKICAgICAgLWYJdW5kZXJ0cnlrIHPDuGduaW5nIGVmdGVyIHNrYWxmdW5rdGlvbmVyCiAgICAgIC1QCWdlbm5lbXR2aW5nIGVuIHN0aXPDuGduaW5nIGZvciBodmVydCBOQVZOLCBzZWx2b20gZGV0IGVyIGV0CiAgICAJYWxpYXMsIGVuIGluZGJ5Z2dldCBlbGxlciBlbiBmdW5rdGlvbiBvZyByZXR1cm5lciBzYW1tZSBuYXZuZSBzb20gZGVuCiAgICAJZGlza2ZpbCBkZXIgdmlsbGUgYmxpdmUgZWtzZWt2ZXJldAogICAgICAtcAlyZXR1cm5lcmVyIGVudGVuIG5hdm5ldCBww6UgZGVuIGRpc2tmaWwsIHNvbSB2aWxsZSBibGl2ZQogICAgCWVrc2VrdmVyZXQsIGVsbGVyIGluZ2VudGluZyBodmlzICJ0eXBlIC10IE5BVk4iIGlra2UgdmlsbGUgaGF2ZQogICAgCXJldHVybmVyZXQgImZpbGUiLgogICAgICAtdAlyZXR1cm5lciBldCBlbmtlbHQgb3JkLCBlbnRlbiAiYWxpYXMiLCAia2V5d29yZCIsICJmdW5jdGlvbiIsCiAgICAJImJ1aWx0aW4iLCAiZmlsZSIgZWxsZXIgIiIsIGh2aXMgTkFWTiBlciBoZW5ob2xkc3ZpcyBldCBhbGlhcywKICAgICAgICBza2FscmVzZXJ2ZXJldCBvcmQsIHNrYWxmdW5rdGlvbiwgc2thbGluZGJ5Z2dldCwgZGlza2ZpbCBlbGxlciBpa2tlIGJsZXYKICAgICAgICBmdW5kZXQuCiAgICAKICAgIEFyZ3VtZW50ZXI6CiAgICAgIE5BVk4JTmF2bmV0IHDDpSBkZW4ga29tbWFuZG8gZGVyIHNrYWwgZm9ydG9sa2VzLgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3VjY2VzIGh2aXMgYWxsZSBOQVZOZSBrYW4gZmluZGVzLCBvZyBmZWpsZXIgaHZpcyBiYXJlIGV0IGVua2VsdAogICAgaWtrZSBmaW5kZXMuAFZpcyBvZyBla3Nla3ZlciBrb21tYW5kb2VyIGZyYSBoaXN0b3Jpa2xpc3Rlbi4KICAgIAogICAgZmMgYnJ1Z2VzIHRpbCBhdCB2aXNlLCByZWRpZ2VyZSBvZyBnZW5la3Nla3ZlcmUga29tbWFuZG9lciBmcmEgaGlzdG9yaWtrZW4uCiAgICBGw5hSU1RFIG9nIFNJRFNURSBrYW4gdsOmcmUgbnVtcmUgc29tIHNwZWNpZmljZXJlciBldCBpbnRlcnZhbCwgZWxsZXIgRsOYUlNURQogICAga2FuIHbDpnJlIGVuIHN0cmVuZywgaHZpbGtldCB2aWwgcmVzdWx0ZXJlIGkgZGVuIG55ZXN0ZSBrb21tYW5kbyBzb20KICAgIGJlZ3luZGVyIG1lZCBkZW4gc3RyZW5nLgogICAgCiAgICBUaWx2YWxnOiAgICAKICAgICAgIC1lIEVOQVZOCXbDpmxnZXIgaHZpbGtldCB0ZWtzdHJlZGlnZXJpbmdzcHJvZ3JhbSwgZGVyIHZpbCBibGl2ZXIgYnJ1Z3QuCiAgICAgICAgICBGb3J2YWxnZXQgZXIgRkNFRElULCBoZXJlZnRlciBFRElUT1Igb2cgdGlsIHNpZHN0ICJ2aSIuCiAgICAgICAtbCAJYmV0eWRlciB2aXMgbGluamVyIGkgc3RlZGV0IGZvciBhdCByZWRpZ2VyZSBkZW0uCiAgICAgICAtbgliZXR5ZGVyIGF0IGxpbmplbnVtcmUgaWtrZSB2aXNlcy4KICAgICAgIC1yCWJldHlkZXIgYXQgcsOma2tlZsO4bGdlbiBhZiBsaW5qZXIgdmVuZGVzIChzw6UgbnllIGVyIGbDuHJzdCkuCiAgICAgICAKICAgIE1lZCAiZmMgLXMgW3BhdD1yZXAgLi4uXSBbY29tbWFuZF0iLWZvcm1hdGV0IHZpbCBrb21tYW5kb2VuIGJsaXZlIGdlbi0KICAgIGVrc2VrdmVyZXQgZWZ0ZXIgc3Vic3RpdHV0aW9uZW4gR0FNTUVMPU5ZIGVyIGZvcmV0YWdldC4KICAgIAogICAgRXQgbnl0dGlndCBhbGlhcyBlciByPVwiZmMgLXNcIiwgc29tIHZpbCBtZWRmw7hyZSBhdCBkZW4gc2lkc3RlIGtvbW1hbmRvCiAgICBkZXIgYmVneW5kZXIgbWVkIFwiY2NcIiB2aWwgYWZ2aWtsZXMsIG7DpXIgZGVyIHNrcml2ZXMgXCJyIGNjXCIsIG9nIGF0CiAgICBkZW4gc2VuZXN0ZSBrb21tYW5kbyBhZnZpa2xlcywgbsOlciBkZXIgc2tyaXZlcyBcInJcIi4KCiAgICBBZnNsdXRuaW5nc3N0YXR1cy4KICAgIFJldHVybmVyZXIgc3VjY2VzIGVsbGVyIHN0YXR1cyBhZiBkZW4gZWtzZWt2ZXJlZGUga29tbWFuZG8sIGlra2UtbnVsIGh2aXMKICAgIGRlciBvcHN0b2QgZW4gZmVqbC4AVmlzIGVsbGVyIG1hbmlwdWxlciBtZWQgaGlzdG9yaWtsaXN0ZW4uCgogICAgVmlzIGhpc3Rvcmlra2VuIG1lZCBsaW5qZW51bXJlLiBMaW5qZXIgc29tIHZpc2VzIG1lZCAiKiIgZXIgYmxldmV0CiAgICDDpm5kcmV0LiBBcmd1bWVudGV0IE4gZ8O4ciBhdCBrdW4gZGUgTiBzaWRzdGUgbGluamVyIGJsaXZlciB2aXN0LgogICAgCiAgICBUaWx2YWxnOgogICAgICAtYwlyeWRkZXIgaGlzdG9yaWtsaXN0ZW4gdmVkIGF0IHNsZXR0ZSBhbGxlIGVsZW1lbnRlciBpIGRlbi4KICAgICAgLWQgZm9yc2t5ZG5pbmcJc2xldHRlciBoaXN0b3Jpay1lbGVtZW50ZXQgdmVkIHBvc2l0aW9uIEZPUlNLWUROSU5HLgogICAgICAtYQl2ZWRow6ZmdGVyIGhpc3RvcmlrbGluamVyIGZyYSBkZW5uZSBzZXNzaW9uIHRpbCBoaXN0b3Jpa2ZpbGVuLgogICAgICAtbglpbmRsw6ZzZXIgYWxsZSBsaW5qZXIgZnJhIGhpc3RvcmlrZmlsZW4sIHNvbSBpa2tlIGFsbGVyZWRlIGVyCiAgICAJaW5kbMOmc3QKICAgICAgLXIJaW5kbMOmc2VyIGhpc3RvcmlrZmlsZW4gb2cgZsO4amVyIGRlbnMgaW5kaG9sZCB0aWwgaGlzdG9yaWtsaXN0ZW4KICAgICAgLXcJc2tyaXZlciBkZW4gbnV2w6ZyZW5kZSBoaXN0b3JpayB0aWwgaGlzdG9yaWtmaWxlbiBvZyB2ZWRow6ZmdCBkZW0KICAgIAl0aWwgaGlzdG9yaWtsaXN0ZW4KICAgIAogICAgICAtcAl1ZGbDuHIgZW4gaGlzdG9yaWt1ZHZpZGVsc2UgcMOlIGh2ZXJ0IGVua2VsdCBBUkcgb2cgdWRza3JpdgogICAgCXJlc3VsdGF0ZXQgdWRlbiBhdCB0aWxmw7hqZSBkZXQgdGlsIGhpc3Rvcmlra2VuCiAgICAgIC1zCXZlZGjDpmZ0IEFSR2VyIHRpbCBoaXN0b3Jpa2xpc3RlbiBzb20gZXQgZW5rZWx0IGVsZW1lbnQKICAgIAogICAgSHZpcyBGSUxFTkFWTiBlciBhbmdpdmV0LCB2aWwgZGVuIGJsaXZlIGJydWd0IHNvbSBoaXN0b3Jpa2ZpbCwKICAgIGVsbGVycyB2aWwgJEhJU1RGSUxFIGJsaXZlIGJydWd0LCBodmlzIGRlbiBoYXIgZW4gdsOmcmRpIG9nIGVsbGVycwogICAgdmlsIH4vLmJhc2hfaGlzdG9yeSBibGl2ZSBicnVndC4KICAgICAKICAgIEh2aXMgdmFyaWFibGVuICRISVNUVElNRUZPUk1BVCBlciBpbmRzdGlsbGV0IG9nIGlra2UgZXIgIm51bGwiLCB2aWwgZGVucwogICAgdsOmcmRpIGJsaXZlIGJydWd0IHNvbSBmb3JtYXRzdHJlbmcgdGlsIHN0cmZ0aW1lKDMpIHRpbCBmb3JtYXRlcmluZyBhZgogICAgdGlkc3B1bmt0IGZvciBodmVydCBoaXN0b3Jpa2VsZW1lbnQuIEVsbGVycyB2aWwgaW5nZW4gdGlkc3N0ZW1wbGVyIGJsaXZlCiAgICBza3JldmV0LgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3VjY2VzIG1lZCBtaW5kcmUgZGVyIGVyIGFuZ2l2ZXQgZXQgdWd5bGRpZyB0aWx2YWxnLCBlbGxlciBodmlzCiAgICBkZXIgb3BzdMOlciBlbiBmZWpsLgBWaXMgZWxsZXIgaW5kc3RpbCBmaWxtYXNrZXRpbHN0YW5kLgogICAgCiAgICBJbmRzdGlsbGVyIGJydWdlcmVzIGZpbG9wcmV0dGVsc2VzbWFza2UgdGlsIFRJTFNUQU5ELiBIdmlzIFRJTFNUQU5EIHVkZWxhZGVzLAogICAgdWRza3JpdmVzIGRlbiBudXbDpnJlbmRlIHbDpnJkaSBhZiBtYXNrZW4uCiAgICAKICAgIEh2aXMgVElMU1RBTkQgYmVneW5kZXIgbWVkIGV0IGNpZmZlciwgYmxpdmVyIGRldCBmb3J0b2xrZXQgc29tIGV0IG9rdGFsdAogICAgdGFsLCBlbGxlcnMgZXIgZGV0IGVuIHN5bWJvbHNrIHRpbHN0YW5kc3N0cmVuZywgbGlnZXNvbSBkZW0gZGVyIGFuZ2l2ZXMKICAgIHRpbCBjaG1vZCgxKS4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLXAJaHZpcyBUSUxTVEFORCB1ZGVsYWRlcywgdWRza3JpdmVzIGRlciBpIGVuIGZvcm0gZGVyIGthbiBicnVnZXMKICAgIAlzb20gaW5wdXQKICAgICAgLVMJZ8O4ciBvdXRwdXR0ZXQgc3ltYm9sc2ssIGVsbGVyIHZpbCBvdXRwdXQgdsOmcmUgZXQgb2t0YWx0IHRhbAogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3VjY2VzIG1lZCBtaW5kcmUgVElMU1RBTkQgZXIgdWd5bGRpZywgZWxsZXIgaHZpcyBldCB1Z3lsZGlndAogICAgdGlsdmFsZyBhbmdpdmVzLgBWaXMgbXVsaWdlIGZ1bGRmw7hyc2xlciBhZmjDpm5naWd0IGFmIGluZHN0aWxsaW5nZXJuZS4KICAgIAogICAgQmVyZWduZXQgdGlsIGJydWcgaSBza2FsZnVua3Rpb25lciBzb20gZ2VuZXJlcmVyIGRlIG11bGlnZSBmdWxkZsO4cmVsc2VyLgogICAgSHZpcyBkZXQgdmFsZ2ZyaWUgT1JEIGFuZ2l2ZXMsIHZpbCBkZXIgYmxpdmUgZ2VuZXJlcmV0IGZ1bGRmw7hyc2xlciBzb20KICAgIG1hdGNoZXIgT1JELgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3VjY2VzIG1lZCBtaW5kcmUgZGVyIGFuZ2l2ZXMgZXQgdWd5bGRpZ3QgdGlsdmFsZywgZWxsZXIgaHZpcwogICAgZGVyIG9wc3TDpXIgZW4gZmVqbC4AVmlzIHByb2Nlc3RpZC4KICAgIAogICAgVWRza3JpdmVyIGRlbiBha2t1bXVsZXJlZGUgYnJ1Z2VyLSBvZyBzeXN0ZW10aWQgZm9yIHNrYWxsZW4gb2cgYWxsZSBkZW5zCiAgICB1bmRlcnByb2Nlc3Nlci4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBMeWtrZXMgYWx0aWQuAFZpc2VyIGxpc3RlbiBhZiBodXNrZWRlIG1hcHBlci4gTWFwcGVyIHRpbGbDuGplcyB0aWwgbGlzdGVuIG1lZAogICAgInB1c2hkIi1rb21tYW5kb2VuLiBEdSBrYW4ga29tbWUgdGlsYmFnZSBpIGxpc3RlbiBtZWQgInBvcGQiLQogICAga29tbWFuZG9lbi4KCiAgICBWYWxnbXVsaWdoZWRlcjoKICAgICAgLWMJcnlkIG1hcHBlc3Rha2tlbiB2ZWQgYXQgc2xldHRlIGFsbGUgZWxlbWVudGVybmUKICAgICAgLWwJdmlzIGlra2UgInRpbGRlcHLDpmZpa3NlZGUiIHZlcnNpb25lciBhZiBtYXBwZXIgcmVsYXRpdnQKICAgICAgICB0aWwgZGluIGhqZW1tZW1hcHBlCiAgICAgIC1wCXZpcyBtYXBwZXN0YWtrZW4gbWVkIGV0IGVsZW1lbnQgcGVyIGxpbmplCiAgICAgIC12CXZpcyBtYXBwZXN0YWtrZW4gbWVkIGV0IGVsZW1lbnQgcGVyIGxpbmplLCBwcsOmZmlrc2V0IG1lZAogICAgICAgIG1lZCBkZXRzIHBvc2l0aW9uIGkgc3Rha2tlbgogICAgCiAgICBBcmd1bWVudGVyOgogICAgICArTglWaXNlciBkZXQgTid0ZSBlbGVtZW50LCB0YWx0IGZyYSB2ZW5zdHJlIGFmIG9nIHZpc3QgbWFwcGV2aXMKICAgICAgICBuw6VyIGRlciBpa2tlIGFuZ2l2ZXMgbm9nbGUgdmFsZ211bGlnaGVkZXIsIHN0YXJ0ZW5kZSBmcmEgMC4KICAgIAogICAgICAtTglWaXNlciBkZXQgTid0ZSBlbGVtZW50LCB0YWx0IGZyYSB2ZW5zdHJlIGFmIG9nIHZpc3QgbWFwcGV2aXMKICAgICAgICBuw6VyIGRlciBpa2tlIGFuZ2l2ZXMgbm9nbGUgdmFsZ211bGlnaGVkZXIsIHN0YXJ0ZW5kZSBmcmEgMC4ARsOmcmRpZwBGw6ZyZGlnKCVkKQBFTVQtaW5zdHJ1a3Rpb24AQWt0aXZlciBvZyBkZWFrdGl2ZXIgc2thbC1pbmRieWdnZWRlLgogICAgCiAgICBBa3RpdmVyZXIgb2cgZGVha3RpdmVyZXIgaW5kYnlnZ2VkZSBza2Fsa29tbWFuZG9lci4gRGVha3RpdmVyaW5nIHRpbGxhZGVyCiAgICBkaWcgYXQgdWRmw7hyZSBkaXNra29tbWFuZG9lciwgc29tIGhhciBkZXQgc2FtbWVuIG5hdm4gc29tIGVuIHNrYWwtaW5kYnlnZ2V0CiAgICB1ZGVuIGF0IGJydWdlIGV0IGZ1bGR0IHN0aW5hdm4uCiAgICAKICAgIFRpbHZhbGc6CiAgICAgIC1hCXVkc2tyaXZlciBlbiBsaXN0ZSBvdmVyIGluZGJ5Z2dlZGUsIHVhbnNldCBvbSBkZSBlciBzbMOlZXQgdGlsCiAgICAgIC1uCWRlYWt0aXZlciBodmVydCBOQVZOIGVsbGVyIHZpcyBlbiBsaXN0ZSBhZiBkZWFrdGl2ZXJlZGUgZnVuay0KICAgIAl0aW9uZXIKICAgICAgLXAJdWRza3JpdiBlbiBsaXN0ZSBvdmVyIGluZGJ5Z2dlZGUgaSBldCBnZW5hbnZlbmRlbGlndCBmb3JtYXQKICAgICAgLXMJdWRza3JpdiBrdW4gbmF2bmUgZm9yICJzcGVjaWVsbGUiIFBvc2l4LWluZGJ5Z2dlZGUKICAgIAogICAgVGlsdmFsZyBzb20ga29udHJvbGxlcmVyIGR5bmFtaXNrIGluZGzDpnNuaW5nOgogICAgICAtZglJbmRsw6ZzIGluZGJ5Z2dldCBOQVZOIGZyYSBkZXQgZGVsdGUgb2JqZWt0IEZJTE5BVk4KICAgICAgLWQJRmplcm4gZW4gaW5kYnlnZ2V0IGluZGzDpnN0IG1lZCAtZgogICAgCiAgICBVZGVuIHRpbHZhbGcgYmxpdmVyIGh2ZXJ0IE5BVk4gYWt0aXZlcmV0LiAgIAogICAgCiAgICBTa3JpdiAiZW5hYmxlIC1uIHRlc3QiIGZvciBhdCBicnVnZSBkZW4gInRlc3QiIHNvbSBmaW5kZXMgaSAkUEFUSCwgaSBzdGVkZXQKICAgIGZvciBkZW4gaW5kYnlnZ2VkZSB2ZXJzaW9uLgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3VjY2VzIG1lZCBtaW5kcmUgTkFWTiBpa2tlIGVyIGVuIHNrYWwtaW5kYnlnZ2V0IGVsbGVyIGh2aXMKICAgIGRlciBvcHN0w6VyIGVuIGZlamwuAEV2YWx1ZXIgYXJpdG1ldGlzayB1ZHRyeWsuCiAgICAKICAgIFVEVFJZSyBldmFsdWVyZXMgaWbDuGxnZSByZWdsZXJuZSBmb3IgYXJpdG1ldGlzayBldmFsdWVyaW5nLiDDhmt2aXZhbGVudCB0aWwKICAgICJsZXQgVURUUllLIi4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIDEgaHZpcyB1ZHRyeWtrZXQgZXZhbHVlcmVzIHRpbCAwLCBlbGxlcnMgcmV0dXJuZXJlcyAwLgBFdmFsdWVyIGJldGluZ2Vsc2VzdWR0cnlrLgogICAgCiAgICBEZXR0ZSBlciBldCBzeW5vbnltIGZvciBkZW4gaW5kYnlnZ2VkZSBmdW5rdGlvbiAidGVzdCIsIGRvZyBza2FsIGRldCBzaWRzdGUKICAgIGFyZ3VtZW50IHNrYWwgdsOmcmUgIl0iLCBmb3IgYXQgZGVuIHBhc3NlciB0aWwgZGVuIMOlYm5lbmRlICJbIi4ARWtzZWt2ZXJlciBlbiBzaW1wZWwga29tbWFuZG8gZWxsZXIgdmlzZXIgaW5mb3JtYXRpb24gb20ga29tbWFuZG9lci4KICAgIAogICAgS8O4cmVyIEtPTU1BTkRPIG1lZCBBUkdlciBtZWQgdW5kZXJ0cnlra2Vsc2UgYWYgc2thbGZ1bmt0aW9uc29wc2xhZywgZWxsZXIKICAgIHZpcyBpbmZvcm1hdGlvbiBvbSBkZSBhbmdpdm5lIEtPTU1BTkRPRVIuIEthbiBicnVnZXMgdGlsIGF0IGvDuHJlIGtvbW1hbmRvZXIKICAgIGZyYSBkaXNrZW4sIG7DpXIgZW4gZnVua3Rpb24gYWYgc2FtbWUgbmF2biBla3Npc3RlcmVyLgogICAgCiAgICBUaWx2YWxnOgogICAgICAtcAlicnVnIGVuIHN0YW5kYXJkdsOmcmRpIGZvciBQQVRIIHNvbSBtZWQgZ2FyYW50aSB2aWwgZmluZGUgYWxsZQogICAgCXN0YW5kYXJkdsOmcmt0w7hqZXJuZQogICAgICAtdgl1ZHNrcml2IGVuIGJlc2tyaXZlbHNlIGFmIEtPTU1BTkRPLCBpIHN0aWwgbWVkIGRlbiBza2FsLQogICAgCWluZGJ5Z2dlZGUgInR5cGUiCiAgICAgIC1WCVVkc2tyaXYgZW4gc3TDuHJyZSBiZXNrcml2ZWxzZSBhZiBodmVyIGtvbW1hbmRvCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBhZnNsdXRuaW5nc3N0YXR1cyBmcmEgS09NTUFORE8gZWxsZXIgbWlzbHlra2V0IGh2aXMgS09NTUFORE8KICAgIGlra2UgZmluZGVzLgBFa3Nla3ZlciBhcmd1bWVudGVyIHNvbSBlbiBza2Fsa29tbWFuZG8uCiAgICAKICAgIEtvbWJpbmVyZXIgQVJHZXIgdGlsIGVuIGVua2VsdCBzdHJlbmcsIGJydWcgcmVzdWx0YXRldCBzb20gaW5wdXQgdGlsIHNrYWxsZW4KICAgIG9nIHVkZsO4ciBkZW4gcmVzdWx0ZXJlbmRlIGtvbW1hbmRvLgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIga29tbWFuZG9lbnMgYWZzbHV0bmluZ3NzdGF0dXMgZWxsZXIgc3VjY2VzIGh2aXMga29tbWFuZG9lbiBlcgogICAgbnVsbC4ARWtzZWt2ZXIga29tbWFuZG9lciBzw6UgbMOmbmdlIGVuIHRlc3QgaWtrZSBldmFsdWVyZXIgdGlsIGZhbHNrLgogICAgCiAgICBVZHZpZCBvZyBla3Nla3ZlciBLT01NQU5ET0VSIHPDpSBsw6ZuZ2UgZGVuIHNpZHN0ZSBrb21tYW5kbyBpICJ1bnRpbGwiCiAgICBLT01NQU5ET0VSIGhhciBlbiBhZnNsdXRuaW5nc3N0YXR1cyBzb20gaWtrZSBlciBudWwuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdGF0dXNzZW4gZnJhIGRlbiBzaWRzdCBla3Nla3ZlcmVkZSBrb21tYW5kby4ARWtzZWt2ZXIga29tbWFuZG9lciBzw6UgbMOmbmdlIGVuIHRlc3QgZXZhbHVlcmVyIHRpbCBzYWQuCiAgICAKICAgIFVkdmlkIG9nIGVrc2VrdmVyIEtPTU1BTkRPRVIgc8OlIGzDpm5nZSBkZW4gc2lkc3RlIGtvbW1hbmRvIGkgIndoaWxlIgogICAgS09NTUFORE9FUiBoYXIgZW4gYWZzbHV0bmluZ3NzdGF0dXMgcMOlIG51bC4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIHN0YXR1c3NlbiBmcmEgZGVuIHNpZHN0IGVrc2VrdmVyZWRlIGtvbW1hbmRvLgBFa3Nla3ZlcmVyIGtvbW1hbmRvZXIgYmFzZXJldCBww6UgYmV0aW5nZWxzZS4KICAgIAogICAgTGlzdGVuICJpZiBLT01NQU5ET0VSIiBibGl2ZXIgZWtzZWt2ZXJldC4gSHZpcyBkZW5zIGFmc2x1dG5pbmdzc3RhdHVzIGVyCiAgICBudWwsIHPDpSB2aWwgbGlzdGVuICJ0aGVuIEtPTU1BTkRPRVIiIGJsaXZlIGVrc2VrdmVyZXQuIEVsbGVycyB2aWwgaHZlcgogICAgImVsaWYgS09NTUFORE9FUiItbGlzdGUgYmxpdmUgZWtzZWt2ZXJldCBvZyBodmlzIGRlIHJldHVybmVyZXIgbnVsIHZpbAogICAgZGVyZXMgdGlsaMO4cmVuZGUgInRoZW4gS09NTUFOREVSIi1saXN0ZSBibGl2ZSBla3Nla3ZlcmV0IG9nIGlmLWtvbW1hbmRvZW4KICAgIGZ1bGRmw7hyZXMuIEVsbGVycyB2aWwgImVsc2UgS09NTUFORE9FUiItbGlzdGVuIGJsaXZlIGVrc2VrdmVyZXQsIGh2aXMgZW4KICAgIHPDpWRhbiBmaW5kZXMuIEFmc2x1dG5pbmdzc3RhdHVzIGZvciBoZWxlIHN0cnVrdHVyZW4gZXIgYWZzbHV0bmluZ3MtCiAgICBzdGF0dXNzZW4gZm9yIGRlbiBzaWRzdGUga29tbWFuZG8sIGVsbGVyIG51bCBodmlzIGluZ2VuIGJldGluZ2Vsc2UgdmFyCiAgICBzYW5kLgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3RhdHVzc2VuIGZyYSBkZW4gc2lkc3QgZWtzZWt2ZXJlZGUga29tbWFuZG8uAEVrc2VrdmVyIGtvbW1hbmRvZXIgYmFzZXJldCBww6UgbcO4bnN0ZXJzYW1tZW5saWduaW5nLgogICAgCiAgICBFa3Nla3ZlciBzZWxla3RpdnQgS09NTUFORE9FUiBuw6VyIE9SRCBwYXNzZXIgdGlsIE3DmE5TVEVSLiAifCIgYnJ1Z2VzIHRpbCBhdAogICAgYWRza2lsbGUgZmxlcmUgbcO4bnN0cmUuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdGF0dXNzZW4gZnJhIGRlbiBzaWRzdCBla3Nla3ZlcmVkZSBrb21tYW5kby4ARWtzZWt2ZXIga29tbWFuZG9lciBodm9yIGh2ZXJ0IGVsZW1lbnQgaSBlbiBsaXN0ZS4KICAgIAogICAgImZvciItbMO4a2tlbiBla3Nla3ZlcmVyIGVuIHNla3ZlbnMgYWYga29tbWFuZG9lciBmb3IgaHZlcnQgZWxlbWVudCBpIGVuCiAgICBhbmdpdmV0IGxpc3RlIGFmIGVsZW1lbnRlci4gSHZpcyAiaW4gT1JEIC4uLjsiIGlra2UgZXIgdGlsc3RlZGUsIHPDpSBhbnRhZ2VzCiAgICAiaW4gIiRAIiIuIEZvciBodmVydCBlbGVtZW50IGkgT1JELCB2aWwgTkFWTiBibGl2ZSBzYXQgdGlsIGRldCBlbGVtZW50IG9nCiAgICBLT01NQU5ET0VSIHZpbCBibGl2ZSBla3Nla3ZlcmV0LgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3RhdHVzc2VuIGZvciBkZW4gc2lkc3QgZWtzZWt2ZXJlZGUga29tbWFuZG8uAEVrc2VrdmVyIGtvbW1hbmRvZXIgZnJhIGVuIGZpbCBpIGRlbiBha3R1ZWxsZSBza2FsLgogICAgCiAgICBMw6ZzIG9nIGVrc2VrdmVyIGtvbW1hbmRvZXIgZnJhIEZJTE5BVk4gaSBkZW4gYWt0dWVsbGUgc2thbC4gRWxlbWVudGVybmUgaQogICAgJFBBVEggYnJ1Z2VzIHRpbCBhdCBmaW5kZSBkZW4gbWFwcGUgc29tIEZJTE5BVk4gbGlnZ2VyIGkuIEh2aXMgZGVyIGFuZ2l2ZXMKICAgIEFSR1VNRU5URVIsIG9tZGFubmVzIGRlIHRpbCBwb3NpdGlvbnNwYXJhbWV0cmUgbsOlciBGSUxOQVZOIGVrc2VrdmVyZXMuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdGF0dXMgZnJhIGRlbiBzaWRzdCBla3Nla3ZlcmVkZSBrb21tYW5kbyBpIEZJTE5BVk47IGZlamxlciBodmlzCiAgICBGSUxOQVZOIGlra2Uga2FuIGzDpnNlcy4ARWtzZWt2ZXIgYmV0aW5nZWxzZXNrb21tYW5kby4KICAgIAogICAgUmV0dXJuZXJlciBzdGF0dXMgMCBlbGxlciAxIGFmaMOmbmdpZ3QgYWYgZXZhbHVlcmluZ2VuIGFmIGJldGluZ2Vsc2VzLQogICAgdWR0cnlra2V0IFVEVFJZSy4gVWR0cnlrIGJlc3TDpXIgYWYgZGUgc2FtbWUgcHJpbcOmcmUgZWxlbWVudGVyIHNvbSBibGl2ZXIKICAgIGJydWd0IGkgZGVuIGluZGJ5Z2dlZGUgZnVua3Rpb24gInRlc3QiIG9nIGthbiBrb21iaW5lcmVzIHZlZCBicnVnIGFmIGbDuGxnZW5kZQogICAgb3BlcmF0b3JlcjoKICAgIAogICAgICAoIFVEVFJZSyApCVJldHVybmVyZXIgdsOmcmRpZW4gYWYgVURUUllLCiAgICAgICEgVURUUllLCQlTYW5kIGh2aXMgVURUUllLIGVyIGZhbHNrLCBlbGxlcnMgZmFsc2sKICAgICAgVURUUjEgJiYgVURUUjIJU2FuZCBodmlzIGLDpWRlIFVEVFIxIG9nIFVEVFIyIGVyIHNhbmRlLCBlbGxlcnMgZmFsc2sKICAgICAgVURUUjEgJiYgVURUUjIJU2FuZCBodmlzIGVudGVuIFVEVFIxIGVsbGVyIFVEVFIyIGVyIHNhbmQsIGVsbGVycyBmYWxzawogICAgCiAgICBOw6VyIG9wZXJhdG9yZXJuZSAiPT0iIG9nICIhPSIgYnJ1Z2VzLCB2aWwgc3RyZW5nZW4gdGlsIGjDuGpyZSBmb3Igb3BlcmF0b3JlbgogICAgYmxpdmUgYnJ1Z3Qgc29tIGV0IG3DuG5zdGVyIG9nIGRlciB2aWwgYmxpdmUgdWRmw7hydCBzdHJlbmdtYXRjaGluZy4gTsOlcgogICAgb3BlcmF0b3JlbiAiPX4iIGJsaXZlciBicnVndCwgdmlsIHN0cmVuZ2VuIHRpbCBow7hqcmUgZm9yIG9wZXJhdG9yZW4gYmxpdmUKICAgIG1hdGNoZXQgc29tIGV0IHJlZ3Vsw6ZydCB1ZHRyeWsuCiAgICAKICAgIE9wZXJhdG9yZXJuZSAmJiBvZyB8fCB2aWwgaWtrZSBldmFsdWVyZSBVRFRSMiwgaHZpcyBVRFRSMSBlciBub2sgdGlsIGF0CiAgICBhZmfDuHJlIHVkdHJ5a2tldHMgdsOmcmRpLgoKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgMCBlbGxlciAxIGFmaMOmbmdpZ3QgYWYgdWR0cnlra2V0cyB2w6ZyZGkuAEVrc2VrdmVyIGVuIHNrYWwtaW5kYnlnZ2V0IGZ1bmt0aW9uLgogICAgCiAgICBFa3Nla3ZlciBlbiBTS0FMLUlOREJZR0dFVCBtZWQgYXJndW1lbnRlcm5lIEFSR2VyIHVkZW4gYXQgdWRmw7hyZSBrb21tYW5kby0KICAgIG9wc2xhZy4gRGV0dGUgZXIgbnl0dGlndCwgaHZpcyBkdSDDuG5za2VyIGV0IHJlaW1wbGVtZW50ZXJlIGVuIHNrYWwtCiAgICBpbmRieWdnZXQgc29tIGVuIHNrYWxmdW5rdGlvbiwgbWVuIGhhciBicnVnIGZvciBhdCBla3Nla3ZlcmUgZGVuIGluZGJ5Z2dlZGUKICAgIGluZGVuIGkgZnVua3Rpb25lbi4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIGFmc2x1dG5pbmdzc3RhdHVzc2VuIGZvciBkZW4gU0tBTC1JTkRCWUdHRURFLCBlbGxlciBmYWxzayBodmlzCiAgICBTS0FMLUlOREJZR0dFVCBpa2tlIGVyIGVuIHNrYWwtaW5kYnlnZ2V0Li4AQWZzbHV0ICVkAEFmc2x1dCBlbiBsb2dpbmRza2FsLgogICAgCiAgICBBZnNsdXR0ZXIgZW4gbG9naW5kc2thbCBtZWQgYWZzbHV0bmluZ3NzdGF0dXMgTi4gUmV0dXJuZXJlciBlbiBmZWpsLCBodmlzCiAgICBkZW4gaWtrZSBla3Nla3ZlcmVzIGkgZW4gbG9naW5kc2thbC4AQWZzbHV0IGZvci0sIHdoaWxlLSBlbGxlciB1bnRpbC1sw7hra2VyLgogICAgCiAgICBBZnNsdXQgZW4gRk9SLCBXSElMRSBlbGxlciBVTlRJTC1sw7hra2UuIEh2aXMgTiBlciBhbmdpdmV0LCBhZmJyeWRlcyBOCiAgICBpbmRsZWpyZWRlIGzDuGtrZXIuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgQWZzbHV0bmluZ3NzdGF0dXNzZW4gZXIgMCBtZWQgbWluZHJlIE4gaWtrZSBlciBzdMO4cnJlIGVuZCBlbGxlciBsaWcgbWVkIDEuAEFmc2x1dCBza2FsbGVuLgogICAgCiAgICBBZnNsdXQgc2thbGxlbiBtZWQgc3RhdHVzIE4uIEh2aXMgTiB1ZGVsYWRlcyB2aWwgYWZzbHV0bmluZ3NzdGF0dXMKICAgIGJsaXZlIGRlbiBzYW1tZSBzb20gc2lkc3QgZWtzZWt2ZXJlZGUga29tbWFuZG8uAEZpbGdyw6Zuc2UAS29tbWF0YWxzdW5kdGFnZWxzZQBHTlUgYmFzaCwgdmVyc2lvbiAlcyAoJXMpCgBHTlUgYmFzaCwgdmVyc2lvbiAlcy0oJXMpCgBMYW5nZSBHTlUtdGlsdmFsZzoKAEdydXBwZXIga29tbWFuZG9lciBzb20gZW4gZW5oZWQuCiAgICAKICAgIEvDuHIgZXQgc8OmdCBhZiBrb21tYW5kb2VyIGkgZW4gZ3J1cHBlLiBEZXR0ZSBlciBlbiBtw6VkZSBhdCB2aWRlcmVzZW5kZQogICAgZXQgc8OmdCBhZiBrb21tYW5kb2VyIHDDpS4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIHN0YXR1c3NlbiBmcmEgZGVuIHNpZHN0IGVrc2VrdmVyZWRlIGtvbW1hbmRvLgBIRlQtaW5wdXRkYXRhIGFmdmVudGVyAEhGVC1za8Omcm10aWxzdGFuZCB0aWxkZWx0AEhGVC1za8Omcm10aWxzdGFuZCB0cnVra2V0IHRpbGJhZ2UASEZULWx5ZHNla3ZlbnMgZXIgYWZzbHV0dGV0AEhPTUUgaWtrZSBpbmRzdGlsbGV0AEzDpmcgcMOlAEplZyBoYXIgaWtrZSBub2dldCBuYXZuIQBJL08ga2xhcgBVZ3lsZGlnIGluc3RydWt0aW9uAEluZm9ybWF0aW9uc2ZvcmVzcMO4cmdzZWwAQWZicnlkAFNsw6VldCBpaGplbABMaWNlbnMgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBlbGxlciBzZW5lcmUgPGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sPgoARmx5dCBqb2JzIHRpbCBmb3JncnVuZGVuLgogICAgCiAgICBQbGFjZXIgSk9CX1NQRUMgaSBmb3JncnVuZGVuIG9nIGfDuHIgZGV0IHRpbCBkZXQgYWt0dWVsbGUgam9iLiBIdmlzCiAgICBKT0JfU1BFQyBpa2tlIGZpbmRlcywgdmlsIHNrYWxsZW5zIG9wZmF0dGVsc2UgYWYsIGh2YWQgZGVyIGVyIGRldCBudXbDpnJlbmRlCiAgICBqb2IsIGJsaXZlIGJydWd0LgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFN0YXR1cyBhZiBkZW4ga29tbWFuZG8gZGVyIHBsYWNlcmVzIGkgZm9yZ3J1bmRlbiBlbGxlciBtaXNseWtrZXQgaHZpcyBkZXIKICAgIG9wc3TDpXIgZmVqbC4ARmx5dCBqb2JzIHRpbCBiYWdncnVuZGVuCiAgICAKICAgIFBsYWNlciBodmVydCBlbmtlbHQgSk9CX1NQRUMgaSBiYWdncnVuZGVuLCBzb20gb20gZGUgdmFyIHN0YXJ0ZXQgbWVkIAogICAgIiYiLiBIdmlzIEpPQl9TUEVDIGlra2UgZmluZGVzLCB2aWwgc2thbGxlbiBvcGZhdHRlbHNlIGFmLCBodmFkIGRlciBlcgogICAgZGV0IG51dsOmcmVuZGUgam9iLCBibGl2ZSBicnVndC4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBBZnNsdXR0ZXMgc3VjY2VzZnVsZHQgbWVkbWluZHJlIGpvYmtvbnRyb2wgaWtrZSBlciBzbMOlZXQgdGlsLCBlbGxlciBodmlzCiAgICBkZXIgb3BzdMOlciBlbiBmZWpsLgBOdWxsLWtvbW1hbmRvLgogICAgCiAgICBJbmdlbiBlZmZla3QsIGtvbW1hbmRvZW4gZ8O4ciBpbnRldC4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBBZnNsdXR0ZXMgYWx0aWQgc3VjY2VzZnVsZHQuAE9MRFBXRCBpa2tlIGluZHN0aWxsZXQARm9ydG9sa25pbmcgYWYgdGlsdmFsZ3Nhcmd1bWVudGVyCiAgICAKICAgIEdldG9wdHMgYnJ1Z2VzIGFmIHNrYWxwcm9jZWR1cmVyIHRpbCBhdCB0b2xrZSBwb3NpdGlvbnNwYXJhbWV0cmUgb2cKICAgIHRpbHZhbGcuCiAgICAKICAgIE9QVFNUUklORyBpbmRlaG9sZGVyIGRlIHRpbHZhbGcsIHNvbSBza2FsIGdlbmtlbmRlcy4gSHZpcyBldCBib2dzdGF2CiAgICBmw7hsZ2VzIGFmIGV0IGtvbG9uLCBmb3J2ZW50ZXMgZGV0IGF0IHRpbHZhbGdldCBoYXIgZXQgYXJndW1lbnQsIHNvbQogICAgc2thbCBhZHNraWxsZXMgZnJhIHRpbHZhbGdldCBtZWQgZXQgbWVsbGVtcnVtLgogICAgCiAgICBIdmVyIGdhbmcgZ2V0b3B0cyBrYWxkZXMsIHZpbCBkZW4gcGxhY2VyZSBkZXQgbsOmc3RlIHRpbHZhbGcgaSBza2FsLQogICAgdmFyaWFibGVuICRuYW1lLCBvZyBpbml0aWFsaXNlcmUgJG5hbWUsIGh2aXMgZGVuIGlra2UgZWtzaXN0ZXJlciwgb2cKICAgIHB1dHRlIGluZGVrc2V0IGZvciBkZXQgbsOmc3RlIGFyZ3VtZW50LCBzb20gc2thbCBiZWhhbmRsZXMsIGluZCBpCiAgICBza2FsdmFyaWFibGVuIE9QVElORC4gT1BUSU5EIGluaXRpYWxpc2VyZXMgdGlsIDEgaHZlciBnYW5nIHNrYWxsZW4KICAgIGVsbGVyIGV0IHNrYWxza3JpcHQga2FsZGVzLiBIdmlzIHRpbHZhbGdldCBrcsOmdmVyIGV0IGFyZ3VtZW50LCB2aWwKICAgIGdldG9wdHMgcGxhY2VyZSBhcmd1bWVudGV0IGkgc2thbHZhcmlhYmxlbiBPUFRBUkcuCiAgICAKICAgIGdldG9wdHMgcmFwcG9ydGVyZXIgZmVqbCBww6UgZW4gYWYgdG8gZm9yc2tlbGxpZ2UgbcOlZGVyLiBIdmlzIGRldAogICAgZsO4cnN0ZSB0ZWduIGkgT1BUU1RSRU5HIGVyIGV0IGtvbG9uLCB2aWwgZ2V0b3B0cyBicnVnZSBzdGlsbGUgZmVqbC0KICAgIHJhcHBvcnRlcmluZy4gSSBkZW5uZSB0aWxzdGFuZCB2aWwgZmVqbGJlc2tlZGVyIGlra2UgYmxpdmUKICAgIHVkc2tyZXZldC4gSHZpcyBkZXIgYW5naXZlcyBldCB1Z3lsZGlndCB0aWx2YWxnLCB2aWwgZ2V0b3B0cyBwbGFjZXJlCiAgICB0aWx2YWxnc3RlZ25ldCBpIE9QVEFSRy4gSHZpcyBldCBww6VrcsOmdmV0IGFyZ3VtZW50IGlra2UgYmxpdmVyCiAgICBmdW5kZXQsIHZpbCBnZXRvcHRzIHBsYWNlcmUgZXQgIjoiIGkgTkFWTiBvZyBzw6Z0dGUgT1BUQVJHIHRpbCBkZXQKICAgIGZ1bmRuZSB0aWx2YWxnc3RlZ24uIEh2aXMgZ2V0b3B0cyBpa2tlIGVyIGkgc3RpbGxlIHRpbHN0YW5kIG9nIGRlcgogICAgYW5naXZlcyBldCB1Z3lsZGlndCB0aWx2YWxnLCB2aWwgZ2V0b3B0cyBwbGFjZXJlICI/IiBpIE5BVk4gb2cKICAgIGZqZXJuZSAodW5zZXQpIE9QVEFSRy4gSHZpcyBldCBww6VrcsOmdmV0IGFyZ3VtZW50IGlra2UgZmluZGVzLCB2aWwKICAgIGRlciBibGl2ZSBwbGFjZXJldCBldCAiPyIgaSBOQVZOIG9nIE9QVEFSRyB2aWwgYmxpdmUgZmplcm5ldAogICAgKHVuc2V0KSBvZyBlbiBkaWFnbm9zZWJlc2tlZCB2aWwgYmxpdmUgdWRza3JldmV0LgogICAgCiAgICBIdmlzIHNrYWx2YXJpYWJsZW4gT1BURVJSIGhhciB2w6ZyZGllbiAwLCB2aWwgdWRza3Jpdm5pbmdlbiBhZiBmZWpsLQogICAgYmVza2VkZXIgYmxpdmUgc2zDpWV0IGZyYSBpIGdldG9wdHMsIG9nc8OlIHNlbHYgb20gZGV0IGbDuHJzdGUgdGVnbiBpCiAgICBPUFRTVFJJTkcgaWtrZSBlciBldCBrb2xvbi4gT1BURVJSIGhhciB2w6ZyZGllbiAxIHNvbSBzdGFuZGFyZC4KICAgIAogICAgTm9ybWFsdCB2aWwgZ2V0b3B0cyB0b2xrZSBkZSBwb3NpdGlvbmVsbGUgcGFyYW1ldHJlICgkMCAtICQ5KSwgbWVuCiAgICBodmlzIGRlciBhbmdpdmVzIGZsZXJlIGFyZ3VtZW50ZXIgZW5kIGRldHRlLCB2aWwgZGUgYmxpdmUgdG9sa2V0IGkKICAgIHN0ZWRldCBmb3IuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzCiAgICBSZXR1cm5lcmVyIHN1Y2NlcyBodmlzIGV0IHRpbHZhbGcgZmluZGVzLCBmZWpsZXIgaHZpcyBhZnNsdXRuaW5nZW4KICAgIGFmIHRpbHZhbGdlbmUgbsOlcyBlbGxlciBodmlzIGRlciBvcHN0w6VyIGVuIGZlamwuAFVkc2tyaXZlciBuYXZuZXQgZm9yIGRlbiBha3R1ZWxsZSBtYXBwZS4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLUwJdWRza3JpdiB2w6ZyZGllbiBhZiAkUFdEIGh2aXMgZGVuIGluZGVob2xkZXIgZGVuIGFrdHVlbGxlIG1hcHBlCiAgICAgIC1QCXVkc2tyaXYgZGVuIGZ5c2lza2UgbWFwcGUgdWRlbiBub2dlbiBzeW1ib2xza2UgbMOmbmtlcgogICAgCiAgICBTb20gc3RhbmRhcmQgdmlsICJwd2QiIG9wZsO4cmUgc2lnIHNvbSBvbSAiLUwiIHZhciBhbmdpdmV0LgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgMCBtZWQgbWluZHJlIGRlciBlciBhbmdpdmV0IGV0IHVneWxkaWd0IHRpbHZhbGcsIGVsbGVyIGh2aXMgZGVuCiAgICBha3R1ZWxsZSBtYXBwZSBpa2tlIGthbiBsw6ZzZXMuAEFmc2x1dABMw6ZzIGxpbmplciBmcmEgZW4gZmlsIGluZCBpIGVuIGFycmF5dmFyaWFiZWwuCiAgICAKICAgIEV0IHN5bm9ueW0gZm9yICJtYXBmaWxlIi4AT3B0YWcgbMOlcwBGamVybmVyIG1hcHBlciBmcmEgc3Rha2tlbi4KICAgIAogICAgRmplcm5lciBlbiBtYXBwZSBmcmEgc3Rha2tlbi4gVWRlbiBhcmd1bWVudGVyIGZqZXJuZXMgZGVuIMO4dmVyc3RlIG1hcHBlIGZyYQogICAgc3Rha2tlbiBvZyBkZXIgc2tpZnRlcyB0aWwgZGVuIG55ZSBha3R1ZWxsZSBtYXBwZS4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLW4JVW5kZXJ0cnlra2VyIGRldCBtYXBwZXNraWZ0IGRlciBub3JtYWx0IGbDuGxnZXIgbWVkIGZqZXJuZWxzZQogICAgCWFmIG1hcHBlciBmcmEgc3Rha2tlbiwgc8OlbGVkZXMgYXQga3VuIHN0YWtrZW4gw6ZuZHJlcy4KICAgIAogICAgQXJndW1lbnRlcjoKICAgICAgK04JRmplcm5lciBkZW4gTid0ZSBtYXBwZSwgdGFsdCBmcmEgdmVuc3RyZSBpIGxpc3RlbiBzb20gdmlzZXMgYWYKICAgIAkiZGlycyIsIHN0YXJ0ZW5kZSBtZWQgbnVsLiBGLmVrczogdmlsICJwb3BkICswIiBmamVybmUgZGVuIGbDuHJzdGUgbWFwcGUKICAgIAlvZyAicG9wZCArMSIgZGVuIGFuZGVuLgogICAgCiAgICAgIC1OCUZqZXJuZXIgZGVuIE4ndGUgbWFwcGUsIHRhbHQgZnJhIGjDuGpyZSBpIGxpc3RlbiBzb20gdmlzZXMgYWYKICAgIAkiZGlycyIsIHN0YXJ0ZW5kZSBtZWQgbnVsLiBGLmVrczogdmlsICJwb3BkIC0wIiBmamVybmUgZGVuIHNpZHN0ZSBtYXBwZQogICAgCW9nICJwb3BkIC0xIiBkZW4gYW5kZW5zaWRzdGUuCiAgICAKICAgICAgRGVuIGluZGJ5Z2dlZGUgImRpcnMiIHZpc2VyIG1hcHBlc3Rha2tlbi4KICAgICAgCiAgICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgICBSZXR1cm5lcmVyIHN1Y2NlcyBtZWQgbWluZHJlIGRlciBhbmdpdmVzIGV0IHVneWxkaWd0IHRpbHZhbGcsIGVsbGVyIGh2aXMKICAgICAgbWFwcGVza2lmdGV0IG1pc2x5a2tlcy4ARmplcm4gaHZlcnQgTkFWTiBmcmEgbGlzdGVuIGFmIGRlZmluZXJlZGUgYWxpYXNzZXIuCiAgICAKICAgIFRpbHZhbGc6CiAgICAgIC1hCWZqZXJuIGFsbGUgYWxpYXNkZWZpbml0aW9uZXIuCiAgICAKICAgIFJldHVybmVyIHN1Y2NlcyBtZWQgbWluZHJlIGV0IE5BVk4gaWtrZSBlciBldCBla3Npc3RlcmVuZGUgYWxpYXMuAEZqZXJuIGpvYnMgZnJhIGRlbiBha3R1ZWxsZSBza2FsLgogICAgCiAgICBGamVybmVyIGh2ZXJ0IEpPQlNQRUMtYXJndW1lbnQsIGZyYSB0YWJlbGxlbiBvdmVyIGFrdGl2ZSBqb2JzLiBIdmlzIGRlciBpa2tlCiAgICBhbmdpdmVzIG5vZ2VuIEpPQlNQRUMgYnJ1Z2VzIHNrYWxsZW5zIG9wZmF0dGVsc2UgYWYgZGV0IGFrdHVlbGxlIGpvYi4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLWEJZmplcm4gYWxsZSBqb2JzIGh2aXMgSk9CU1BFQyBpa2tlIGVyIGFuZ2l2ZXQKICAgICAgLWgJbWFya2VyIGh2ZXJ0IEpPQlNQRUMgc8OlbGVkZXMgYXQgU0lHSFVQIGlra2Ugc2VuZGVzIHRpbCBqb2JiZXQKICAgIAlodmlzIHNrYWxsZW4gbW9kdGFnZXIgU0lHSFVQCiAgICAgIC1yCWZqZXJuIGt1biBrw7hyZW5kZSBqb2JzCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdWNjZXMgbWVkIG1pbmRyZSBldCB1Z3lsZGlndCB0aWx2YWxnIGVsbGVyIEpPQlNQRUMgYW5naXZlcy4ARmplcm5lciBlbiBtYXBwZSBmcmEgdG9wcGVuIGFmIG1hcHBlc3Rha2tlbi4gVWRlbiBhcmd1bWVudGVyIGZqZXJuZXMKICAgIGRlbiDDuHZlcnN0ZSBtYXBwZSBmcmEgc3Rha2tlbiBvZyBkZXIgc2tpZnRlcyB0aWwgZGVuIG55ZSDDuHZlcnN0ZSBtYXBwZS4KICAgIAogICAgVmFsZ211bGlnaGVkZXI6CiAgICAgIC1uCVVuZGVydHJ5a2tlciBkZXQgbm9ybWFsZSBtYXBwZXNraWZ0IHZlZCBmamVybmVsc2UKICAgIAlhZiBtYXBwZXIgZnJhIHN0YWtrZW4sIHPDpWxlZGVzIGF0IGt1biBzdGFra2VuIG1hbmlwdWxlcmVzLgogICAgCiAgICBBcmd1bWVudGVyOgogICAgICArTglGamVybmVyIGRldCBOJ3RlIGVsZW1lbnQsIHRhbHQgZnJhIHZlbnN0cmUgYWYgbGlzdGVuCiAgICAJc29tIHZpc3QgYWYgImRpcnMiLCBzdGFydGVuZGUgbWVkIG51bC4gRi5la3M6IHZpbCAicG9wZCArMCIKICAgIAlmamVybmUgZGV0IMO4dmVyc3RlIGFyZ3VtZW50IG9nICJwb3BkICsxIiBkZXQgYW5kZXQuCiAgICAKICAgICAgLU4JRmplcm5lciBkZXQgTid0ZSBlbGVtZW50LCB0YWx0IGZyYSBow7hqcmUgYWYgbGlzdGVuCiAgICAJc29tIHZpc3QgYWYgImRpcnMiLCBzdGFydGVuZGUgbWVkIG51bC4gRi5la3M6IHZpbCAicG9wZCAtMCIKICAgIAlmamVybmUgZGV0IHNpZHN0ZSBhcmd1bWVudCBvZyAicG9wZCAtMSIgZGV0IGFuZGV0c2lkc3RlLgogICAgCkRlbiBpbmRieWdnZWRlIGZ1bmt0aW9uICJkaXJzIiB2aXNlciBtYXBwZXN0YWtrZW4uAEVyc3RhdCBza2FsbGVuIG1lZCBkZW4gYW5naXZuZSBrb21tYW5kby4KICAgIAogICAgRWtzZWt2ZXIgS09NTUFORE8gb2cgZXJzdGF0IGRlcnZlZCBza2FsbGVuIG1lZCBkZXQgYW5naXZuZSBwcm9ncmFtLgogICAgQVJHVU1FTlRFUiBibGl2ZXIgYXJndW1lbnRlciB0aWwgS09NTUFORE8uIEh2aXMgS09NTUFORE8gaWtrZSBhbmdpdmVzIHZpbAogICAgYWxsZSBvbWRpcmlnZXJpbmdlciB0csOmZGUgaSBrcmFmdCBpIGRlbiBha3R1ZWxsZSBza2FsLgogICAgCiAgICBUaWx2YWxnOgogICAgICAtYQluYXZuCWFuZ2l2IE5BVk4gc29tIGRldCBudWx0ZSBhcmd1bWVudCB0aWwgS09NTUFORE8KICAgICAgLWMJCWVrc2VrdmVyIEtPTU1BTkRPIGkgZXQgdG9tdCBtaWxqw7gKICAgICAgLWwJCWJydWcgZW4gYmluZGVzdHJlZyBzb20gZGV0IG51bHRlIGFyZ3VtZW50IHRpbCBLT01NQU5ETwogICAgCiAgICBIdmlzIGtvbW1hbmRvZW4gaWtrZSBrYW4gZWtzZWt2ZXJlcywgdmlsIGlra2UtaW50ZXJha3RpdmUgc2thbGxlciBhZnNsdXR0ZXMsCiAgICBtZWQgbWluZHJlIHNrYWwtdGlsdmFsZ2V0ICJleGVjZmFpbCIgYW5naXZlcwogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIEFmc2x1dHRlcyBzdWNjZXNmdWxkdCBtZWQgbWluZHJlIEtPTU1BTkRPIGlra2Uga2FuIGZpbmRlcywgZWxsZXIgaHZpcyBkZXIKICAgIG9wc3TDpXIgZW4gb21kaXJpZ2VyaW5nc2ZlamwuAFJhcHBvcnRlcmVyIHRpZCBicnVndCB2ZWQgZW4gZGF0YWthbmFscyAocGlwZSkgZWtzZWt2ZXJpbmcuCiAgICAKICAgIEVrc2VrdmVyZXIgREFUQUtBTkFMIG9nIHVkc2tyaXYgZGVuIGJydWd0ZSByZWFsdGlkLCBicnVnZXItQ1BVLXRpZAogICAgb2cgc3lzdGVtLUNQVS10aWQsIG7DpXIgZGVuIGVyIGbDpnJkaWcuCiAgICAKICAgIFRpbHZhbGc6CiAgICAgIC1wCXVkc2tyaXZlciB0aW1pbmdzc2FtbWVuZHJhZyBpIGRldCBmbHl0YmFyZSAocG9ydGFibGUpCiAgICAgICAgICAgICAgICBQT1NJWC1mb3JtYXQKICAgIAogICAgVsOmcmRpZW4gYWYgdmFyaWFibGVuIFRJTUVGT1JNQVQgYnJ1Z2VzIHNvbSBvdXRwdXRmb3JtYXRldC4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBBZnNsdXRuaW5nc3N0YXR1cyBlciBhZnNsdXRuaW5nc3N0YXR1cyBmb3IgREFUQUtBTkFMLgBHZW5vcHRhZyBmb3ItLCB3aGlsZS0gZWxsZXIgdW50aWwtbMO4a2tlLgogICAgCiAgICBHZW5vcHRhZ2VyIGRlbiBuw6ZzdGUgaXRlcmF0aW9uIGFmIGRlbiBvbXNsdXR0ZW5kZSBGT1ItLCBXSElMRS0gZWxsZXIgCiAgICBVTlRJTC1sw7hra2UuIEh2aXMgTiBlciBhbmdpdmV0LCBnZW5vcHRhZ2VzIGZyYSBkZW4gTid0ZSBpbmRlc2x1dHRlbmRlIGzDuGtrZS4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBBZnNsdXRuaW5nc3N0YXR1c3NlbiBlciAwIG1lZCBtaW5kcmUgTiBpa2tlIGVyIHN0w7hycmUgZW5kIGVsbGVyIGxpZyBtZWQgMS4AR2Vub3B0YWcgam9iIGkgZm9yZ3J1bmRlbi4KICAgIAogICAgw4Zrdml2YWxlbnQgdGlsIEpPQl9TUEVDLWFyZ3VtZW50ZXQgdGlsICJmZyIta29tbWFuZG9lbi4gR2Vub3B0YWcgZXQgc3RvcHBldAogICAgam9iIGVsbGVyIGV0IGpvYiBzb20gbGlnZ2VyIGkgYmFnZ3J1bmRlbi4gSk9CX1NQRUMga2FuIHNwZWNpZmljZXJlIGVudGVuIGV0CiAgICBqb2JuYXZuIGVsbGVyIGV0IGpvYm51bW1lci4gSHZpcyBKT0JfU1BFQyBlZnRlcmbDuGxnZXMgYWYgZW4gIiYiLCB2aWwgam9iYmV0CiAgICBibGl2ZSBwbGFjZXJldCBpIGJhZ2dydW5kZW4sIHNvbSBvbSBqb2JzcGVjaWZpa2F0aW9uZW4gdmFyIGdpdmV0IHNvbSBldAogICAgYXJndW1lbnQgdGlsICJiZyIuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdGF0dXNzZW4gYWYgZGV0IGdlbm9wdGFnZWRlIGpvYi4AUmV0dXJuZXJlciBldCBzdWNjZXNmdWxkdCByZXN1bHRhdC4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBBZnNsdXR0ZXMgYWx0aWQgc3VjY2VzZnVsZHQuAFJldHVybmVyZXIgZXQgbWlzbHlra2V0IHJlc3VsdGF0LgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIEFmc2x1dHRlcyBhbHRpZCBtaXNseWtrZXQuAFJldHVybmVyIGZyYSBlbiBza2FsZnVua3Rpb24uCiAgICAKICAgIEfDuHIgYXQgZW4gZnVua3Rpb24gZWxsZXIgZXQga2lsZGVza3JpcHQgYWZzbHV0dGVyIG1lZCBlbiByZXR1cnbDpnJkaSwgc29tIGVyCiAgICBhbmdpdmV0IG1lZCBOLiBIdmlzIE4gdWRlbGFkZXMsIHZpbCByZXR1cnN0YXR1c3NlbiB2w6ZyZSBkZW4gc2FtbWUgc29tIHbDpnJkaWVuCiAgICBmcmEgc2lkc3RlIGtvbW1hbmRlLCBzb20gYmxldiBla3Nla3ZlcmV0IGluZGUgaSBmdW5rdGlvbmVuIGVsbGVyIHNrcmlwdGV0LgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgTiwgZWxsZXIgZmVqbCBodmlzIHNrYWxsZW4gaWtrZSBlciBpIGbDpnJkIG1lZCBhdCBla3Nla3ZlcmUgZW4KICAgIGZ1bmt0aW9uIGVsbGVyIGV0IHNrcmlwdC4AUmV0dXJuZXJlciBrb250ZWtzdGVuIGFmIGRldCBudXbDpnJlbmRlIHVuZGVycnV0aW5la2FsZC4KCiAgICBVZGVuIFVEVFJZSyByZXR1cm5lcmVzICIkbGluZSAkZmlsZW5hbWUiLiBNZWQgVURUUllLIHJldHVybmVyZXMKICAgICIkbGluZSAkc3Vicm91dGluZSAkZmlsZW5hbWUiLiBEZW4gZWtzdHJhIGluZm9ybWF0aW9uCiAgICBrYW4gYnJ1Z2VzIHRpbCBhdCBnaXZlIGF0IHN0YWtzcG9yLgoKICAgIFbDpnJkaWVuIGFmIFVEVFJZSyBhbmdpdmVyIGh2b3IgbWFuZ2Uga2FsZGVyYW1tZXIgZGVyIHNrYWwgZ8OlcyB0aWxiYWdlCiAgICBmcmEgZGVuIG51dsOmcmVuZGUuIFRvcHJhbW1lbiBlciByYW1tZSAwLgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgMCBtZWQgbWluZHJlIHNrYWxsZW4gaWtrZSBla3Nla3ZlcmVyIGVuIHNrYWxmdW5rdGlvbiBlbGxlciBodmlzCiAgICBVRFRSWUsgZXIgdWd5bGRpZ3QuAFJldHVybmVyZXIga29udGVrc3RlbiBhZiBkZXQgbnV2w6ZyZW5kZSB1bmRlcnJ1dGluZWthbGQuCiAgICAKICAgIE7DpXIgVURUUllLIHVkZWxhZGVzIHJldHVybmVyZXMgAEvDuHJlcgBTZWdtZW50ZXJpbmdzZmVqbABWw6ZsZyBvcmQgZnJhIGVuIGxpc3RlIG9nIGVrc2VrdmVyIGtvbW1hbmRvZXIuCiAgICAKICAgIE9SRCB2aWwgYmxpdmUgdWR2aWRldCwgc8OlbGVkZXMgYXQgZGVyIGdlbmVyZXJlcyBlbiBsaXN0ZSBhZiBvcmQuIERlbm5lCiAgICBsaXN0ZSBhZiB1ZHZpZGVkZSBvcmQgdmlsIGJsaXZlIHNrcmV2ZXQgdGlsIHN0YW5kYXJkZmVqbCwgaHZlcnQgYWYgZGVtCiAgICBtZWQgYXQgbnVtbWVyIGjDpmZ0ZXQgZm9yYW4uIEh2aXMgImluIE9SRCIgaWtrZSBlciBhbmdpdmV0LCBhbnRhZ2VzICJpbiAkQCIuCiAgICBEZXJlZnRlciB2aWwgZW4gUFMzLXByb21wdCBibGl2ZSB2aXN0IG9nIGRlciB2aWwgYmxpdmUgbMOmc3QgZW4gbGluamUgZnJhCiAgICBzdGFuZGFyZGlucHV0LiBIdmlzIGxpbmplIGJlc3TDpXIgYWYgZXQgdGFsLCBzb20gc3ZhcmVyIHRpbCBldCBhZiBkZQogICAgdmlzdGUgb3JkLCBzw6UgdmlsIE5BVk4gYmxpdmUgc2F0IHRpbCBkZXQgb3JkLiBIdmlzIGxpbmplbiBlciB0b20sIHZpbCBPUkQKICAgIG9nIHByb21wdGVuIGJsaXZlIHZpc3QgaWdlbi4gSHZpcyBFT0YgYmxpdmVyIGzDpnN0IGFmc2x1dHRlcyBrb21tYW5kb2VuLgogICAgSHZpcyBkZXIgbMOmc2VzIGVuIGh2aWxrZW4gc29tIGhlbHN0IGFuZGVuIHbDpnJkaSwgdmlsIE5BVk4gYmxpdmUgc2F0IHRpbAogICAgbnVsbC4gRGVuIGzDpnN0ZSBsaW5qZSB2aWwgYmxpdmVyIGdlbXQgaSB2YXJpYWJsZW4gUkVQTFkuIEtPTU1BTkRPRVIgdmlsCiAgICBibGl2ZSBla3Nla3ZlcmV0IGVmdGVyIGh2ZXJ0IHZhbGcgaW5kdGlsIGVuIGJyZWFrLWtvbW1hbmRvIGVrc2VrdmVyZXMuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdGF0dXNzZW4gZnJhIGRlbiBzaWRzdCBla3Nla3ZlcmVkZSBrb21tYW5kby4AU2VuZCBldCBzaWduYWwgdGlsIGV0IGpvYi4KICAgIAogICAgU2VuZCBzaWduYWxldCBTSUdTUEVDIGVsbGVyIFNJR05VTSB0aWwgcHJvY2Vzc2VuLCBzb20gZXIgYW5naXZldCB2ZWQgUElECiAgICBlbGxlciBKT0JTUEVDLiBIdmlzIGh2ZXJrZW4gU0lHU1BFQyBlbGxlciBTSUdOVU0gZXIgYW5naXZldCBhbnRhZ2VzIFNJR1RFUk0uCiAgICAKICAgICAgLXMgc2lnCVNJRyBlciBldCBzaWduYWxuYXZuCiAgICAgIC1uIHNpZwlTSUcgZXIgZXQgc2lnbmFsbnVtbWVyCiAgICAgIC1sCXVkc2tyaXZlciBzaWduYWxuYXZuZW5lLiBIdmlzIGRlciBzdMOlciBhcmd1bWVudGVyIGVmdGVyICItbCIsCiAgICAJYW50YWdlcyBkZXQsIGF0IGRlIGVyIHNpZ25hbG51bXJlIGh2aXMgdGlsaMO4cmVuZGUgc2lnbmFsbmF2bmUgc2thbAogICAgICAgIHVkc2tyaXZlcy4KICAgIAogICAgRGVyIGVyIHRvIGdydW5kZSB0aWwgYXQga2lsbCBlciBlbiBpbmRieWdnZXQgc2thbC1rb21tYW5kbzogRGV0IHRpbGxhZGVyCiAgICBhdCBkZXIga2FuIGJydWdlcyBqb2ItaWQnZXIgaSBzdGVkZXQgZm9yIHByb2Nlcy1pZCdlciBvZyB0aWxsYWRlciBhdCBzdG9wcGUKICAgIHByb2Nlc3Nlciwgc2Vsdm9tIGR1IGhhciBuw6VldCBncsOmbnNlbiBmb3IsIGh2b3IgbWFuZ2UgcHJvY2Vzc2VyIGR1CiAgICBrYW4gb3ByZXR0ZS4KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIHN1Y2NlcyBtZWQgbWluZHJlIGV0IHVneWxkaWd0IHRpbHZhbGcgZXIgYW5naXZldCwgZWxsZXIgaHZpcyBkZXIKICAgIG9wc3TDpXIgZW4gZmVqbC4ASW5kc3RpbCBvZyBhZmluZHN0aWwgKHVuc2V0KSBza2FsdmFyaWFibGUuCiAgICAKICAgIMOGbmRyIGluZHN0aWxsaW5nZXIgZm9yIGh2ZXIgc2thbHZhcmlhYmVsIElORFNUTkFWTi4gVWRlbiBhcmd1bWVudGVyIHZpc2VzCiAgICBlbiBsaXN0ZSBhZiBza2FsdmFyaWFibGUsIHNhbW1lbiBtZWQgaW5mb3JtYXRpb24gb20gaHZvcnZpZHQgZGUgZXIKICAgIGluZHN0aWxsZXQuCiAgICAKICAgIFRpbHZhbGc6CiAgICAgIC1vCWJlZ3LDpm5zIElORFNUTkFWTiB0aWwgZGVtIHNvbSBlciBkZWZpbmVyZXQgdGlsIGJydWcgbWVkICJzZXQgLW8iCiAgICAgIC1wCXVkc2tyaXYgYWxsZSBza2FsdmFyaWFibGUgc2FtbWVuIG1lZCBlbiBpbmRpa2F0aW9uIGFmIGRlcmVzCiAgICAJc3RhdHVzCiAgICAgIC1xCXVuZGVydHJ5ayBvdXRwdXQKICAgICAgLXMJYWt0aXZlciAoc2V0KSBodmVydCBJTkRTVE5BVk4KICAgICAgLXUJZGVha3RpdmVyICh1bnNldCkgaHZlcnQgSU5EU1ROQVZOCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdWNjZXMgaHZpcyBJTkRTVE5BVk4gZXIgYWt0aXZlcmV0OyBmZWpsZXIgaHZpcyBkZXIgYW5naXZlcyBldAogICAgdWd5bGRpZ3QgdGlsdmFsZyBlbGxlciBodmlzIElORFNUTkFWTiBlciBkZWFrdGl2ZXJldC4ASW5kc3RpbCBla3Nwb3J0YXR0cmlidXR0ZW4gZm9yIHNrYWx2YXJpYWJsZS4KICAgIAogICAgTWFya2VyIGh2ZXJ0IE5BVk4gdGlsIGF1dG9tYXRpc2sgZWtzcG9ydCB0aWwgbWlsasO4ZXQgZm9yIGRlIGtvbW1hbmRvZXIgc29tCiAgICBla3Nla3ZlcmVzIGVmdGVyZsO4bGdlbmRlLiBIdmlzIFbDhlJESSBlciBhbmdpdmV0LCB2aWwgZGVuIGJsaXZlIHRpbGRlbHQKICAgIHZhcmlhYmxlbiBmw7hyIGVrc3BvcnRlcmluZy4KICAgIAogICAgVGlsdmFsZzoKICAgICAgLWYJcmVmZXJlciB0aWwgc2thbGZ1bmt0aW9uZXIKICAgICAgLW4JZmplcm4gZWtzcG9ydGVnZW5za2FiZW4gZnJhIGh2ZXJ0IE5BVk4KICAgICAgLXAJdmlzIGVuIGxpc3RlIG92ZXIgYWxsZSBla3Nwb3J0ZXJlZGUgdmFyaWFibGUgb2cgZnVua3Rpb25lcgogICAgCiAgICBBcmd1bWVudGV0ICItLSIgc2zDpXIgYWwgZWZ0ZXJmw7hsZ2VuZGUgYmVoYW5kbGluZyBmcmEuCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdWNjZXMgbWVkIG1pbmRyZSBkZXIgYW5naXZlcyBldCB1Z3lsZGlndCB0aWx2YWxnIGVsbGVyIGh2aXMKICAgIE5BVk4gZXIgdWd5bGRpZy4ASW5kc3RpbCB2YXJpYWJlbHbDpnJkaWVyIG9nIC1hdHRyaWJ1dHRlci4KICAgIAogICAgRm9yw6ZsZGV0LiBMw6ZzIGkgImhlbHAgZGVjbGFyZSIuAFNrYWxrb21tYW5kb2VyIHNvbSBtYXRjaGVyIG7DuGdsZW9yZGV0ICIAU2thbC1rb21tYW5kb2VyIHNvbSBtYXRjaGVyIG7DuGdsZW9yZGVuZSAiAFNrYWwtdGlsdmFsZzoKAFNraWZ0IHBvc2l0aW9uc3BhcmFtZXRyZS4KICAgIAogICAgT21kw7hiIHBvc2l0aW9uc3BhcmFtZXRyZW5lICROKzEsJE4rMiAuLi4gdGlsICQxLCQyIC4uLiBIdmlzIE4gaWtrZSBhbmdpdmVzLAogICAgYW50YWdlcyB2w6ZyZGllbiAxLgogICAgCiAgICBBZnNsdXRuaW5nc3N0YXR1czoKICAgIFJldHVybmVyZXIgc3VjY2VzIG1lZCBtaW5kcmUgTiBlciBuZWdhdGl2IGVsbGVyIHN0w7hycmUgZW5kICQjLgBTaWduYWwgJWQAU3RvcHBldABTdG9wcGV0IChzaWduYWwpAFN0b3BwZXQgKHR0eS1pbnB1dCkAU3RvcHBldCAodHR5LW91dHB1dCkAU3RvcHBldCglcykAU3VzcGVuZGVyIHNrYWxla3Nla3ZlcmluZy4KICAgIAogICAgU3VzcGVuZGVyIGVrc2VrdmVyaW5nIGFmIGRlbm5lIHNrYWwgaW5kdGlsIGRlbiBtb2R0YWdlciBldCBTSUdDT05ULXNpZ25hbC4KICAgIE1lZCBtaW5kcmUgZGV0IGdlbm5lbXR2aW5nZXMsIGthbiBlbiBsb2dpbmRza2FsIGlra2Ugc3VzcGVuZGVyZXMuCiAgICAKICAgIFRpbHZhbGc6CiAgICAgIC1mCWdlbm5lbXR2aW5nIHN1c3BlbmRlcmluZyBzZWx2b20gc2thbGxlbiBlciBlbiBsb2dpbmRza2FsCiAgICAKICAgIEFmc2x1dG5pbmdzc3RhdHVzOgogICAgUmV0dXJuZXJlciBzdWNjZXMgbWVkIG1pbmRyZSBqb2Jrb250cm9sIGlra2UgZXIgc2zDpWV0IHRpbCwgZWxsZXIgaHZpcyBkZXIKICAgIG9wc3TDpXIgZW4gZmVqbC4AVElNRUZPUk1BVDogIiVjIjogdWd5bGRpZ3QgZm9ybWF0ZXJpbmdzdGVnbgBBZnNsdXR0ZXQAUG9zdGVuIGkgJXMgZXIgYmxldmV0IGzDpnN0CgBEZXIgZXIga8O4cmVuZGUgam9iLgoARGVyIGVyIHN0b3BwZWRlIGpvYi4KAERpc3NlIHNrYWxrb21tYW5kb2VyIGVyIGRlZmluZXJldCBpbnRlcm50LiBTa3JpdiAiaGVscCIgZm9yIGF0IHNlIGRlbm5lIGxpc3RlLgpTa3JpdiAiaGVscCBuYXZuIiBmb3IgYXQgZmluZGUgdWQgYWYgbWVyZSBvbSBrb21tYW5kb2VuICJuYXZuIi4KQnJ1ZyAiaW5mbyBiYXNoIiBmb3IgYXQgZsOlIG1lcmUgZ2VuZXJlbCBpbmZvcm1hdGlvbiBvbSBza2FsbGVuLgpCcnVnICJtYW4gLWsiIGVsbGVyICJpbmZvIiBmb3IgYXQgZmluZGUgdWQgYWYgbWVyZSBvbSBrb21tYW5kb2VyIHNvbSBpa2tlIGVyIApww6UgbGlzdGVuLgoKRW4gc3RqZXJuZSAoKikgdmVkIHNpZGVuIGFmIGV0IG5hdm4gYmV0eWRlciBhdCBrb21tYW5kb2VuIGVyIHNsw6VldCBmcmEuCgoAU2tyaXYgIiVzIC1jICJoZWxwIHNldCIiIGZvciBhdCBmw6UgbWVyZSBpbmZvcm1hdGlvbiBvbSBza2FsdGlsdmFsZy4KAFNrcml2ICIlcyAtYyBoZWxwIiBmb3IgYXQgZsOlIG1lcmUgaW5mb3JtYXRpb24gb20gaW5kYnlnZ2VkZSBza2Fsa29tbWFuZG9lci4KAFVrZW5kdCBzaWduYWwgIwBVa2VuZHQgc2lnbmFsICMlZABVa2VuZHQgZmVqbABVa2VuZHQgc3RhdHVzAFByZXNzZXJlbmRlIElPLWZvcmhvbGQAQnJ1ZzoJJXMgW2xhbmd0IEdOVS10aWx2YWxnXSBbdGlsdmFsZ10gLi4uCgklcyBbbGFuZ3QgR05VLXRpbHZhbGddIFt0aWx2YWxnXSBza3JpcHQtZmlsIC4uLgoAQnJ1ZyAiJXMiIGZvciBhdCBmb3JsYWRlIHNrYWxsZW4uCgBCcnVnIGtvbW1hbmRvZW4gImJhc2hidWciIHRpbCBhdCByYXBwb3J0ZXJlIGZlamwuCgBCcnVnZXJzaWduYWwgMQBCcnVnZXJzaWduYWwgMgBWaW5kdWUgw6ZuZHJldABTa3JpdiBhcmd1bWVudGVyIHRpbCBzdGFuZGFyZG91dHB1dC4KICAgIAogICAgVmlzIEFSR2VyIHRpbCBzdGFuZGFyZCBvdXRwdXQsIGVmdGVyZnVsZ3QgYWYgZXQgbnlsaW5qZXRlZ24uCiAgICAKICAgIFRpbHZhbGc6CiAgICAgIC1uCXZlZGjDpmZ0IGlra2UgZXQgbnlsaW5qZXRlZ24KICAgIAogICAgQWZzbHV0bmluZ3NzdGF0dXM6CiAgICBSZXR1cm5lcmVyIHN1Y2NlcyBtZWQgbWluZHJlIGRlciBvcHN0w6VyIGVuIHNrcml2ZWZlamwuAER1IGhhciBwb3N0IGkgJF8ARHUgaGFyIG55IHBvc3QgaSAkXwBbIGFyZy4uLiBdAFtbIHVkdHJ5ayBdXQAiJWMiOiB1Z3lsZGlnIGtvbW1hbmRvACIlYyI6IHVneWxkaWd0IGZvcm1hdHRlZ24AIiVjIjogdWd5bGRpZ3Qgc3ltYm9sc2sgdGlsc3RhbmRzdGVnbgAiJWMiOiB1Z3lsZGlnIHN5bWJvbHNrIHRpbHN0YW5kc29wZXJhdG9yACIlcyI6IGthbiBpa2tlIGzDuHNuZQAiJXMiOiB1Z3lsZGlndCB0YXN0ZXRpbGRlbGluZ3NuYXZuACIlcyI6IG1hbmdsZW5kZSBmb3JtYXR0ZWduACIlcyI6IGlra2UgZW4gcGlkIGVsbGVyIGd5bGRpZyBqb2Itc3BlYwAiJXMiOiBpa2tlIGV0IGd5bGRpZ3QgaWRlbnRpZmljZXJpbmdzbmF2bgAiJXMiOiB1a2VuZHQgZnVua3Rpb25zbmF2bgAiKSIgZm9ydmVudGV0ACIpIiBmb3J2ZW50ZXQsIGZhbmR0ICVzACI6IiBmb3J2ZW50ZXQgZm9yIGJldGluZ2VkZSB1ZHRyeWsAYWRkX3Byb2Nlc3M6IHBpZCAlNWxkICglcykgbWFya2VyZXQgc29tIHN0YWRpZyBpIGxpdmUAYWRkX3Byb2Nlc3M6IHByb2NlcyAlNWxkICglcykgaSB0aGVfcGlwZWxpbmUAYWxpYXMgWy1wXSBbbmF2bls9dsOmcmRpXSAuLi4gXQBhbGxfbG9jYWxfdmFyaWFibGVzOiBpbmdlbiBmdW5rdGlvbnNrb250ZWtzdCB2ZWQgbnV2w6ZyZW5kZSBuYXZuZW9tcsOlZGUAYXJndW1lbnQAYXJndW1lbnQgZm9ydmVudGV0AHVuZGVyc3TDuHR0ZWxzZSBhZiBhcnJheXZhcmlhYmVsIHDDpWtyw6Z2ZXQAZm9yc8O4Z3RlIHRpbGRlbGluZyB0aWwgaWtrZS12YXJpYWJlbAB1Z3lsZGlndCBhcnJheWluZGVrcwB1Z3lsZGlnIGtvbW1hbmRvdHlwZQBkw6VybGlndCBtZWxsZW1sZWQAZMOlcmxpZ3QgaG9wAGTDpXJsaWcgdWRza2lmdG5pbmc6IGluZ2VuIGx1a2tlbmRlICJgIiBpICVzAGTDpXJsaWcgdWRza2lmdG5pbmc6IGluZ2VuIGx1a2tlbmRlICIlcyIgaSAlcwBiYXNoX2V4ZWN1dGVfdW5peF9jb21tYW5kOiBrYW4gaWtrZSBmaW5kZSB0YXN0ZXRpbGRlbGluZyBmb3Iga29tbWFuZG8AYmcgW2pvYl9zcGVjIC4uLl0AYnJlYWsgW25dAGJ1ZzogZMOlcmxpZ3QgZXhwYXNzaWduLXVkdHJ5awBidWlsdGluIFtzaGVsbC1idWlsdGluIFthcmcgLi4uXV0AY2FsbGVyIFtleHByXQBrYW4ga3VuIHVkZsO4cmUgInJldHVybiIgZnJhIGVuIGZ1bmt0aW9uIGVsbGVyIGluZGzDpnN0IHNrcmlwdABrYW4ga3VuIGJydWdlcyBpIGVuIGZ1bmt0aW9uAGthbiBpa2tlIGFsbG9rZXJlIG55IGZpbGRlc2tyaXB0b3IgdGlsIGJhc2gtaW5wdXQgZnJhIGZkICVkAGthbiBpa2tlIGRhbm5lIG1pZGxlcnRpZGlnIGZpbCB0aWwgaGVyZS1kb2t1bWVudDogJXMAa2FuIGlra2UgZHVwbGlrZXJlIGZkICVkIHRpbCBmZCAlZABrYW4gaWtrZSBkdXBsaWtlcmUgbmF2bmdpdmVuIGRhdGFrYW5hbCAocGlwZSkgJXMgc29tICVkAGthbiBpa2tlIGZpbmRlICVzIGkgZGVsdCBvYmpla3QgJXM6ICVzAGthbiBpa2tlIGRhbm5lIHVuZGVycHJvY2VzIHRpbCBrb21tYW5kb3Vkc2tpZnRuaW5nAGthbiBpa2tlIGRhbm5lIHVuZGVycHJvY2VzIHRpbCBwcm9jZXN1ZHNraWZ0bmluZwBrYW4gaWtrZSBkYW5uZSBkYXRha2FuYWwgKHBpcGUpIHRpbCBrb21tYW5kb3Vkc2tpZnRuaW5nAGthbiBpa2tlIGxhdmUgZGF0YWthbmFsIChwaXBlKSB0aWwgcHJvY2VzdWRza2lmdG5pbmcAa2FuIGlra2Ugw6VibmUgbmF2bmdpdmVuIGRhdGFrYW5hbCAocGlwZSkgJXMgdGlsIGzDpnNuaW5nAGthbiBpa2tlIMOlYm5lIG5hdm5naXZlbiBkYXRha2FuYWwgKHBpcGUpICVzIHRpbCBza3Jpdm5pbmcAa2FuIGlra2Ugw6VibmUgZGVsdCBvYmpla3QgJXM6ICVzAGthbiBpa2tlIHZpZGVyZXNlbmRlIHN0YW5kYXJkaW5wdXQgZnJhIC9kZXYvbnVsbDogJXMAa2FuIGlra2UgbnVsc3RpbGxlICJub2RlbGF5Ii10aWxzdGFuZCBmb3IgZmQgJWQAa2FuIGlra2UgaW5kc3RpbGxlIG9nIGZqZXJuZSBza2FsdGlsdmFsZyBzYW10aWRpZwBrYW4gaWtrZSBpbmRzdGlsbGUgdGVybWluYWwtcHJvY2VzZ3J1cHBlICglZCkAa2FuIGlra2UgZmplcm5lIGVuIGZ1bmt0aW9uIG9nIGVuIHZhcmlhYmVsIHNhbXRpZGlnAGthbiBpa2tlIHPDpnR0ZSBpIGh2aWxlAGthbiBpa2tlIHPDpnR0ZSBlbiBsb2dpbmRza2FsIGkgaHZpbGUAa2FuIGlra2UgYnJ1Z2UgIi1mIiB0aWwgYXQgbGF2ZSBmdW5rdGlvbmVyAGthbiBpa2tlIGJydWdlIG1lcmUgZW5kIGVuIGFmIC1hbnJ3AGNhc2UgT1JEIGluIFtNw5hOU1RFUiBbfCBNw5hOU1RFUl0uLi4pIEtPTU1BTkRPRVIgOztdLi4uIGVzYWMAdW5kZXJwcm9jZXMgc2V0cGdpZCAoJWxkIHRpbCAlbGQpAGNvbW1hbmQgWy1wVnZdIGtvbW1hbmRvIFthcmcgLi4uXQBjb21tYW5kX3N1YnN0aXR1dGU6IGthbiBpa2tlIGR1cGxpa2VyZSBkYXRha2FuYWwgKHBpcGUpIHNvbSBmZCAxAGNvbXBnZW4gWy1hYmNkZWZnamtzdXZdIFstbyB2YWxnbXVsaWdoZWRlcl0gIFstQSBoYW5kbGluZ10gWy1HIGdsb2Jtw7huc3RdIFstVyBvcmRsaXN0ZV0gIFstRiBmdW5rdGlvbl0gWy1DIGtvbW1hbmRvXSBbLVggZmlsdGVybcO4bnN0XSBbLVAgcHLDpmZpa3NdIFstUyBzdWZmaWtzXSBbb3JkXQBjb21wbGV0aW9uOiBmdW5rdGlvbiAiJXMiIGlra2UgZnVuZGV0AHZlbnRlZGV0IGJpbsOmciBiZXRpbmdlbHNlc29wZXJhdG9yAGNvbnRpbnVlIFtuXQBjb3Byb2MgW05BVk5dIGtvbW1hbmRvIFt2aWRlcmVzZW5kZWxzZXJdAGthbiBpa2tlIGZpbmRlIC90bXAsIG9wcmV0IHZlbmxpZ3N0IG1hcHBlbiEAY3ByaW50ZjogIiVjIjogdWd5bGRpZ3QgZm9ybWF0ZXJpbmdzdGVnbgBudXbDpnJlbmRlAHNsZXR0ZXIgc3RvcHBldCBqb2IgJWQgbWVkIHByb2Nlc2dydXBwZSAlbGQAZGVzY3JpYmVfcGlkOiAlbGQ6IGluZ2VuIHByb2Nlc3MgbWVkIGRldCBwaWQAbWFwcGVzdGFrIHRvbQBtYXBwZXN0YWtpbmRla3MAZGlycyBbLWNscHZdIFsrTl0gWy1OXQBkaXNvd24gWy1oXSBbLWFyXSBbam9ic3BlYyAuLi5dAGRpdmlzaW9uIG1lZCAwAGR5bmFtaXNrIGluZGzDpnNuaW5nIGlra2UgdGlsZ8OmbmdlbGlnAGVjaG8gWy1uXSBbYXJnIC4uLl0AZWNobyBbLW5lRV0gW2FyZyAuLi5dAHRvbXQgYXJyYXl2YXJpYWJlbG5hdm4AZW5hYmxlIFstYV0gWy1kbnBzXSBbLWYgZmlsbmF2bl0gW25hdm4gLi4uXQBmZWpsIHZlZCBpbmRoZW50bmluZyBhZiB0ZXJtaW5hbGF0dHJpYnV0OiAlcwBmZWpsIHVuZGVyIGltcG9ydGVyaW5nIGFmIGZ1bmt0aW9uc2RlZmluaXRpb24gZm9yICIlcyIAZmVqbCB2ZWQgaW5kc3RpbGxpbmcgYWYgdGVybWluYWxhdHRyaWJ1dDogJXMAZXZhbCBbYXJnIC4uLl0AZXhlYyBbLWNsXSBbLWEgbmF2bl0gW2tvbW1hbmRvIFthcmd1bWVudGVyIC4uLl1dIFt2aWRlcmVzZW5kZWxzZSAuLi5dAGV4aXQgW25dAGZvcnZlbnRlZGUgIikiAGVrc3BvbmVudCBtaW5kcmUgZW5kIDAAZXhwb3J0IFstZm5dIFtuYXZuWz12w6ZyZGldIC4uLl0gZWxsZXIgZXhwb3J0IC1wAGZvcnZlbnRlZGUgZXQgdWR0cnlrAGdyw6Zuc2UgZm9yIHJla3Vyc2lvbiBhZiB1ZHRyeWsgb3ZlcnNrcmVkZXQAZmFsc2UAZmMgWy1lIGVuYW1lXSBbLWxucl0gW2bDuHJzdGVdIFtzaWRzdGVdIGVsbGVyIGZjIC1zIFtwYXQ9cmVwXSBba29tbWFuZG9dAGZnIFtqb2Jfc3BlY10AZmlsLWRlc2tyaXB0b3IgdWRlbiBmb3IgaW50ZXJ2YWwAZmlsbmF2bnNhcmd1bWVudCBww6VrcsOmdmV0AGZvciAoKCB1ZHRyeWsxOyB1ZHRyeWsyOyB1ZHRyeWszICkpOyBkbyBLT01NQU5ET0VSOyBkb25lAGZvciBOQVZOIFtpbiBPUkQgLi4uIF0gOyBkbyBLT01NQU5ET0VSOyBkb25lAGZvcmdyZW5ldCBwaWQgJWQgZmlndXJlcmVyIGkga8O4cmVuZGUgam9iICVkAGZyZWU6IGthbGR0IG1lZCBibG9rYXJndW1lbnQgc29tIGFsbGVyZWRlIGVyIGZyaQBmcmVlOiBrYWxkdCBtZWQgaWtrZS1hbGxva2VyZXQgYmxva2FyZ3VtZW50AGZyZWU6IHN0w7hycmVsc2UgcMOlIHN0YXJ0LSBvZyBzbHV0LWJpZCBhZnZpZ2VyAGZyZWU6IHVuZGVybMO4YiBkZXRla3RlcmV0LCBtaF9uYnl0ZXMgdWRlbiBmb3IgaW50ZXJ2YWwAZnVuY3Rpb24gbmF2biB7IEtPTU1BTkRPRVIgOyB9IGVsbGVyIG5hdm4gKCkgeyBLT01NQU5ET0VSIDsgfQBnZXRjd2Q6IGthbiBpa2tlIHRpbGfDpSBvdmVybGlnZ2VuZGUgbWFwcGVyAGdldG9wdHMgdGlsdmFsZ3NzdHJlbmcgbmF2biBbYXJnXQBoYXNoIFstbHJdIFstcCBzdGluYXZuXSBbLWR0XSBbbmF2biAuLi5dAGhhc2hpbmcgc2zDpWV0IGZyYQBoZXJlLWRvY3VtZW50IHZlZCBsaW5qZSAlZCBlciBhZHNraWx0IGFmIHNsdXQtcMOlLWxpbmplICjDuG5za2VkZSAiJXMiKQBoaXN0b3J5IFstY10gWy1kIGZvcnNreWRuaW5nXSBbbl0gZWxsZXIgaGlzdG9yeSAtYW5ydyBbZmlsbmF2bl0gZWxsZXIgaGlzdG9yeSAtcHMgYXJnIFthcmcuLi5dAGhpc3RvcmlrcG9zaXRpb24AaGlzdG9yaWtzcGVjaWZpa2F0aW9uAGhpdHMJa29tbWFuZG8KAGlkZW50aWZpa2F0b3IgZm9ydmVudGV0IGVmdGVyIHByw6Zmb3LDuGdlbHNlIGVsbGVyIC1mb3JtaW5kc2tlbHNlAGlmIEtPTU1BTkRPRVI7IHRoZW4gS09NTUFORE9FUjsgWyBlbGlmIEtPTU1BTkRPRVI7IHRoZW4gS09NTUFORE9FUjsgXS4uLiBbIGVsc2UgS09NTUFORE9FUjsgXSBmaQBpbml0aWFsaXplX2pvYl9jb250cm9sOiBnZXRwZ3JwIGZlamxlZGUAaW5pdGlhbGl6ZV9qb2JfY29udHJvbDogbGluamVkaXNjaXBsaW4AaW5pdGlhbGl6ZV9qb2JfY29udHJvbDogc2V0cGdpZAB1Z3lsZGlnIGFyaXRtZXRpc2sgZ3J1bmR0YWwAdWd5bGRpZyBiYXNlAHVneWxkaWd0IHRlZ24gJWQgaSBleHBvcnRzdHIgZm9yICVzAHVneWxkaWd0IGhla3NhZGVjaW1hbHQgdGFsAHVneWxkaWd0IHRhbAB1Z3lsZGlndCBva3RhbHRhbAB1Z3lsZGlndCBzaWduYWxudW1tZXIAam9iICVkIHN0YXJ0ZXQgdWRlbiBqb2Jrb250cm9sAGpvYl9zcGVjIFsmXQBqb2JzIFstbG5wcnNdIFtqb2JzcGVjIC4uLl0gZWxsZXIgam9icyAteCBrb21tYW5kbyBbYXJnZXJdAGtpbGwgWy1zIHNpZ3NwZWMgfCAtbiBzaWdudW0gfCAtc2lnc3BlY10gcGlkIHwgam9ic3BlYyAuLi4gZWxsZXIga2lsbCAtbCBbc2lnc3BlY10Ac2lkc3RlIGtvbW1hbmRvOiAlcwoAbGV0IGFyZyBbYXJnIC4uLl0AZ3LDpm5zZQBsaW5qZSAlZDogAGxpbmplcmVkaWdlcmluZyBpa2tlIHNsw6VldCB0aWwAbG9jYWwgW3RpbHZhbGddIG5hdm5bPXbDpnJkaV0gLi4uAGxvZyB1ZAoAbG9nb3V0IFtuXQBsw7hra2V0w6ZsbGVyAG1ha2VfaGVyZV9kb2N1bWVudDogZMOlcmxpZyBpbnN0cnVrdGlvbnN0eXBlICVkAG1ha2VfbG9jYWxfdmFyaWFibGU6IGluZ2VuIGZ1bmt0aW9uc2tvbnRla3N0IHZlZCBudXbDpnJlbmRlIG5hdm5lb21yw6VkZQBtYWtlX2RpcmVjdGlvbjogdmlkZXJlc2VuZGVsc2VzaW5zdHJ1a3Rpb24gIiVkIiB1ZGVuIGZvciBpbnRlcnZhbABtYWxsb2M6IGJsb2sgaSBmcmkgbGlzdGUgdHbDpnJldCB1ZABtYWxsb2M6IGZvcmZlamxldCBow6Z2ZGVsc2U6ICVzCgBtYXBmaWxlIFstbiBhbnRhbF0gWy1PIG9wcmluZGVsc2VdIFstcyBhbnRhbF0gWy10XSBbLXUgZmRdIFstQyB0aWxiYWdla2FsZF0gWy1jIGt2YW50dW1dIFthcnJheV0AZmx5dCBwcm9jZXMgdGlsIGVuIGFuZGVuIENQVQBtYW5nbGVuZGUgIikiAG1hbmdsZW5kZSAiXSIAbWFuZ2xlbmRlIGhla3NjaWZmZXIgZm9yIFx4AG5ldHbDpnJrc29wZXJhdGlvbiBpa2tlIHVuZGVyc3TDuHR0ZXQAaW50ZXQgIj0iIGkgZXhwb3J0c3RyIGZvciAlcwBpbmdlbiBhZnNsdXR0ZW5kZSAiJWMiIGkgJXMAaW5nZW4ga29tbWFuZG8gZnVuZGV0AGluZ2VuIGhqw6ZscGVlbW5lciBtYXRjaGVyICIlcyIuIFByw7h2ICJoZWxwIGhlbHAiIGVsbGVyICJtYW4gLWsgJXMiIGVsbGVyICJpbmZvICVzIi4AaW5nZW4gam9ia29udHJvbABpbmdlbiBqb2Jrb250cm9sIGkgZGVubmUgc2thbABpbnRldCBtYXRjaDogJXMAaW5nZW4gYW5kZW4gbWFwcGUAaW5nZW4gYW5kcmUgdGlsdmFsZyBlciB0aWxsYWR0IHNhbW1lbiBtZWQgIi14IgBpa2tlIGkgZ2FuZyBtZWQgYXQgZWtzZWt2ZXJlIGZ1bGRmw7hyZWxzZXNmdW5rdGlvbgBpa2tlIGVuIGxvZ2luZC1za2FsOiBicnVnICJleGl0IgBva3RhbHQgdGFsAGt1biBtZW5pbmdzZnVsZCBpIGVuICJmb3IiLSwgIndoaWxlIi0gZWxsZXIgInVudGlsIi1sw7hra2UAZGF0YWthbmFsZmVqbCAocGlwZSBlcnJvcikAcG9wX3Njb3BlOiBob3ZlZCBhZiBzaGVsbF92YXJpYWJsZXMgZXIgaWtrZSBldCBtaWRsZXJ0aWRpZ3QgbWlsasO4bmF2bmVydW0AcG9wX3Zhcl9jb250ZXh0OiBob3ZlZCBhZiBzaGVsbF92YXJpYWJsZXMgZXIgaWtrZSBlbiBmdW5rdGlvbnNrb250ZWtzdABwb3BfdmFyX2NvbnRleHQ6IGluZ2VuIGdsb2JhbF92YXJpYWJsZXMta29udGVrc3QAcG9wZCBbLW5dIFsrTiB8IC1OXQBzdHLDuG1zdmlndCBuw6ZydCBmb3Jlc3TDpWVuZGUAcHJpbnRfY29tbWFuZDogZMOlcmxpZ3QgbWVsbGVtbGVkICIlZCIAcHJpbnRmIFstdiB2YXJdIGZvcm1hdCBbYXJndW1lbnRlcl0AcHJvZ2NvbXBfaW5zZXJ0OiAlczogTlVMTCBDT01QU1BFQwBwcm9ncmFtbWVyaW5nc2ZlamwAcHVzaGQgWy1uXSBbK04gfCAtTiB8IG1hcHBlXQBwd2QgWy1MUF0AbMOmc2VmZWpsOiAlZDogJXMAcmVhZGFycmF5IFstbiBhbnRhbF0gWy1PIG9wcmluZGVsc2VdIFstcyBhbnRhbF0gWy10XSBbLXUgZmRdIFstQyB0aWxiYWdla2FsZF0gWy1jIGt2YW50dW1dIFthcnJheV0AcmVhbGxvYzoga2FsZHQgbWVkIGlra2UtYWxsb2tlcmV0IGJsb2thcmd1bWVudAByZWFsbG9jOiBzdMO4cnJlbHNlIHDDpSBzdGFydC0gb2cgc2x1dC1iaWQgYWZ2aWdlcgByZWFsbG9jOiB1bmRlcmzDuGIgZGV0ZWt0ZXJldCwgbWhfbmJ5dGVzIHVkZW4gZm9yIGludGVydmFsAHVuZGVybMO4YiBpIHJla3Vyc2lvbnNzdGFrAHZpZGVyZXNlbmRlbHNlc2Zlamw6IGthbiBpa2tlIGR1cGxpa2VyZSBmZAByZWdpc3Rlcl9hbGxvYzogJXAgYWxsZXJlZGUgaSB0YWJlbCBzb20gYWxsb2tlcmV0PwoAcmVnaXN0ZXJfYWxsb2M6IGFsbG9jLXRhYmVsIGVyIGZ5bGR0IG1lZCBGSU5EX0FMTE9DPwoAcmVnaXN0ZXJfZnJlZTogJXAgYWxsZXJlZGUgaSB0YWJlbCBzb20gZnJpPwoAYmVncsOmbnNldAByZXR1cm4gW25dAHJ1bl9wZW5kaW5nX3RyYXBzOiBkw6VybGlnIHbDpnJkaSBpIHRyYXBfbGlzdFslZF06ICVwAHJ1bl9wZW5kaW5nX3RyYXBzOiBzaWduYWxow6VuZHRlcmluZyBlciBTSUdfREZMLCBnZW5zZW5kZXIgJWQgKCVzKSB0aWwgbWlnIHNlbHYAc2F2ZV9iYXNoX2lucHV0OiBidWZmZXIgZWtzaXN0ZXJlciBhbGxlcmVkZSB0aWwgbnkgZmQgJWQAc2VsZWN0IE5BVk4gW2luIE9SRCAuLi4gO10gZG8gS09NTUFORE9FUjsgZG9uZQBza2Fsbml2ZWF1ICglZCkgZm9yIGjDuGp0LCBnZW5pbmRzdGlsbGVyIHRpbCAxAHNoaWZ0IFtuXQBza2lmdHTDpmxsZXIAc2hvcHQgWy1wcXN1XSBbLW9dIFtpbmRzdG5hdm4gLi4uXQBzaWdwcm9jbWFzazogJWQ6IHVneWxkaWcgaGFuZGxpbmcAc291cmNlIGZpbG5hdm4gW2FyZ3VtZW50ZXJdAHN0YXJ0X3BpcGVsaW5lOiBwZ3JwLWRhdGFrYW5hbCAocGlwZSkAc3VzcGVuZCBbLWZdAHN5bnRha3NmZWpsAHN5bnRha3NmZWpsIGkgYmV0aW5nZWxzZXN1ZHRyeWsAc3ludGFrc2ZlamwgaSBiZXRpbmdlbHNlc3VkdHJ5azogdXZlbnRldCBlbGVtZW50ICIlcyIAc3ludGFrc2ZlamwgaSB1ZHRyeWsAc3ludGFrc2ZlamwgbsOmciAiJXMiAHN5bnRha3NmZWpsIG7DpnIgdXZlbnRldCB1ZHRyeWsgIiVzIgBzeW50YWtzZmVqbDogIigoJXMpKSIAc3ludGFrc2Zlamw6ICI7IiB1dmVudGV0AHN5bnRha3NmZWpsOiBhcml0bWV0aXNrIHVkdHJ5ayBww6VrcsOmdmV0AHN5bnRha3NmZWpsOiB1Z3lsZGlnIGFyaXRtZXRpc2sgb3BlcmF0b3IAc3ludGFrc2Zlamw6IG9wZXJhbmQgZm9ydmVudGV0AHN5bnRha3NmZWpsOiB1dmVudGV0IHNsdXRuaW5nIHDDpSBmaWwAc3lzdGVtbmVkYnJ1ZCBuw6ZydCBmb3Jlc3TDpWVuZGUAdGVzdCBbdWR0cnlrXQB0aW1lIFstcF0gZGF0YWthbmFsAHRpbWVzAGZvciBtYW5nZSBhcmd1bWVudGVyAHRyYXAgWy1scF0gW1thcmddIHNpZ25hbF9zcGVjIC4uLl0AdHJhcF9oYW5kbGVyOiB1Z3lsZGlndCBzaWduYWwgJWQAdHJ1ZQB0eXBlIFstYWZwdFBdIG5hdm4gW25hdm4gLi4uXQB1bWFzayBbLXBdIFstU10gW3RpbHN0YW5kXQB1bmFsaWFzIFstYV0gbmF2biBbbmF2biAuLi5dAHV2ZW50ZXQgRU9GIG1lbnMgZGVyIGxlZHRlcyBlZnRlciAiXV0iAHV2ZW50ZXQgRU9GIG1lbnMgZGVyIGxlZHRlcyBlZnRlciBzYW1ow7hyZW5kZSAiJWMiAHV2ZW50ZXQgRU9GIG1lbnMgZGVyIGxlZHRlcyBlZnRlciBzYW1ow7hyZW5kZSAiKSIAdXZlbnRldCBhcmd1bWVudCAiJXMiIHRpbCBiaW7DpnIgYmV0aW5nZWxzZXNvcGVyYXRvcgB1dmVudGV0IGFyZ3VtZW50ICIlcyIgdGlsIHVuw6ZyIGJldGluZ2Vsc2Vzb3BlcmF0b3IAdXZlbnRldCBhcmd1bWVudCB0aWwgYmluw6ZyIGJldGluZ2Vsc2Vzb3BlcmF0b3IAdXZlbnRldCBhcmd1bWVudCB0aWwgdW7DpnIgYmV0aW5nZWxzZXNvcGVyYXRvcgB1dmVudGV0IHVkdHJ5ayAiJWQiIGkgYmV0aW5nZWxzZXNrb21tYW5kbwB1dmVudGV0IHVkdHJ5ayAiJWMiIGkgYmV0aW5nZWxzZXNrb21tYW5kbwB1dmVudGV0IHVkdHJ5ayAiJXMiIGkgYmV0aW5nZWxzZXNrb21tYW5kbwB1dmVudGV0IHVkdHJ5ayAiJXMiLCB2ZW50ZWRlIGJpbsOmciBiZXRpbmdlbHNlc29wZXJhdG9yAHV2ZW50ZXQgZWxlbWVudCAiJXMiLCBmb3J2ZW50ZWRlICIpIgB1a2VuZHQAdWtlbmR0IGtvbW1hbmRvZmVqbAB1bnRpbCBLT01NQU5ET0VSOyBkbyBLT01NQU5ET0VSOyBkb25lAHbDpnJkaSBmb3Igc3RvciB0aWwgZ3J1bmR0YWwAdmFyaWFibGVzIC0gTmF2biBvZyBiZXR5ZG5pbmcgYWYgbm9nbGUgc2thbHZhcmlhYmxlAHdhaXQ6IHBpZCAlbGQgZXIgaWtrZSBlbiB1bmRlcnByb2NlcyBhZiBkZW5uZSBza2FsAHdhaXRfZm9yOiBJbmdlbiBvcHRlZ25lbHNlIGFmIHByb2NlcyAlbGQAd2FpdF9mb3Jfam9iOiBqb2IgJWQgZXIgc3RvcHBldABhZHZhcnNlbDogAGFkdmFyc2VsOiAlczogJXMAYWR2YXJzZWw6IHRpbHZhbGdldCAtQyB2aWwgbcOlc2tlIGlra2Ugdmlya2UsIHNvbSBkdSBmb3J2ZW50ZXIAYWR2YXJzZWw6IHRpbHZhbGdldCAtRiB2aWwgbcOlc2tlIGlra2Ugdmlya2UsIHNvbSBkdSBmb3J2ZW50ZXIAd2hpbGUgS09NTUFORE9FUjsgZG8gS09NTUFORE9FUjsgZG9uZQBza3JpdmVmZWpsOiAlcwB7IEtPTU1BTkRPRVIgOyB9AA==