ZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4gYi9kb2N1bWVudGF0aW9uL01ha2VmaWxlLmluCmluZGV4IGUxNWRhOWQuLjllZmE3ZjEgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4KKysrIGIvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbgpAQCAtNCw2ICs0LDcgQEAKIFZQQVRIICAgICA9IEBzcmNkaXJACiBNT0RVTEUgICAgPSBub25lCiBCT09LTkFNRSAgPSB3aW5lLWRvYworREIySFRNTCAgID0gJChTUkNESVIpL2RiMmh0bWwtd2luZWhxCiAKIEVYVFJBU1VCRElSUyA9IHNhbXBsZXMgc3RhdHVzCiAKQEAgLTE0LDE0ICsxNSwxOCBAQAogCWNvbXBpbGluZy5zZ21sIFwKIAljb25maWd1cmluZy5zZ21sIFwKIAljb25zb2xlcy5zZ21sIFwKKwljdnMtcmVncmVzc2lvbi5zZ21sIFwKIAlkZWJ1Z2dlci5zZ21sIFwKIAlkZWJ1Z2dpbmcuc2dtbCBcCiAJZGxscy5zZ21sIFwKIAlkb2N1bWVudGF0aW9uLnNnbWwgXAogCWZvbnRzLnNnbWwgXAorCWdldHRpbmcuc2dtbCBcCiAJaTE4bi5zZ21sIFwKIAlpbXBsZW1lbnRhdGlvbi5zZ21sIFwKIAlpbnN0YWxsaW5nLnNnbWwgXAorCWludHJvZHVjdGlvbi5zZ21sIFwKKwlvbGUuc2dtbCBcCiAJb3BlbmdsLnNnbWwgXAogCXBhY2thZ2luZy5zZ21sIFwKIAlwYXRjaGVzLnNnbWwgXApAQCAtNDIsMTMgKzQ3LDEzIEBACiBATUFLRV9SVUxFU0AKIAogJChCT09LTkFNRSkvaW5kZXguaHRtbDogJChCT09LX1NSQ1MpCi0JZGIyaHRtbCAkKEJPT0tOQU1FKS5zZ21sCisJJChEQjJIVE1MKSAkKEJPT0tOQU1FKS5zZ21sCiAKICQoQk9PS05BTUUpLnBkZjogJChCT09LX1NSQ1MpCi0JZGIycGRmICQoQk9PS05BTUUpLnNnbWwKKwlkYjJwZGYgJChCT09LTkFNRSkuc2dtbCA+IC9kZXYvbnVsbCAyPiYxCiAKICQoQk9PS05BTUUpLnBzOiAkKEJPT0tfU1JDUykKLQlkYjJwcyAkKEJPT0tOQU1FKS5zZ21sCisJZGIycHMgJChCT09LTkFNRSkuc2dtbCA+IC9kZXYvbnVsbCAyPiYxCiAKIGluc3RhbGw6OiAKIAkkKElOU1RBTEwpIC1kICQobWFuZGlyKS9tYW4kKHByb2dfbWFuZXh0KQpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCBiL2RvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwKaW5kZXggMWQ5NDBjNC4uNzBiYWRkMyAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sCkBAIC01LDcgKzUsOSBAQAogICAgIDxzZWN0MSBpZD0iYmFzaWMtb3ZlcnZpZXciPgogICAgICAgPHRpdGxlPkJhc2ljIE92ZXJ2aWV3PC90aXRsZT4KIAotICAgICAgPHBhcmE+V3JpdHRlbiBieSBPdmUgS2FhdmVuPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CisgICAgICA8L3BhcmE+CiAKICAgICAgIDxwYXJhPgogICAgICAgICBXaXRoIHRoZSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmUgb2YgV2luZSBzdGFiaWxpemluZywgYW5kCkBAIC0xMDIyLDExICsxMDI0LDExIEBACiAgICAgICAgIDwvc2NyZWVuPgogICAgICAgPC9zZWN0Mj4KICAgICA8L3NlY3QxPgotICAgIDwvY2hhcHRlcj4KKyAgPC9jaGFwdGVyPgogCiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50IGIvZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTY4MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudApAQCAtMCwwICsxLDExNiBAQAorPCEtLSAqKiogTGlzdCBvZiBhdXRob3IgbmFtZXMKKyAgICAgKioqIEFsbG93cyB1cyB0byBtYWludGFpbiB0aGUgbGlzdCBhbmQgY2hhbmdlIHNwYW0gb2JmdXNjYXRpb24KKyAgICAgKioqIEZyb20gYSBjZW50cmFsIGxvY2F0aW9uLgorCisgICAgICoqKiBVc2UgdGhpcyB0ZW1wbGF0ZSBmb3IgbmV3IGF1dGhvciBhdHRyaWJ1dGlvbnM6CisgICAgICAgIFdyaXR0ZW4gYnkgJjsgPGVtYWlsPiY7PC9lbWFpbD4KKy0tPgorCis8IS0tICAqKiBUZW1wbGF0ZSBmb3IgbmV3IGVudHJpZXMgKioKKzwhZW50aXR5IG5hbWUtICIiPgorPCFlbnRpdHkgZW1haWwtICIiPgorCistLT4KKworCis8IWVudGl0eSBuYW1lLWpvbmF0aGFuLWJ1enphcmQgIkpvbmF0aGFuIEJ1enphcmQiPgorPCFlbnRpdHkgZW1haWwtam9uYXRoYW4tYnV6emFyZCAiamFiQGhleC5wcmVzdGVsLmNvLnVrIj4KKworPCFlbnRpdHkgbmFtZS1kYXZpZC1jdXRoYmVydCAiRGF2aWQgQS4gQ3V0aGJlcnQiPgorPCFlbnRpdHkgZW1haWwtZGF2aWQtY3V0aGJlcnQgImRhY3V0QGVjZS5jbXUuZWR1Ij4KKworPCFlbnRpdHkgbmFtZS1odXctZGF2aWVzICJIdXcgRCBNIERhdmllcyI+Cis8IWVudGl0eSBlbWFpbC1odXctZGF2aWVzICJoLmRhdmllczFAcGh5c2ljcy5veC5hYy51ayI+CisKKzwhZW50aXR5IG5hbWUtc3RldmVuLWVsbGlvdHQgIlN0ZXZlbiBFbGxpb3R0Ij4KKzwhZW50aXR5IGVtYWlsLXN0ZXZlbi1lbGxpb3R0ICJlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbSI+CisKKzwhZW50aXR5IG5hbWUtYWxiZXJ0LWRlbi1oYWFuICJBbGJlcnQgZGVuIEhhYW4iPgorPCFlbnRpdHkgZW1haWwtYWxiZXJ0LWRlbi1oYWFuICIiPgorCis8IWVudGl0eSBuYW1lLWphbWVzLWp1cmFuICJKYW1lcyBKdXJhbiI+Cis8IWVudGl0eSBlbWFpbC1qYW1lcy1qdXJhbiAianVyYW5AY3NlLnBzdS5lZHUiPgorCis8IWVudGl0eSBuYW1lLW92ZS1rYWF2ZW4gIk92ZSBL5XZlbiI+Cis8IWVudGl0eSBlbWFpbC1vdmUta2FhdmVuICJvdmVrQHdpbmVocS5jb20iPgorCis8IWVudGl0eSBuYW1lLWVyaWMta29obCAiRXJpYyBLb2hsIj4KKzwhZW50aXR5IGVtYWlsLWVyaWMta29obCAiZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUiPgorCis8IWVudGl0eSBuYW1lLWFsZXgta29yb2JrYSAiQWxleCBLb3JvYmthIj4KKzwhZW50aXR5IGVtYWlsLWFsZXgta29yb2JrYSAiYWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdSI+CisKKzwhZW50aXR5IG5hbWUtbWFyY3VzLW1laXNzbmVyICJNYXJjdXMgTWVpc3NuZXIiPgorPCEtLSA8IWVudGl0eSBlbWFpbC1tYXJjdXMtbWVpc3NuZXIgIm1zbWVpc3NuQGNpcC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZSI+IC0tPgorPCFlbnRpdHkgZW1haWwtbWFyY3VzLW1laXNzbmVyICJNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZSI+CisKKzwhZW50aXR5IG5hbWUtYnJ1Y2UtbWlsbmVyICJCcnVjZSBNaWxuZXIiPgorPCFlbnRpdHkgZW1haWwtYnJ1Y2UtbWlsbmVyICIiPgorCis8IWVudGl0eSBuYW1lLWFuZHJlYXMtbW9ociAiQW5kcmVhcyBNb2hyIj4KKzwhLS0gPCFlbnRpdHkgZW1haWwtYW5kcmVhcy1tb2hyICJhLm1vaHJAbWFpbHRvLmRlIj4gLS0+Cis8IWVudGl0eSBlbWFpbC1hbmRyZWFzLW1vaHIgImFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSI+CisKKzwhZW50aXR5IG5hbWUtZ2VyYXJkLXBhdGVsICJHZXJhcmQgUGF0ZWwiPgorPCFlbnRpdHkgZW1haWwtZ2VyYXJkLXBhdGVsICIiPgorCis8IWVudGl0eSBuYW1lLWRpbWl0cmllLXBhdW4gIkRpbWl0cmllIE8uIFBhdW4iPgorPCFlbnRpdHkgZW1haWwtZGltaXRyaWUtcGF1biAiZGltaUBjcy50b3JvbnRvLmVkdSI+CisKKzwhZW50aXR5IG5hbWUtZXJpYy1wb3VlY2ggIkVyaWMgUG91ZWNoIj4KKzwhZW50aXR5IGVtYWlsLWVyaWMtcG91ZWNoICJFcmljLlBvdWVjaEB3YW5hZG9vLmZyIj4KKworPCFlbnRpdHkgbmFtZS1yb2JlcnQtcG91bGlvdCAiUm9iZXJ0IFBvdWxpb3QiPgorPCFlbnRpdHkgZW1haWwtcm9iZXJ0LXBvdWxpb3QgImtyeW5vc0BjbGljLm5ldCI+CisKKzwhZW50aXR5IG5hbWUtam9zZXBoLXByYW5ldmljaCAiSm9zZXBoIFByYW5ldmljaCI+Cis8IWVudGl0eSBlbWFpbC1qb3NlcGgtcHJhbmV2aWNoICJqcHJhbmV2aWNoQGx5Y29zLmNvbSI+CisKKzwhZW50aXR5IG5hbWUtYWxleC1wcmllbSAiQWxleCBQcmllbSI+Cis8IWVudGl0eSBlbWFpbC1hbGV4LXByaWVtICJhbGV4QHNjaS5rdW4ubmwiPgorCis8IWVudGl0eSBuYW1lLWpvaG4tcmljaGFyZHNvbiAiSm9obiBSaWNoYXJkc29uIj4KKzwhZW50aXR5IGVtYWlsLWpvaG4tcmljaGFyZHNvbiAianJpY2hhcmRAemtvLmRlYy5jb20iPgorCis8IWVudGl0eSBuYW1lLWRvdWdsYXMtcmlkZ3dheSAiRG91Z2xhcyBSaWRnd2F5Ij4KKzwhZW50aXR5IGVtYWlsLWRvdWdsYXMtcmlkZ3dheSAicmlkZ3dheUB3aW5laHEuY29tIj4KKworPCFlbnRpdHkgbmFtZS1hZGFtLXNhY2FybnkgIkFkYW0gU2FjYXJueSI+Cis8IWVudGl0eSBlbWFpbC1hZGFtLXNhY2FybnkgIm1hZ2ljYm94QGJlc3R3ZWIubmV0Ij4KKworPCFlbnRpdHkgbmFtZS1qdWVyZ2VuLXNjaG1pZWQgIkp1ZXJnZW4gU2NobWllZCI+Cis8IWVudGl0eSBlbWFpbC1qdWVyZ2VuLXNjaG1pZWQgImp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZSI+CisKKzwhZW50aXR5IG5hbWUtam9obi1zaGVldHMgIkpvaG4gUi4gU2hlZXRzIj4KKzwhZW50aXR5IGVtYWlsLWpvaG4tc2hlZXRzICJqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbSI+CisKKzwhZW50aXR5IG5hbWUtcGV0ci10b21hc2VrICJQZXRyIFRvbWFzZWsiPgorPCFlbnRpdHkgZW1haWwtcGV0ci10b21hc2VrICJ0b21hc2VrQGV0Zi5jdW5pLmN6Ij4KKworPCFlbnRpdHkgbmFtZS1saW9uZWwtdWxtZXIgIkxpb25lbCBVbG1lciI+Cis8IWVudGl0eSBlbWFpbC1saW9uZWwtdWxtZXIgImxpb25lbC51bG1lckBmcmVlLmZyIj4KKworPCFlbnRpdHkgbmFtZS1tb3J0ZW4td2VsaW5kZXIgIk1vcnRlbiBXZWxpbmRlciI+Cis8IWVudGl0eSBlbWFpbC1tb3J0ZW4td2VsaW5kZXIgIiI+CisKKzwhZW50aXR5IG5hbWUtamVyZW15LXdoaXRlICJKZXJlbXkgV2hpdGUiPgorPCFlbnRpdHkgZW1haWwtamVyZW15LXdoaXRlICJqd2hpdGVAY29kZXdlYXZlcnMuY29tIj4KKworPCEtLSAqKiogQ29kZXJzIG1lbnRpb25lZCBpbiBkb2NzLCBidXQgbm90IGRvYyB3cml0ZXJzICoqKiAtLT4KKworPCFlbnRpdHkgbmFtZS1mcmFuY2lzLWJlYXVkZXQgIkZyYW5jaXMgQmVhdWRldCI+Cis8IWVudGl0eSBlbWFpbC1mcmFuY2lzLWJlYXVkZXQgImZyYW5jaXNAbWFjYWRhbWlhbi5jb20iPgorCis8IWVudGl0eSBuYW1lLWFuZGVycy1jYXJsc3NvbiAiQW5kZXJzIENhcmxzc29uIj4KKzwhZW50aXR5IGVtYWlsLWFuZGVycy1jYXJsc3NvbiAiYW5kZXJzLmNhcmxzc29uQGxpbnV4Lm51Ij4KKworPCFlbnRpdHkgbmFtZS1hcmljLXN0ZXdhcnQgIkFyaWMgU3Rld2FydCI+Cis8IWVudGl0eSBlbWFpbC1hcmljLXN0ZXdhcnQgImFyaWNAY29kZXdlYXZlcnMuY29tIj4KKworPCFlbnRpdHkgbmFtZS1sdWMtdG91cmFuZ2VhdSAiTHVjIFRvdXJhbmdlYXUiPgorPCFlbnRpdHkgZW1haWwtbHVjLXRvdXJhbmdlYXUgImx1Y0BtYWNhZGFtaWFuLmNvbSI+CisKKzwhZW50aXR5IG5hbWUta29lbi1kZWZvcmNoZSAiS29lbiBEZWZvcmNoZSI+Cis8IWVudGl0eSBlbWFpbC1rb2VuLWRlZm9yY2hlICJqb3plZkBrb3RuZXQub3JnIj4KKworCmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCBiL2RvY3VtZW50YXRpb24vYnVncy5zZ21sCmluZGV4IDFlZjFjNGIuLmQ5NmZlNTkgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vYnVncy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vYnVncy5zZ21sCkBAIC01LDcgKzUsNyBAQAogICAgICAgPHRpdGxlPkhvdyBUbyBSZXBvcnQgQSBCdWc8L3RpdGxlPgogCiAgICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBHZXJhcmQgUGF0ZWwgKD8/PykKKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1nZXJhcmQtcGF0ZWw7IDxlbWFpbD4mZW1haWwtZ2VyYXJkLXBhdGVsOzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vYnVncmVwb3J0czwvZmlsZW5hbWU+KQpAQCAtMjUsMTQgKzI1LDE0IEBACiAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgWW91ciBjb21wdXRlciAqbXVzdCogaGF2ZSBwZXJsIG9uIGl0IGZvciB0aGlzIG1ldGhvZCB0bwotICAgICAgICAgICAgICB3b3JrLiBUbyBmaW5kIG91dCBpZiB5b3UgaGF2ZSBwZXJsLCBydW4gPGNvbW1hbmQ+d2hpY2gKLSAgICAgICAgICAgICAgICBwZXJsPC9jb21tYW5kPi4gSWYgaXQgcmV0dXJucyBzb21ldGhpbmcgbGlrZQorICAgICAgICAgICAgICBZb3VyIGNvbXB1dGVyIDxlbXBoYXNpcz5tdXN0PC9lbXBoYXNpcz4gaGF2ZSBwZXJsIG9uIGl0CisJICAgICAgZm9yIHRoaXMgbWV0aG9kIHRvIHdvcmsuIFRvIGZpbmQgb3V0IGlmIHlvdSBoYXZlIHBlcmwsCisJICAgICAgcnVuIDxjb21tYW5kPndoaWNoIHBlcmw8L2NvbW1hbmQ+LiBJZiBpdCByZXR1cm5zIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2Jpbi9wZXJsPC9maWxlbmFtZT4sIHlvdSdyZSBpbiBidXNpbmVzcy4KICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBza2lwIG9uIGRvd24gdG8gIlRoZSBIYXJkIFdheSIuIElmIHlvdSBhcmVuJ3QKICAgICAgICAgICAgICAgc3VyZSwganVzdCBrZWVwIG9uIGdvaW5nLiBXaGVuIHlvdSB0cnkgdG8gcnVuIHRoZQotICAgICAgICAgICAgICBzY3JpcHQsIGl0IHdpbGwgYmVjb21lICp2ZXJ5KiBhcHBhcmVudCBpZiB5b3UgZG9uJ3QgaGF2ZQotICAgICAgICAgICAgICBwZXJsLgorICAgICAgICAgICAgICBzY3JpcHQsIGl0IHdpbGwgYmVjb21lIDxlbXBoYXNpcz52ZXJ5PC9lbXBoYXNpcz4gYXBwYXJlbnQKKwkgICAgICBpZiB5b3UgZG9uJ3QgaGF2ZSBwZXJsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPGxpc3RpdGVtPgpAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+K3Nub29wPC9wYXJhbWV0ZXI+IGlzIHByZXR0eSB1bnN0YWJsZSBhbmQKICAgICAgICAgICAgICAgb2Z0ZW4gd2lsbCBjcmFzaCBlYXJsaWVyIHRoYW4gYSBzaW1wbGUKICAgICAgICAgICAgICAgPHBhcmFtZXRlcj4rcmVsYXk8L3BhcmFtZXRlcj4hIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZW4KLSAgICAgICAgICAgICAgcGxlYXNlIHVzZSAqb25seSogPHBhcmFtZXRlcj4rcmVsYXk8L3BhcmFtZXRlcj4hISBBIGJ1ZworICAgICAgICAgICAgICBwbGVhc2UgdXNlIDxlbXBoYXNpcz5vbmx5PC9lbXBoYXNpcz4gPHBhcmFtZXRlcj4rcmVsYXk8L3BhcmFtZXRlcj4hISBBIGJ1ZwogICAgICAgICAgICAgICByZXBvcnQgd2l0aCBhIGNyYXNoIGluIDxwYXJhbWV0ZXI+K3Nub29wPC9wYXJhbWV0ZXI+CiAgICAgICAgICAgICAgIGNvZGUgaXMgdXNlbGVzcyBpbiBtb3N0IGNhc2VzIQogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMjExLDYgKzIxMSw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJjaGFwdGVyIiAiIikKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sIGIvZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sCmluZGV4IGE5YWZkMWEuLjRlYzA4YTQgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vYnVpbGQuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwKQEAgLTYsNiArNiw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sIGIvZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbAppbmRleCA3NDdjMjM4Li5jMGE1YWJhIDEwMDY0NAotLS0gYS9kb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwKQEAgLTEsMTEgKzEsMTY5IEBACiAgIDxjaGFwdGVyIGlkPSJjb21waWxpbmciPgogICAgIDx0aXRsZT5Db21waWxpbmcgV2luZTwvdGl0bGU+CiAgICAgPHBhcmE+SG93IHRvIGNvbXBpbGUgd2luZSwgYW5kIHByb2JsZW1zIHRoYXQgbWF5IGFyaXNlLi4uPC9wYXJhPgorCisgICAgPHNlY3QxIGlkPSJjb21waWxpbmctd2luZSI+CisgICAgICA8dGl0bGU+Q29tcGlsaW5nIFdpbmU8L3RpdGxlPgorCisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5Ub29scyByZXF1aXJlZDwvdGl0bGU+CisJPHBhcmE+CisJICA8aXRlbWl6ZWRsaXN0PgorCSAgICA8bGlzdGl0ZW0+CisJICAgICAgPHBhcmE+CisJICAgICAgICBnY2MgLS0gMi43LnggcmVxdWlyZWQgKFdpbmUgdXNlcyBhdHRyaWJ1dGUgc3RkY2FsbCkuCisJCVZlcnNpb25zIGVhcmxpZXIgdGhhbiAyLjcuMi4zIGJhcmYgb24gc2hlbGxvcmQuYworCQktLSBjb21waWxlIHdpdGhvdXQgb3B0aW1pemluZyBmb3IgdGhhdCBmaWxlLgorCQlJbiBhZGRpdGlvbiBFR0NTIDEuMS54IGFuZCBHQ0MgMi45NS54IGFyZSByZXBvcnRlZAorCQl0byB3b3JrIGZpbmUuCisJICAgICAgPC9wYXJhPgorCSAgICA8L2xpc3RpdGVtPgorCSAgICA8bGlzdGl0ZW0+CisJICAgICAgPHBhcmE+CisJICAgICAgICBmbGV4ID49IDIuNS4xIChyZXF1aXJlZCBmb3IgdGhlIGRlYnVnZ2VyIGFuZCB3cmMsCisJCWFuZCBsZXggd29uJ3QgZG8pCisJICAgICAgPC9wYXJhPgorCSAgICA8L2xpc3RpdGVtPgorCSAgICA8bGlzdGl0ZW0+CisJICAgICAgPHBhcmE+CisJICAgICAgICBiaXNvbiAoYWxzbyByZXF1aXJlZCBmb3IgZGVidWdnZXIuIERvbid0IGtub3cgd2hldGhlciBCU0QgeWFjYworCQl3b3VsZCB3b3JrLikKKwkgICAgICA8L3BhcmE+CisJICAgIDwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT4KKwkgICAgICA8cGFyYT4KKwkgICAgICAgIFgxMSBsaWJzIGFuZCBpbmNsdWRlIGZpbGVzCisJICAgICAgPC9wYXJhPgorCSAgICA8L2xpc3RpdGVtPgorCSAgICA8bGlzdGl0ZW0+CisJICAgICAgPHBhcmE+CisJICAgICAgICBYcG0gbGlicyBhbmQgaW5jbHVkZSBmaWxlcworCSAgICAgIDwvcGFyYT4KKwkgICAgPC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPgorCSAgICAgIDxwYXJhPgorCSAgICAgICAgdGV4aW5mbyA+PSAzLjExIChvcHRpb25hbCwgdG8gY29tcGlsZSB0aGUgZG9jdW1lbnRhdGlvbi4pCisJICAgICAgPC9wYXJhPgorCSAgICA8L2xpc3RpdGVtPgorCSAgICA8bGlzdGl0ZW0+CisJICAgICAgPHBhcmE+CisJICAgICAgICBhdXRvY29uZiAoaWYgeW91IHdhbnQgdG8gcmVtYWtlIGNvbmZpZ3VyZSwgd2hpY2ggaXMKKwkJbm90IG5vcm1hbGx5IHJlcXVpcmVkKQorCSAgICAgIDwvcGFyYT4KKwkgICAgPC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPgorCSAgICAgIDxwYXJhPgorCSAgICAgICAgWEY4NkRHQSBleHRlbnNpb24gKG9wdGlvbmFsLCBkZXRlY3RlZCBieSBjb25maWd1cmUsCisJCW5lZWRlZCBmb3IgRGlyZWN0WCBzdXBwb3J0KQorCSAgICAgIDwvcGFyYT4KKwkgICAgPC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPgorCSAgICAgIDxwYXJhPgorCSAgICAgICAgT3BlbiBTb3VuZCBTeXN0ZW0gKG9wdGlvbmFsLCBkZXRlY3RlZCBieSBjb25maWd1cmUsCisJCWZvciBzb3VuZCBzdXBwb3J0KQorCSAgICAgIDwvcGFyYT4KKwkgICAgPC9saXN0aXRlbT4KKwkgIDwvaXRlbWl6ZWRsaXN0PgorCTwvcGFyYT4KKwk8cGFyYT4KKwkgIFRoZSBSZWQgSGF0IFJQTXMgYXJlIGdjYy1YWFgsIGZsZXgtWFhYLCBYRnJlZTg2LWRldmVsLVhYWCwgeHBtLVhYWCwKKwkgIGFuZCB4cG0tZGV2ZWwsIHdoZXJlIFhYWCBpcyB0aGUgdmVyc2lvbiBudW1iZXIuCisJPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+U3BhY2UgcmVxdWlyZWQ8L3RpdGxlPgorCTxwYXJhPgorCSAgWW91IGFsc28gbmVlZCBhYm91dCAyMzAgTUIgb2YgYXZhaWxhYmxlIGRpc2sgc3BhY2UgZm9yIGNvbXBpbGF0aW9uLgorCSAgVGhlIGNvbXBpbGVkIGxpYndpbmUuc28gYmluYXJ5IHRha2VzIGFyb3VuZCA1IE1CIG9mIGRpc2sgc3BhY2UsCisJICB3aGljaCBjYW4gYmUgcmVkdWNlZCB0byBhYm91dCAxIE1CIGJ5IHN0cmlwcGluZyAoJ3N0cmlwIHdpbmUnKS4KKwkgIFN0cmlwcGluZyBpcyBub3QgcmVjb21tZW5kZWQsIGhvd2V2ZXIsIGFzIHlvdSBjYW4ndCBzdWJtaXQKKwkgIHByb3BlciBjcmFzaCByZXBvcnRzIHdpdGggYSBzdHJpcHBlZCBiaW5hcnkgYW55IG1vcmUuCisJPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICAgIAorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+Q29tbW9uIHByb2JsZW1zPC90aXRsZT4KKwk8cGFyYT4KKwkgIElmIHlvdSBnZXQgYSByZXBlYXRhYmxlIHNpZzExIGNvbXBpbGluZyBzaGVsbG9yZC5jLCB0aHVuay5jCisJICBvciBvdGhlciBmaWxlcywgdHJ5IGNvbXBpbGluZyBqdXN0IHRoYXQgZmlsZSB3aXRob3V0IG9wdGltaXphdGlvbi4KKwkgIFRoZW4geW91IHNob3VsZCBiZSBhYmxlIHRvIGZpbmlzaCB0aGUgYnVpbGQuCisJPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+T1Mgc3BlY2lmaWMgaXNzdWVzPC90aXRsZT4KKwk8cGFyYT4KKwkgIDxpdGVtaXplZGxpc3Q+CisJICAgIDxsaXN0aXRlbT4KKwkgICAgICA8cGFyYT4KKwkgICAgICAgIEZyZWVCU0QgLS0gSW4gb3JkZXIgdG8gcnVuIFdpbmUsIHRoZSBGcmVlQlNEIGtlcm5lbAorCQluZWVkcyB0byBiZSBjb21waWxlZCB3aXRoCisKKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9ImFsbCI+CisJCSAgPHRncm91cCBjb2xzPSIyIj4KKwkJICAgIDx0Ym9keT4KKwkJICAgICAgPHJvdz4KKwkJICAgICAgICA8ZW50cnk+b3B0aW9uczwvZW50cnk+CisJCSAgICAgICAgPGVudHJ5PlVTRVJfTERUPC9lbnRyeT4KKwkJICAgICAgPC9yb3c+CisJCSAgICAgIDxyb3c+CisJCSAgICAgICAgPGVudHJ5Pm9wdGlvbnM8L2VudHJ5PgorCQkgICAgICAgIDxlbnRyeT5TWVNWU0hNPC9lbnRyeT4KKwkJICAgICAgPC9yb3c+CisJCSAgICAgIDxyb3c+CisJCSAgICAgICAgPGVudHJ5Pm9wdGlvbnM8L2VudHJ5PgorCQkgICAgICAgIDxlbnRyeT5TWVNWU0VNPC9lbnRyeT4KKwkJICAgICAgPC9yb3c+CisJCSAgICAgIDxyb3c+CisJCSAgICAgICAgPGVudHJ5Pm9wdGlvbnM8L2VudHJ5PgorCQkgICAgICAgIDxlbnRyeT5TWVNWTVNHPC9lbnRyeT4KKwkJICAgICAgPC9yb3c+CisJCSAgICA8L3Rib2R5PgorCQkgIDwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisKKworCQlJZiB5b3UgbmVlZCBoZWxwLCByZWFkIHRoZSBjaGFwdGVyICI8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmZyZWVic2Qub3JnL2hhbmRib29rL2tlcm5lbGNvbmZpZy1idWlsZGluZy5odG1sIj5CdWlsZGluZyBhbmQgSW5zdGFsbGluZyBhIEN1c3RvbSBLZXJuZWw8L3VsaW5rPiIgaW4gdGhlICI8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmZyZWVic2Qub3JnL2hhbmRib29rLyI+RnJlZUJTRCBoYW5kYm9vazwvdWxpbms+LiBZb3UnbGwgbmVlZCB0byBiZSBydW5uaW5nIEZyZWVCU0QgMy54IG9yIGxhdGVyLgorCSAgICAgIDwvcGFyYT4KKwkgICAgPC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPgorCSAgICAgIDxwYXJhPgorCSAgICAgICAgU0NPIFVuaXh3YXJlLCBPcGVuc2VydmVyIC0tIFVXIHBvcnQgaXMgc3VwcG9ydGVkIGJ5IFNDTy4KKwkgICAgICA8L3BhcmE+CisJICAgIDwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT4KKwkgICAgICA8cGFyYT4KKwkgICAgICAgIE9TLzIgLS0gbm90IGEgY29tcGxldGUgcG9ydC4gU2VlIDx1bGluayB1cmw9Imh0dHA6Ly9vZGluLm5ldGxhYnMub3JnL1Byb2plY3RBYm91dC5waHRtbCI+T2RpbjwvdWxpbms+IGZvciBhIHByb2plY3Qgd2hpY2ggdXNlcyBzb21lIFdpbmUgY29kZS4KKwkgICAgICA8L3BhcmE+CisJICAgIDwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT4KKwkgICAgICA8cGFyYT4KKwkJU29sYXJpcyB4ODYgMi54IC0tIE5lZWRzIEdOVSB0b29sY2hhaW4gKGdjYywgZ2FzLCBmbGV4IGFzIGFib3ZlLCB5YWNjIG1heSB3b3JrKSB0byBjb21waWxlLCBzZWVtcyBmdW5jdGlvbmFsICg5ODAyMTUpLiAKKwkgICAgICA8L3BhcmE+CisJICAgIDwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT4KKwkgICAgICA8cGFyYT4KKwkJREdVWCwgSFAsIElyaXgsIG9yIG90aGVyIFVuaXhlczsgbm9uLWludGVsIExpbnV4LgorCQlObyBwb3J0cyBoYXZlIGJlZW4gc2VyaW91c2x5IGF0dGVtcHRlZC4KKwkJRm9yIG5vbi1pbnRlbCBVbml4ZXMsIG9ubHkgYSB3aW5lbGliIHBvcnQgaXMgcmVsZXZhbnQuCisJCUFsaWdubWVudCBtYXkgYmUgYSBwcm9ibGVtLgorCSAgICAgIDwvcGFyYT4KKwkgICAgPC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPgorCSAgICAgIDxwYXJhPgorCSAgICAgICAgTWFjaW50b3NoL1JoYXBzb2R5L0JlT1MgLS0gbm8gcG9ydHMgaGF2ZSBiZWVuIGF0dGVtcHRlZC4KKwkgICAgICA8L3BhcmE+CisJICAgIDwvbGlzdGl0ZW0+CisJICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QxPgogICA8L2NoYXB0ZXI+CiAKIDwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogTG9jYWwgdmFyaWFibGVzOgogbW9kZTogc2dtbAotc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCiBFbmQ6CiAtLT4KZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCBiL2RvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbAppbmRleCA5YWJiN2E5Li41NmE0NjhlIDEwMDY0NAotLS0gYS9kb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwKKysrIGIvZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sCkBAIC01LDcgKzUsNyBAQAogICAgIDxzZWN0MSBpZD0iY29uZmlnIj4KICAgICAgIDx0aXRsZT5HZW5lcmFsIENvbmZpZ3VyYXRpb248L3RpdGxlPgogICAgICAgPHBhcmE+Ci0gICAgICAgIENvcHlyaWdodCAxOTk5IEFkYW0gU2FjYXJueSAobWFnaWNib3hAYmVzdHdlYi5uZXQpCisgICAgICAgIENvcHlyaWdodCAxOTk5ICZuYW1lLWFkYW0tc2FjYXJueTsgPGVtYWlsPiZlbWFpbC1hZGFtLXNhY2Fybnk7PC9lbWFpbD4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9jb25maWc8L2ZpbGVuYW1lPikKQEAgLTUxNSw3ICs1MTUsNyBAQAogICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gbG9hZCBidWlsdGluIEtFUk5FTCBwYWlyIChDYXNlIGRvZXNuJ3QKKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBsb2FkIGJ1aWx0aW4gS0VSTkVMIHBhaXIgKGNhc2UgZG9lc24ndAogICAgICAgICAgICAgbWF0dGVyIGhlcmUpOgogICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoga2VybmVsLGtlcm5lbDMyID0gYnVpbHRpbgpAQCAtNjQ5LDcgKzY0OSw3IEBACiAgICAgICAgICAgPHRpdGxlPlRoZSBbc2VyaWFscG9ydHNdLCBbcGFyYWxsZWxwb3J0c10sIFtzcG9vbGVyXSwgYW5kIFtwb3J0c10gU2VjdGlvbnM8L3RpdGxlPgogICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRXZlbiB0aG91Z2ggaXQgc291bmRzIGxpa2UgYSBsb3Qgb2Ygc2VjdGlvbnMsIHRoZXNlIGFyZQotICAgICAgICAgICAgYWxsIGNsb3NlbHkgcmVsYXRlZC4gVGhleSBhbGwgYXJlIGZvciBjb21tdW5pY2F0aW9ucyBhbmQKKyAgICAgICAgICAgIGFsbCBjbG9zZWx5IHJlbGF0ZWQuIFRoZXkgYXJlIGFsbCBmb3IgY29tbXVuaWNhdGlvbnMgYW5kCiAgICAgICAgICAgICBwYXJhbGxlbCBwb3J0cy4gCiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDxwYXJhPgpAQCAtNjc4LDcgKzY3OCw3IEBACiAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+THB0WD0vZGV2L2xwWTwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU2VlbSBmYXJtaWxpYXI/IFN5bnRheCBpcyBqdXN0IGxpa2UgdGhlIENPTSBwb3J0IHNldHRpbmcuCisgICAgICAgICAgICBTb3VuZHMgZmFtaWxpYXI/IFN5bnRheCBpcyBqdXN0IGxpa2UgdGhlIENPTSBwb3J0IHNldHRpbmcuCiAgICAgICAgICAgICBSZXBsYWNlIDxsaXRlcmFsPlg8L2xpdGVyYWw+IHdpdGggYSB2YWx1ZSBmcm9tIDEtNCBhcyBpdAogICAgICAgICAgICAgaXMgaW4gV2luZG93cyBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlIGZyb20KICAgICAgICAgICAgIDAtMyAoPGxpdGVyYWw+WTwvbGl0ZXJhbD4gaXMgdXN1YWxseSB0aGUgdmFsdWUgaW4gd2luZG93cwpAQCAtNzE0LDEwICs3MTQsMTAgQEAKICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+d3JpdGU9MHg3NzksMHgzNzksMHgyODAtMHgyYTA8L3Byb2dyYW1saXN0aW5nPgotICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHdyaXRlIGFjY2VzcyB0byB0aG9zZSBJTydzLiBJdCBwcm9iYWJseSBhCisgICAgICAgICAgICBHaXZlcyBkaXJlY3Qgd3JpdGUgYWNjZXNzIHRvIHRob3NlIElPJ3MuIEl0J3MgcHJvYmFibHkgYQogICAgICAgICAgICAgZ29vZCBpZGVhIHRvIGtlZXAgdGhlIHZhbHVlcyBvZiB0aGUKICAgICAgICAgICAgIDxsaXRlcmFsPnJlYWQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD53cml0ZTwvbGl0ZXJhbD4KLSAgICAgICAgICAgIHNldHRpbmdzIHRoZSBzYW1lLiBUaGlzIHN0dWZmIHdpbGwgb25seSB3b3JrICB3aGVuIHlvdSdyZQorICAgICAgICAgICAgc2V0dGluZ3MgdGhlIHNhbWUuIFRoaXMgc3R1ZmYgd2lsbCBvbmx5IHdvcmsgd2hlbiB5b3UncmUKICAgICAgICAgICAgIHJvb3QuCiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3QzPgpAQCAtNzI1LDcgKzcyNSw3IEBACiAgICAgICAgIDxzZWN0Mz4KICAgICAgICAgICA8dGl0bGU+VGhlIFtzcHldLCBbUmVnaXN0cnldLCBbdHdlYWsubGF5b3V0XSwgYW5kIFtwcm9ncmFtc10gU2VjdGlvbnM8L3RpdGxlPgogICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgW3NweV0gaXMgdXNlZCB0byBJbmNsdWRlIG9yIGV4Y2x1ZGUgZGVidWcgbWVzc2FnZXMsIGFuZCB0bworICAgICAgICAgICAgW3NweV0gaXMgdXNlZCB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgZGVidWcgbWVzc2FnZXMsIGFuZCB0bwogICAgICAgICAgICAgb3V0cHV0IHRoZW0gdG8gYSBmaWxlLiBUaGUgbGF0dGVyIGlzIHJhcmVseSB1c2VkLiBUSEVTRQogICAgICAgICAgICAgQVJFIEFMTCBPUFRJT05BTCBBTkQgWU9VIFBST0JBQkxZIERPTidUIE5FRUQgVE8gQUREIE9SCiAgICAgICAgICAgICBSRU1PVkUgQU5ZVEhJTkcgSU4gVEhJUyBTRUNUSU9OIFRPIFlPVVIgQ09ORklHLgpAQCAtODE2LDIwICs4MTYsMTkgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGhlcmUgaXMgYWx3YXlzIGEgY2hhbmNlIHRoYXQgdGhpbmdzIHdpbGwgZ28gd3JvbmcuIElmIHRoZQogICAgICAgICAgIHVudGhpbmthYmxlIGhhcHBlbnMsICB0cnkgdGhlIG5ld3Nncm91cCwKLSAgICAgICAgICA8c3lzdGVtaXRlbT5jb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3N5c3RlbWl0ZW0+IE1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlCi0gICAgICAgICAgbG9va2VkIG92ZXIgdGhpcyBkb2N1bWVudCB0aG9yb3VnaGx5LCBhbmQgaGF2ZSBhbHNvIHJlYWQ6CisgICAgICAgICAgPHN5c3RlbWl0ZW0+Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC9zeXN0ZW1pdGVtPiwKKwkgIG9yIHRoZSBJUkNuZXQgY2hhbm5lbCA8c3lzdGVtaXRlbT4jV2luZUhRPC9zeXN0ZW1pdGVtPi4KKwkgIE1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIGxvb2tlZCBvdmVyIHRoaXMgZG9jdW1lbnQgdGhvcm91Z2hseSwKKwkgIGFuZCBoYXZlIGFsc28gcmVhZDoKICAgICAgICAgPC9wYXJhPgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgIDxwYXJhPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPjwvcGFyYT4KICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgIDxwYXJhPjxmaWxlbmFtZT5kb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM8L2ZpbGVuYW1lPjwvcGFyYT4KLSAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICA8ZmlsZW5hbWU+aHR0cDovL3d3dy53ZXN0ZmFsZW4uZGUvd2l0Y2gvd2luZS1IT1dUTy50eHQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAoT3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkKQorICAgICAgICAgICAgICA8ZmlsZW5hbWU+aHR0cDovL3d3dy5sYS1zb3JjaWVyZS5kZS93aW5lL2luZGV4Lmh0bWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAob3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkKQogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtODQ0LDcgKzg0Myw3IEBACiAgICAgPHNlY3QxIGlkPSJ3aW45NWxvb2siPgogICAgICAgPHRpdGxlPldpbjk1Lzk4IExvb2s8L3RpdGxlPgogICAgICAgPHBhcmE+Ci0gICAgICAgIGJ5ID8/PworICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWRhdmlkLWN1dGhiZXJ0OyA8ZW1haWw+JmVtYWlsLWRhdmlkLWN1dGhiZXJ0OzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vd2luOTVsb29rPC9maWxlbmFtZT4pCkBAIC04ODcsMTAgKzg4NiwxMCBAQAogICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSB4MTFkcnYgRHJpdmVyPC90aXRsZT4KIAogICAgICAgPHBhcmE+Ci0gICAgICAgIHdyaXR0ZW4gYnkgT3ZlIEvldmVuCisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24veDExZHJ2PC9maWxlbmFtZT4pCisgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVsczwvZmlsZW5hbWU+KQogICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KQEAgLTExMzYsNyArMTEzNSw3IEBACiAgICAgICAgICAgICA8Zmlyc3RuYW1lPlBldHI8L2ZpcnN0bmFtZT4KICAgICAgICAgICAgIDxzdXJuYW1lPlRvbWFzZWs8L3N1cm5hbWU+CiAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgIDxhZGRyZXNzPjxlbWFpbD4mbHQ7dG9tYXNla0BldGYuY3VuaS5jej48L2VtYWlsPjwvYWRkcmVzcz4KKyAgICAgICAgICAgICAgPGFkZHJlc3M+PGVtYWlsPiZlbWFpbC1wZXRyLXRvbWFzZWs7PC9lbWFpbD48L2FkZHJlc3M+CiAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgogICAgICAgICAgICAgPGNvbnRyaWI+Tm92IDE0IDE5OTk8L2NvbnRyaWI+CiAgICAgICAgICAgPC9hdXRob3I+CkBAIC0xMTQ0LDcgKzExNDMsNyBAQAogICAgICAgICAgICAgPGZpcnN0bmFtZT5BbmRyZWFzPC9maXJzdG5hbWU+CiAgICAgICAgICAgICA8c3VybmFtZT5Nb2hyPC9zdXJuYW1lPgogICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICA8YWRkcmVzcz48ZW1haWw+Jmx0O2EubW9ockBtYWlsdG8uZGU+PC9lbWFpbD48L2FkZHJlc3M+CisgICAgICAgICAgICAgIDxhZGRyZXNzPjxlbWFpbD4mZW1haWwtYW5kcmVhcy1tb2hyOzwvZW1haWw+PC9hZGRyZXNzPgogICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgIDxjb250cmliPkphbiAyNSAyMDAwPC9jb250cmliPgogICAgICAgICAgIDwvYXV0aG9yPgpAQCAtMTE1MywxMSArMTE1MiwxMSBAQAogCiAgICAgICA8dGl0bGU+RHJpdmUgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyB3aXRoIHdpbmU8L3RpdGxlPgogICAgICAgPHBhcmE+Ci0gICAgICAgIGJ5IFBldHIgVG9tYXNlayAmbHQ7dG9tYXNla0BldGYuY3VuaS5jej4KKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1wZXRyLXRvbWFzZWs7IDxlbWFpbD4mZW1haWwtcGV0ci10b21hc2VrOzwvZW1haWw+CiAgICAgICAgIE5vdiAxNCAxOTk5CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICAgY2hhbmdlcyBieSBBbmRyZWFzIE1vaHIgJmx0O2EubW9ockBtYWlsdG8uZGU+CisgICAgICAgIENoYW5nZXMgYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgICBKYW4gMjUgMjAwMAogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CkBAIC0xMjIxLDkgKzEyMjAsOSBAQAogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIElmIHlvdSB3YW50IHRvIGdpdmUgYSA8bGl0ZXJhbD5EZXZpY2U9PC9saXRlcmFsPiBlbnRyeQotICAgICAgICAgICpvbmx5KiBmb3IgZHJpdmUgcmF3IHNlY3RvciBhY2Nlc3NlcywgYnV0IG5vdCBmb3IgcmVhZGluZwotICAgICAgICAgIHRoZSB2b2x1bWUgaW5mbyBmcm9tIHRoZSBkZXZpY2UgKGkuZS4geW91IHdhbnQgYQotICAgICAgICAgIDxlbXBoYXNpcz5maXhlZDwvZW1waGFzaXM+LCBwcmVjb25maWd1cmVkIGxhYmVsKSwgeW91IG5lZWQKKyAgICAgICAgICA8ZW1waGFzaXM+b25seTwvZW1waGFzaXM+IGZvciBkcml2ZSByYXcgc2VjdG9yIGFjY2Vzc2VzLAorCSAgYnV0IG5vdCBmb3IgcmVhZGluZyB0aGUgdm9sdW1lIGluZm8gZnJvbSB0aGUgZGV2aWNlIChpLmUuIHlvdSB3YW50CisJICBhIDxlbXBoYXNpcz5maXhlZDwvZW1waGFzaXM+LCBwcmVjb25maWd1cmVkIGxhYmVsKSwgeW91IG5lZWQKICAgICAgICAgICB0byBzcGVjaWZ5IDxsaXRlcmFsPlJlYWRWb2xJbmZvPTA8L2xpdGVyYWw+IHRvIHRlbGwgV2luZSB0bwogICAgICAgICAgIHNraXAgdGhlIHZvbHVtZSByZWFkaW5nLgogICAgICAgICA8L3BhcmE+CkBAIC0xMjkyLDcgKzEyOTEsOSBAQAogICAgIDxzZWN0MSBpZD0iZGxsLW92ZXJyaWRlcyI+CiAgICAgICA8dGl0bGU+RGxsIE92ZXJyaWRlczwvdGl0bGU+CiAKLSAgICAgIDxwYXJhPmJ5IE92ZSBLYWF2ZW4gJmx0O292ZWtAYXJjdGljbmV0Lm5vPjwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLW92ZS1rYWF2ZW47IDxlbWFpbD4mZW1haWwtb3ZlLWthYXZlbjs8L2VtYWlsPgorICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2RsbC1vdmVycmlkZXM8L2ZpbGVuYW1lPikKICAgICAgIDwvcGFyYT4KQEAgLTEzNTAsNyArMTM1MSw3IEBACiAgICAgICAgICAgICAgICAgQSBuYXRpdmUgVW5peCA8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4gZmlsZSwgd2l0aAogICAgICAgICAgICAgICAgIGNhbGxpbmcgY29udmVudGlvbiBjb252ZXJzaW9uIHRodW5rcyBnZW5lcmF0ZWQgb24gdGhlCiAgICAgICAgICAgICAgICAgZmx5IGFzIHRoZSBsaWJyYXJ5IGlzIGxvYWRlZC4gVGhpcyBpcyBtb3N0bHkgdXNlZnVsCi0gICAgICAgICAgICAgICAgZm9yIGxpYnJhcmllcyBzdWNoIGFzICJnbGlkZSIgdGhhdCBoYXMgZXhhY3RseSB0aGUKKyAgICAgICAgICAgICAgICBmb3IgbGlicmFyaWVzIHN1Y2ggYXMgImdsaWRlIiB0aGF0IGhhdmUgZXhhY3RseSB0aGUKICAgICAgICAgICAgICAgICBzYW1lIEFQSSBvbiBib3RoIFdpbmRvd3MgYW5kIFVuaXguCiAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE2OTAsNyArMTY5MSw5IEBACiAgICAgPHNlY3QxIGlkPSJrZXlib2FyZCI+CiAgICAgICA8dGl0bGU+S2V5Ym9hcmQ8L3RpdGxlPgogCi0gICAgICA8cGFyYT5ieSBPdmUgS2FhdmVuICZsdDtvdmVrQGFyY3RpY25ldC5ubz48L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1vdmUta2FhdmVuOyA8ZW1haWw+JmVtYWlsLW92ZS1rYWF2ZW47PC9lbWFpbD4KKyAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9rZXlib2FyZDwvZmlsZW5hbWU+KQogICAgICAgPC9wYXJhPgpAQCAtMTg2OSw2ICsxODcyLDYgQEAKIDwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogTG9jYWwgdmFyaWFibGVzOgogbW9kZTogc2dtbAotc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAiYm9vayIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwgYi9kb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwKaW5kZXggMjdiMTE1Yi4uMDA4MzkxYiAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbApAQCAtNSw3ICs1LDggQEAKICAgICAgIDx0aXRsZT5Db25zb2xlczwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5ICg/Pz8pCisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtam9obi1yaWNoYXJkc29uOyA8ZW1haWw+JmVtYWlsLWpvaG4tcmljaGFyZHNvbjs8L2VtYWlsPgorICAgICAgICBNYWludGFpbmVkIGJ5ICZuYW1lLWpvc2VwaC1wcmFuZXZpY2g7IDxlbWFpbD4mZW1haWwtam9zZXBoLXByYW5ldmljaDs8L2VtYWlsPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbnNvbGU8L2ZpbGVuYW1lPikKQEAgLTE5LDcgKzIwLDcgQEAKICAgICAgICAgICA8cGFyYW1ldGVyPi1TeHhuPC9wYXJhbWV0ZXI+IHN3aXRjaC4gQQogICAgICAgICAgIDxzeXN0ZW1pdGVtPnB0eTwvc3lzdGVtaXRlbT4gaXMgb3BlbmVkIGFuZCB0aGUgbWFzdGVyIGdvZXMKICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPnh0ZXJtPC9maWxlbmFtZT4gc2lkZSBhbmQgdGhlIHNsYXZlIGlzIGhlbGQKLSAgICAgICAgICBieSB0aGUgd2luZSBzaWRlLiAgVGhlIGNvbnNvbGUgaXRzZWxmIGl0IHR1cm5lZCBpbnRvIGEgZmV3CisgICAgICAgICAgYnkgdGhlIHdpbmUgc2lkZS4gIFRoZSBjb25zb2xlIGl0c2VsZiBpcyB0dXJuZWQgaW50byBhIGZldwogICAgICAgICAgIDx0eXBlPkhBTkRMRTMyPC90eXBlPnMgYW5kIGlzIHNldCB0byB0aGUKICAgICAgICAgICA8dmFybmFtZT5TVERfKl9IQU5ETEVTPC92YXJuYW1lPi4KICAgICAgICAgPC9wYXJhPgpAQCAtMzUsNyArMzYsNyBAQAogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIDxlbXBoYXNpcz5bdGhpcyBwYXJhZ3JhcGggaXMgbm93IG91dCBvZiBkYXRlXTwvZW1waGFzaXM+IElmCi0gICAgICAgICAgdGhlIGNvbW1hbmQgbGluZSBjb25zb2xlIGlzIHRvIGJlIGluaGVpcml0ZWQgb3IgYSBwcm9jZXNzCisgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZSBjb25zb2xlIGlzIHRvIGJlIGluaGVyaXRlZCBvciBhIHByb2Nlc3MKICAgICAgICAgICBpbmhlcml0cyBpdHMgcGFyZW50J3MgY29uc29sZSAoLS0gY2FuIHRoYXQgaGFwcGVuPz8/KSwgdGhlCiAgICAgICAgICAgY29uc29sZSBpcyBjcmVhdGVkIGF0IHByb2Nlc3MgaW5pdCB0aW1lIHZpYQogICAgICAgICAgIDxmdW5jdGlvbj5QUk9DRVNTX0luaGVyaXRDb25zb2xlPC9mdW5jdGlvbj4uIFRoZQpAQCAtOTAsNyArOTEsNyBAQAogICAgICAgICAgIHByb2Nlc3NpbmcgaW5wdXQuICBXaW4zMiBoYXMgbGluZS1hdC1hLXRpbWUgcHJvY2Vzc2luZywKICAgICAgICAgICBjaGFyYWN0ZXIgcHJvY2Vzc2luZywgYW5kIGVjaG8uIEknbSBwdXR0aW5nIHRvZ2V0aGVyIGFuCiAgICAgICAgICAgaW50ZXJtZWRpYXRlIGRyaXZlciB0aGF0IHdpbGwgaGFuZGxlIHRoaXMgKGFuZCBob3BlZnVsbHkKLSAgICAgICAgICB3b24ndCBiZSBhbnkgbW9yZSBidWdneSB0aGVuIHRoZSBOVDQgY29uc29sZQorICAgICAgICAgIHdvbid0IGJlIGFueSBtb3JlIGJ1Z2d5IHRoYW4gdGhlIE5UNCBjb25zb2xlCiAgICAgICAgICAgaW1wbGVtZW50YXRpb24pLgogICAgICAgICA8L3BhcmE+CiAgICAgICA8L3NlY3QyPgpAQCAtMjk3LDcgKzI5OCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICBUZWxsIGFueSBkcml2ZXIgdGhhdCBpcyBpbnRlcmVzdGVkIChuY3Vyc2VzKSB3aGljaAogICAgICAgICAgICAgICAgICAgdGVybWNhcCBhbmQvb3IgdGVybWluZm8gdHlwZSB0byB1c2UuIFRoZSBkZWZhdWx0IGlzCi0gICAgICAgICAgICAgICAgICB4dGVybSB3aGljaCBpcyBhcHByb3BpYXRlIGZvciBtb3N0IHVzZXMuCisgICAgICAgICAgICAgICAgICB4dGVybSB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3IgbW9zdCB1c2VzLgogICAgICAgICAgICAgICAgICAgPGNvbW1hbmQ+bnh0ZXJtPC9jb21tYW5kPiBtYXkgZ2l2ZSB5b3UgYmV0dGVyCiAgICAgICAgICAgICAgICAgICBzdXBwb3J0IGlmIHlvdSB1c2UgdGhhdCB0ZXJtaW5hbC4gVGhpcyBjYW4gYWxzbyBiZQogICAgICAgICAgICAgICAgICAgY2hhbmdlZCB0byAibGludXgiIChvciAiY29uc29sZSIgb24gb2xkZXIgc3lzdGVtcykKQEAgLTM4MSw2ICszODIsNiBAQAogPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCiBMb2NhbCB2YXJpYWJsZXM6CiBtb2RlOiBzZ21sCi1zZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sIGIvZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMmEyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwKQEAgLTAsMCArMSwxNzIgQEAKKyAgPGNoYXB0ZXIgaWQ9ImN2cy1yZWdyZXNzaW9uIj4KKyAgICA8dGl0bGU+SG93IHRvIGRvIHJlZ3Jlc3Npb24gdGVzdGluZyB1c2luZyBDdnM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICB3cml0dGVuIGJ5ICg/Pz8pCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vYnVncmVwb3J0czwvZmlsZW5hbWU+KQorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgQSBwcm9ibGVtIHRoYXQgY2FuIGhhcHBlbiBzb21ldGltZXMgaXMgJ2l0IHVzZWQgdG8gd29yaworICAgICAgYmVmb3JlLCBub3cgaXQgZG9lc24ndCBhbnltb3JlLi4uJy4gSGVyZSBpcyBhIHN0ZXAgYnkgc3RlcAorICAgICAgcHJvY2VkdXJlIHRvIHRyeSB0byBwaW5wb2ludCB3aGVuIHRoZSBwcm9ibGVtIG9jY3VyZWQuIFRoaXMgaXMKKyAgICAgIDxlbXBoYXNpcz5OT1Q8L2VtcGhhc2lzPiBmb3IgY2FzdWFsIHVzZXJzLgorICAgIDwvcGFyYT4KKworICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgR2V0IHRoZSAnZnVsbCBjdnMnIGFyY2hpdmUgZnJvbSB3aW5laHEuIFRoaXMgYXJjaGl2ZSBpcworICAgICAgICAgIHRoZSBjdnMgdHJlZSBidXQgd2l0aCB0aGUgdGFncyBjb250cm9sbGluZyB0aGUgdmVyc2lvbmluZworICAgICAgICAgIHN5c3RlbS4gSXQncyBhIGJpZyBmaWxlICg+IDE1IG1lZykgd2l0aCBhIG5hbWUgbGlrZQorICAgICAgICAgIGZ1bGwtY3ZzLSZsdDtsYXN0IHVwZGF0ZSBkYXRlPiAoaXQncyBtb3JlIHRoYW4gMTAwbWIKKyAgICAgICAgICB3aGVuIHVuY29tcHJlc3NlZCwgeW91IGNhbid0IHZlcnkgd2VsbCBkbyB0aGlzIHdpdGgKKyAgICAgICAgICBzbWFsbCwgb2xkIGNvbXB1dGVycyBvciBzbG93IEludGVybmV0IGNvbm5lY3Rpb25zKS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgdW50YXIgaXQgaW50byBhIHJlcG9zaXRvcnkgZGlyZWN0b3J5OgorICAgICAgICAgIDxzY3JlZW4+CisgICAgICAgICAgICBjZCAvaG9tZS9nZXJhcmQKKyAgICAgICAgICAgIHRhciAtenhmZnVsbC1jdnMtMjAwMC0wNS0yMC50YXIuZ3oKKyAgICAgICAgICAgIG12IHdpbmUgcmVwb3NpdG9yeQorICAgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBleHRyYWN0IGEgbmV3IGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4gVGhpcyBkaXJlY3RvcnkgbXVzdAorICAgICAgICAgIG5vdCBiZSBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgcmVwb3NpdG9yeSBlbHNlCisgICAgICAgICAgPGNvbW1hbmQ+Y3ZzPC9jb21tYW5kPiB3aWxsIHRoaW5rIGl0J3MgcGFydCBvZiB0aGUKKyAgICAgICAgICByZXBvc2l0b3J5IGFuZCBkZW55IHlvdSBhbiBleHRyYWN0aW9uIGluIHRoZSByZXBvc2l0b3J5OgorICAgICAgICAgIDxzY3JlZW4+CisgICAgICAgICAgICBjZCAvaG9tZS9nZXJhcmQKKyAgICAgICAgICAgIG12IHdpbmUgd2luZV9jdXJyZW50ICgtPiB0aGlzIHByb3RlY3RzIHlvdXIgY3VycmVudCB3aW5lIHNhbmRib3gsIGlmIGFueSkKKyAgICAgICAgICAgIGV4cG9ydCBDVlNST09UPS9ob21lL2dlcmFyZC9yZXBvc2l0b3J5CisgICAgICAgICAgICBjZCAvaG9tZS9nZXJhcmQKKyAgICAgICAgICAgIGN2cyAtZCAkQ1ZTUk9PVCBjaGVja291dCB3aW5lCisgICAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTm90ZSB0aGF0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGRvIGEgY2hlY2tvdXQgYXQgYSBnaXZlbgorICAgICAgICAgIGRhdGU7IHlvdSBhbHdheXMgZG8gdGhlIGNoZWNrb3V0IGZvciB0aGUgbGFzdCBkYXRlIHdoZXJlCisgICAgICAgICAgdGhlIGZ1bGwtY3ZzLXh4eCBzbmFwc2hvdCB3YXMgZ2VuZXJhdGVkLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICB5b3Ugd2lsbCBoYXZlIG5vdyBpbiB0aGUgPGZpbGVuYW1lPn4vd2luZTwvZmlsZW5hbWU+CisgICAgICAgICAgZGlyZWN0b3J5IGFuIGltYWdlIG9mIHRoZSBjdnMgdHJlZSwgb24gdGhlIGNsaWVudCBzaWRlLgorICAgICAgICAgIE5vdyB1cGRhdGUgdGhpcyBpbWFnZSB0byB0aGUgZGF0ZSB5b3Ugd2FudDoKKyAgICAgICAgICA8c2NyZWVuPgorICAgICAgICAgICAgY2QgL2hvbWUvZ2VyYXJkL3dpbmUKKyAgICAgICAgICAgIGN2cyAtZCAkQ1ZTUk9PVCB1cGRhdGUgLUQgIjE5OTktMDYtMDEiICAgCisgICAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGRhdGUgZm9ybWF0IGlzIDxsaXRlcmFsPllZWVktTU0tREQ8L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE1hbnkgbWVzc2FnZXMgd2lsbCBpbmZvcm0geW91IHRoYXQgbW9yZSByZWNlbnQgZmlsZXMgaGF2ZQorICAgICAgICAgIGJlZW4gZGVsZXRlZCB0byBzZXQgYmFjayB0aGUgY2xpZW50IGN2cyB0cmVlIHRvIHRoZSBkYXRlCisgICAgICAgICAgeW91IGFza2VkLCBmb3IgZXhhbXBsZToKKyAgICAgICAgICA8c2NyZWVuPgorICAgICAgICAgICAgY3ZzIHVwZGF0ZTogdHN4MTEvdHNfeGY4NmRnYTIuYyBpcyBubyBsb25nZXIgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8Y29tbWFuZD5jdnMgdXBkYXRlPC9jb21tYW5kPiBpcyBub3QgbGltaXRlZCB0byB1cGdyYWRlIHRvCisgICAgICAgICAgYSA8ZW1waGFzaXM+bmV3ZXI8L2VtcGhhc2lzPiB2ZXJzaW9uIGFzIEkgaGF2ZSBiZWxpZXZlZCBmb3IgZmFyIHRvbyBsb25nIDotKAorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBOb3cgcHJvY2VlZCBhcyBmb3IgYSBub3JtYWwgdXBkYXRlOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CisgICAgICAgICAgLi9jb25maWd1cmUKKyAgICAgICAgICBtYWtlIGRlcGVuZCAmJiBtYWtlCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaGVuIHlvdSBoYXZlIGZvdW5kIHRoZSBleGFjdCBkYXRlIHdoZW4gYSBidWcgd2FzIGFkZGVkIHRvCisgICAgICAgICAgdGhlIGN2cyB0cmVlLCB1c2Ugc29tZXRoaW5nIGxpa2UgOgorICAgICAgICAgIDxzY3JlZW4+CisgICAgICAgICAgICBjdnMgLWQgJENWU1JPT1QgZGlmZiAtRCAiMTk5OS0wNy0xMCIgLUQgIjE5OTktMDctMTIiCisgICAgICAgICAgPC9zY3JlZW4+CisgICAgICAgICAgdG8gZ2V0IGFsbCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgbGFzdCBjdnMgdHJlZQorICAgICAgICAgIHZlcnNpb24ga25vd24gdG8gd29yayBhbmQgY29kZSB0aGF0IGZpcnN0IGRpc3BsYXllZCB0aGUKKyAgICAgICAgICBtaXNiZWhhdmlvci4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEkgZGlkIG5vdCBpbmNsdWRlIGZsYWdzIGZvciA8Y29tbWFuZD5kaWZmPC9jb21tYW5kPgorICAgICAgICAgICAgc2luY2UgdGhleSBhcmUgaW4gbXkgPGZpbGVuYW1lPi5jdnNyYzwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxzY3JlZW4+CisgICAgICAgICAgICBjdnMgLXogMworICAgICAgICAgICAgdXBkYXRlIC1kUEEKKyAgICAgICAgICAgIGRpZmYgLXUKKyAgICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBGcm9tIHRoaXMgZGlmZiBmaWxlLCBwYXJ0aWN1bGFybHkgdGhlIGZpbGUgbmFtZXMsIGFuZCB0aGUKKyAgICAgICAgICA8ZmlsZW5hbWU+Q2hhbmdlTG9nPC9maWxlbmFtZT4sIGl0J3MgdXN1YWxseSBwb3NzaWJsZSB0bworICAgICAgICAgIGZpbmQgdGhlIGRpZmZlcmVudCBpbmRpdmlkdWFsIHBhdGNoZXMgdGhhdCB3ZXJlIGRvbmUgYXQKKyAgICAgICAgICB0aGlzIHRpbWUuIAorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIGFueSBub24tcHJvZ3JhbW1lciByZWFkcyB0aGlzLCB0aGUgZmFzdGVzdCBtZXRob2QgdG8gZ2V0CisgICAgICAgICAgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBwcm9ibGVtIG9jY3VyZWQgaXMgdG8gdXNlIGEgYmluYXJ5CisgICAgICAgICAgc2VhcmNoLCB0aGF0IGlzLCBpZiB0aGUgcHJvYmxlbSBvY2N1cmVkIGluIDE5OTksIHN0YXJ0IGF0CisgICAgICAgICAgbWlkLXllYXIsIHRoZW4gaXMgdGhlIHByb2JsZW0gaXMgYWxyZWFkeSBoZXJlLCBiYWNrIHRvIDFzdAorICAgICAgICAgIEFwcmlsLCBpZiBub3QsIHRvIDFzdCBPY3RvYmVyLCBhbmQgc28gb24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgaXMgdG8gc3RhcnQgZnJvbSB0aGUgbGFzdCB3b3JraW5nIHZlcnNpb24KKyAgICAgICAgICBhbmQgdG8gZGlnIHRoZSBpbmRpdmlkdWFsIGNvbnRyaWJ1dGlvbnMgZnJvbQorICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaW50ZWdyaXRhLmNvbS9jZ2ktbG9jYWwvbHdnYXRlLnBsL1dJTkUtUEFUQ0hFUy8iPgorICAgICAgICAgICAgaHR0cDovL3d3dy5pbnRlZ3JpdGEuY29tL2NnaS1sb2NhbC9sd2dhdGUucGwvV0lORS1QQVRDSEVTLzwvdWxpbms+CisgICAgICAgICAgKHdoZXJlIHRoZSBXaW5lIHBhdGNoZXMgbWFpbGluZyBsaXN0IGlzIGFyY2hpdmVkKQorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHRoZSBwYXRjaCB3YXMgZG9uZSBieSB0aGUgV2luZSBtYWludGFpbmVyIG9yIGlmIGl0IHdhcworICAgICAgICAgIHNlbnQgZGlyZWN0bHkgdG8gaGlzIG1haWwgYWRkcmVzcyB3aXRob3V0IGdvaW5nIGZpcnN0IHRocm91Z2ggCisgICAgICAgICAgPHVsaW5rIHVybD0ibWFpbHRvOndpbmUtcGF0Y2hlc0B3aW5laHEuY29tIj53aW5lLXBhdGNoZXM8L3VsaW5rPiwKKyAgICAgICAgICB5b3UgYXJlIG91dCBvZiBsdWNrIGFzIHlvdSB3aWxsIG5ldmVyIGZpbmQgdGhlIHBhdGNoIGluCisgICAgICAgICAgdGhlIGFyY2hpdmUuIElmIGl0IGlzLCBpdCdzIG9mdGVuIHBvc3NpYmxlIHRvIGFwcGx5IHRoZQorICAgICAgICAgIHBhdGNoZXMgb25lIGJ5IG9uZSB0byBsYXN0IHdvcmtpbmcgY3ZzIHNuYXBzaG90LCBjb21waWxlIGFuZCB0ZXN0LgorICAgICAgICAgIElmIHlvdSBoYXZlIHNhdmVkIHRoZSBuZXh0IGNhbmRpZGF0ZSBhcworICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9nZXJhcmQvYnVnZ2VkcGF0Y2gxLnR4dDwvZmlsZW5hbWU+OgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CisgICAgICAgICAgY2QgL2hvbWUvZ2VyYXJkL3dpbmUKKyAgICAgICAgICBwYXRjaCAtcCAwICZsdDsgL2hvbWUvZ2VyYXJkL2J1Z2dlZHBhdGNoMS50eHQKKyAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEJld2FyZSB0aGF0IHRoZSBjb21taXR0ZWQgcGF0Y2ggaXMgbm90IGFsd2F5cyBpZGVudGljYWwgdG8KKyAgICAgICAgICB0aGUgcGF0Y2ggdGhhdCB0aGUgYXV0aG9yIHNlbnQgdG8gd2luZS1wYXRjaGVzLCBhcworICAgICAgICAgIHNvbWV0aW1lcyB0aGUgV2luZSBtYWludGFpbmVyIGNoYW5nZXMgdGhpbmdzIGEgYml0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHlvdSBmaW5kIG9uZSBwYXRjaCB0aGF0IGlzIGdldHRpbmcgdGhlIGN2cyBzb3VyY2UgdHJlZSB0bworICAgICAgICAgIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSwgeW91IGhhdmUgYWxtb3N0IHdvbjsgcG9zdCB0aGUgcHJvYmxlbSBvbgorICAgICAgICAgIDxzeXN0ZW1pdGVtPmNvbXAuZW11bGF0b3JzLndpbmRvd3Mud2luZTwvc3lzdGVtaXRlbT4gYW5kIHRoZXJlCisgICAgICAgICAgaXMgYSBjaGFuY2UgdGhhdCB0aGUgYXV0aG9yIHdpbGwganVtcCBpbiB0byBzdWdnZXN0IGEgZml4OyBvcgorICAgICAgICAgIHRoZXJlIGlzIGFsd2F5cyB0aGUgcG9zc2liaWxpdHkgdG8gbG9vayBoYXJkIGF0IHRoZSBwYXRjaCB1bnRpbAorICAgICAgICAgIGl0IGlzIGNvZXJjZWQgdG8gcmV2ZWFsIHdoZXJlIGlzIHRoZSBidWcgOi0pIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvb3JkZXJlZGxpc3Q+CisgIDwvY2hhcHRlcj4KKworICA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKKyAgTG9jYWwgdmFyaWFibGVzOgorICBtb2RlOiBzZ21sCisgIHNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCisgIEVuZDoKKyAgLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxIGIvZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZGI4ZmIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocQpAQCAtMCwwICsxLDg4IEBACisjISAvYmluL3NoCisKKyMjIEN1c3RvbWl6ZWQgdmVyc2lvbiBvZiBkYjJodG1sIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSBhbHRlcm5hdGUKKyMjIHN0eWxlc2hlZXRzLiAgU29tZSB2ZXJzaW9ucyBvZiBkYjJodG1sIHN1cHBvcnQgYSAnLWQnIG9wdGlvbiB0bworIyMgc3BlY2lmeSB0aGlzLCBidXQgbm90IGFsbC4gIFdlJ2xsIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGF0IGhlcmUuCisjIworIyMgSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgorCisjIyBPdGhlciBwb3NzaWJsZSBTR01MIHN0eWxlc2hlZXRzIChkZWZhdWx0IERlYmlhbiB2ZXJzaW9ucy4uLm1heSBiZSAKKyMjIGRpZmZlcmVudCBvbiBvdGhlciBkaXN0cmlidXRpb25zKS4KKyNEQl9TVFlMRVNIRUVUPS91c3IvbGliL3NnbWwvc3R5bGVzaGVldC9kc3NzbC9kb2Nib29rL2N5Z251cy9jeWdudXMtYm90aC5kc2wKKyNEQl9TVFlMRVNIRUVUPS91c3IvbGliL3NnbWwvc3R5bGVzaGVldC9kc3NzbC9kb2Nib29rL253YWxzaC9odG1sL2RvY2Jvb2suZHNsCisKKyMjIFVzZSBpbmNsdWRlZCBkZWZhdWx0LmRzbCBEU1NTTCBzdHlsZXNoZWV0IHVubGVzcyBleHBsaWNpdGx5IG92ZXJyaWRkZW4gd2l0aAorIyMgdGhlICRXSU5FRE9DX1NUWUxFU0hFRVQgZW52YXIuCisjIworIyMgTk9URTogVGhlIGludm9rZWQgRFNTU0wgc3R5bGVzaGVldCAqTVVTVCogaGF2ZSBhbiBIVE1MLXNwZWNpZmljIHNlY3Rpb24KKyMjIGluIGl0OyBvdGhlcndpc2UsIGphZGUgd2lsbCBzcGV3IGV2ZXJ5dGhpbmcgdG8gc3Rkb3V0IGFuZCBmYWlsIHRvIHVzZQorIyMgdGhlIHN0YXRlZCBzdHlsZXNoZWV0LiAgU29tZXRoaW5nIGxpa2UgdGhpczoKKyMjCisjIyAgIDxzdHlsZS1zcGVjaWZpY2F0aW9uIGlkPSJodG1sIiB1c2U9ImRvY2Jvb2siPgoraWYgWyAteiAiJFdJTkVET0NfU1RZTEVTSEVFVCIgXTsgdGhlbgorICBEQl9TVFlMRVNIRUVUPS4uL2RlZmF1bHQuZHNsCitlbHNlCisgIERCX1NUWUxFU0hFRVQ9JFdJTkVET0NfU1RZTEVTSEVFVAorZmkKKworb3V0cHV0PWRiMmh0bWwtZGlyCitUTVBESVI9REJUT0hUTUxfT1VUUFVUX0RJUiQkCisKK2VjaG8gVE1QRElSIGlzICRUTVBESVIKKworZWNobyAiVXNpbmcgc3R5bGVzaGVldDogXCIke0RCX1NUWUxFU0hFRVR9XCIiCisKK2lmIFsgJCMgLWd0IDIgXQordGhlbgorICBlY2hvICJVc2FnZTogYGJhc2VuYW1lICQwYCBbZmlsZW5hbWUuc2dtbF0iID4mMgorICBleGl0IDEKK2ZpCisKK2lmIFsgJCMgLWVxIDEgXQordGhlbgorICBpZiBbICEgLXIgJDEgXQorICB0aGVuCisgICAgZWNobyBDYW5ub3QgcmVhZCBcIiQxXCIuICBFeGl0aW5nLiA+JjIKKyAgICBleGl0IDEKKyAgZmkKKyAgaWYgZWNobyAkMSB8IGVncmVwIC1pICdcLnNnbWwkfFwuc2dtJCcgPi9kZXYvbnVsbCAyPiYxCisgIHRoZW4KKyAgICAjIG5vdyBtYWtlIHN1cmUgdGhhdCB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpcyBhbHdheXMgYSBzdWJkaXJlY3RvcnkKKyAgICAjIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorICAgIGVjaG8KKyAgICBpbnB1dF9maWxlPWBiYXNlbmFtZSAkMWAKKyAgICBvdXRwdXQ9ImBlY2hvICRpbnB1dF9maWxlIHwgc2VkICdzLFwuc2dtbCQsLDtzLFwuc2dtJCwsJ2AiCisgICAgZWNobyAiaW5wdXQgZmlsZSB3YXMgY2FsbGVkICRpbnB1dF9maWxlIC0tIG91dHB1dCB3aWxsIGJlIGluICRvdXRwdXQiCisgICAgZWNobworICBmaQorZmkKKworbWtkaXIgJFRNUERJUgorU0FWRV9QV0Q9YHB3ZGAKK2lmIFsgJDEgPSBgYmFzZW5hbWUgJDFgIF07IHRoZW4KKyAgZWNobyAid29ya2luZyBvbiAuLi8kMSIKKyAgKGNkICRUTVBESVI7IGphZGUgLXQgc2dtbCAtaWh0bWwgLWQgJHtEQl9TVFlMRVNIRUVUfVwjaHRtbCAuLi8kMTsgY2QgJFNBVkVfUFdEKQorZWxzZQorICBlY2hvICJ3b3JraW5nIG9uICQxIgorICAoY2QgJFRNUERJUjsgamFkZSAtdCBzZ21sIC1paHRtbCAtZCAke0RCX1NUWUxFU0hFRVR9XCNodG1sICQxOyBjZCAkU0FWRV9QV0QpCitmaQorCitpZiBbICQjIC1lcSAxIF0KK3RoZW4KKyAgaWYgWyAtZCAke291dHB1dH0uanVuayBdCisgIHRoZW4KKyAgICAvYmluL3JtIC1yZiAke291dHB1dH0uanVuaworICBmaQorICBpZiBbIC1kICR7b3V0cHV0fSBdCisgIHRoZW4KKyAgICBtdiAkb3V0cHV0ICR7b3V0cHV0fS5qdW5rCisgIGZpCisgIGVjaG8gImFib3V0IHRvIHJlbmFtZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvICRvdXRwdXQiCisgIG12ICR7VE1QRElSfSAkb3V0cHV0CitlbHNlCisgIGNhdCAkVE1QRElSLyoKK2ZpCisKK3JtIC1yZiAkVE1QRElSCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sIGIvZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sCmluZGV4IGYzNmI3YTEuLmI3OWE3NzEgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwKQEAgLTEsMTggKzEsMTkgQEAKICAgPGNoYXB0ZXIgaWQ9ImRlYnVnZ2VyIj4KLSAgICA8dGl0bGU+VGhlIFdpbmUgRGVidWdnZXI8L3RpdGxlPgorICAgIDx0aXRsZT5EZWJ1Z2dpbmcgV2luZTwvdGl0bGU+CiAKICAgICA8c2VjdDEgaWQ9ImRiZy1pbnRybyI+Ci0gICAgICA8dGl0bGU+SSBJbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5IEVyaWMgUG91ZWNoIChMYXN0IHVwZGF0ZWQ6IDgvMTUvMjAwMCkKKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1lcmljLXBvdWVjaDsgPGVtYWlsPiZlbWFpbC1lcmljLXBvdWVjaDs8L2VtYWlsPgorCShMYXN0IHVwZGF0ZWQ6IDYvMTQvMjAwMCkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi93aW5lZGJnPC9maWxlbmFtZT4pCiAgICAgICA8L3BhcmE+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPkkuMSBQcm9jZXNzZXMgYW5kIHRocmVhZHM6IGluIHVuZGVybHlpbmcgT1MgYW5kIGluIFdpbmRvd3M8L3RpdGxlPgorICAgICAgICA8dGl0bGU+UHJvY2Vzc2VzIGFuZCB0aHJlYWRzOiBpbiB1bmRlcmx5aW5nIE9TIGFuZCBpbiBXaW5kb3dzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBCZWZvcmUgZ29pbmcgaW50byB0aGUgZGVwdGhzIG9mIGRlYnVnZ2luZyBpbiBXaW5lLCBoZXJlJ3MKQEAgLTgwLDcgKzgxLDcgQEAKICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPkkuMiBXaW5lLCBkZWJ1Z2dpbmcgYW5kIFdpbmVEYmc8L3RpdGxlPgorICAgICAgICA8dGl0bGU+V2luZSwgZGVidWdnaW5nIGFuZCBXaW5lRGJnPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBXaGVuIHRhbGtpbmcgb2YgZGVidWdnaW5nIGluIFdpbmUsIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28KQEAgLTk2LDM1ICs5NywzMCBAQAogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8cGFyYT4KLSAgICAgICAgICBXaW5lIGltcGxlbWVudHMgbW9zdCB0aGUgdGhlIFdpbmRvd3MnIGRlYnVnZ2luZyBBUEkgKHRoZQorICAgICAgICAgIFdpbmUgaW1wbGVtZW50cyBtb3N0IG9mIHRoZSBXaW5kb3dzJyBkZWJ1Z2dpbmcgQVBJICh0aGUKICAgICAgICAgICBwYXJ0IGluIEtFUk5FTDMyLCBub3QgdGhlIG9uZSBpbgogICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRUhMUC5ETEw8L2ZpbGVuYW1lPiksIGFuZCBhbGxvd3MgYW55IHByb2dyYW0KLSAgICAgICAgICAoZW11bGF0ZWQgb3IgV2luZUxpYikgdXNpbmcgdGhhdCBBUEkgdG8gZGVidWcgYQorICAgICAgICAgIChlbXVsYXRlZCBvciBXaW5lbGliKSB1c2luZyB0aGF0IEFQSSB0byBkZWJ1ZyBhCiAgICAgICAgICAgPHZhcm5hbWU+Vy1wcm9jZXNzPC92YXJuYW1lPi4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8cGFyYT4KLSAgICAgICAgICA8Y29tbWFuZD5XaW5lRGJnPC9jb21tYW5kPiBpcyBhIFdpbmVMaWIgYXBwbGljYXRpb24gbWFraW5nCi0gICAgICAgICAgdXNlIG9mIHRoaXMgQVBJIHRvIGFsbG93IGRlYnVnZ2luZyBib3RoIGFueSBXaW5lIG9yIFdpbmVMaWIKKyAgICAgICAgICA8Y29tbWFuZD5XaW5lRGJnPC9jb21tYW5kPiBpcyBhIFdpbmVsaWIgYXBwbGljYXRpb24gbWFraW5nCisgICAgICAgICAgdXNlIG9mIHRoaXMgQVBJIHRvIGFsbG93IGRlYnVnZ2luZyBib3RoIGFueSBXaW5lIG9yIFdpbmVsaWIKICAgICAgICAgICBhcHBsaWNhdGlvbnMgYXMgd2VsbCBhcyBXaW5lIGl0c2VsZiAoa2VybmVsIGFuZCBhbGwgRExMcykuCiAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgPGNvbW1hbmQ+V2luZURiZzwvY29tbWFuZD4gdW5kZXJzdGFuZHMgc3ltYm9saWMgaW5mb3JtYXRpb24gCi0gICAgICAgICAgZnJvbSBib3RoIFVuaXggd29ybGQgKG1haW5seSBFTEYgc3RhYnMpIGFuZCBmcm9tIFdpbmRvd3MgCi0gICAgICAgICAgKG1vc3QgTWljcm9zb2Z0IGRlYnVnZ2luZyBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQgLSBDb2RlVmlldywgCi0gICAgICAgICAgLkRCRyBmaWxlcy4uLikKLSAgICAgICAgPC9wYXJhPgogICAgICAgPC9zZWN0Mj4KICAgICA8L3NlY3QxPgogCisKICAgICA8c2VjdDEgaWQ9ImRiZy1tb2RlcyI+Ci0gICAgICA8dGl0bGU+SUkgV2luZURiZydzIG1vZGVzIG9mIGludm9jYXRpb248L3RpdGxlPgorICAgICAgPHRpdGxlPldpbmVEYmcncyBtb2RlcyBvZiBpbnZvY2F0aW9uPC90aXRsZT4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SUkuMSBTdGFydGluZyBhIHByb2Nlc3M8L3RpdGxlPgorICAgICAgICA8dGl0bGU+U3RhcnRpbmcgYSBwcm9jZXNzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBBbnkgYXBwbGljYXRpb24gKGVpdGhlciBhIFdpbmRvd3MnIG5hdGl2ZSBleGVjdXRhYmxlLCBvciBhCi0gICAgICAgICAgV2luZUxpYiBhcHBsaWNhdGlvbikgY2FuIGJlIHJ1biB0aHJvdWdoCisgICAgICAgICAgV2luZWxpYiBhcHBsaWNhdGlvbikgY2FuIGJlIHJ1biB0aHJvdWdoCiAgICAgICAgICAgPGNvbW1hbmQ+V2luZURiZzwvY29tbWFuZD4uIENvbW1hbmQgbGluZSBvcHRpb25zIGFuZCB0cmlja3MKICAgICAgICAgICBhcmUgdGhlIHNhbWUgYXMgZm9yIHdpbmU6CiAgICAgICAgIDwvcGFyYT4KQEAgLTEzNSw3ICsxMzEsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SUkuMiBBdHRhY2hpbmc8L3RpdGxlPgorICAgICAgICA8dGl0bGU+QXR0YWNoaW5nPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICA8Y29tbWFuZD5XaW5lRGJnPC9jb21tYW5kPiBjYW4gYWxzbyBiZSBsYXVuY2hlZCB3aXRob3V0IGFueQpAQCAtMTU2LDggKzE1Miw4IEBACiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgPC9zZWN0Mj4KIAotICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SUkuMyBPbiBleGNlcHRpb248L3RpdGxlPgorICAgICAgPHNlY3QyIGlkPSJkYmctb24tZXhjZXB0aW9uIj4KKyAgICAgICAgPHRpdGxlIGlkPSJkYmctZXhjZXB0aW9uLXRpdGxlIj5PbiBleGNlcHRpb248L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcsIFdpbmRvd3MgdHJhY2tzIHRoaXMgYXMgYW4KQEAgLTIzNyw3ICsyMzMsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SUkuNCBRdWl0dGluZzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5RdWl0dGluZzwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVW5mb3J0dW5hdGVseSwgV2luZG93cyBkb2Vzbid0IHByb3ZpZGUgYSBkZXRhY2gga2luZCBvZiBBUEksCkBAIC0yNTAsMTYgKzI0Niw3MDMgQEAKICAgICAgIDwvc2VjdDI+CiAgICAgPC9zZWN0MT4KIAotICAgIDxzZWN0MSBpZD0iZGJnLWNvbmZpZyI+Ci0gICAgICA8dGl0bGU+SUlJIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgPHNlY3QxIGlkPSJ3aW5lLWRlYnVnZ2VyIj4KKyAgICAgIDx0aXRsZT5Vc2luZyB0aGUgV2luZSBEZWJ1Z2dlcjwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLW1hcmN1cy1tZWlzc25lcjsgPGVtYWlsPiZlbWFpbC1tYXJjdXMtbWVpc3NuZXI7PC9lbWFpbD4sCisgICAgICAgIGFkZGl0aW9ucyB3ZWxjb21lLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2RlYnVnZ2luZzwvZmlsZW5hbWU+KQorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBmaWxlIGRlc2NyaWJlcyB3aGVyZSB0byBzdGFydCBkZWJ1Z2dpbmcgV2luZS4gSWYgYXQgYW55CisgICAgICAgIHBvaW50IHlvdSBnZXQgc3R1Y2sgYW5kIHdhbnQgdG8gYXNrIGZvciBoZWxwLCBwbGVhc2UgcmVhZCB0aGUKKyAgICAgICAgZmlsZSA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzPC9maWxlbmFtZT4gZm9yCisgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byB3cml0ZSB1c2VmdWwgYnVnIHJlcG9ydHMuCisgICAgICA8L3BhcmE+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklJSS4xIFJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb248L3RpdGxlPgorICAgICAgICA8dGl0bGU+Q3Jhc2hlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlc2UgdXN1YWxseSBzaG93IHVwIGxpa2UgdGhpczoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2NyZWVuPgorfFVuZXhwZWN0ZWQgV2luZG93cyBwcm9ncmFtIHNlZ2ZhdWx0IC0gb3Bjb2RlID0gOGIKK3xTZWdtZW50YXRpb24gZmF1bHQgaW4gV2luZG93cyBwcm9ncmFtIDFiNzpjNDEuCit8TG9hZGluZyBzeW1ib2xzIGZyb20gRUxGIGZpbGUgL3Jvb3Qvd2luZS93aW5lLi4uCit8Li4uLm1vcmUgTG9hZGluZyBzeW1ib2xzIGZyb20gLi4uCit8SW4gMTYgYml0IG1vZGUuCit8UmVnaXN0ZXIgZHVtcDoKK3wgQ1M6MDFiNyBTUzowMTZmIERTOjAyODcgRVM6MDAwMAorfCBJUDowYzQxIFNQOjg3OGEgQlA6ODc5NiBGTEFHUzowMjQ2Cit8IEFYOjgxMWUgQlg6MDAwMCBDWDowMDAwIERYOjAwMDAgU0k6MDAwMSBESTpmZmZmCit8U3RhY2sgZHVtcDoKK3wweDAxNmY6MHg4NzhhOiAgMDAwMSAwMTZmIGZmZWQgMDAwMCAwMDAwIDAyODcgODkwYiAxZTViCit8MHgwMTZmOjB4ODc5YTogIDAxYjcgMDAwMSAwMDBkIDEwNTAgMDhiNyAwMTZmIDAwMDEgMDAwZAorfDB4MDE2ZjoweDg3YWE6ICAwMDBhIDAwMDMgMDAwNCAwMDAwIDAwMDcgMDAwNyAwMTkwIDAwMDAKK3wweDAxNmY6MHg4N2JhOgorfAorfDAwNTA6IHNlbD0wMjg3IGJhc2U9NDAyMTFkMzAgbGltaXQ9MGI5M2YgKGJ5dGVzKSAxNi1iaXQgcnctCit8QmFja3RyYWNlOgorfDAgMHgwMWI3OjB4MGM0MSAoUFhTUlZfRk9OR0VURkFDRU5BTUUrMHg3YykKK3wxIDB4MDFiNzoweDFlNWIgKFBYU1JWX0ZPTlBVVENBVEZPTlQrMHgyY2QpCit8MiAweDAxYTc6MHgwNWFhCit8MyAweDAxYjc6MHgwNzY4IChQWFNSVl9GT05JTklURk9OVFMrMHg4MSkKK3w0IDB4MDE0ZjoweDAzZWQgKFBET1hXSU5fQFNRTENVUkNCJFE2Q0JUWVBFVUxOOENCU0NUWVBFKzB4MWIxKQorfDUgMHgwMTNmOjB4MDBhYworfAorfDB4MDFiNzoweDBjNDEgKFBYU1JWX0ZPTkdFVEZBQ0VOQU1FKzB4N2MpOiAgbW92dyAgICAgICAgJWVzOjB4MzgoJWJ4KSwlZHgKKyAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFN0ZXBzIHRvIGRlYnVnIGEgY3Jhc2guIFlvdSBtYXkgc3RvcCBhdCBhbnkgc3RlcCwgYnV0IHBsZWFzZQorICAgICAgICAgIHJlcG9ydCB0aGUgYnVnIGFuZCBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIGluZm9ybWF0aW9uCisgICAgICAgICAgZ2F0aGVyZWQgdG8gdGhlIG5ld3Nncm91cCBvciB0aGUgcmVsZXZhbnQgZGV2ZWxvcGVyIGFzCisgICAgICAgICAgZmVhc2libGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEdldCB0aGUgcmVhc29uIGZvciB0aGUgY3Jhc2guIFRoaXMgaXMgdXN1YWxseSBhbiBhY2Nlc3MgdG8KKyAgICAgICAgICAgICAgYW4gaW52YWxpZCBzZWxlY3RvciwgYW4gYWNjZXNzIHRvIGFuIG91dCBvZiByYW5nZSBhZGRyZXNzCisgICAgICAgICAgICAgIGluIGEgdmFsaWQgc2VsZWN0b3IsIHBvcHBpbmcgYSBzZWdtZW50cmVnaXN0ZXIgZnJvbSB0aGUKKyAgICAgICAgICAgICAgc3RhY2sgb3IgdGhlIGxpa2UuIFdoZW4gcmVwb3J0aW5nIGEgY3Jhc2gsIHJlcG9ydCB0aGlzCisgICAgICAgICAgICAgIDxlbXBoYXNpcz53aG9sZTwvZW1waGFzaXM+IGNyYXNoZHVtcCBldmVuIGlmIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAgbWFrZSBzZW5zZSB0byB5b3UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgKEluIHRoaXMgY2FzZSBpdCBpcyBhY2Nlc3MgdG8gYW4gaW52YWxpZCBzZWxlY3RvciwgZm9yCisgICAgICAgICAgICAgIDxzeXN0ZW1pdGVtPiVlczwvc3lzdGVtaXRlbT4gaXMgPGxpdGVyYWw+MDAwMDwvbGl0ZXJhbD4sIGFzCisgICAgICAgICAgICAgIHNlZW4gaW4gdGhlIHJlZ2lzdGVyIGR1bXApLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIERldGVybWluZSB0aGUgY2F1c2Ugb2YgdGhlIGNyYXNoLiBTaW5jZSB0aGlzIGlzIHVzdWFsbHkKKyAgICAgICAgICAgICAgYSBwcmltYXJ5L3NlY29uZGFyeSByZWFjdGlvbiB0byBhIGZhaWxlZCBvciBtaXNiZWhhdmluZworICAgICAgICAgICAgICBXaW5lIGZ1bmN0aW9uLCByZXJ1biBXaW5lIHdpdGggPHBhcmFtZXRlcj4tZGVidWdtc2cKKyAgICAgICAgICAgICAgICArcmVsYXk8L3BhcmFtZXRlcj4gYWRkZWQgdG8gdGhlIGNvbW1hbmRsaW5lLiBUaGlzIHdpbGwKKyAgICAgICAgICAgICAgZ2VuZXJhdGUgcXVpdGUgYSBsb3Qgb2Ygb3V0cHV0LCBidXQgdXN1YWxseSB0aGUgcmVhc29uIGlzCisgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIGxhc3QgY2FsbChzKS4gIFRob3NlIGxpbmVzIHVzdWFsbHkgbG9vayBsaWtlCisgICAgICAgICAgICAgIHRoaXM6CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8c2NyZWVuPgorfENhbGwgS0VSTkVMLjkwOiBMU1RSTEVOKDAyMjc6MDY5MiAidGV4dCIpIHJldD0wMWU3OjJjZTcgZHM9MDIyNworICAgICAgXl5eXl5eXl5eICBeICAgICAgIF5eXl5eXl5eXiBeXl5eXl4gICAgICBeXl5eXl5eXl4gICAgXl5eXgorICAgICAgfCAgICAgICAgICB8ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgfERhdGFzZWdtZW50CisgICAgICB8ICAgICAgICAgIHwgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHxSZXR1cm4gYWRkcmVzcworICAgICAgfCAgICAgICAgICB8ICAgICAgIHwgICAgICAgICB8dGV4dHVhbCBwYXJhbWV0ZXIKKyAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgICAgICB8ICAgICAgICAgIHwgICAgICAgfEFyZ3VtZW50KHMpLiBUaGlzIG9uZSBpcyBhIHdpbjE2IHNlZ21lbnRlZCBwb2ludGVyLgorICAgICAgfCAgICAgICAgICB8RnVuY3Rpb24gY2FsbGVkLgorICAgICAgfFRoZSBtb2R1bGUsIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgaW4uIEluIHRoaXMgY2FzZSBpdCBpcyBLRVJORUwuCisJCSAgICAgICAgCit8UmV0ICBLRVJORUwuOTA6IExTVFJMRU4oKSByZXR2YWw9MHgwMDA0IHJldD0wMWU3OjJjZTcgZHM9MDIyNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXgorCQkJCSAgfFJldHVybnZhbHVlIGlzIDE2IGJpdCBhbmQgaGFzIHRoZSB2YWx1ZSA0LgorICAgICAgICAgICAgPC9zY3JlZW4+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgeW91IGhhdmUgZm91bmQgYSBtaXNiZWhhdmluZyBmdW5jdGlvbiwgdHJ5IHRvIGZpbmQgb3V0CisgICAgICAgICAgICAgIHdoeSBpdCBtaXNiZWhhdmVzLiBGaW5kIHRoZSBmdW5jdGlvbiBpbiB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgIFRyeSB0byBtYWtlIHNlbnNlIG9mIHRoZSBhcmd1bWVudHMgcGFzc2VkLiBVc3VhbGx5IHRoZXJlIGlzCisgICAgICAgICAgICAgIGEgPGZ1bmN0aW9uPlRSQUNFKCZsdDtjaGFubmVsPiwiKC4uLilcbiIpOzwvZnVuY3Rpb24+IGF0CisgICAgICAgICAgICAgIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLiBSZXJ1biB3aW5lIHdpdGgKKyAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tZGVidWdtc2cgK3h5eiwrcmVsYXk8L3BhcmFtZXRlcj4gYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAgIGNvbW1hbmRsaW5lLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIGRlYnVnIHVzaW5nIHRoZSBpbnRlcm5hbAorICAgICAgICAgICAgICBkZWJ1Z2dlciBjYW4gYmUgIGZvdW5kIGluCisgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWJ1Z2dlci9SRUFETUU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBJZiB0aGlzIGluZm9ybWF0aW9uIGlzbid0IGNsZWFyIGVub3VnaCBvciBpZiB5b3Ugd2FudCB0bworICAgICAgICAgICAgICBrbm93IG1vcmUgYWJvdXQgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGUgZnVuY3Rpb24gaXRzZWxmLAorICAgICAgICAgICAgICB0cnkgcnVubmluZyB3aW5lIHdpdGggPHBhcmFtZXRlcj4tZGVidWdtc2cKKyAgICAgICAgICAgICAgICArYWxsPC9wYXJhbWV0ZXI+LCB3aGljaCBkdW1wcyBBTEwgaW5jbHVkZWQgZGVidWcKKyAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gd2luZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBJZiBldmVuIHRoYXQgaXNuJ3QgZW5vdWdoLCBhZGQgbW9yZSBkZWJ1ZyBvdXRwdXQgZm9yCisgICAgICAgICAgICAgIHlvdXJzZWxmIGludG8gdGhlIGZ1bmN0aW9ucyB5b3UgZmluZCByZWxldmFudC4gIFNlZQorICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9kZWJ1Zy1tc2dzPC9maWxlbmFtZT4uIFlvdSBtaWdodAorICAgICAgICAgICAgICBhbHNvIHRyeSB0byBydW4gdGhlIHByb2dyYW0gaW4gPGNvbW1hbmQ+Z2RiPC9jb21tYW5kPgorICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBXSU5FLWRlYnVnZ2VyLiBJZiB5b3UgZG8gdGhhdCwgdXNlCisgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+aGFuZGxlIFNJR1NFR1Ygbm9zdG9wIG5vcHJpbnQ8L3BhcmFtZXRlcj4gdG8KKyAgICAgICAgICAgICAgZGlzYWJsZSB0aGUgaGFuZGxpbmcgb2Ygc2VnIGZhdWx0cyBpbnNpZGUKKyAgICAgICAgICAgICAgPGNvbW1hbmQ+Z2RiPC9jb21tYW5kPiAobmVlZGVkIGZvciBXaW4xNikuIElmIHlvdSBkb24ndCB1c2UKKyAgICAgICAgICAgICAgdGhlIDxwYXJhbWV0ZXI+LS1kZXNrdG9wPC9wYXJhbWV0ZXI+IG9yCisgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1tYW5hZ2VkPC9wYXJhbWV0ZXI+IG9wdGlvbiwgc3RhcnQgdGhlIFdJTkUKKyAgICAgICAgICAgICAgcHJvY2VzcyB3aXRoIDxwYXJhbWV0ZXI+LS1zeW5jPC9wYXJhbWV0ZXI+LCBvciBjaGFuY2VzIGFyZQorICAgICAgICAgICAgICBnb29kIHRvIGdldCBYIGludG8gYW4gdW51c2FibGUgc3RhdGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNldCBhIGJyZWFrcG9pbnQgZm9yIHRoYXQgZnVuY3Rpb24uIFN0YXJ0IHdpbmUKKyAgICAgICAgICAgICAgd2l0aCB0aGUgPHBhcmFtZXRlcj4tLWRlYnVnPC9wYXJhbWV0ZXI+IG9wdGlvbiBhZGRlZCB0byB0aGUKKyAgICAgICAgICAgICAgY29tbWFuZGxpbmUuIEFmdGVyIGxvYWRpbmcgdGhlIGV4ZWN1dGFibGUgd2luZSB3aWxsIGVudGVyCisgICAgICAgICAgICAgIHRoZSBpbnRlcm5hbCBkZWJ1Z2dlci4gVXNlIDxwYXJhbWV0ZXI+YnJlYWsKKyAgICAgICAgICAgICAgICBLRVJORUxfTFNUUkxFTjwvcGFyYW1ldGVyPiAocmVwbGFjZSBieSBmdW5jdGlvbiB5b3Ugd2FudAorICAgICAgICAgICAgICB0byBkZWJ1ZywgQ0FTRSBJUyBSRUxFVkFOVCkgdG8gc2V0IGEgYnJlYWtwb2ludC4gIFRoZW4gdXNlCisgICAgICAgICAgICAgIDxjb21tYW5kPmNvbnRpbnVlPC9jb21tYW5kPiB0byBzdGFydCBub3JtYWwKKyAgICAgICAgICAgICAgcHJvZ3JhbS1leGVjdXRpb24uIFdpbmUgd2lsbCBzdG9wIGlmIGl0IHJlYWNoZXMgdGhlCisgICAgICAgICAgICAgIGJyZWFrcG9pbnQuIElmIHRoZSBwcm9ncmFtIGlzbid0IHlldCBhdCB0aGUgY3Jhc2hpbmcgY2FsbAorICAgICAgICAgICAgICBvZiB0aGF0IGZ1bmN0aW9uLCB1c2UgPGNvbW1hbmQ+Y29udGludWU8L2NvbW1hbmQ+IGFnYWluCisgICAgICAgICAgICAgIHVudGlsIHlvdSBhcmUgYWJvdXQgdG8gZW50ZXIgdGhhdCBmdW5jdGlvbi4gWW91IG1heSBub3cKKyAgICAgICAgICAgICAgcHJvY2VlZCB3aXRoIHNpbmdsZS1zdGVwcGluZyB0aGUgZnVuY3Rpb24gdW50aWwgeW91IHJlYWNoCisgICAgICAgICAgICAgIHRoZSBwb2ludCBvZiBjcmFzaC4gVXNlIHRoZSBvdGhlciBkZWJ1Z2dlciBjb21tYW5kcyB0bworICAgICAgICAgICAgICBwcmludCByZWdpc3RlcnMgYW5kIHRoZSBsaWtlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5Qcm9ncmFtIGhhbmdzLCBub3RoaW5nIGhhcHBlbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFN3aXRjaCB0byBVTklYIHNoZWxsLCBnZXQgdGhlIHByb2Nlc3MtSUQgdXNpbmcgPGNvbW1hbmQ+cHMgLWEgfAorICAgICAgICAgICAgZ3JlcCB3aW5lPC9jb21tYW5kPiwgYW5kIGRvIGEgPGNvbW1hbmQ+a2lsbCAtSFVQCisgICAgICAgICAgICAmbHQ7cGlkPjwvY29tbWFuZD4gKHdpdGhvdXQgdGhlICZsdDsgYW5kID4pLiBXaW5lIHdpbGwKKyAgICAgICAgICB0aGVuIGVudGVyIGl0cyBpbnRlcm5hbCBkZWJ1Z2dlciBhbmQgeW91IGNhbiBwcm9jZWVkIGFzCisgICAgICAgICAgZXhwbGFpbmVkIGFib3ZlLiBBbHNvLCB5b3UgY2FuIHVzZQorICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZWJ1ZzwvcGFyYW1ldGVyPiBzd2l0Y2ggYW5kIHRoZW4geW91IGNhbiBnZXQgaW50bworICAgICAgICAgIGludGVybmFsIGRlYnVnZ2VyIGJ5IHByZXNzaW5nIAorICAgICAgICAgIDxrZXljb21ibz48a2V5Y2FwPkN0cmw8L2tleWNhcD48a2V5Y2FwPkM8L2tleWNhcD48L2tleWNvbWJvPiBpbgorICAgICAgICAgIHRoZSB0ZXJtaW5hbCB3aGVyZSB5b3UgcnVuIFdpbmUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPlByb2dyYW0gcmVwb3J0cyBhbiBlcnJvciB3aXRoIGEgTWVzc2FnZWJveDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU29tZXRpbWVzIHByb2dyYW1zIGFyZSByZXBvcnRpbmcgZmFpbHVyZSB1c2luZyBtb3JlIG9yCisgICAgICAgICAgbGVzcyBub25kZXNjcmlwdCBtZXNzYWdlYm94ZXMuIFdlIGNhbiBkZWJ1ZyB0aGlzIHVzaW5nIHRoZQorICAgICAgICAgIHNhbWUgbWV0aG9kIGFzIENyYXNoZXMsIGJ1dCB0aGVyZSBpcyBvbmUgcHJvYmxlbS4uLiBGb3IKKyAgICAgICAgICBzZXR0aW5nIHVwIGEgbWVzc2FnZSBib3ggdGhlIHByb2dyYW0gYWxzbyBjYWxscyBXaW5lCisgICAgICAgICAgcHJvZHVjaW5nIGh1Z2UgY2h1bmtzIG9mIGRlYnVnIGNvZGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU2luY2UgdGhlIGZhaWx1cmUgaGFwcGVucyB1c3VhbGx5IGRpcmVjdGx5IGJlZm9yZSBzZXR0aW5nIHVwCisgICAgICAgICAgdGhlIE1lc3NhZ2Vib3ggeW91IGNhbiBzdGFydCB3aW5lIHdpdGgKKyAgICAgICAgICA8cGFyYW1ldGVyPi0tZGVidWc8L3BhcmFtZXRlcj4gYWRkZWQgdG8gdGhlIGNvbW1hbmRsaW5lLCBzZXQgYQorICAgICAgICAgIGJyZWFrcG9pbnQgYXQgPGZ1bmN0aW9uPk1lc3NhZ2VCb3hBPC9mdW5jdGlvbj4gKGNhbGxlZCBieSB3aW4xNgorICAgICAgICAgIGFuZCB3aW4zMiBwcm9ncmFtcykgYW5kIHByb2NlZWQgd2l0aAorICAgICAgICAgIDxjb21tYW5kPmNvbnRpbnVlPC9jb21tYW5kPi4gV2l0aCA8cGFyYW1ldGVyPi0tZGVidWdtc2cKKyAgICAgICAgICAgICthbGw8L3BhcmFtZXRlcj4gV2luZSB3aWxsIG5vdyBzdG9wIGRpcmVjdGx5IGJlZm9yZSBzZXR0aW5nCisgICAgICAgICAgdXAgdGhlIE1lc3NhZ2Vib3guIFByb2NlZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFlvdSBjYW4gYWxzbyBydW4gd2luZSB1c2luZyA8Y29tbWFuZD53aW5lIC1kZWJ1Z21zZyArcmVsYXkKKyAgICAgICAgICAgIHByb2dyYW0uZXhlIDI+JjEgfCBsZXNzIC1pPC9jb21tYW5kPiBhbmQgaW4KKyAgICAgICAgICA8Y29tbWFuZD5sZXNzPC9jb21tYW5kPiBzZWFyY2ggZm9yIDxxdW90ZT5NZXNzYWdlQm94PC9xdW90ZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkRpc2Fzc2VtYmxpbmcgcHJvZ3JhbXM6PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBZb3UgbWF5IGFsc28gdHJ5IHRvIGRpc2Fzc2VtYmxlIHRoZSBvZmZlbmRpbmcgcHJvZ3JhbSB0bworICAgICAgICAgIGNoZWNrIGZvciB1bmRvY3VtZW50ZWQgZmVhdHVyZXMgYW5kL29yIHVzZSBvZiB0aGVtLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBiZXN0LCBmcmVlbHkgYXZhaWxhYmxlLCBkaXNhc3NlbWJsZXIgZm9yIFdpbjE2IHByb2dyYW1zIGlzCisgICAgICAgICAgPGFwcGxpY2F0aW9uPldpbmRvd3MgQ29kZWJhY2s8L2FwcGxpY2F0aW9uPiwgYXJjaGl2ZW5hbWUKKyAgICAgICAgICA8ZmlsZW5hbWU+d2NieHh4LnppcDwvZmlsZW5hbWU+LCB3aGljaCB1c3VhbGx5IGNhbiBiZSBmb3VuZCBpbgorICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Q2ljYS1NaXJyb3I8L2ZpbGVuYW1lPiBzdWJkaXJlY3Rvcnkgb24gdGhlIFdJTkUKKyAgICAgICAgICBmdHBzaXRlcy4gKFNlZSA8ZmlsZW5hbWU+QU5OT1VOQ0U8L2ZpbGVuYW1lPikuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRGlzYXNzZW1ibGluZyB3aW4zMiBwcm9ncmFtcyBpcyBwb3NzaWJsZSB1c2luZworICAgICAgICAgIDxhcHBsaWNhdGlvbj5XaW5kb3dzIERpc2Fzc2VtYmxlciAzMjwvYXBwbGljYXRpb24+LCBhcmNoaXZlbmFtZQorICAgICAgICAgIHNvbWV0aGluZyBsaWtlIDxmaWxlbmFtZT53MzJkc204Ny56aXA8L2ZpbGVuYW1lPiAob3Igc2ltaWxhcikKKyAgICAgICAgICBvbiA8c3lzdGVtaXRlbSBjbGFzcz0ic3lzdGVtbmFtZSI+ZnRwLndpbnNpdGUuY29tPC9zeXN0ZW1pdGVtPgorICAgICAgICAgIGFuZCBtaXJyb3JzLiAgVGhlIHNoYXJld2FyZSB2ZXJzaW9uIGRvZXMgbm90IGFsbG93IHNhdmluZyBvZgorICAgICAgICAgIGRpc2Fzc2VtYmx5IGxpc3RpbmdzLiBZb3UgY2FuIGFsc28gdXNlIHRoZSBuZXdlciAoYW5kIGluIHRoZQorICAgICAgICAgIGZ1bGwgdmVyc2lvbiBiZXR0ZXIpIDxhcHBsaWNhdGlvbj5JbnRlcmFjdGl2ZQorICAgICAgICAgICAgRGlzYXNzZW1ibGVyPC9hcHBsaWNhdGlvbj4gKElEQSkgZnJvbSB0aGUgZnRwIHNpdGVzIG1lbnRpb25lZAorICAgICAgICAgIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LiBVbmRlcnN0YW5kaW5nIGRpc2Fzc2VtYmxlZCBjb2RlIGlzCisgICAgICAgICAgbW9zdGx5IGEgcXVlc3Rpb24gb2YgZXhlcmNpc2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTW9zdCBjb2RlIG91dCB0aGVyZSB1c2VzIHN0YW5kYXJkIEMgZnVuY3Rpb24gZW50cmllcyAoZm9yIGl0CisgICAgICAgICAgaXMgdXN1YWxseSAgd3JpdHRlbiBpbiBDKS4gV2luMTYgZnVuY3Rpb24gZW50cmllcyB1c3VhbGx5CisgICAgICAgICAgbG9vayBsaWtlIHRoYXQ6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorcHVzaCBicAorbW92IGJwLCBzcAorLi4uIGZ1bmN0aW9uIGNvZGUgLi4KK3JldGYgWFhYWCAJJmx0Oy0tLS0tLS0tLSBYWFhYIGlzIG51bWJlciBvZiBieXRlcyBvZiBhcmd1bWVudHMKKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBpcyBhIDxmdW5jdGlvbj5GQVI8L2Z1bmN0aW9uPiBmdW5jdGlvbiB3aXRoIG5vIGxvY2FsCisgICAgICAgICAgc3RvcmFnZS4gVGhlIGFyZ3VtZW50cyB1c3VhbGx5IHN0YXJ0IGF0CisgICAgICAgICAgPGxpdGVyYWw+W2JwKzZdPC9saXRlcmFsPiB3aXRoIGluY3JlYXNpbmcgb2Zmc2V0cy4gTm90ZSwgdGhhdAorICAgICAgICAgIDxsaXRlcmFsPlticCs2XTwvbGl0ZXJhbD4gYmVsb25ncyB0byB0aGUKKyAgICAgICAgICA8ZW1waGFzaXM+cmlnaHRtb3N0PC9lbXBoYXNpcz4gYXJndW1lbnQsIGZvciBleHBvcnRlZCB3aW4xNgorICAgICAgICAgIGZ1bmN0aW9ucyB1c2UgdGhlIFBBU0NBTCBjYWxsaW5nIGNvbnZlbnRpb24uIFNvLCBpZiB3ZSB1c2UKKyAgICAgICAgICA8ZnVuY3Rpb24+c3RyY21wKGEsYik8L2Z1bmN0aW9uPiB3aXRoIDxwYXJhbWV0ZXI+YTwvcGFyYW1ldGVyPgorICAgICAgICAgIGFuZCA8cGFyYW1ldGVyPmI8L3BhcmFtZXRlcj4gYm90aCAzMiBiaXQgdmFyaWFibGVzCisgICAgICAgICAgPHBhcmFtZXRlcj5iPC9wYXJhbWV0ZXI+IHdvdWxkIGJlIGF0IDxsaXRlcmFsPlticCs2XTwvbGl0ZXJhbD4KKyAgICAgICAgICBhbmQgPHBhcmFtZXRlcj5hPC9wYXJhbWV0ZXI+IGF0IDxsaXRlcmFsPlticCsxMF08L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE1vc3QgZnVuY3Rpb25zIG1ha2UgYWxzbyB1c2Ugb2YgbG9jYWwgc3RvcmFnZSBpbiB0aGUgc3RhY2tmcmFtZToKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitlbnRlciAwMDg2LCAwMAorLi4uIGZ1bmN0aW9uIGNvZGUgLi4uCitsZWF2ZQorcmV0ZiBYWFhYCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZG9lcyBtb3N0bHkgdGhlIHNhbWUgYXMgYWJvdmUsIGJ1dCBhbHNvIGFkZHMKKyAgICAgICAgICA8bGl0ZXJhbD4weDg2PC9saXRlcmFsPiBieXRlcyBvZiBzdGFja3N0b3JhZ2UsIHdoaWNoIGlzCisgICAgICAgICAgYWNjZXNzZWQgdXNpbmcgPGxpdGVyYWw+W2JwLXh4XTwvbGl0ZXJhbD4uIEJlZm9yZSBjYWxsaW5nIGEKKyAgICAgICAgICBmdW5jdGlvbiwgYXJndW1lbnRzIGFyZSBwdXNoZWQgb24gdGhlIHN0YWNrIHVzaW5nIHNvbWV0aGluZworICAgICAgICAgIGxpa2UgdGhpczoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitwdXNoIHdvcmQgcHRyIFticC0wMl0JJmx0Oy0gd2lsbCBiZSBhdCBbYnArOF0KK3B1c2ggZGkJCQkmbHQ7LSB3aWxsIGJlIGF0IFticCs2XQorY2FsbCBLRVJORUwuTFNUUkxFTgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBIZXJlIGZpcnN0IHRoZSBzZWxlY3RvciBhbmQgdGhlbiB0aGUgb2Zmc2V0IHRvIHRoZSBwYXNzZWQKKyAgICAgICAgICBzdHJpbmcgYXJlIHB1c2hlZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+U2FtcGxlIGRlYnVnZ2luZyBzZXNzaW9uOjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTGV0J3MgZGVidWcgdGhlIGluZmFtb3VzIFdvcmQgPGZpbGVuYW1lPlNIQVJFLkVYRTwvZmlsZW5hbWU+CisgICAgICAgICAgbWVzc2FnZWJveDogCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNjcmVlbj4KK3xtYXJjdXNAamV0ICQgd2luZSB3aW53b3JkLmV4ZQorfCAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICAgfCAhICBZb3UgbXVzdCBsZWF2ZSBXaW5kb3dzIGFuZCBsb2FkIFNIQVJFLkVYRXwKK3wgICAgICAgICAgICB8ICAgIGJlZm9yZSBzdGFydGluZyBXb3JkLiAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8c2NyZWVuPgorfG1hcmN1c0BqZXQgJCB3aW5lIHdpbndvcmQuZXhlIC1kZWJ1Z21zZyArcmVsYXkgLWRlYnVnCit8Q2FsbFRvMzIod25kcHJvYz0weDQwMDY1YmMwLGh3bmQ9MDAwMDAxYWMsbXNnPTAwMDAwMDgxLHdwPTAwMDAwMDAwLGxwPTAwMDAwMDAwKQorfFdpbjE2IHRhc2sgJ3dpbndvcmQnOiBCcmVha3BvaW50IDEgYXQgMHgwMWQ3OjB4MDAxYQorfENhbGxUbzE2KGZ1bmM9MDEyNzowMDcwLGRzPTA5MjcpCit8Q2FsbCBXUFJPQ1MuMjQ6IFRBU0tfUkVTQ0hFRFVMRSgpIHJldD0wMGI3OjE0NTYgZHM9MDkyNworfFJldCAgV1BST0NTLjI0OiBUQVNLX1JFU0NIRURVTEUoKSByZXR2YWw9MHg4NjcyIHJldD0wMGI3OjE0NTYgZHM9MDkyNworfENhbGxUbzE2KGZ1bmM9MDFkNzowMDFhLGRzPTA5MjcpCit8ICAgICBBWD0wMDAwIEJYPTNjYjQgQ1g9MWY0MCBEWD0wMDAwIFNJPTAwMDAgREk9MDkyNyBCUD0wMDAwIEVTPTExZjcKK3xMb2FkaW5nIHN5bWJvbHM6IC9ob21lL21hcmN1cy93aW5lL3dpbmUuLi4KK3xTdG9wcGVkIG9uIGJyZWFrcG9pbnQgMSBhdCAweDAxZDc6MHgwMDFhCit8SW4gMTYgYml0IG1vZGUuCit8V2luZS1kYmc+YnJlYWsgTWVzc2FnZUJveEEgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDstLS0tIFNldCBCcmVha3BvaW50Cit8QnJlYWtwb2ludCAyIGF0IDB4NDAxODkxMDAgKE1lc3NhZ2VCb3hBIFttc2dib3guYzoxOTBdKQorfFdpbmUtZGJnPmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDstLS0tIENvbnRpbnVlCit8Q2FsbCBLRVJORUwuOTE6IElOSVRUQVNLKCkgcmV0PTAxNTc6MDAyMiBkcz0wOGE3Cit8ICAgICBBWD0wMDAwIEJYPTNjYjQgQ1g9MWY0MCBEWD0wMDAwIFNJPTAwMDAgREk9MDhhNyBFUz0xMWQ3IEVGTD0wMDAwMDI4NgorfENhbGxUbzE2KGZ1bmM9MDkwZjowODVjLGRzPTBkY2YsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDgwMCwweDAwMDAsMHgwMDAwLDB4MGRjZikKK3wuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7LS0tLS0gTXVjaCBkZWJ1Z291dHB1dAorfENhbGwgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKDB4MDAwMCkgcmV0PTA2MGY6MDk3YiBkcz0wOTI3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eIERyaXZlIDAgKEE6KQorfFJldCAgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKCkgcmV0dmFsPTB4MDAwMiByZXQ9MDYwZjowOTdiIGRzPTA5MjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gIERSSVZFX1JFTU9WRUFCTEUKKwkJCQkJCShJdCBpcyBhIGZsb3BweSBkaXNrZHJpdmUuKQorCit8Q2FsbCBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoMHgwMDAxKSByZXQ9MDYwZjowOTdiIGRzPTA5MjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gRHJpdmUgMSAoQjopCit8UmV0ICBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoKSByZXR2YWw9MHgwMDAwIHJldD0wNjBmOjA5N2IgZHM9MDkyNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXiAgRFJJVkVfQ0FOTk9UREVURVJNSU5FCisJCQkJCQkoSSBkb24ndCBoYXZlIGRyaXZlIEI6IGFzc2lnbmVkKQorCit8Q2FsbCBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoMHgwMDAyKSByZXQ9MDYwZjowOTdiIGRzPTA5MjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eIERyaXZlIDIgKEM6KQorfFJldCAgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKCkgcmV0dmFsPTB4MDAwMyByZXQ9MDYwZjowOTdiIGRzPTA5MjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gRFJJVkVfRklYRUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNpZmllZCBhcyBhIGhhcmRkaXNrKQorCit8Q2FsbCBLRVJORUwuOTc6IEdFVFRFTVBGSUxFTkFNRSgweDAwYzMsMHgwOTI3ODM2NCJkb2MiLDB4MDAwMCwwOTI3OjgyNDgpIHJldD0wNjBmOjA5YjEgZHM9MDkyNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eICAgICAgICAgICBeXl5eXiAgICAgICAgXl5eXl5eXl5eCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8YnVmZmVyIGZvciBmbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8dGVtcG9yYXJ5IG5hbWUgfmRvY1hYWFgudG1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Rm9yY2UgdXNlIG9mIERyaXZlIEM6LgorCit8V2FybmluZzogR2V0VGVtcEZpbGVOYW1lIHJldHVybnMgJ0M6fmRvYzkyODEudG1wJywgd2hpY2ggZG9lc24ndCBzZWVtIHRvIGJlIHdyaXRlYWJsZS4KK3xQbGVhc2UgY2hlY2sgeW91ciBjb25maWd1cmF0aW9uIGZpbGUgaWYgdGhpcyBnZW5lcmF0ZXMgYSBmYWlsdXJlLgorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2hvb3BzLCBpdCBldmVuIGRldGVjdHMgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmchCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNjcmVlbj4KK3xSZXQgIEtFUk5FTC45NzogR0VUVEVNUEZJTEVOQU1FKCkgcmV0dmFsPTB4OTI4MSByZXQ9MDYwZjowOWIxIGRzPTA5MjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXiBUZW1wb3Jhcnkgc3RvcmFnZSBJRAorCit8Q2FsbCBLRVJORUwuNzQ6IE9QRU5GSUxFKDB4MDkyNzgyNDgiQzp+ZG9jOTI4MS50bXAiLDA5Mjc6ODJkYSwweDEwMTIpIHJldD0wNjBmOjA5ZDggZHM9MDkyNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXiBeXl5eXl5eXl4gXl5eXl5eXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGZpbGVuYW1lICAgICAgICB8T0ZTVFJVQ1QgfG9wZW4gbW9kZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZfQ1JFQVRFfE9GX1NIQVJFX0VYQ0xVU0lWRXxPRl9SRUFEV1JJVEUKKyAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZmFpbHMsIHNpbmNlIG15IDxtZWRpYWxhYmVsPkM6PC9tZWRpYWxhYmVsPiBkcml2ZSBpcyBpbgorICAgICAgICAgIHRoaXMgY2FzZSBtb3VudGVkIHJlYWRvbmx5LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+Cit8UmV0ICBLRVJORUwuNzQ6IE9QRU5GSUxFKCkgcmV0dmFsPTB4ZmZmZiByZXQ9MDYwZjowOWQ4IGRzPTA5MjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eIEhGSUxFX0VSUk9SMTYsIHllcywgaXQgZmFpbGVkLgorCit8Q2FsbCBVU0VSLjE6IE1FU1NBR0VCT1goMHgwMDAwLDB4MDkyNzgzNzYiU2llIG11c3NlbiBXaW5kb3dzIHZlcmxhc3NlbiB1bmQgU0hBUkUuRVhFIGxhZGVuIGJldm9yIFNpZSBXb3JkIHN0YXJ0ZW4uIiwweDAwMDAwMDAwLDB4MTAzMCkgcmV0PTA2MGY6MDg0ZiBkcz0wOTI3CisgICAgICAgIDwvc2NyZWVuPiAgICAgICAgICAgCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEFuZCBNZXNzYWdlQm94J2VkLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+Cit8U3RvcHBlZCBvbiBicmVha3BvaW50IDIgYXQgMHg0MDE4OTEwMCAoTWVzc2FnZUJveEEgW21zZ2JveC5jOjE5MF0pCit8MTkwICAgICB7CQkmbHQ7LSB0aGUgc291cmNlbGluZQorSW4gMzIgYml0IG1vZGUuCitXaW5lLWRiZz4KKyAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBjb2RlIHNlZW1zIHRvIGZpbmQgYSB3cml0ZWFibGUgaGFyZGRpc2sgYW5kIHRyaWVzIHRvIGNyZWF0ZQorICAgICAgICAgIGEgZmlsZSB0aGVyZS4gVG8gd29yayBhcm91bmQgdGhpcyBidWcsIHlvdSBjYW4gZGVmaW5lCisgICAgICAgICAgPG1lZGlhbGFiZWw+Qzo8L21lZGlhbGFiZWw+IGFzIGEgbmV0d29ya2RyaXZlLCB3aGljaCBpcyBpZ25vcmVkCisgICAgICAgICAgYnkgdGhlIGNvZGUgYWJvdmUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyBUaXBzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBIZXJlIGFyZSBzb21lIHVzZWZ1bCBkZWJ1Z2dpbmcgdGlwcywgYWRkZWQgYnkgQW5kcmVhcyBNb2hyOgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBwcm9ncmFtIGNyYXNoaW5nIGF0IHN1Y2ggYW4gZWFybHkgbG9hZGVyIHBoYXNlIHRoYXQgeW91IGNhbid0CisgICAgICAgICAgICAgIHVzZSB0aGUgV2luZSBkZWJ1Z2dlciBub3JtYWxseSwgYnV0IFdpbmUgYWxyZWFkeSBleGVjdXRlcyB0aGUgcHJvZ3JhbSdzCisgICAgICAgICAgICAgIHN0YXJ0IGNvZGUsIHRoZW4geW91IG1heSB1c2UgYSBzcGVjaWFsIHRyaWNrLiBZb3Ugc2hvdWxkIGRvIGEKKyAgICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgord2luZSAtLWRlYnVnbXNnICtyZWxheSBwcm9ncmFtCisgICAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgICAgIHRvIGdldCBhIGxpc3Rpbmcgb2YgdGhlIGZ1bmN0aW9ucyB0aGUgcHJvZ3JhbSBjYWxscyBpbiBpdHMgc3RhcnQgZnVuY3Rpb24uCisgICAgICAgICAgICAgIE5vdyB5b3UgZG8gYQorICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cit3aW5lIC0tZGVidWcgd2luZmlsZS5leGUKKyAgICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGlzIHdheSwgeW91IGdldCBpbnRvIDxjb21tYW5kPldpbmUtZGJnPC9jb21tYW5kPi4gTm93IHlvdQorICAgICAgICAgICAgICBjYW4gc2V0IGEgYnJlYWtwb2ludCBvbiBhbnkgZnVuY3Rpb24gdGhlIHByb2dyYW0gY2FsbHMgaW4KKyAgICAgICAgICAgICAgdGhlIHN0YXJ0IGZ1bmN0aW9uIGFuZCBqdXN0IHR5cGUgPHVzZXJpbnB1dD5jPC91c2VyaW5wdXQ+CisgICAgICAgICAgICAgIHRvIGJ5cGFzcyB0aGUgZXZlbnR1YWwgY2FsbHMgb2YgV2luZmlsZSB0byB0aGlzIGZ1bmN0aW9uCisgICAgICAgICAgICAgIHVudGlsIHlvdSBhcmUgZmluYWxseSBhdCB0aGUgcGxhY2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBnZXRzCisgICAgICAgICAgICAgIGNhbGxlZCBieSB0aGUgY3Jhc2hpbmcgc3RhcnQgZnVuY3Rpb24uIE5vdyB5b3UgY2FuIHByb2NlZWQKKyAgICAgICAgICAgICAgd2l0aCB5b3VyIGRlYnVnZ2luZyBhcyB1c3VhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBJZiB5b3UgdHJ5IHRvIHJ1biBhIHByb2dyYW0gYW5kIGl0IHF1aXRzIGFmdGVyIHNob3dpbmcgYW4gZXJyb3IgbWVzc2FnZWJveCwKKyAgICAgICAgICAgICAgdGhlIHByb2JsZW0gY2FuIHVzdWFsbHkgYmUgaWRlbnRpZmllZCBpbiB0aGUgcmV0dXJuIHZhbHVlIG9mIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgZnVuY3Rpb25zIGV4ZWN1dGVkIGJlZm9yZSA8ZnVuY3Rpb24+TWVzc2FnZUJveCgpPC9mdW5jdGlvbj4uCisgICAgICAgICAgICAgIFRoYXQncyB3aHkgeW91IHNob3VsZCByZS1ydW4gdGhlIHByb2dyYW0gd2l0aCBlLmcuCisgICAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KK3dpbmUgLS1kZWJ1Z21zZyArcmVsYXkgJmx0O3Byb2dyYW0gbmFtZT4gJj5yZWxtc2cKKyAgICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICAgICAgVGhlbiBkbyBhIDxjb21tYW5kPm1vcmUgcmVsbXNnPC9jb21tYW5kPiBhbmQgc2VhcmNoIGZvciB0aGUKKyAgICAgICAgICAgICAgbGFzdCBvY2N1cnJlbmNlIG9mIGEgY2FsbCB0byB0aGUgc3RyaW5nICJNRVNTQUdFQk9YIi4gVGhpcyBpcyBhIGxpbmUgbGlrZQorICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitDYWxsIFVTRVIuMTogTUVTU0FHRUJPWCgweDAwMDAsMHgwMWZmMTI0NiAiUnVudGltZSBlcnJvciAyMTkgYXQgMDAwNDoxMDU2LiIsMHgwMDAwMDAwMCwweDEwMTApIHJldD0wMWY3OjIxNjAgZHM9MDFmZgorICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgICAgICBJbiBteSBleGFtcGxlIHRoZSBsaW5lcyBiZWZvcmUgdGhlIGNhbGwgdG8KKyAgICAgICAgICAgICAgPGZ1bmN0aW9uPk1lc3NhZ2VCb3goKTwvZnVuY3Rpb24+IGxvb2sgbGlrZSB0aGF0OgorICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitDYWxsIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoMHgwMzQ3KSByZXQ9MDFjZjoxMDMzIGRzPTAxZmYKK0NhbGxUbzE2KGZ1bmM9MDMzZjowMDcyLGRzPTAxZmYsMHgwMDAwKQorUmV0ICBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKCkgcmV0dmFsPTB4MDAwMSByZXQ9MDFjZjoxMDMzIGRzPTAxZmYKK0NhbGwgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgweDAzNmYpIHJldD0wMWNmOjEwNDMgZHM9MDFmZgorQ2FsbFRvMTYoZnVuYz0wMzY3OjAwNzIsZHM9MDFmZiwweDAwMDApCitSZXQgIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoKSByZXR2YWw9MHgwMDAxIHJldD0wMWNmOjEwNDMgZHM9MDFmZgorQ2FsbCBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKDB4MDMxZikgcmV0PTAxY2Y6MTA1YyBkcz0wMWZmCitDYWxsVG8xNihmdW5jPTAzMTc6MDA3Mixkcz0wMWZmLDB4MDAwMCkKK1JldCAgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgpIHJldHZhbD0weDAwMDEgcmV0PTAxY2Y6MTA1YyBkcz0wMWZmCitDYWxsIFVTRVIuMTcxOiBXSU5IRUxQKDB4MDJhYywweDAxZmYwNWI0ICJDT01FVC5ITFAiLDB4MDAwMiwweDAwMDAwMDAwKSByZXQ9MDFjZjoxMDcwIGRzPTAxZmYKK0NhbGxUbzE2KGZ1bmM9MDExNzowMDgwLGRzPTAxZmYpCitDYWxsIFdQUk9DUy4yNDogVEFTS19SRVNDSEVEVUxFKCkgcmV0PTAwYTc6MGEyZCBkcz0wMDJiCitSZXQgIFdQUk9DUy4yNDogVEFTS19SRVNDSEVEVUxFKCkgcmV0dmFsPTB4MDAwMCByZXQ9MDBhNzowYTJkIGRzPTAwMmIKK1JldCAgVVNFUi4xNzE6IFdJTkhFTFAoKSByZXR2YWw9MHgwMDAxIHJldD0wMWNmOjEwNzAgZHM9MDFmZgorQ2FsbCBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKDB4MDFiZSkgcmV0PTAxZGY6M2UyOSBkcz0wMWZmCitSZXQgIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoKSByZXR2YWw9MHgwMDAwIHJldD0wMWRmOjNlMjkgZHM9MDFmZgorQ2FsbCBLRVJORUwuNTI6IEZSRUVQUk9DSU5TVEFOQ0UoMHgwMmNmMDBiYSkgcmV0PTAxZjc6MTQ2MCBkcz0wMWZmCitSZXQgIEtFUk5FTC41MjogRlJFRVBST0NJTlNUQU5DRSgpIHJldHZhbD0weDAwMDEgcmV0PTAxZjc6MTQ2MCBkcz0wMWZmCitDYWxsIFVTRVIuMTogTUVTU0FHRUJPWCgweDAwMDAsMHgwMWZmMTI0NiAiUnVudGltZSBlcnJvciAyMTkgYXQgMDAwNDoxMDU2LiIsMHgwMDAwMDAwMCwweDEwMTApIHJldD0wMWY3OjIxNjAgZHM9MDFmZgorICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEkgdGhpbmsgdGhhdCB0aGUgY2FsbCB0byA8ZnVuY3Rpb24+TWVzc2FnZUJveCgpPC9mdW5jdGlvbj4KKyAgICAgICAgICAgICAgaW4gdGhpcyBleGFtcGxlIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBjYXVzZWQgYnkgYQorICAgICAgICAgICAgICB3cm9uZyByZXN1bHQgdmFsdWUgb2Ygc29tZSBwcmV2aW91c2x5IGV4ZWN1dGVkIGZ1bmN0aW9uCisgICAgICAgICAgICAgIChpdCdzIGhhcHBlbmluZyBxdWl0ZSBvZnRlbiBsaWtlIHRoYXQpLCBidXQgaW5zdGVhZCB0aGUKKyAgICAgICAgICAgICAgbWVzc2FnZWJveCBjb21wbGFpbnMgYWJvdXQgYSBydW50aW1lIGVycm9yIGF0CisgICAgICAgICAgICAgIDxsaXRlcmFsPjB4MDAwNDoweDEwNTY8L2xpdGVyYWw+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEFzIHRoZSBzZWdtZW50IHZhbHVlIG9mIHRoZSBhZGRyZXNzIGlzIG9ubHkKKyAgICAgICAgICAgICAgPGxpdGVyYWw+NDwvbGl0ZXJhbD4sIEkgdGhpbmsgdGhhdCB0aGF0IGlzIG9ubHkgYW4gaW50ZXJuYWwKKyAgICAgICAgICAgICAgcHJvZ3JhbSB2YWx1ZS4gQnV0IHRoZSBvZmZzZXQgYWRkcmVzcyByZXZlYWxzIHNvbWV0aGluZworICAgICAgICAgICAgICBxdWl0ZSBpbnRlcmVzdGluZzogT2Zmc2V0IDxsaXRlcmFsPjEwNTY8L2xpdGVyYWw+IGlzCisgICAgICAgICAgICAgIDxlbXBoYXNpcz52ZXJ5PC9lbXBoYXNpcz4gY2xvc2UgdG8gdGhlIHJldHVybiBhZGRyZXNzIG9mCisgICAgICAgICAgICAgIDxmdW5jdGlvbj5GUkVFTElCUkFSWSgpPC9mdW5jdGlvbj46CisgICAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KK0NhbGwgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgweDAzMWYpIHJldD0wMWNmOjEwNWMgZHM9MDFmZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXgorICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFByb3ZpZGVkIHRoYXQgc2VnbWVudCA8bGl0ZXJhbD4weDAwMDQ8L2xpdGVyYWw+IGlzIGluZGVlZCBzZWdtZW50CisgICAgICAgICAgICAgIDxsaXRlcmFsPjB4MWNmPC9saXRlcmFsPiwgd2Ugbm93IHdlIGNhbiB1c2UgSURBICAgICAgICAgICAgICAgICAoYXZhaWxhYmxlIGF0CisgICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC51bmkta29lbG4uZGUvcGMvbXNkb3MvcHJvZ3JhbW1pbmcvYXNzZW1ibGVyL2lkYTM1YnguemlwIj4KKyAgICAgICAgICAgICAgICBmdHA6Ly9mdHAudW5pLWtvZWxuLmRlL3BjL21zZG9zL3Byb2dyYW1taW5nL2Fzc2VtYmxlci9pZGEzNWJ4LnppcDwvdWxpbms+KSB0bworICAgICAgICAgICAgICBkaXNhc3NlbWJsZSB0aGUgcGFydCB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuIFdlIGp1c3QgaGF2ZSB0byBmaW5kIHRoZSBhZGRyZXNzIG9mCisgICAgICAgICAgICAgIHRoZSBjYWxsIHRvIDxmdW5jdGlvbj5GcmVlTGlicmFyeSgpPC9mdW5jdGlvbj4uIFNvbWUgbGluZXMgYmVmb3JlIHRoYXQgdGhlCisgICAgICAgICAgICAgIHJ1bnRpbWUgZXJyb3Igb2NjdXJyZWQuIEJ1dCBiZSBjYXJlZnVsISBJbiBzb21lIGNhc2VzIHlvdSBkb24ndCBoYXZlIHRvCisgICAgICAgICAgICAgIGRpc2Fzc2VtYmxlIHRoZSBtYWluIHByb2dyYW0sIGJ1dCBpbnN0ZWFkIHNvbWUgRExMIGNhbGxlZCBieSBpdCBpbiBvcmRlciB0byBmaW5kCisgICAgICAgICAgICAgIHRoZSBjb3JyZWN0IHBsYWNlIHdoZXJlIHRoZSBydW50aW1lIGVycm9yIG9jY3VycmVkLiBUaGF0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5CisgICAgICAgICAgICAgIGZpbmRpbmcgdGhlIG9yaWdpbiBvZiB0aGUgc2VnbWVudCB2YWx1ZSAoaW4gdGhpcyBjYXNlIDxsaXRlcmFsPjB4MWNmPC9saXRlcmFsPikuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY3JlYXRlZCBhIHJlbGF5IGZpbGUgb2Ygc29tZSBjcmFzaGluZworICAgICAgICAgICAgICBwcm9ncmFtIGFuZCB3YW50IHRvIHNldCBhIGJyZWFrcG9pbnQgYXQgYSBjZXJ0YWluCisgICAgICAgICAgICAgIGxvY2F0aW9uIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHRoZSBwcm9ncmFtIGxvYWRzCisgICAgICAgICAgICAgIHRoZSBicmVha3BvaW50J3Mgc2VnbWVudCBkdXJpbmcgZXhlY3V0aW9uLCB5b3UgbWF5IHNldCBhCisgICAgICAgICAgICAgIGJyZWFrcG9pbnQgdG8gPGZ1bmN0aW9uPkdldFZlcnNpb24xNi8zMjwvZnVuY3Rpb24+IGFzCisgICAgICAgICAgICAgIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHZlcnkgb2Z0ZW4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGhlbiBkbyBhIDx1c2VyaW5wdXQ+YzwvdXNlcmlucHV0PiB1bnRpbCB5b3UgYXJlIGFibGUgdG8KKyAgICAgICAgICAgICAgc2V0IHRoaXMgYnJlYWtwb2ludCB3aXRob3V0IGVycm9yIG1lc3NhZ2UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgU29tZSB1c2VmdWwgcHJvZ3JhbXM6CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx0ZXJtPgorICAgICAgICAgICAgICAgICAgPGFwcGxpY2F0aW9uPklEQTwvYXBwbGljYXRpb24+OiAKKyAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLnVuaS1rb2Vsbi5kZS9wYy9tc2Rvcy9wcm9ncmFtbWluZy9hc3NlbWJsZXIvaWRhMzVieC56aXAiPgorICAgICAgICAgICAgICAgICAgICAgIGZ0cDovL2Z0cC51bmkta29lbG4uZGUvcGMvbXNkb3MvcHJvZ3JhbW1pbmcvYXNzZW1ibGVyL2lkYTM1YnguemlwPC91bGluaz4KKyAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPC90ZXJtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmVyeTwvZW1waGFzaXM+IGdvb2QgRE9TIGRpc2Fzc2VtYmxlciAhIEl0J3MgYmFkbHkgbmVlZGVkCisgICAgICAgICAgICAgICAgICAgIGZvciBkZWJ1Z2dpbmcgV2luZSBzb21ldGltZXMuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgPHRlcm0+CisgICAgICAgICAgICAgICAgICA8YXBwbGljYXRpb24+WFJBWTwvYXBwbGljYXRpb24+OgorICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAudGgtZGFybXN0YWR0LmRlL3B1Yi9tYWNoaW5lcy9tcy1kb3MvU2ltVGVsL21zZG9zL2FzbXV0aWwveHJheTE1LnppcCI+CisgICAgICAgICAgICAgICAgICAgICAgZnRwOi8vZnRwLnRoLWRhcm1zdGFkdC5kZS9wdWIvbWFjaGluZXMvbXMtZG9zL1NpbVRlbC9tc2Rvcy9hc211dGlsL3hyYXkxNS56aXA8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8L3Rlcm0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRyYWNlcyBET1MgY2FsbHMgKEludCAyMWgsIERQTUksIC4uLikuIFVzZSBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgIFdpbmRvd3MgdG8gY29ycmVjdCBmaWxlIG1hbmFnZW1lbnQgcHJvYmxlbXMgZXRjLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx0ZXJtPgorICAgICAgICAgICAgICAgICAgPGFwcGxpY2F0aW9uPnBlZHVtcDwvYXBwbGljYXRpb24+OgorICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vb2FrLm9ha2xhbmQuZWR1L3B1Yi9zaW10ZWxuZXQvd2luOTUvcHJvZy9wZWR1bXAuemlwIj4KKyAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vb2FrLm9ha2xhbmQuZWR1L3B1Yi9zaW10ZWxuZXQvd2luOTUvcHJvZy9wZWR1bXAuemlwPC91bGluaz4KKyAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPC90ZXJtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEdW1wcyB0aGUgaW1wb3J0cyBhbmQgZXhwb3J0cyBvZiBhIFBFIChQb3J0YWJsZQorICAgICAgICAgICAgICAgICAgICBFeGVjdXRhYmxlKSBETEwuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPlNvbWUgYmFzaWMgZGVidWdnZXIgdXNhZ2VzOjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQWZ0ZXIgc3RhcnRpbmcgeW91ciBwcm9ncmFtIHdpdGgKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2NyZWVuPgord2luZSAtZGVidWcgbXlwcm9nLmV4ZQorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgdGhlIHByb2dyYW0gbG9hZHMgYW5kIHlvdSBnZXQgYSBwcm9tcHQgYXQgdGhlIHByb2dyYW0KKyAgICAgICAgICBzdGFydGluZyBwb2ludC4gVGhlbiB5b3UgY2FuIHNldCBicmVha3BvaW50czoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2NyZWVuPgorICBiIFJvdXRpbmVOYW1lICAgICAgKGJ5IG91dGluZSBuYW1lKSBPUgorICBiICoweDgxMjU3NSAgICAgICAgKGJ5IGFkZHJlc3MpCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGVuIHlvdSBoaXQgPGNvbW1hbmQ+YzwvY29tbWFuZD4gKGNvbnRpbnVlKSB0byBydW4gdGhlCisgICAgICAgICAgcHJvZ3JhbS4gSXQgc3RvcHMgYXQgdGhlIGJyZWFrcG9pbnQuIFlvdSBjYW4gdHlwZQorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CisgIHN0ZXAgICAgICAgICAgICAgICAodG8gc3RlcCBvbmUgbGluZSkgT1IKKyAgc3RlcGkgICAgICAgICAgICAgICh0byBzdGVwIG9uZSBtYWNoaW5lIGluc3RydWN0aW9uIGF0IGEgdGltZTsKKyAgICAgICAgICAgICAgICAgICAgICBoZXJlLCBpdCBoZWxwcyB0byBrbm93IHRoZSBiYXNpYyAzODYKKyAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbiBzZXQpCisgIGluZm8gcmVnICAgICAgICAgICAodG8gc2VlIHJlZ2lzdGVycykKKyAgaW5mbyBzdGFjayAgICAgICAgICh0byBzZWUgaGV4IHZhbHVlcyBpbiB0aGUgc3RhY2spCisgIGluZm8gbG9jYWwgICAgICAgICAodG8gc2VlIGxvY2FsIHZhcmlhYmxlcykKKyAgbGlzdCAmbHQ7bGluZSBudW1iZXI+ICh0byBsaXN0IHNvdXJjZSBjb2RlKQorICB4ICZsdDt2YXJpYWJsZSBuYW1lPiAgKHRvIGV4YW1pbmUgYSB2YXJpYWJsZTsgb25seSB3b3JrcyBpZiBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9uKQorICB4IDB4NDI2OTk3OCAgICAgICAgKHRvIGV4YW1pbmUgYSBtZW1vcnkgbG9jYXRpb24pCisgID8gICAgICAgICAgICAgICAgICAoaGVscCkKKyAgcSAgICAgICAgICAgICAgICAgIChxdWl0KQorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQnkgaGl0dGluZyA8a2V5Y2FwPkVudGVyPC9rZXljYXA+LCB5b3UgcmVwZWF0IHRoZSBsYXN0CisgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QxPgorCisKKyAgICA8c2VjdDEgaWQ9Im1lbW9yeS1hZGRyZXNzZXMiPgorICAgICAgPHRpdGxlPlVzZWZ1bCBtZW1vcnkgYWRkcmVzc2VzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXaW5lIHVzZXMgc2V2ZXJhbCBkaWZmZXJlbnQga2luZHMgb2YgbWVtb3J5IGFkZHJlc3Nlcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+CisgICAgICAgICAgICBXaW4zMi8ibm9ybWFsIiBXaW5lIGFkZHJlc3Nlcy9MaW51eDogbGluZWFyIGFkZHJlc3Nlcy4KKyAgICAgICAgICA8L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIExpbmVhciBhZGRyZXNzZXMgY2FuIGJlIGV2ZXJ5dGhpbmcgZnJvbSAweDAgdXAgdG8KKyAgICAgICAgICAgICAgMHhmZmZmZmZmZi4gIEluIFdpbmUgb24gTGludXggdGhleSBhcmUgb2Z0ZW4gYXJvdW5kCisgICAgICAgICAgICAgIGUuZy4gMHgwODAwMDAwMCwgMHgwMDQwMDAwMCAoc3RkLiBXaW4zMiBwcm9ncmFtIGxvYWQKKyAgICAgICAgICAgICAgYWRkcmVzcyksIDB4NDAwMDAwMDAuICBFdmVyeSBXaW4zMiBwcm9jZXNzIGhhcyBpdHMgb3duCisgICAgICAgICAgICAgIHByaXZhdGUgNEdCIGFkZHJlc3Mgc3BhY2UgKHRoYXQgaXMsIGZyb20gMHgwIHVwIHRvCisgICAgICAgICAgICAgIDB4ZmZmZmZmZmYpLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPgorICAgICAgICAgICAgV2luMTYgImVuaGFuY2VkIG1vZGUiOiBzZWdtZW50ZWQgYWRkcmVzc2VzLgorICAgICAgICAgIDwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGhlc2UgYXJlIHRoZSAibm9ybWFsIiBXaW4xNiBhZGRyZXNzZXMsIGNhbGxlZCBTRUdQVFIuCisgICAgICAgICAgICAgIFRoZXkgaGF2ZSBhIHNlZ21lbnQ6b2Zmc2V0IG5vdGF0aW9uLCBlLmcuIDB4MDFkNzoweDAwMTIuCisgICAgICAgICAgICAgIFRoZSBzZWdtZW50IHBhcnQgdXN1YWxseSBpcyBhICJzZWxlY3RvciIsIHdoaWNoICphbHdheXMqCisgICAgICAgICAgICAgIGhhcyB0aGUgbG93ZXN0IDMgYml0cyBzZXQuICBTb21lIHNhbXBsZSBzZWxlY3RvcnMgYXJlCisgICAgICAgICAgICAgIDB4MWY3LCAweDE2ZiwgMHg4Zi4gIElmIHRoZXNlIGJpdHMgYXJlIHNldCBleGNlcHQgZm9yCisgICAgICAgICAgICAgIHRoZSBsb3dlc3QgYml0LCBhcyBlLmcuIHdpdGggMHgxZjYseGkgdGhlbiBpdCBtaWdodCBiZSBhCisgICAgICAgICAgICAgIGhhbmRsZSB0byBnbG9iYWwgbWVtb3J5LiBKdXN0IHNldCB0aGUgbG93ZXN0IGJpdCB0byBnZXQKKyAgICAgICAgICAgICAgdGhlIHNlbGVjdG9yIGluIHRoZXNlIGNhc2VzLiAgQSBzZWxlY3RvciBraW5kIG9mCisgICAgICAgICAgICAgICJwb2ludHMiIHRvIGEgY2VydGFpbiBsaW5lYXIgKHNlZSBhYm92ZSkgYmFzZSBhZGRyZXNzLgorICAgICAgICAgICAgICBJdCBoYXMgbW9yZSBvciBsZXNzIHRocmVlIGltcG9ydGFudCBhdHRyaWJ1dGVzOiBzZWdtZW50CisgICAgICAgICAgICAgIGJhc2UgYWRkcmVzcywgc2VnbWVudCBsaW1pdCwgc2VnbWVudCBhY2Nlc3MgcmlnaHRzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEV4YW1wbGU6CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgU2VsZWN0b3IgMHgxZjcgKDB4NDAzMjAwMDAsIDB4MDAwMGZmZmYsIHIteCkgU28gMHgxZjcKKyAgICAgICAgICAgICAgaGFzIGEgYmFzZSBhZGRyZXNzIG9mIDB4NDAzMjAwMDAsIHRoZSBzZWdtZW50J3MgbGFzdAorICAgICAgICAgICAgICBhZGRyZXNzIGlzIDB4NDAzMmZmZmYgKGxpbWl0IDB4ZmZmZiksIGFuZCBpdCdzIHJlYWRhYmxlCisgICAgICAgICAgICAgIGFuZCBleGVjdXRhYmxlLiAgU28gYW4gYWRkcmVzcyBvZiAweDFmNzoweDIzMDAgd291bGQgYmUKKyAgICAgICAgICAgICAgdGhlIGxpbmVhciBhZGRyZXNzIG9mIDB4NDAzMjIzMDAuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+CisgICAgICAgICAgICBET1MvV2luMTYgInN0YW5kYXJkIG1vZGUiCisgICAgICAgICAgPC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGV5LCB0b28sIGhhdmUgYSBzZWdtZW50Om9mZnNldCBub3RhdGlvbi4gIEJ1dCB0aGV5IGFyZQorICAgICAgICAgICAgICBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tICJub3JtYWwiIFdpbjE2IGFkZHJlc3NlcywgYXMKKyAgICAgICAgICAgICAgdGhleSBqdXN0IHJlcHJlc2VudCBhdCBtb3N0IDFNQiBvZiBtZW1vcnk6IFRoZSBzZWdtZW50CisgICAgICAgICAgICAgIHBhcnQgY2FuIGJlIGFueXRoaW5nIGZyb20gMCB0byAweGZmZmYsIGFuZCBpdCdzIHRoZSBzYW1lCisgICAgICAgICAgICAgIHdpdGggdGhlIG9mZnNldCBwYXJ0LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIE5vdyB0aGUgc3RyYW5nZSB0aGluZyBpcyB0aGUgY2FsY3VsYXRpb24gdGhhdCdzIGJlaGluZAorICAgICAgICAgICAgICB0aGVzZSBhZGRyZXNzZXM6IEp1c3QgY2FsY3VsYXRlIHNlZ21lbnQqMTYgKyBvZmZzZXQgaW4KKyAgICAgICAgICAgICAgb3JkZXIgdG8gZ2V0IGEgImxpbmVhciBET1MiIGFkZHJlc3MuICBTbworICAgICAgICAgICAgICBlLmcuIDB4MGYwNDoweDM2MjggcmVzdWx0cyBpbiAweGYwNDAgKyAweDM2MjggPSAweDEyNjY4LgorICAgICAgICAgICAgICBBbmQgdGhlIGhpZ2hlc3QgYWRkcmVzcyB5b3UgY2FuIGdldCBpcyAweGZmZmZmICgxTUIpLCBvZgorICAgICAgICAgICAgICBjb3Vyc2UuICBJbiBXaW5lLCB0aGlzICJsaW5lYXIgRE9TIiBhZGRyZXNzIG9mIDB4MTI2NjgKKyAgICAgICAgICAgICAgaGFzIHRvIGJlIGFkZGVkIHRvIHRoZSBsaW5lYXIgYmFzZSBhZGRyZXNzIG9mIHRoZQorICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIERPUyBtZW1vcnkgYWxsb2NhdGVkIGZvciBkb3Ntb2QgaW4gb3JkZXIKKyAgICAgICAgICAgICAgdG8gZ2V0IHRoZSB0cnVlIGxpbmVhciBhZGRyZXNzIG9mIGEgRE9TIHNlZzpvZmZzCisgICAgICAgICAgICAgIGFkZHJlc3MuICBBbmQgbWFrZSBzdXJlIHRoYXQgeW91J3JlIGRvaW5nIHRoaXMgaW4gdGhlCisgICAgICAgICAgICAgIGNvcnJlY3QgcHJvY2VzcyB3aXRoIHRoZSBjb3JyZWN0IGxpbmVhciBhZGRyZXNzIHNwYWNlLAorICAgICAgICAgICAgICBvZiBjb3Vyc2UgOy0pCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkYmctY29uZmlnIj4KKyAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uPC90aXRsZT4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+UmVnaXN0cnkgY29uZmlndXJhdGlvbjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGhlIFdpbmRvd3MnIGRlYnVnZ2luZyBBUEkgdXNlcyBhIHJlZ2lzdHJ5IGVudHJ5IHRvIGtub3cKLSAgICAgICAgICB3aXRoIGRlYnVnZ2VyICB0byBpbnZva2Ugd2hlbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uCi0gICAgICAgICAgb2NjdXJzIChzZWUgSUkuMyBmb3Igc29tZSBkZXRhaWxzKS4gVHdvIHZhbHVlcyBpbiBrZXkgCisgICAgICAgICAgd2hpY2ggZGVidWdnZXIgdG8gaW52b2tlIHdoZW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiBvY2N1cnMKKyAgICAgICAgICAoc2VlIDxsaW5rIGVuZHRlcm09ImRiZy1leGNlcHRpb24tdGl0bGUiCisgICAgICAgICAgbGlua2VuZD0iZGJnLW9uLWV4Y2VwdGlvbiI+PC9saW5rPiBmb3Igc29tZSBkZXRhaWxzKS4gVHdvCisgICAgICAgICAgdmFsdWVzIGluIGtleQogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KICJNQUNISU5FXFxTb2Z0d2FyZVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvblxcQWVEZWJ1ZyIKQEAgLTI4MCw2ICs5NjMsOCBAQAogICAgICAgICAgICAgICAgICg8Y29tbWFuZD5XaW5lRGJnPC9jb21tYW5kPiBjYW4gb2YgY291cnNlIGJlIHVzZWQsIGJ1dAogICAgICAgICAgICAgICAgIGFueSBvdGhlciBXaW5kb3dzJyBkZWJ1Z2dpbmcgQVBJIGF3YXJlIGRlYnVnZ2VyIHdpbGwKICAgICAgICAgICAgICAgICBkbykuCisJCVRoZSBwYXRoIHRvIHRoZSBkZWJ1Z2dlciB5b3UgY2hvc2UgdG8gdXNlIG11c3QgYmUgcmVhY2hhYmxlCisJCXZpYSBhIERPUyBkcml2ZSBpbiB0aGUgV2luZSBjb25maWcgZmlsZSAhCiAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0zMzEsMTIgKzEwMTYsMTIgQEAKICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklJSS4yIFdpbmVEYmcgY29uZmlndXJhdGlvbjwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5XaW5lRGJnIGNvbmZpZ3VyYXRpb248L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIDxjb21tYW5kPldpbmVEYmc8L2NvbW1hbmQ+IGNhbiBiZSBjb25maWd1cmVkIHRocnUgYSBudW1iZXIKICAgICAgICAgICBvZiBvcHRpb25zLiBUaG9zZSBvcHRpb25zIGFyZSBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LCBvbiBhCi0gICAgICAgICAgcGVyIHVzZXIgYmFzaXMuIFRoZSBrZXkgaXMgKGluICpteSogcmVnaXN0cnkpCisgICAgICAgICAgcGVyIHVzZXIgYmFzaXMuIFRoZSBrZXkgaXMgKGluIDxlbXBoYXNpcz5teTwvZW1waGFzaXM+IHJlZ2lzdHJ5KQogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIFtlcmljXFxTb2Z0d2FyZVxcV2luZVxcV2luZURiZ10KQEAgLTM0NCw3ICsxMDI5LDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGhvc2Ugb3B0aW9ucyBjYW4gYmUgcmVhZC93cml0dGVuIHdoaWxlIGluc2lkZQogICAgICAgICAgIDxjb21tYW5kPldpbmVEYmc8L2NvbW1hbmQ+LCBhcyBwYXJ0IG9mIHRoZSBkZWJ1Z2dlcgotICAgICAgICAgIGV4cHJlc3Npb25zLiBUbyByZWZlciB0byBvbmUgb2YgdGhpcyBvcHRpb24sIGl0cyBuYW1lIG11c3QKKyAgICAgICAgICBleHByZXNzaW9ucy4gVG8gcmVmZXIgdG8gb25lIG9mIHRoZXNlIG9wdGlvbnMsIGl0cyBuYW1lIG11c3QKICAgICAgICAgICBiZSAgcHJlZml4ZWQgYnkgYSA8bGl0ZXJhbD4kPC9saXRlcmFsPiBzaWduLiBGb3IgZXhhbXBsZSwgCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHByb2dyYW1saXN0aW5nPgpAQCAtMzY3LDcgKzEwNTIsNyBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3QzPgotICAgICAgICAgIDx0aXRsZT5JSUkuMi4xIENvbnRyb2xpbmcgd2hlbiB0aGUgZGVidWdnZXIgaXMgZW50ZXJlZDwvdGl0bGU+CisgICAgICAgICAgPHRpdGxlPkNvbnRyb2xsaW5nIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIGVudGVyZWQ8L3RpdGxlPgogCiAgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC00MzcsNyArMTEyMiw3IEBACiAgICAgICAgIDwvc2VjdDM+CiAKICAgICAgICAgPHNlY3QzPgotICAgICAgICAgIDx0aXRsZT5JSUkuMi4yIE91dHB1dCBoYW5kbGluZzwvdGl0bGU+CisgICAgICAgICAgPHRpdGxlPk91dHB1dCBoYW5kbGluZzwvdGl0bGU+CiAKICAgICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KQEAgLTUyNyw3ICsxMjEyLDcgQEAKICAgICAgICAgPC9zZWN0Mz4KICAgICAgICAgCiAgICAgICAgIDxzZWN0Mz4KLSAgICAgICAgICA8dGl0bGU+SUlJLjIuMiBDb250ZXh0IGluZm9ybWF0aW9uPC90aXRsZT4KKyAgICAgICAgICA8dGl0bGU+Q29udGV4dCBpbmZvcm1hdGlvbjwvdGl0bGU+CiAKICAgICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KQEAgLTU1OSwyNSArMTI0NCwxNCBAQAogICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0Mz4KICAgICAgIDwvc2VjdDI+Ci0gICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JSUkuMyBGaW5kaW5nIGZpbGVzPC90aXRsZT4KLSAgICAgICAgCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFdpbmVEYmcgdXNlcyBzb21lIGxvb2t1cCBhbGdvcml0aG1zIHRvIGZpbmQgdGhlIGZpbGVzIGNvbnRhaW5pbmcgCi0gICAgICAgICAgdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gRm9yIEVMRiBmaWxlcywgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCAKLSAgICAgICAgICB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBwb2ludGVkIGJ5IFBBVEgsIExEX0xJQlJBUllfUEFUSCBhcmUgCi0gICAgICAgICAgc2VhcmNoZWQgKGluIHRoYXQgb3JkZXIpLiBGb3IgTWljcm9zb2Z0IGRlYnVnZ2luZyBmaWxlcywgCi0gICAgICAgICAgY3VycmVudCBkaXJlY3RvcnksIGFuZCBkaXJlY3RvcmllcyBwb2ludGVkIGJ5IF9OVF9TWU1CT0xfUEFUSCBhbmQKLQkgIF9OVF9BTFRfU1lNQk9MX1BBVEggKGluIHRoYXQgb3JkZXIpIGFyZSBzZWFyY2hlZC4KLSAgICAgICAgPC9wYXJhPgotICAgICAgPC9zZWN0Mj4KICAgICA8L3NlY3QxPgogCisKICAgICA8c2VjdDEgaWQ9ImRiZy1jb21tYW5kcyI+Ci0gICAgICA8dGl0bGU+SVYgV2luZURiZyBjb21tYW5kczwvdGl0bGU+CisgICAgICA8dGl0bGU+V2luZURiZyBDb21tYW5kIFJlZmVyZW5jZTwvdGl0bGU+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklWLjEgTWlzYzwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5NaXNjPC90aXRsZT4KIAogICAgICAgICA8c2NyZWVuPgogYWJvcnQJCWFib3J0cyB0aGUgZGVidWdnZXIKQEAgLTU5Nyw3ICsxMjcxLDcgQEAKICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklWLjIgRmxvdyBjb250cm9sPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPkZsb3cgY29udHJvbDwvdGl0bGU+CiAKICAgICAgICAgPHNjcmVlbj4KIGNvbnQJCWNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBuZXh0IGJyZWFrcG9pbnQgb3IgZXhjZXB0aW9uLgpAQCAtNjIwLDcgKzEyOTQsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SVYuMyBCcmVha3BvaW50cywgd2F0Y2ggcG9pbnRzPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPkJyZWFrcG9pbnRzLCB3YXRjaCBwb2ludHM8L3RpdGxlPgogCiAgICAgICAgIDxzY3JlZW4+CiBlbmFibGUgTgllbmFibGVzIChicmVha3x3YXRjaClwb2ludCAjTgpAQCAtNjQ0LDcgKzEzMTgsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SVYuNCBTdGFjayBtYW5pcHVsYXRpb248L3RpdGxlPgorICAgICAgICA8dGl0bGU+U3RhY2sgbWFuaXB1bGF0aW9uPC90aXRsZT4KIAogICAgICAgICA8c2NyZWVuPgogYnQJCXByaW50IGNhbGxpbmcgc3RhY2sgb2YgY3VycmVudCB0aHJlYWQKQEAgLTY1OSw3ICsxMzMzLDcgQEAKICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklWLjUgRGlyZWN0b3J5ICYgc291cmNlIGZpbGUgbWFuaXB1bGF0aW9uPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPkRpcmVjdG9yeSAmIHNvdXJjZSBmaWxlIG1hbmlwdWxhdGlvbjwvdGl0bGU+CiAKICAgICAgICAgPHNjcmVlbj4KIHNob3cgZGlyCkBAIC02ODcsNyArMTM2MSw3IEBACiAgICAgICA8L3NlY3QyPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JVi42IERpc3BsYXlpbmc8L3RpdGxlPgorICAgICAgICA8dGl0bGU+RGlzcGxheWluZzwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgQSBkaXNwbGF5IGlzIGFuIGV4cHJlc3Npb24gdGhhdCdzIGV2YWx1YXRlZCBhbmQgcHJpbnRlZApAQCAtNzA3LDcgKzEzODEsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SVYuNyBEaXNhc3NlbWJseTwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5EaXNhc3NlbWJseTwvdGl0bGU+CiAKICAgICAgICAgPHNjcmVlbj4KIGRpc2FzCQlkaXNhc3NlbWJsZSBmcm9tIGN1cnJlbnQgcG9zaXRpb24KQEAgLTcxOCw3ICsxMzkyLDcgQEAKICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklWLjggSW5mb3JtYXRpb24gb24gV2luZSdzIGludGVybmFsczwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5JbmZvcm1hdGlvbiBvbiBXaW5lJ3MgaW50ZXJuYWxzPC90aXRsZT4KIAogICAgICAgICA8c2NyZWVuPgogaW5mbyBjbGFzcyAmbHQ7aWQmZ3Q7CXByaW50cyBpbmZvcm1hdGlvbiBvbiBXaW5kb3dzJ3MgY2xhc3MgJmx0O2lkJmd0OwpAQCAtNzQ3LDcgKzE0MjEsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SVYuOSBNZW1vcnkgKHJlYWRpbmcsIHdyaXRpbmcsIHR5cGluZyk8L3RpdGxlPgorICAgICAgICA8dGl0bGU+TWVtb3J5IChyZWFkaW5nLCB3cml0aW5nLCB0eXBpbmcpPC90aXRsZT4KIAogICAgICAgICA8c2NyZWVuPgogeCAmbHQ7ZXhwciZndDsJZXhhbWluZXMgbWVtb3J5IGF0ICZsdDtleHByJmd0OyBhZGRyZXNzCkBAIC03NzYsMTEgKzE0NTAsMTIgQEAKICAgICAgIDwvc2VjdDI+CiAgICAgPC9zZWN0MT4KIAorCiAgICAgPHNlY3QxIGlkPSJkYmctb3RoZXJzIj4KLSAgICAgIDx0aXRsZT5WIE90aGVyIGRlYnVnZ2VyczwvdGl0bGU+CisgICAgICA8dGl0bGU+T3RoZXIgZGVidWdnZXJzPC90aXRsZT4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+Vi4xIFVzaW5nIG90aGVyIFVuaXggZGVidWdnZXJzPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPlVzaW5nIG90aGVyIFVuaXggZGVidWdnZXJzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIG90aGVyIGRlYnVnZ2VycyAobGlrZQpAQCAtNzk1LDcgKzE0NzAsNyBAQAogICAgICAgICAgIDx2YXJuYW1lPnVwaWRzPC92YXJuYW1lPiBhcmUgZm9yIHRoZSBXaW5kb3dzJyBhcHBsaWNhdGlvbgogICAgICAgICAgIHJ1bm5pbmcgdGhlIGRlc2t0b3AsIHRoZSBmaXJzdCB0aHJlYWQgb2YgdGhlIGFwcGxpY2F0aW9uIGlzCiAgICAgICAgICAgZ2VuZXJhbGx5IHRoZSB0aGlyZCA8dmFybmFtZT51cGlkPC92YXJuYW1lPjsgd2hlbiBydW5uaW5nIGEKLSAgICAgICAgICBXaW5lTGliIHByb2dyYW0sIHRoZSBmaXJzdCB0aHJlYWQgb2YgdGhlIGFwcGxpY2F0aW9uIGlzCisgICAgICAgICAgV2luZWxpYiBwcm9ncmFtLCB0aGUgZmlyc3QgdGhyZWFkIG9mIHRoZSBhcHBsaWNhdGlvbiBpcwogICAgICAgICAgIGdlbmVyYWxseSB0aGUgZmlyc3QgPHZhcm5hbWU+dXBpZDwvdmFybmFtZT4pCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPG5vdGU+CkBAIC04MDksMTAgKzE0ODQsNzIgQEAKICAgICAgICAgICAgIHRocmVhZCB5b3Ugd2lzaCB0byBkZWJ1Zy4KICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbm90ZT4KKworICAgICAgICA8IS0tICoqKiBFeHRyYSBjb250ZW50IHNwbGljZWQgaW4gZnJvbSBhcnRpY2xlIGJ5IEFuZHJlYXMgTW9ociAqKiogLS0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZvbGxvd2luZyB0ZXh0IHdyaXR0ZW4gYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEhlcmUncyBob3cgdG8gZ2V0IGluZm8gYWJvdXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXR1cyBvZiBhCisgICAgICAgICAgY2VydGFpbiBXaW5lIHByb2Nlc3M6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQ2hhbmdlIGludG8geW91ciBXaW5lIHNvdXJjZSBkaXIgYW5kIGVudGVyOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CiskIGdkYiB3aW5lCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBTd2l0Y2ggdG8gYW5vdGhlciBjb25zb2xlIGFuZCBlbnRlciA8Y29tbWFuZD5wcyBheCB8IGdyZXAKKyAgICAgICAgICAgIHdpbmU8L2NvbW1hbmQ+IHRvIGZpbmQgYWxsIHdpbmUgcHJvY2Vzc2VzLiBJbnNpZGUKKyAgICAgICAgICA8Y29tbWFuZD5nZGI8L2NvbW1hbmQ+LCByZXBlYXQgZm9yIGFsbCBXaW5lIHByb2Nlc3NlczoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2NyZWVuPgorKGdkYikgYXR0YWNoIDx1c2VyaW5wdXQ+UElEPC91c2VyaW5wdXQ+CisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICB3aXRoIDx1c2VyaW5wdXQ+UElEPC91c2VyaW5wdXQ+IGJlaW5nIHRoZSBwcm9jZXNzIElEIG9mIG9uZSBvZgorICAgICAgICAgIHRoZSBXaW5lIHByb2Nlc3Nlcy4gIFVzZQorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CisoZ2RiKSBidAorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgdG8gZ2V0IHRoZSBiYWNrdHJhY2Ugb2YgdGhlIGN1cnJlbnQgV2luZSBwcm9jZXNzLCBpLmUuIHRoZQorICAgICAgICAgIGZ1bmN0aW9uIGNhbGwgaGlzdG9yeS4gIFRoYXQgd2F5IHlvdSBjYW4gZmluZCBvdXQgd2hhdCB0aGUKKyAgICAgICAgICBjdXJyZW50IHByb2Nlc3MgaXMgZG9pbmcgcmlnaHQgbm93LiAgQW5kIHRoZW4geW91IGNhbiB1c2UKKyAgICAgICAgICBzZXZlcmFsIHRpbWVzOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CisoZ2RiKSBuCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBvciBtYXliZSBldmVuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNjcmVlbj4KKyhnZGIpIGIgPHVzZXJpbnB1dD5Tb21lRnVuY3Rpb248L3VzZXJpbnB1dD4KKyAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIGFuZAorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CisoZ2RiKSBjCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICB0byBzZXQgYSBicmVha3BvaW50IGF0IGEgY2VydGFpbiBmdW5jdGlvbiBhbmQgY29udGludWUgdXAgdG8KKyAgICAgICAgICB0aGF0IGZ1bmN0aW9uLiAgRmluYWxseSB5b3UgY2FuIGVudGVyCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNjcmVlbj4KKyhnZGIpIGRldGFjaAorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgdG8gZGV0YWNoIGZyb20gdGhlIFdpbmUgcHJvY2Vzcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8IS0tICoqKiBFbmQgb2YgeHRyYSBjb250ZW50ICoqKiAtLT4KICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPlYuMiBVc2luZyBvdGhlciBXaW5kb3dzIGRlYnVnZ2VyczwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5Vc2luZyBvdGhlciBXaW5kb3dzIGRlYnVnZ2VyczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgWW91IGNhbiB1c2UgYW55IFdpbmRvd3MnIGRlYnVnZ2luZyBBUEkgY29tcGxpYW50IGRlYnVnZ2VyCkBAIC04MjMsNyArMTU2MCw3IEBACiAgICAgICA8L3NlY3QyPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5WLjMgTWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHdpbmVkYmcgYW5kIHJlZ3VsYXIgVW5peCBkZWJ1Z2dlcnM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+TWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHdpbmVkYmcgYW5kIHJlZ3VsYXIgVW5peCBkZWJ1Z2dlcnM8L3RpdGxlPgogCiAgICAgICAgIDwhLS0gRklYTUU6IGNvbnZlcnQgdGhpcyBpbnRvIGEgdGFibGUgLS0+CiAgICAgICAgIDxzY3JlZW4+CkBAIC04NDYsOCArMTU4Myw5IEBACiAgICAgICA8L3NlY3QyPgogICAgIDwvc2VjdDE+CiAKKwogICAgIDxzZWN0MSBpZD0iZGJnLWxpbWl0cyI+Ci0gICAgICA8dGl0bGU+VkkgTGltaXRhdGlvbnM8L3RpdGxlPgorICAgICAgPHRpdGxlPkxpbWl0YXRpb25zPC90aXRsZT4KIAogICAgICAgPHBhcmE+CiAgICAgICAgIDE2IGJpdCBwcm9jZXNzZXMgYXJlIG5vdCBzdXBwb3J0ZWQgKGJ1dCBjYWxscyB0byAxNiBiaXQgY29kZQpAQCAtODYwLDYgKzE1OTgsNiBAQAogPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCiBMb2NhbCB2YXJpYWJsZXM6CiBtb2RlOiBzZ21sCi1zZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCBiL2RvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwKaW5kZXggZmZkMTYxMi4uNGZkYmU0MiAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sCkBAIC0xLDExICsxLDggQEAKICAgPGNoYXB0ZXIgaWQ9ImRlYnVnZ2luZyI+Ci0gICAgPHRpdGxlPkRlYnVnZ2luZyBXaW5lPC90aXRsZT4KLQotICAgIDxzZWN0MSBpZD0iZGVidWctbXNnIj4KLSAgICAgIDx0aXRsZT5EZWJ1ZyBNZXNzYWdlczwvdGl0bGU+CisgICAgPHRpdGxlPkRlYnVnIExvZ2dpbmc8L3RpdGxlPgogCiAgICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBEaW1pdHJpZSBPLiBQYXVuIDxlbWFpbD5kaW1pQGNzLnRvcm9udG8uZWR1PC9lbWFpbD4sIDI4IE1hciAxOTk4CisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZGltaXRyaWUtcGF1bjsgPGVtYWlsPiZlbWFpbC1kaW1pdHJpZS1wYXVuOzwvZW1haWw+LCAyOCBNYXIgMTk5OAogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2RlYnVnLW1zZ3M8L2ZpbGVuYW1lPikKQEAgLTM2LDcgKzMzLDcgQEAKICAgICAgICAgPC9wYXJhPgogICAgICAgPC9pbXBvcnRhbnQ+CiAKLSAgICAgIDxzZWN0Mj4KKyAgICAgIDxzZWN0MSBpZD0iZGJnLWNsYXNzZXMiPgogICAgICAgICA8dGl0bGU+RGVidWdnaW5nIGNsYXNzZXM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTUxLDkgKzE0OCw5IEBACiAgICAgICAgICAgb2ZmIGFuZCBjZXJ0YWluIGNsYXNzZXMgb2YgbWVzc2FnZXMgbWF5IGJlIGNvbXBsZXRlbHkKICAgICAgICAgICBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUgdG8gcmVkdWNlIHRoZSAgc2l6ZSBvZiBXaW5lLgogICAgICAgICA8L3BhcmE+Ci0gICAgICA8L3NlY3QyPgorICAgICAgPC9zZWN0MT4KIAotICAgICAgPHNlY3QyPgorICAgICAgPHNlY3QxIGlkPSJkYmctY2hhbm5lbHMiPgogICAgICAgICA8dGl0bGU+RGVidWdnaW5nIGNoYW5uZWxzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KQEAgLTIwMiw5ICsxOTksOSBAQAogV0FSTihyZWcsICJDb3VsZCBub3QgYWNjZXNzIGtleSFcbiIpOwogICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgIDwvbm90ZT4KLSAgICAgIDwvc2VjdDI+CisgICAgICA8L3NlY3QxPgogCi0gICAgICA8c2VjdDI+CisgICAgICA8c2VjdDEgaWQ9ImRiZy11c2luZyI+CiAgICAgICAgIDx0aXRsZT5Ib3cgdG8gdXNlIGl0PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KQEAgLTIxNiw3ICsyMTMsNyBAQAogCiAuLi4uCiAKLVlZWSh4eHgsICImbHQ7bWVzc2FnZSZndDsiLCAuLi4pOworWVlZKHh4eCwgIiZsdDttZXNzYWdlPiIsIC4uLik7CiAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNvbWUgZXhhbXBsZXMgZnJvbSB0aGUgY29kZToKQEAgLTI3Nyw5ICsyNzQsOSBAQAogICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L25vdGU+Ci0gICAgICA8L3NlY3QyPgorICAgICAgPC9zZWN0MT4KIAotICAgICAgPHNlY3QyPgorICAgICAgPHNlY3QxIGlkPSJkYmctY2hlY2tpbmciPgogICAgICAgICA8dGl0bGU+QXJlIHdlIGRlYnVnZ2luZz88L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMzEwLDkgKzMwNyw5IEBACiAgICAgICAgICAgICB1c2VkIG9ubHkgb25jZSEpIGFyZSB1c2VkIGluIFdpbmUuCiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L25vdGU+Ci0gICAgICA8L3NlY3QyPgorICAgICAgPC9zZWN0MT4KIAotICAgICAgPHNlY3QyPgorICAgICAgPHNlY3QxIGlkPSJkYmctaW4tbWVtb3J5Ij4KICAgICAgICAgPHRpdGxlPkluLW1lbW9yeSBtZXNzYWdlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CkBAIC0zMzgsNyArMzM1LDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICBwcmludCBpbiBpdCB3aXRoOgogICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgotZHNwcmludGYobmFtZSwgIiZsdDttZXNzYWdlJmd0OyIsIC4uLik7Citkc3ByaW50ZihuYW1lLCAiJmx0O21lc3NhZ2U+IiwgLi4uKTsKICAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgICAgIHdoaWNoIGlzIGp1c3QgbGlrZSBhIDxmdW5jdGlvbj5zcHJpbnRmPC9mdW5jdGlvbj4KICAgICAgICAgICAgICAgZnVuY3Rpb24gYnV0IGluc3RlYWQgb2YgYSBDIHN0cmluZyBhcyBmaXJzdCBwYXJhbWV0ZXIgaXQKQEAgLTM3MCwxMyArMzY3LDEzIEBACiAgIExQSU5UMTYgcCA9IChMUElOVDE2KXRhYnM7CiAgIGRiZ19kZWNsX3N0cihsaXN0Ym94LCAyNTYpOyAgICAgICAgICAgICAgICAgICAvKiBkZWNsYXJlIHRoZSBzdHJpbmcgKi8KIAotICBmb3IgKGkgPSAwOyBpICZsdDsgZGVzY3ItJmd0O25iX3RhYnM7IGkrKykgewotICAgIGRlc2NyLSZndDt0YWJzW2ldID0gKnArKyZsdDsmbHQ7MTsgCisgIGZvciAoaSA9IDA7IGkgJmx0OyBkZXNjci0+bmJfdGFiczsgaSsrKSB7CisgICAgZGVzY3ItPnRhYnNbaV0gPSAqcCsrJmx0OyZsdDsxOyAKICAgICBpZihUUkFDSU5HKGxpc3Rib3gpKSAgICAgICAgICAgICAgICAgICAgICAgICAvKiB3cml0ZSBpbiBpdCBvbmx5IGlmCi0gICAgICBkc3ByaW50ZihsaXN0Ym94LCAiJWhkICIsIGRlc2NyLSZndDt0YWJzW2ldKTsgLyogd2UgYXJlIGdvbm5hIG91dHB1dCBpdCAqLworICAgICAgZHNwcmludGYobGlzdGJveCwgIiVoZCAiLCBkZXNjci0+dGFic1tpXSk7IC8qIHdlIGFyZSBnb25uYSBvdXRwdXQgaXQgKi8KICAgfQogICBUUkFDRShsaXN0Ym94LCAiTGlzdGJveCAlMDR4OiBzZXR0YWJzdG9wcyAlcyIsIAotCXduZC0mZ3Q7aHduZFNlbGYsIGRiZ19zdHIobGlzdGJveCkpOyAgICAgICAgLyogb3V0cHV0IHRoZSB3aG9sZSB0aGluZyAqLworCXduZC0+aHduZFNlbGYsIGRiZ19zdHIobGlzdGJveCkpOyAgICAgICAgLyogb3V0cHV0IHRoZSB3aG9sZSB0aGluZyAqLwogfQogICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICA8cGFyYT4KQEAgLTM5MCwyMyArMzg3LDIzIEBACiAgIExQSU5UMTYgcCA9IChMUElOVDE2KXRhYnM7CiAgIGRiZ19kZWNsX3N0cihsaXN0Ym94LCAyNTYpOyAgICAgICAgICAgICAgICAgICAvKiBkZWNsYXJlIHRoZSBzdHJpbmcgICAgICAqLwogCi0gIGZvciAoaSA9IDA7IGkgJmx0OyBkZXNjci0mZ3Q7bmJfdGFiczsgaSsrKSB7Ci0gICAgZGVzY3ItJmd0O3RhYnNbaV0gPSAqcCsrJmx0OyZsdDsxOyAgCisgIGZvciAoaSA9IDA7IGkgJmx0OyBkZXNjci0+bmJfdGFiczsgaSsrKSB7CisgICAgZGVzY3ItPnRhYnNbaV0gPSAqcCsrJmx0OyZsdDsxOyAgCiAgICAgaWYoVFJBQ0lORyhsaXN0Ym94KSkgICAgICAgICAgICAgICAgICAgICAgICAgLyogd3JpdGUgaW4gaXQgb25seSBpZgotICAgICAgZHNwcmludGYobGlzdGJveCwgIiVoZCAiLCBkZXNjci0mZ3Q7dGFic1tpXSk7IC8qIHdlIGFyZSBnb25uYSBvdXRwdXQgaXQgKi8KKyAgICAgIGRzcHJpbnRmKGxpc3Rib3gsICIlaGQgIiwgZGVzY3ItPnRhYnNbaV0pOyAvKiB3ZSBhcmUgZ29ubmEgb3V0cHV0IGl0ICovCiAgIH0KICAgVFJBQ0UobGlzdGJveCwgIkxpc3Rib3ggJTA0eDogc2V0dGFic3RvcHMgJXNcbiIsIAotCXduZC0mZ3Q7aHduZFNlbGYsIGRiZ19zdHIobGlzdGJveCkpOyAgICAgICAgLyogb3V0cHV0IHRoZSB3aG9sZSB0aGluZyAqLworCXduZC0+aHduZFNlbGYsIGRiZ19zdHIobGlzdGJveCkpOyAgICAgICAgLyogb3V0cHV0IHRoZSB3aG9sZSB0aGluZyAqLwogCiAgIGRiZ19yZXNldF9zdHIobGlzdGJveCk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogISEhcmVzZXQgdGhlIHN0cmluZyEhISAqLwotICBmb3IgKGkgPSAwOyBpICZsdDsgZGVzY3ItJmd0O2V4dHJhaW5mb19ucjsgaSsrKSB7Ci0gICAgZGVzY3ItJmd0O2V4dHJhaW5mbyA9ICpwKzE7IAorICBmb3IgKGkgPSAwOyBpICZsdDsgZGVzY3ItPmV4dHJhaW5mb19ucjsgaSsrKSB7CisgICAgZGVzY3ItPmV4dHJhaW5mbyA9ICpwKzE7IAogICAgIGlmKFRSQUNJTkcobGlzdGJveCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdyaXRlIGluIGl0IG9ubHkgaWYKLSAgICAgIGRzcHJpbnRmKGxpc3Rib3gsIiUzZCAiLGRlc2NyLSZndDtleHRyYWluZm8pOyAvKiB3ZSBhcmUgZ29ubmEgb3V0cHV0IGl0ICovCisgICAgICBkc3ByaW50ZihsaXN0Ym94LCIlM2QgIixkZXNjci0+ZXh0cmFpbmZvKTsgLyogd2UgYXJlIGdvbm5hIG91dHB1dCBpdCAqLwogICB9CiAKICAgVFJBQ0UobGlzdGJveCwgIkxpc3Rib3ggJTA0eDogZXh0cmFpbmZvICVzXG4iLCAKLQl3bmQtJmd0O2h3bmRTZWxmLCBkYmdfc3RyKGxpc3Rib3gpKTsgICAgICAgIC8qIG91dHB1dCB0aGUgd2hvbGUgdGhpbmcgKi8KKwl3bmQtPmh3bmRTZWxmLCBkYmdfc3RyKGxpc3Rib3gpKTsgICAgICAgIC8qIG91dHB1dCB0aGUgd2hvbGUgdGhpbmcgKi8KIAogfQogICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgpAQCAtNDU5LDkgKzQ1Niw5IEBACiAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L2ltcG9ydGFudD4KLSAgICAgIDwvc2VjdDI+CisgICAgICA8L3NlY3QxPgogCi0gICAgICA8c2VjdDI+CisgICAgICA8c2VjdDEgaWQ9ImRiZy1yZXNvdXJjZS1pZHMiPgogICAgICAgICA8dGl0bGU+UmVzb3VyY2UgaWRlbnRpZmllcnM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNDk3LDcgKzQ5NCw3IEBACiAgICAgICAgICAgcmV0dXJucyBhIHN0cmluZyBvZiB0aGUgZm9ybToKICAgICAgICAgPC9wYXJhPgogICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci0nJmx0O2lkZW50aWZpZXImZ3Q7JworJyZsdDtpZGVudGlmaWVyPicKICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGh1cywgdG8gdXNlIGl0LCBkbyBzb21ldGhpbmcgb24gdGhlIGZvbGxvd2luZyBsaW5lczoKQEAgLTUwOSw5ICs1MDYsOSBAQAogCiAgICBZWVkoeHh4LCAicmVzb3VyY2UgaXMgJXMiLCBkZWJ1Z3JlcyhteXJlc291cmNlKSk7CiAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAgICA8L3NlY3QyPgorICAgICAgPC9zZWN0MT4KIAotICAgICAgPHNlY3QyPgorICAgICAgPHNlY3QxIGlkPSJkYmctcGFyYW0iPgogICAgICAgICA8dGl0bGU+VGhlIDxwYXJhbWV0ZXI+LS1kZWJ1Z21zZzwvcGFyYW1ldGVyPiBjb21tYW5kIGxpbmUgb3B0aW9uPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KQEAgLTU5OCw5ICs1OTUsOSBAQAogICAgICAgICAgICAgICBkZWZhdWx0PC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgPC9zZWN0Mj4KKyAgICAgIDwvc2VjdDE+CiAKLSAgICAgIDxzZWN0Mj4KKyAgICAgIDxzZWN0MSBpZD0iZGJnLWNvbXBpbGluZyI+CiAgICAgICAgIDx0aXRsZT5Db21waWxpbmcgT3V0IERlYnVnZ2luZyBNZXNzYWdlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CkBAIC02MjAsOSArNjE3LDkgQEAKICAgICAgICAgICBUaGlzIGZlYXR1cmUgaGFzIG5vdCBiZWVuIGV4dGVuc2l2ZWx5IHRlc3RlZC0taXQgbWF5IHN1YnRseQogICAgICAgICAgIGJyZWFrIHNvbWUgdGhpbmdzLgogICAgICAgICA8L3BhcmE+Ci0gICAgICA8L3NlY3QyPgorICAgICAgPC9zZWN0MT4KIAotICAgICAgPHNlY3QyPgorICAgICAgPHNlY3QxIGlkPSJkYmctbm90ZXMiPgogICAgICAgICA8dGl0bGU+QSBGZXcgTm90ZXMgb24gU3R5bGU8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNjMyLDcgKzYyOSw3IEBACiAgICAgICAgICAgb3V0cHV0IGZvcm1hdCBpcyB0aGUgZm9sbG93aW5nOgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxzY3JlZW4+Ci15eXk6eHh4OmZmZiAmbHQ7bWVzc2FnZSZndDsKK3l5eTp4eHg6ZmZmICZsdDttZXNzYWdlPgogCiB3aGVyZTogCiAgIHl5eSA9IHRoZSBjbGFzcyAoZml4bWUsIGVyciwgd2FybiwgdHJhY2UpCkBAIC02NDEsNyArNjM4LDcgQEAKICAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIHRoZXNlIGZpZWxkcyBhcmUgb3V0cHV0IGF1dG9tYXRpY2FsbHkuIEFsbCB5b3UgaGF2ZSB0bwotICAgICAgICAgIHByb3ZpZGUgaXMgdGhlICZsdDttZXNzYWdlJmd0OyBwYXJ0LgorICAgICAgICAgIHByb3ZpZGUgaXMgdGhlICZsdDttZXNzYWdlPiBwYXJ0LgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNvIGhlcmUgYXJlIHNvbWUgaWRlYXM6CkBAIC03ODAsNzc3ICs3NzcsMTMgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgIDwvc2VjdDI+Ci0gICAgPC9zZWN0MT4KKyAgICAgIDwvc2VjdDE+CiAKLSAgICA8c2VjdDEgaWQ9IndpbmUtZGVidWdnZXIiPgotICAgICAgPHRpdGxlPlVzaW5nIHRoZSBXaW5lIERlYnVnZ2VyPC90aXRsZT4KLQotICAgICAgPHBhcmE+Ci0gICAgICAgIHdyaXR0ZW4gYnkgTWFyY3VzIE1laXNzbmVyIDxlbWFpbD5tc21laXNzbkBjaXAuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU8L2VtYWlsPiwKLSAgICAgICAgYWRkaXRpb25zIHdlbGNvbWUuCi0gICAgICA8L3BhcmE+Ci0gICAgICA8cGFyYT4KLSAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vZGVidWdnaW5nPC9maWxlbmFtZT4pCi0gICAgICA8L3BhcmE+Ci0KLSAgICAgIDxwYXJhPgotICAgICAgICBUaGlzIGZpbGUgZGVzY3JpYmVzIHdoZXJlIHRvIHN0YXJ0IGRlYnVnZ2luZyBXaW5lLiBJZiBhdCBhbnkKLSAgICAgICAgcG9pbnQgeW91IGdldCBzdHVjayBhbmQgd2FudCB0byBhc2sgZm9yIGhlbHAsIHBsZWFzZSByZWFkIHRoZQotICAgICAgICBmaWxlIDxmaWxlbmFtZT5kb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM8L2ZpbGVuYW1lPiBmb3IKLSAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIHdyaXRlIHVzZWZ1bCBidWcgcmVwb3J0cy4KLSAgICAgIDwvcGFyYT4KLQotICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+Q3Jhc2hlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgVGhlc2UgdXN1YWxseSBzaG93IHVwIGxpa2UgdGhpczoKLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8c2NyZWVuPgotfFVuZXhwZWN0ZWQgV2luZG93cyBwcm9ncmFtIHNlZ2ZhdWx0IC0gb3Bjb2RlID0gOGIKLXxTZWdtZW50YXRpb24gZmF1bHQgaW4gV2luZG93cyBwcm9ncmFtIDFiNzpjNDEuCi18TG9hZGluZyBzeW1ib2xzIGZyb20gRUxGIGZpbGUgL3Jvb3Qvd2luZS93aW5lLi4uCi18Li4uLm1vcmUgTG9hZGluZyBzeW1ib2xzIGZyb20gLi4uCi18SW4gMTYgYml0IG1vZGUuCi18UmVnaXN0ZXIgZHVtcDoKLXwgQ1M6MDFiNyBTUzowMTZmIERTOjAyODcgRVM6MDAwMAotfCBJUDowYzQxIFNQOjg3OGEgQlA6ODc5NiBGTEFHUzowMjQ2Ci18IEFYOjgxMWUgQlg6MDAwMCBDWDowMDAwIERYOjAwMDAgU0k6MDAwMSBESTpmZmZmCi18U3RhY2sgZHVtcDoKLXwweDAxNmY6MHg4NzhhOiAgMDAwMSAwMTZmIGZmZWQgMDAwMCAwMDAwIDAyODcgODkwYiAxZTViCi18MHgwMTZmOjB4ODc5YTogIDAxYjcgMDAwMSAwMDBkIDEwNTAgMDhiNyAwMTZmIDAwMDEgMDAwZAotfDB4MDE2ZjoweDg3YWE6ICAwMDBhIDAwMDMgMDAwNCAwMDAwIDAwMDcgMDAwNyAwMTkwIDAwMDAKLXwweDAxNmY6MHg4N2JhOgotfAotfDAwNTA6IHNlbD0wMjg3IGJhc2U9NDAyMTFkMzAgbGltaXQ9MGI5M2YgKGJ5dGVzKSAxNi1iaXQgcnctCi18QmFja3RyYWNlOgotfDAgMHgwMWI3OjB4MGM0MSAoUFhTUlZfRk9OR0VURkFDRU5BTUUrMHg3YykKLXwxIDB4MDFiNzoweDFlNWIgKFBYU1JWX0ZPTlBVVENBVEZPTlQrMHgyY2QpCi18MiAweDAxYTc6MHgwNWFhCi18MyAweDAxYjc6MHgwNzY4IChQWFNSVl9GT05JTklURk9OVFMrMHg4MSkKLXw0IDB4MDE0ZjoweDAzZWQgKFBET1hXSU5fQFNRTENVUkNCJFE2Q0JUWVBFVUxOOENCU0NUWVBFKzB4MWIxKQotfDUgMHgwMTNmOjB4MDBhYwotfAotfDB4MDFiNzoweDBjNDEgKFBYU1JWX0ZPTkdFVEZBQ0VOQU1FKzB4N2MpOiAgbW92dyAgICAgICAgJWVzOjB4MzgoJWJ4KSwlZHgKLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFN0ZXBzIHRvIGRlYnVnIGEgY3Jhc2guIFlvdSBtYXkgc3RvcCBhdCBhbnkgc3RlcCwgYnV0IHBsZWFzZQotICAgICAgICAgIHJlcG9ydCB0aGUgYnVnIGFuZCBwcm92aWRlIGFzIG11Y2ggb2YgdGhlIGluZm9ybWF0aW9uCi0gICAgICAgICAgZ2F0aGVyZWQgdG8gdGhlIG5ld3Nncm91cCBvciB0aGUgcmVsZXZhbnQgZGV2ZWxvcGVyIGFzCi0gICAgICAgICAgZmVhc2libGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIEdldCB0aGUgcmVhc29uIGZvciB0aGUgY3Jhc2guIFRoaXMgaXMgdXN1YWxseSBhbiBhY2Nlc3MgdG8KLSAgICAgICAgICAgICAgYW4gaW52YWxpZCBzZWxlY3RvciwgYW4gYWNjZXNzIHRvIGFuIG91dCBvZiByYW5nZSBhZGRyZXNzCi0gICAgICAgICAgICAgIGluIGEgdmFsaWQgc2VsZWN0b3IsIHBvcHBpbmcgYSBzZWdtZW50cmVnaXN0ZXIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgc3RhY2sgb3IgdGhlIGxpa2UuIFdoZW4gcmVwb3J0aW5nIGEgY3Jhc2gsIHJlcG9ydCB0aGlzCi0gICAgICAgICAgICAgIDxlbXBoYXNpcz53aG9sZTwvZW1waGFzaXM+IGNyYXNoZHVtcCBldmVuIGlmIGl0IGRvZXNuJ3QKLSAgICAgICAgICAgICAgbWFrZSBzZW5zZSB0byB5b3UuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgKEluIHRoaXMgY2FzZSBpdCBpcyBhY2Nlc3MgdG8gYW4gaW52YWxpZCBzZWxlY3RvciwgZm9yCi0gICAgICAgICAgICAgIDxzeXN0ZW1pdGVtPiVlczwvc3lzdGVtaXRlbT4gaXMgPGxpdGVyYWw+MDAwMDwvbGl0ZXJhbD4sIGFzCi0gICAgICAgICAgICAgIHNlZW4gaW4gdGhlIHJlZ2lzdGVyIGR1bXApLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIERldGVybWluZSB0aGUgY2F1c2Ugb2YgdGhlIGNyYXNoLiBTaW5jZSB0aGlzIGlzIHVzdWFsbHkKLSAgICAgICAgICAgICAgYSBwcmltYXJ5L3NlY29uZGFyeSByZWFjdGlvbiB0byBhIGZhaWxlZCBvciBtaXNiZWhhdmluZwotICAgICAgICAgICAgICBXaW5lIGZ1bmN0aW9uLCByZXJ1biBXaW5lIHdpdGggPHBhcmFtZXRlcj4tZGVidWdtc2cKLSAgICAgICAgICAgICAgICArcmVsYXk8L3BhcmFtZXRlcj4gYWRkZWQgdG8gdGhlIGNvbW1hbmRsaW5lLiBUaGlzIHdpbGwKLSAgICAgICAgICAgICAgZ2VuZXJhdGUgcXVpdGUgYSBsb3Qgb2Ygb3V0cHV0LCBidXQgdXN1YWxseSB0aGUgcmVhc29uIGlzCi0gICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIGxhc3QgY2FsbChzKS4gIFRob3NlIGxpbmVzIHVzdWFsbHkgbG9vayBsaWtlCi0gICAgICAgICAgICAgIHRoaXM6Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8c2NyZWVuPgotfENhbGwgS0VSTkVMLjkwOiBMU1RSTEVOKDAyMjc6MDY5MiAidGV4dCIpIHJldD0wMWU3OjJjZTcgZHM9MDIyNwotICAgICAgXl5eXl5eXl5eICBeICAgICAgIF5eXl5eXl5eXiBeXl5eXl4gICAgICBeXl5eXl5eXl4gICAgXl5eXgotICAgICAgfCAgICAgICAgICB8ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgfERhdGFzZWdtZW50Ci0gICAgICB8ICAgICAgICAgIHwgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHxSZXR1cm4gYWRkcmVzcwotICAgICAgfCAgICAgICAgICB8ICAgICAgIHwgICAgICAgICB8dGV4dHVhbCBwYXJhbWV0ZXIKLSAgICAgIHwgICAgICAgICAgfCAgICAgICB8Ci0gICAgICB8ICAgICAgICAgIHwgICAgICAgfEFyZ3VtZW50KHMpLiBUaGlzIG9uZSBpcyBhIHdpbjE2IHNlZ21lbnRlZCBwb2ludGVyLgotICAgICAgfCAgICAgICAgICB8RnVuY3Rpb24gY2FsbGVkLgotICAgICAgfFRoZSBtb2R1bGUsIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgaW4uIEluIHRoaXMgY2FzZSBpdCBpcyBLRVJORUwuCi0JCSAgICAgICAgCi18UmV0ICBLRVJORUwuOTA6IExTVFJMRU4oKSByZXR2YWw9MHgwMDA0IHJldD0wMWU3OjJjZTcgZHM9MDIyNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXgotCQkJCSAgfFJldHVybnZhbHVlIGlzIDE2IGJpdCBhbmQgaGFzIHRoZSB2YWx1ZSA0LgotICAgICAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgSWYgeW91IGhhdmUgZm91bmQgYSBtaXNiZWhhdmluZyBmdW5jdGlvbiwgdHJ5IHRvIGZpbmQgb3V0Ci0gICAgICAgICAgICAgIHdoeSBpdCBtaXNiZWhhdmVzLiBGaW5kIHRoZSBmdW5jdGlvbiBpbiB0aGUgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgIFRyeSB0byBtYWtlIHNlbnNlIG9mIHRoZSBhcmd1bWVudHMgcGFzc2VkLiBVc3VhbGx5IHRoZXJlIGlzCi0gICAgICAgICAgICAgIGEgPGZ1bmN0aW9uPlRSQUNFKCZsdDtjaGFubmVsJmd0OywiKC4uLilcbiIpOzwvZnVuY3Rpb24+IGF0Ci0gICAgICAgICAgICAgIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLiBSZXJ1biB3aW5lIHdpdGgKLSAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tZGVidWdtc2cgK3h5eiwrcmVsYXk8L3BhcmFtZXRlcj4gYWRkZWQgdG8gdGhlCi0gICAgICAgICAgICAgIGNvbW1hbmRsaW5lLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIGRlYnVnIHVzaW5nIHRoZSBpbnRlcm5hbAotICAgICAgICAgICAgICBkZWJ1Z2dlciBjYW4gYmUgIGZvdW5kIGluCi0gICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWJ1Z2dlci9SRUFETUU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICBJZiB0aGlzIGluZm9ybWF0aW9uIGlzbid0IGNsZWFyIGVub3VnaCBvciBpZiB5b3Ugd2FudCB0bwotICAgICAgICAgICAgICBrbm93IG1vcmUgYWJvdXQgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGUgZnVuY3Rpb24gaXRzZWxmLAotICAgICAgICAgICAgICB0cnkgcnVubmluZyB3aW5lIHdpdGggPHBhcmFtZXRlcj4tZGVidWdtc2cKLSAgICAgICAgICAgICAgICArYWxsPC9wYXJhbWV0ZXI+LCB3aGljaCBkdW1wcyBBTEwgaW5jbHVkZWQgZGVidWcKLSAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gd2luZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICBJZiBldmVuIHRoYXQgaXNuJ3QgZW5vdWdoLCBhZGQgbW9yZSBkZWJ1ZyBvdXRwdXQgZm9yCi0gICAgICAgICAgICAgIHlvdXJzZWxmIGludG8gdGhlIGZ1bmN0aW9ucyB5b3UgZmluZCByZWxldmFudC4gIFNlZQotICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9kZWJ1Zy1tc2dzPC9maWxlbmFtZT4uIFlvdSBtaWdodAotICAgICAgICAgICAgICBhbHNvIHRyeSB0byBydW4gdGhlIHByb2dyYW0gaW4gPGNvbW1hbmQ+Z2RiPC9jb21tYW5kPgotICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBXSU5FLWRlYnVnZ2VyLiBJZiB5b3UgZG8gdGhhdCwgdXNlCi0gICAgICAgICAgICAgIDxwYXJhbWV0ZXI+aGFuZGxlIFNJR1NFR1Ygbm9zdG9wIG5vcHJpbnQ8L3BhcmFtZXRlcj4gdG8KLSAgICAgICAgICAgICAgZGlzYWJsZSB0aGUgaGFuZGxpbmcgb2Ygc2VnIGZhdWx0cyBpbnNpZGUKLSAgICAgICAgICAgICAgPGNvbW1hbmQ+Z2RiPC9jb21tYW5kPiAobmVlZGVkIGZvciBXaW4xNikuIElmIHlvdSBkb24ndCB1c2UKLSAgICAgICAgICAgICAgdGhlIDxwYXJhbWV0ZXI+LS1kZXNrdG9wPC9wYXJhbWV0ZXI+IG9yCi0gICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1tYW5hZ2VkPC9wYXJhbWV0ZXI+IG9wdGlvbiwgc3RhcnQgdGhlIFdJTkUKLSAgICAgICAgICAgICAgcHJvY2VzcyB3aXRoIDxwYXJhbWV0ZXI+LS1zeW5jPC9wYXJhbWV0ZXI+LCBvciBjaGFuY2VzIGFyZQotICAgICAgICAgICAgICBnb29kIHRvIGdldCBYIGludG8gYW4gdW51c2FibGUgc3RhdGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNldCBhIGJyZWFrcG9pbnQgZm9yIHRoYXQgZnVuY3Rpb24uIFN0YXJ0IHdpbmUKLSAgICAgICAgICAgICAgd2l0aCB0aGUgPHBhcmFtZXRlcj4tLWRlYnVnPC9wYXJhbWV0ZXI+IG9wdGlvbiBhZGRlZCB0byB0aGUKLSAgICAgICAgICAgICAgY29tbWFuZGxpbmUuIEFmdGVyIGxvYWRpbmcgdGhlIGV4ZWN1dGFibGUgd2luZSB3aWxsIGVudGVyCi0gICAgICAgICAgICAgIHRoZSBpbnRlcm5hbCBkZWJ1Z2dlci4gVXNlIDxwYXJhbWV0ZXI+YnJlYWsKLSAgICAgICAgICAgICAgICBLRVJORUxfTFNUUkxFTjwvcGFyYW1ldGVyPiAocmVwbGFjZSBieSBmdW5jdGlvbiB5b3Ugd2FudAotICAgICAgICAgICAgICB0byBkZWJ1ZywgQ0FTRSBJUyBSRUxFVkFOVCkgdG8gc2V0IGEgYnJlYWtwb2ludC4gIFRoZW4gdXNlCi0gICAgICAgICAgICAgIDxjb21tYW5kPmNvbnRpbnVlPC9jb21tYW5kPiB0byBzdGFydCBub3JtYWwKLSAgICAgICAgICAgICAgcHJvZ3JhbS1leGVjdXRpb24uIFdpbmUgd2lsbCBzdG9wIGlmIGl0IHJlYWNoZXMgdGhlCi0gICAgICAgICAgICAgIGJyZWFrcG9pbnQuIElmIHRoZSBwcm9ncmFtIGlzbid0IHlldCBhdCB0aGUgY3Jhc2hpbmcgY2FsbAotICAgICAgICAgICAgICBvZiB0aGF0IGZ1bmN0aW9uLCB1c2UgPGNvbW1hbmQ+Y29udGludWU8L2NvbW1hbmQ+IGFnYWluCi0gICAgICAgICAgICAgIHVudGlsIHlvdSBhcmUgYWJvdXQgdG8gZW50ZXIgdGhhdCBmdW5jdGlvbi4gWW91IG1heSBub3cKLSAgICAgICAgICAgICAgcHJvY2VlZCB3aXRoIHNpbmdsZS1zdGVwcGluZyB0aGUgZnVuY3Rpb24gdW50aWwgeW91IHJlYWNoCi0gICAgICAgICAgICAgIHRoZSBwb2ludCBvZiBjcmFzaC4gVXNlIHRoZSBvdGhlciBkZWJ1Z2dlciBjb21tYW5kcyB0bwotICAgICAgICAgICAgICBwcmludCByZWdpc3RlcnMgYW5kIHRoZSBsaWtlLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICA8L3NlY3QyPgotCi0gICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5Qcm9ncmFtIGhhbmdzLCBub3RoaW5nIGhhcHBlbnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFN3aXRjaCB0byBVTklYIHNoZWxsLCBnZXQgdGhlIHByb2Nlc3MtSUQgdXNpbmcgPGNvbW1hbmQ+cHMgLWEgfAotICAgICAgICAgICAgZ3JlcCB3aW5lPC9jb21tYW5kPiwgYW5kIGRvIGEgPGNvbW1hbmQ+a2lsbCAtSFVQCi0gICAgICAgICAgICAmbHQ7cGlkJmd0OzwvY29tbWFuZD4gKHdpdGhvdXQgdGhlICZsdDsgYW5kICZndDspLiBXaW5lIHdpbGwKLSAgICAgICAgICB0aGVuIGVudGVyIGl0cyBpbnRlcm5hbCBkZWJ1Z2dlciBhbmQgeW91IGNhbiBwcm9jZWVkIGFzCi0gICAgICAgICAgZXhwbGFpbmVkIGFib3ZlLiBBbHNvLCB5b3UgY2FuIHVzZQotICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZWJ1ZzwvcGFyYW1ldGVyPiBzd2l0Y2ggYW5kIHRoZW4geW91IGNhbiBnZXQgaW50bwotICAgICAgICAgIGludGVybmFsIGRlYnVnZ2VyIGJ5IHByZXNzaW5nIAotICAgICAgICAgIDxrZXljb21ibz48a2V5Y2FwPkN0cmw8L2tleWNhcD48a2V5Y2FwPkM8L2tleWNhcD48L2tleWNvbWJvPiBpbgotICAgICAgICAgIHRoZSB0ZXJtaW5hbCB3aGVyZSB5b3UgcnVuIFdpbmUuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgIDwvc2VjdDI+Ci0KLSAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPlByb2dyYW0gcmVwb3J0cyBhbiBlcnJvciB3aXRoIGEgTWVzc2FnZWJveDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgU29tZXRpbWVzIHByb2dyYW1zIGFyZSByZXBvcnRpbmcgZmFpbHVyZSB1c2luZyBtb3JlIG9yCi0gICAgICAgICAgbGVzcyBub25kZXNjcmlwdCBtZXNzYWdlYm94ZXMuIFdlIGNhbiBkZWJ1ZyB0aGlzIHVzaW5nIHRoZQotICAgICAgICAgIHNhbWUgbWV0aG9kIGFzIENyYXNoZXMsIGJ1dCB0aGVyZSBpcyBvbmUgcHJvYmxlbS4uLiBGb3IKLSAgICAgICAgICBzZXR0aW5nIHVwIGEgbWVzc2FnZSBib3ggdGhlIHByb2dyYW0gYWxzbyBjYWxscyBXaW5lCi0gICAgICAgICAgcHJvZHVjaW5nIGh1Z2UgY2h1bmtzIG9mIGRlYnVnIGNvZGUuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgU2luY2UgdGhlIGZhaWx1cmUgaGFwcGVucyB1c3VhbGx5IGRpcmVjdGx5IGJlZm9yZSBzZXR0aW5nIHVwCi0gICAgICAgICAgdGhlIE1lc3NhZ2Vib3ggeW91IGNhbiBzdGFydCB3aW5lIHdpdGgKLSAgICAgICAgICA8cGFyYW1ldGVyPi0tZGVidWc8L3BhcmFtZXRlcj4gYWRkZWQgdG8gdGhlIGNvbW1hbmRsaW5lLCBzZXQgYQotICAgICAgICAgIGJyZWFrcG9pbnQgYXQgPGZ1bmN0aW9uPk1lc3NhZ2VCb3hBPC9mdW5jdGlvbj4gKGNhbGxlZCBieSB3aW4xNgotICAgICAgICAgIGFuZCB3aW4zMiBwcm9ncmFtcykgYW5kIHByb2NlZWQgd2l0aAotICAgICAgICAgIDxjb21tYW5kPmNvbnRpbnVlPC9jb21tYW5kPi4gV2l0aCA8cGFyYW1ldGVyPi0tZGVidWdtc2cKLSAgICAgICAgICAgICthbGw8L3BhcmFtZXRlcj4gV2luZSB3aWxsIG5vdyBzdG9wIGRpcmVjdGx5IGJlZm9yZSBzZXR0aW5nCi0gICAgICAgICAgdXAgdGhlIE1lc3NhZ2Vib3guIFByb2NlZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFlvdSBjYW4gYWxzbyBydW4gd2luZSB1c2luZyA8Y29tbWFuZD53aW5lIC1kZWJ1Z21zZyArcmVsYXkKLSAgICAgICAgICAgIHByb2dyYW0uZXhlIDImZ3Q7JjEgfCBsZXNzIC1pPC9jb21tYW5kPiBhbmQgaW4KLSAgICAgICAgICA8Y29tbWFuZD5sZXNzPC9jb21tYW5kPiBzZWFyY2ggZm9yIDxxdW90ZT5NZXNzYWdlQm94PC9xdW90ZT4uCi0gICAgICAgIDwvcGFyYT4KLSAgICAgIDwvc2VjdDI+Ci0KLSAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPkRpc2Fzc2VtYmxpbmcgcHJvZ3JhbXM6PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICBZb3UgbWF5IGFsc28gdHJ5IHRvIGRpc2Fzc2VtYmxlIHRoZSBvZmZlbmRpbmcgcHJvZ3JhbSB0bwotICAgICAgICAgIGNoZWNrIGZvciB1bmRvY3VtZW50ZWQgZmVhdHVyZXMgYW5kL29yIHVzZSBvZiB0aGVtLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFRoZSBiZXN0LCBmcmVlbHkgYXZhaWxhYmxlLCBkaXNhc3NlbWJsZXIgZm9yIFdpbjE2IHByb2dyYW1zIGlzCi0gICAgICAgICAgPGFwcGxpY2F0aW9uPldpbmRvd3MgQ29kZWJhY2s8L2FwcGxpY2F0aW9uPiwgYXJjaGl2ZW5hbWUKLSAgICAgICAgICA8ZmlsZW5hbWU+d2NieHh4LnppcDwvZmlsZW5hbWU+LCB3aGljaCB1c3VhbGx5IGNhbiBiZSBmb3VuZCBpbgotICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Q2ljYS1NaXJyb3I8L2ZpbGVuYW1lPiBzdWJkaXJlY3Rvcnkgb24gdGhlIFdJTkUKLSAgICAgICAgICBmdHBzaXRlcy4gKFNlZSA8ZmlsZW5hbWU+QU5OT1VOQ0U8L2ZpbGVuYW1lPikuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgRGlzYXNzZW1ibGluZyB3aW4zMiBwcm9ncmFtcyBpcyBwb3NzaWJsZSB1c2luZwotICAgICAgICAgIDxhcHBsaWNhdGlvbj5XaW5kb3dzIERpc2Fzc2VtYmxlciAzMjwvYXBwbGljYXRpb24+LCBhcmNoaXZlbmFtZQotICAgICAgICAgIHNvbWV0aGluZyBsaWtlIDxmaWxlbmFtZT53MzJkc204Ny56aXA8L2ZpbGVuYW1lPiAob3Igc2ltaWxhcikKLSAgICAgICAgICBvbiA8c3lzdGVtaXRlbSBjbGFzcz0ic3lzdGVtbmFtZSI+ZnRwLndpbnNpdGUuY29tPC9zeXN0ZW1pdGVtPgotICAgICAgICAgIGFuZCBtaXJyb3JzLiAgVGhlIHNoYXJld2FyZSB2ZXJzaW9uIGRvZXMgbm90IGFsbG93IHNhdmluZyBvZgotICAgICAgICAgIGRpc2Fzc2VtYmx5IGxpc3RpbmdzLiBZb3UgY2FuIGFsc28gdXNlIHRoZSBuZXdlciAoYW5kIGluIHRoZQotICAgICAgICAgIGZ1bGwgdmVyc2lvbiBiZXR0ZXIpIDxhcHBsaWNhdGlvbj5JbnRlcmFjdGl2ZQotICAgICAgICAgICAgRGlzYXNzZW1ibGVyPC9hcHBsaWNhdGlvbj4gKElEQSkgZnJvbSB0aGUgZnRwIHNpdGVzIG1lbnRpb25lZAotICAgICAgICAgIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LiBVbmRlcnN0YW5kaW5nIGRpc2Fzc2VtYmxlZCBjb2RlIGlzCi0gICAgICAgICAgbW9zdGx5IGEgcXVlc3Rpb24gb2YgZXhlcmNpc2UuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgTW9zdCBjb2RlIG91dCB0aGVyZSB1c2VzIHN0YW5kYXJkIEMgZnVuY3Rpb24gZW50cmllcyAoZm9yIGl0Ci0gICAgICAgICAgaXMgdXN1YWxseSAgd3JpdHRlbiBpbiBDKS4gV2luMTYgZnVuY3Rpb24gZW50cmllcyB1c3VhbGx5Ci0gICAgICAgICAgbG9vayBsaWtlIHRoYXQ6Ci0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHByb2dyYW1saXN0aW5nPgotcHVzaCBicAotbW92IGJwLCBzcAotLi4uIGZ1bmN0aW9uIGNvZGUgLi4KLXJldGYgWFhYWCAJJmx0Oy0tLS0tLS0tLSBYWFhYIGlzIG51bWJlciBvZiBieXRlcyBvZiBhcmd1bWVudHMKLSAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgVGhpcyBpcyBhIDxmdW5jdGlvbj5GQVI8L2Z1bmN0aW9uPiBmdW5jdGlvbiB3aXRoIG5vIGxvY2FsCi0gICAgICAgICAgc3RvcmFnZS4gVGhlIGFyZ3VtZW50cyB1c3VhbGx5IHN0YXJ0IGF0Ci0gICAgICAgICAgPGxpdGVyYWw+W2JwKzZdPC9saXRlcmFsPiB3aXRoIGluY3JlYXNpbmcgb2Zmc2V0cy4gTm90ZSwgdGhhdAotICAgICAgICAgIDxsaXRlcmFsPlticCs2XTwvbGl0ZXJhbD4gYmVsb25ncyB0byB0aGUKLSAgICAgICAgICA8ZW1waGFzaXM+cmlnaHRtb3N0PC9lbXBoYXNpcz4gYXJndW1lbnQsIGZvciBleHBvcnRlZCB3aW4xNgotICAgICAgICAgIGZ1bmN0aW9ucyB1c2UgdGhlIFBBU0NBTCBjYWxsaW5nIGNvbnZlbnRpb24uIFNvLCBpZiB3ZSB1c2UKLSAgICAgICAgICA8ZnVuY3Rpb24+c3RyY21wKGEsYik8L2Z1bmN0aW9uPiB3aXRoIDxwYXJhbWV0ZXI+YTwvcGFyYW1ldGVyPgotICAgICAgICAgIGFuZCA8cGFyYW1ldGVyPmI8L3BhcmFtZXRlcj4gYm90aCAzMiBiaXQgdmFyaWFibGVzCi0gICAgICAgICAgPHBhcmFtZXRlcj5iPC9wYXJhbWV0ZXI+IHdvdWxkIGJlIGF0IDxsaXRlcmFsPlticCs2XTwvbGl0ZXJhbD4KLSAgICAgICAgICBhbmQgPHBhcmFtZXRlcj5hPC9wYXJhbWV0ZXI+IGF0IDxsaXRlcmFsPlticCsxMF08L2xpdGVyYWw+LgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIE1vc3QgZnVuY3Rpb25zIG1ha2UgYWxzbyB1c2Ugb2YgbG9jYWwgc3RvcmFnZSBpbiB0aGUgc3RhY2tmcmFtZToKLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci1lbnRlciAwMDg2LCAwMAotLi4uIGZ1bmN0aW9uIGNvZGUgLi4uCi1sZWF2ZQotcmV0ZiBYWFhYCi0gICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFRoaXMgZG9lcyBtb3N0bHkgdGhlIHNhbWUgYXMgYWJvdmUsIGJ1dCBhbHNvIGFkZHMKLSAgICAgICAgICA8bGl0ZXJhbD4weDg2PC9saXRlcmFsPiBieXRlcyBvZiBzdGFja3N0b3JhZ2UsIHdoaWNoIGlzCi0gICAgICAgICAgYWNjZXNzZWQgdXNpbmcgPGxpdGVyYWw+W2JwLXh4XTwvbGl0ZXJhbD4uIEJlZm9yZSBjYWxsaW5nIGEKLSAgICAgICAgICBmdW5jdGlvbiwgYXJndW1lbnRzIGFyZSBwdXNoZWQgb24gdGhlIHN0YWNrIHVzaW5nIHNvbWV0aGluZwotICAgICAgICAgIGxpa2UgdGhpczoKLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci1wdXNoIHdvcmQgcHRyIFticC0wMl0JJmx0Oy0gd2lsbCBiZSBhdCBbYnArOF0KLXB1c2ggZGkJCQkmbHQ7LSB3aWxsIGJlIGF0IFticCs2XQotY2FsbCBLRVJORUwuTFNUUkxFTgotICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICBIZXJlIGZpcnN0IHRoZSBzZWxlY3RvciBhbmQgdGhlbiB0aGUgb2Zmc2V0IHRvIHRoZSBwYXNzZWQKLSAgICAgICAgICBzdHJpbmcgYXJlIHB1c2hlZC4KLSAgICAgICAgPC9wYXJhPgotICAgICAgPC9zZWN0Mj4KLQotICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+U2FtcGxlIGRlYnVnZ2luZyBzZXNzaW9uOjwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgTGV0J3MgZGVidWcgdGhlIGluZmFtb3VzIFdvcmQgPGZpbGVuYW1lPlNIQVJFLkVYRTwvZmlsZW5hbWU+Ci0gICAgICAgICAgbWVzc2FnZWJveDogCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHNjcmVlbj4KLXxtYXJjdXNAamV0ICQgd2luZSB3aW53b3JkLmV4ZQotfCAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18ICAgICAgICAgICAgfCAhICBZb3UgbXVzdCBsZWF2ZSBXaW5kb3dzIGFuZCBsb2FkIFNIQVJFLkVYRXwKLXwgICAgICAgICAgICB8ICAgIGJlZm9yZSBzdGFydGluZyBXb3JkLiAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgIDwvc2NyZWVuPgotICAgICAgICA8c2NyZWVuPgotfG1hcmN1c0BqZXQgJCB3aW5lIHdpbndvcmQuZXhlIC1kZWJ1Z21zZyArcmVsYXkgLWRlYnVnCi18Q2FsbFRvMzIod25kcHJvYz0weDQwMDY1YmMwLGh3bmQ9MDAwMDAxYWMsbXNnPTAwMDAwMDgxLHdwPTAwMDAwMDAwLGxwPTAwMDAwMDAwKQotfFdpbjE2IHRhc2sgJ3dpbndvcmQnOiBCcmVha3BvaW50IDEgYXQgMHgwMWQ3OjB4MDAxYQotfENhbGxUbzE2KGZ1bmM9MDEyNzowMDcwLGRzPTA5MjcpCi18Q2FsbCBXUFJPQ1MuMjQ6IFRBU0tfUkVTQ0hFRFVMRSgpIHJldD0wMGI3OjE0NTYgZHM9MDkyNwotfFJldCAgV1BST0NTLjI0OiBUQVNLX1JFU0NIRURVTEUoKSByZXR2YWw9MHg4NjcyIHJldD0wMGI3OjE0NTYgZHM9MDkyNwotfENhbGxUbzE2KGZ1bmM9MDFkNzowMDFhLGRzPTA5MjcpCi18ICAgICBBWD0wMDAwIEJYPTNjYjQgQ1g9MWY0MCBEWD0wMDAwIFNJPTAwMDAgREk9MDkyNyBCUD0wMDAwIEVTPTExZjcKLXxMb2FkaW5nIHN5bWJvbHM6IC9ob21lL21hcmN1cy93aW5lL3dpbmUuLi4KLXxTdG9wcGVkIG9uIGJyZWFrcG9pbnQgMSBhdCAweDAxZDc6MHgwMDFhCi18SW4gMTYgYml0IG1vZGUuCi18V2luZS1kYmcmZ3Q7YnJlYWsgTWVzc2FnZUJveEEgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDstLS0tIFNldCBCcmVha3BvaW50Ci18QnJlYWtwb2ludCAyIGF0IDB4NDAxODkxMDAgKE1lc3NhZ2VCb3hBIFttc2dib3guYzoxOTBdKQotfFdpbmUtZGJnJmd0O2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDstLS0tIENvbnRpbnVlCi18Q2FsbCBLRVJORUwuOTE6IElOSVRUQVNLKCkgcmV0PTAxNTc6MDAyMiBkcz0wOGE3Ci18ICAgICBBWD0wMDAwIEJYPTNjYjQgQ1g9MWY0MCBEWD0wMDAwIFNJPTAwMDAgREk9MDhhNyBFUz0xMWQ3IEVGTD0wMDAwMDI4NgotfENhbGxUbzE2KGZ1bmM9MDkwZjowODVjLGRzPTBkY2YsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwMDAwLDB4MDgwMCwweDAwMDAsMHgwMDAwLDB4MGRjZikKLXwuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7LS0tLS0gTXVjaCBkZWJ1Z291dHB1dAotfENhbGwgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKDB4MDAwMCkgcmV0PTA2MGY6MDk3YiBkcz0wOTI3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eIERyaXZlIDAgKEE6KQotfFJldCAgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKCkgcmV0dmFsPTB4MDAwMiByZXQ9MDYwZjowOTdiIGRzPTA5MjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gIERSSVZFX1JFTU9WRUFCTEUKLQkJCQkJCShJdCBpcyBhIGZsb3BweSBkaXNrZHJpdmUuKQotCi18Q2FsbCBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoMHgwMDAxKSByZXQ9MDYwZjowOTdiIGRzPTA5MjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gRHJpdmUgMSAoQjopCi18UmV0ICBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoKSByZXR2YWw9MHgwMDAwIHJldD0wNjBmOjA5N2IgZHM9MDkyNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXiAgRFJJVkVfQ0FOTk9UREVURVJNSU5FCi0JCQkJCQkoSSBkb24ndCBoYXZlIGRyaXZlIEI6IGFzc2lnbmVkKQotCi18Q2FsbCBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoMHgwMDAyKSByZXQ9MDYwZjowOTdiIGRzPTA5MjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eIERyaXZlIDIgKEM6KQotfFJldCAgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKCkgcmV0dmFsPTB4MDAwMyByZXQ9MDYwZjowOTdiIGRzPTA5MjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gRFJJVkVfRklYRUQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNpZmllZCBhcyBhIGhhcmRkaXNrKQotCi18Q2FsbCBLRVJORUwuOTc6IEdFVFRFTVBGSUxFTkFNRSgweDAwYzMsMHgwOTI3ODM2NCJkb2MiLDB4MDAwMCwwOTI3OjgyNDgpIHJldD0wNjBmOjA5YjEgZHM9MDkyNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eICAgICAgICAgICBeXl5eXiAgICAgICAgXl5eXl5eXl5eCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8YnVmZmVyIGZvciBmbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8dGVtcG9yYXJ5IG5hbWUgfmRvY1hYWFgudG1wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Rm9yY2UgdXNlIG9mIERyaXZlIEM6LgotCi18V2FybmluZzogR2V0VGVtcEZpbGVOYW1lIHJldHVybnMgJ0M6fmRvYzkyODEudG1wJywgd2hpY2ggZG9lc24ndCBzZWVtIHRvIGJlIHdyaXRlYWJsZS4KLXxQbGVhc2UgY2hlY2sgeW91ciBjb25maWd1cmF0aW9uIGZpbGUgaWYgdGhpcyBnZW5lcmF0ZXMgYSBmYWlsdXJlLgotICAgICAgICA8L3NjcmVlbj4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgV2hvb3BzLCBpdCBldmVuIGRldGVjdHMgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmchCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHNjcmVlbj4KLXxSZXQgIEtFUk5FTC45NzogR0VUVEVNUEZJTEVOQU1FKCkgcmV0dmFsPTB4OTI4MSByZXQ9MDYwZjowOWIxIGRzPTA5MjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXiBUZW1wb3Jhcnkgc3RvcmFnZSBJRAotCi18Q2FsbCBLRVJORUwuNzQ6IE9QRU5GSUxFKDB4MDkyNzgyNDgiQzp+ZG9jOTI4MS50bXAiLDA5Mjc6ODJkYSwweDEwMTIpIHJldD0wNjBmOjA5ZDggZHM9MDkyNwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXiBeXl5eXl5eXl4gXl5eXl5eXgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGZpbGVuYW1lICAgICAgICB8T0ZTVFJVQ1QgfG9wZW4gbW9kZToKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZfQ1JFQVRFfE9GX1NIQVJFX0VYQ0xVU0lWRXxPRl9SRUFEV1JJVEUKLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFRoaXMgZmFpbHMsIHNpbmNlIG15IDxtZWRpYWxhYmVsPkM6PC9tZWRpYWxhYmVsPiBkcml2ZSBpcyBpbgotICAgICAgICAgIHRoaXMgY2FzZSBtb3VudGVkIHJlYWRvbmx5LgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxzY3JlZW4+Ci18UmV0ICBLRVJORUwuNzQ6IE9QRU5GSUxFKCkgcmV0dmFsPTB4ZmZmZiByZXQ9MDYwZjowOWQ4IGRzPTA5MjcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eIEhGSUxFX0VSUk9SMTYsIHllcywgaXQgZmFpbGVkLgotCi18Q2FsbCBVU0VSLjE6IE1FU1NBR0VCT1goMHgwMDAwLDB4MDkyNzgzNzYiU2llIG11c3NlbiBXaW5kb3dzIHZlcmxhc3NlbiB1bmQgU0hBUkUuRVhFIGxhZGVuIGJldm9yIFNpZSBXb3JkIHN0YXJ0ZW4uIiwweDAwMDAwMDAwLDB4MTAzMCkgcmV0PTA2MGY6MDg0ZiBkcz0wOTI3Ci0gICAgICAgIDwvc2NyZWVuPiAgICAgICAgICAgCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgIEFuZCBNZXNzYWdlQm94J2VkLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxzY3JlZW4+Ci18U3RvcHBlZCBvbiBicmVha3BvaW50IDIgYXQgMHg0MDE4OTEwMCAoTWVzc2FnZUJveEEgW21zZ2JveC5jOjE5MF0pCi18MTkwICAgICB7CQkmbHQ7LSB0aGUgc291cmNlbGluZQotSW4gMzIgYml0IG1vZGUuCi1XaW5lLWRiZyZndDsKLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIFRoZSBjb2RlIHNlZW1zIHRvIGZpbmQgYSB3cml0ZWFibGUgaGFyZGRpc2sgYW5kIHRyaWVzIHRvIGNyZWF0ZQotICAgICAgICAgIGEgZmlsZSB0aGVyZS4gVG8gd29yayBhcm91bmQgdGhpcyBidWcsIHlvdSBjYW4gZGVmaW5lCi0gICAgICAgICAgPG1lZGlhbGFiZWw+Qzo8L21lZGlhbGFiZWw+IGFzIGEgbmV0d29ya2RyaXZlLCB3aGljaCBpcyBpZ25vcmVkCi0gICAgICAgICAgYnkgdGhlIGNvZGUgYWJvdmUuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgIDwvc2VjdDI+Ci0KLSAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyBUaXBzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICBIZXJlIGFyZSBzb21lIHVzZWZ1bCBkZWJ1Z2dpbmcgdGlwcywgYWRkZWQgYnkgQW5kcmVhcyBNb2hyOgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBwcm9ncmFtIGNyYXNoaW5nIGF0IHN1Y2ggYW4gZWFybHkgbG9hZGVyIHBoYXNlIHRoYXQgeW91IGNhbid0Ci0gICAgICAgICAgICAgIHVzZSB0aGUgV2luZSBkZWJ1Z2dlciBub3JtYWxseSwgYnV0IFdpbmUgYWxyZWFkeSBleGVjdXRlcyB0aGUgcHJvZ3JhbSdzCi0gICAgICAgICAgICAgIHN0YXJ0IGNvZGUsIHRoZW4geW91IG1heSB1c2UgYSBzcGVjaWFsIHRyaWNrLiBZb3Ugc2hvdWxkIGRvIGEKLSAgICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgotd2luZSAtLWRlYnVnbXNnICtyZWxheSBwcm9ncmFtCi0gICAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAgICAgICAgICAgIHRvIGdldCBhIGxpc3Rpbmcgb2YgdGhlIGZ1bmN0aW9ucyB0aGUgcHJvZ3JhbSBjYWxscyBpbiBpdHMgc3RhcnQgZnVuY3Rpb24uCi0gICAgICAgICAgICAgIE5vdyB5b3UgZG8gYQotICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci13aW5lIC0tZGVidWcgd2luZmlsZS5leGUKLSAgICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICBUaGlzIHdheSwgeW91IGdldCBpbnRvIDxjb21tYW5kPldpbmUtZGJnPC9jb21tYW5kPi4gTm93IHlvdQotICAgICAgICAgICAgICBjYW4gc2V0IGEgYnJlYWtwb2ludCBvbiBhbnkgZnVuY3Rpb24gdGhlIHByb2dyYW0gY2FsbHMgaW4KLSAgICAgICAgICAgICAgdGhlIHN0YXJ0IGZ1bmN0aW9uIGFuZCBqdXN0IHR5cGUgPHVzZXJpbnB1dD5jPC91c2VyaW5wdXQ+Ci0gICAgICAgICAgICAgIHRvIGJ5cGFzcyB0aGUgZXZlbnR1YWwgY2FsbHMgb2YgV2luZmlsZSB0byB0aGlzIGZ1bmN0aW9uCi0gICAgICAgICAgICAgIHVudGlsIHlvdSBhcmUgZmluYWxseSBhdCB0aGUgcGxhY2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBnZXRzCi0gICAgICAgICAgICAgIGNhbGxlZCBieSB0aGUgY3Jhc2hpbmcgc3RhcnQgZnVuY3Rpb24uIE5vdyB5b3UgY2FuIHByb2NlZWQKLSAgICAgICAgICAgICAgd2l0aCB5b3VyIGRlYnVnZ2luZyBhcyB1c3VhbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICBJZiB5b3UgdHJ5IHRvIHJ1biBhIHByb2dyYW0gYW5kIGl0IHF1aXRzIGFmdGVyIHNob3dpbmcgYW4gZXJyb3IgbWVzc2FnZWJveCwKLSAgICAgICAgICAgICAgdGhlIHByb2JsZW0gY2FuIHVzdWFsbHkgYmUgaWRlbnRpZmllZCBpbiB0aGUgcmV0dXJuIHZhbHVlIG9mIG9uZSBvZiB0aGUKLSAgICAgICAgICAgICAgZnVuY3Rpb25zIGV4ZWN1dGVkIGJlZm9yZSA8ZnVuY3Rpb24+TWVzc2FnZUJveCgpPC9mdW5jdGlvbj4uCi0gICAgICAgICAgICAgIFRoYXQncyB3aHkgeW91IHNob3VsZCByZS1ydW4gdGhlIHByb2dyYW0gd2l0aCBlLmcuCi0gICAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KLXdpbmUgLS1kZWJ1Z21zZyArcmVsYXkgJmx0O3Byb2dyYW0gbmFtZSZndDsgJiZndDtyZWxtc2cKLSAgICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KLSAgICAgICAgICAgICAgVGhlbiBkbyBhIDxjb21tYW5kPm1vcmUgcmVsbXNnPC9jb21tYW5kPiBhbmQgc2VhcmNoIGZvciB0aGUKLSAgICAgICAgICAgICAgbGFzdCBvY2N1cnJlbmNlIG9mIGEgY2FsbCB0byB0aGUgc3RyaW5nICJNRVNTQUdFQk9YIi4gVGhpcyBpcyBhIGxpbmUgbGlrZQotICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci1DYWxsIFVTRVIuMTogTUVTU0FHRUJPWCgweDAwMDAsMHgwMWZmMTI0NiAiUnVudGltZSBlcnJvciAyMTkgYXQgMDAwNDoxMDU2LiIsMHgwMDAwMDAwMCwweDEwMTApIHJldD0wMWY3OjIxNjAgZHM9MDFmZgotICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgotICAgICAgICAgICAgICBJbiBteSBleGFtcGxlIHRoZSBsaW5lcyBiZWZvcmUgdGhlIGNhbGwgdG8KLSAgICAgICAgICAgICAgPGZ1bmN0aW9uPk1lc3NhZ2VCb3goKTwvZnVuY3Rpb24+IGxvb2sgbGlrZSB0aGF0OgotICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci1DYWxsIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoMHgwMzQ3KSByZXQ9MDFjZjoxMDMzIGRzPTAxZmYKLUNhbGxUbzE2KGZ1bmM9MDMzZjowMDcyLGRzPTAxZmYsMHgwMDAwKQotUmV0ICBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKCkgcmV0dmFsPTB4MDAwMSByZXQ9MDFjZjoxMDMzIGRzPTAxZmYKLUNhbGwgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgweDAzNmYpIHJldD0wMWNmOjEwNDMgZHM9MDFmZgotQ2FsbFRvMTYoZnVuYz0wMzY3OjAwNzIsZHM9MDFmZiwweDAwMDApCi1SZXQgIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoKSByZXR2YWw9MHgwMDAxIHJldD0wMWNmOjEwNDMgZHM9MDFmZgotQ2FsbCBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKDB4MDMxZikgcmV0PTAxY2Y6MTA1YyBkcz0wMWZmCi1DYWxsVG8xNihmdW5jPTAzMTc6MDA3Mixkcz0wMWZmLDB4MDAwMCkKLVJldCAgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgpIHJldHZhbD0weDAwMDEgcmV0PTAxY2Y6MTA1YyBkcz0wMWZmCi1DYWxsIFVTRVIuMTcxOiBXSU5IRUxQKDB4MDJhYywweDAxZmYwNWI0ICJDT01FVC5ITFAiLDB4MDAwMiwweDAwMDAwMDAwKSByZXQ9MDFjZjoxMDcwIGRzPTAxZmYKLUNhbGxUbzE2KGZ1bmM9MDExNzowMDgwLGRzPTAxZmYpCi1DYWxsIFdQUk9DUy4yNDogVEFTS19SRVNDSEVEVUxFKCkgcmV0PTAwYTc6MGEyZCBkcz0wMDJiCi1SZXQgIFdQUk9DUy4yNDogVEFTS19SRVNDSEVEVUxFKCkgcmV0dmFsPTB4MDAwMCByZXQ9MDBhNzowYTJkIGRzPTAwMmIKLVJldCAgVVNFUi4xNzE6IFdJTkhFTFAoKSByZXR2YWw9MHgwMDAxIHJldD0wMWNmOjEwNzAgZHM9MDFmZgotQ2FsbCBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKDB4MDFiZSkgcmV0PTAxZGY6M2UyOSBkcz0wMWZmCi1SZXQgIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoKSByZXR2YWw9MHgwMDAwIHJldD0wMWRmOjNlMjkgZHM9MDFmZgotQ2FsbCBLRVJORUwuNTI6IEZSRUVQUk9DSU5TVEFOQ0UoMHgwMmNmMDBiYSkgcmV0PTAxZjc6MTQ2MCBkcz0wMWZmCi1SZXQgIEtFUk5FTC41MjogRlJFRVBST0NJTlNUQU5DRSgpIHJldHZhbD0weDAwMDEgcmV0PTAxZjc6MTQ2MCBkcz0wMWZmCi1DYWxsIFVTRVIuMTogTUVTU0FHRUJPWCgweDAwMDAsMHgwMWZmMTI0NiAiUnVudGltZSBlcnJvciAyMTkgYXQgMDAwNDoxMDU2LiIsMHgwMDAwMDAwMCwweDEwMTApIHJldD0wMWY3OjIxNjAgZHM9MDFmZgotICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIEkgdGhpbmsgdGhhdCB0aGUgY2FsbCB0byA8ZnVuY3Rpb24+TWVzc2FnZUJveCgpPC9mdW5jdGlvbj4KLSAgICAgICAgICAgICAgaW4gdGhpcyBleGFtcGxlIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBjYXVzZWQgYnkgYQotICAgICAgICAgICAgICB3cm9uZyByZXN1bHQgdmFsdWUgb2Ygc29tZSBwcmV2aW91c2x5IGV4ZWN1dGVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgIChpdCdzIGhhcHBlbmluZyBxdWl0ZSBvZnRlbiBsaWtlIHRoYXQpLCBidXQgaW5zdGVhZCB0aGUKLSAgICAgICAgICAgICAgbWVzc2FnZWJveCBjb21wbGFpbnMgYWJvdXQgYSBydW50aW1lIGVycm9yIGF0Ci0gICAgICAgICAgICAgIDxsaXRlcmFsPjB4MDAwNDoweDEwNTY8L2xpdGVyYWw+LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIEFzIHRoZSBzZWdtZW50IHZhbHVlIG9mIHRoZSBhZGRyZXNzIGlzIG9ubHkKLSAgICAgICAgICAgICAgPGxpdGVyYWw+NDwvbGl0ZXJhbD4sIEkgdGhpbmsgdGhhdCB0aGF0IGlzIG9ubHkgYW4gaW50ZXJuYWwKLSAgICAgICAgICAgICAgcHJvZ3JhbSB2YWx1ZS4gQnV0IHRoZSBvZmZzZXQgYWRkcmVzcyByZXZlYWxzIHNvbWV0aGluZwotICAgICAgICAgICAgICBxdWl0ZSBpbnRlcmVzdGluZzogT2Zmc2V0IDxsaXRlcmFsPjEwNTY8L2xpdGVyYWw+IGlzCi0gICAgICAgICAgICAgIDxlbXBoYXNpcz52ZXJ5PC9lbXBoYXNpcz4gY2xvc2UgdG8gdGhlIHJldHVybiBhZGRyZXNzIG9mCi0gICAgICAgICAgICAgIDxmdW5jdGlvbj5GUkVFTElCUkFSWSgpPC9mdW5jdGlvbj46Ci0gICAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KLUNhbGwgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgweDAzMWYpIHJldD0wMWNmOjEwNWMgZHM9MDFmZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXgotICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIFByb3ZpZGVkIHRoYXQgc2VnbWVudCA8bGl0ZXJhbD4weDAwMDQ8L2xpdGVyYWw+IGlzIGluZGVlZCBzZWdtZW50Ci0gICAgICAgICAgICAgIDxsaXRlcmFsPjB4MWNmPC9saXRlcmFsPiwgd2Ugbm93IHdlIGNhbiB1c2UgSURBICAgICAgICAgICAgICAgICAoYXZhaWxhYmxlIGF0Ci0gICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC51bmkta29lbG4uZGUvcGMvbXNkb3MvcHJvZ3JhbW1pbmcvYXNzZW1ibGVyL2lkYTM1YnguemlwIj4KLSAgICAgICAgICAgICAgICBmdHA6Ly9mdHAudW5pLWtvZWxuLmRlL3BjL21zZG9zL3Byb2dyYW1taW5nL2Fzc2VtYmxlci9pZGEzNWJ4LnppcDwvdWxpbms+KSB0bwotICAgICAgICAgICAgICBkaXNhc3NlbWJsZSB0aGUgcGFydCB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuIFdlIGp1c3QgaGF2ZSB0byBmaW5kIHRoZSBhZGRyZXNzIG9mCi0gICAgICAgICAgICAgIHRoZSBjYWxsIHRvIDxmdW5jdGlvbj5GcmVlTGlicmFyeSgpPC9mdW5jdGlvbj4uIFNvbWUgbGluZXMgYmVmb3JlIHRoYXQgdGhlCi0gICAgICAgICAgICAgIHJ1bnRpbWUgZXJyb3Igb2NjdXJyZWQuIEJ1dCBiZSBjYXJlZnVsISBJbiBzb21lIGNhc2VzIHlvdSBkb24ndCBoYXZlIHRvCi0gICAgICAgICAgICAgIGRpc2Fzc2VtYmxlIHRoZSBtYWluIHByb2dyYW0sIGJ1dCBpbnN0ZWFkIHNvbWUgRExMIGNhbGxlZCBieSBpdCBpbiBvcmRlciB0byBmaW5kCi0gICAgICAgICAgICAgIHRoZSBjb3JyZWN0IHBsYWNlIHdoZXJlIHRoZSBydW50aW1lIGVycm9yIG9jY3VycmVkLiBUaGF0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5Ci0gICAgICAgICAgICAgIGZpbmRpbmcgdGhlIG9yaWdpbiBvZiB0aGUgc2VnbWVudCB2YWx1ZSAoaW4gdGhpcyBjYXNlIDxsaXRlcmFsPjB4MWNmPC9saXRlcmFsPikuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY3JlYXRlZCBhIHJlbGF5IGZpbGUgb2Ygc29tZSBjcmFzaGluZwotICAgICAgICAgICAgICBwcm9ncmFtIGFuZCB3YW50IHRvIHNldCBhIGJyZWFrcG9pbnQgYXQgYSBjZXJ0YWluCi0gICAgICAgICAgICAgIGxvY2F0aW9uIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHRoZSBwcm9ncmFtIGxvYWRzCi0gICAgICAgICAgICAgIHRoZSBicmVha3BvaW50J3Mgc2VnbWVudCBkdXJpbmcgZXhlY3V0aW9uLCB5b3UgbWF5IHNldCBhCi0gICAgICAgICAgICAgIGJyZWFrcG9pbnQgdG8gPGZ1bmN0aW9uPkdldFZlcnNpb24xNi8zMjwvZnVuY3Rpb24+IGFzCi0gICAgICAgICAgICAgIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHZlcnkgb2Z0ZW4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgVGhlbiBkbyBhIDx1c2VyaW5wdXQ+YzwvdXNlcmlucHV0PiB1bnRpbCB5b3UgYXJlIGFibGUgdG8KLSAgICAgICAgICAgICAgc2V0IHRoaXMgYnJlYWtwb2ludCB3aXRob3V0IGVycm9yIG1lc3NhZ2UuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgU29tZSB1c2VmdWwgcHJvZ3JhbXM6Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8dmFyaWFibGVsaXN0PgotICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgICAgICAgICAgIDx0ZXJtPgotICAgICAgICAgICAgICAgICAgPGFwcGxpY2F0aW9uPklEQTwvYXBwbGljYXRpb24+OiAKLSAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLnVuaS1rb2Vsbi5kZS9wYy9tc2Rvcy9wcm9ncmFtbWluZy9hc3NlbWJsZXIvaWRhMzVieC56aXAiPgotICAgICAgICAgICAgICAgICAgICAgIGZ0cDovL2Z0cC51bmkta29lbG4uZGUvcGMvbXNkb3MvcHJvZ3JhbW1pbmcvYXNzZW1ibGVyL2lkYTM1YnguemlwPC91bGluaz4KLSAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgPC90ZXJtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAqVmVyeSogZ29vZCBET1MgZGlzYXNzZW1ibGVyICEgSXQncyBiYWRseSBuZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZyBXaW5lIHNvbWV0aW1lcy4KLSAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgICAgICAgICA8dGVybT4KLSAgICAgICAgICAgICAgICAgIDxhcHBsaWNhdGlvbj5YUkFZPC9hcHBsaWNhdGlvbj46Ci0gICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC50aC1kYXJtc3RhZHQuZGUvcHViL21hY2hpbmVzL21zLWRvcy9TaW1UZWwvbXNkb3MvYXNtdXRpbC94cmF5MTUuemlwIj4KLSAgICAgICAgICAgICAgICAgICAgICBmdHA6Ly9mdHAudGgtZGFybXN0YWR0LmRlL3B1Yi9tYWNoaW5lcy9tcy1kb3MvU2ltVGVsL21zZG9zL2FzbXV0aWwveHJheTE1LnppcDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIDwvdGVybT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVHJhY2VzIERPUyBjYWxscyAoSW50IDIxaCwgRFBNSSwgLi4uKS4gVXNlIGl0IHdpdGgKLSAgICAgICAgICAgICAgICAgICAgV2luZG93cyB0byBjb3JyZWN0IGZpbGUgbWFuYWdlbWVudCBwcm9ibGVtcyBldGMuCi0gICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+Ci0gICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgICAgICAgICAgICAgPHRlcm0+Ci0gICAgICAgICAgICAgICAgICA8YXBwbGljYXRpb24+cGVkdW1wPC9hcHBsaWNhdGlvbj46Ci0gICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9vYWsub2FrbGFuZC5lZHUvcHViL3NpbXRlbG5ldC93aW45NS9wcm9nL3BlZHVtcC56aXAiPgotICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9vYWsub2FrbGFuZC5lZHUvcHViL3NpbXRlbG5ldC93aW45NS9wcm9nL3BlZHVtcC56aXA8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICA8L3Rlcm0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIER1bXBzIHRoZSBpbXBvcnRzIGFuZCBleHBvcnRzIG9mIGEgUEUgKFBvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgIEV4ZWN1dGFibGUpIERMTC4KLSAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAgICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgotICAgICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgPC9zZWN0Mj4KLQotICAgICAgPHNlY3QyPgotICAgIDx0aXRsZT5Tb21lIGJhc2ljIGRlYnVnZ2VyIHVzYWdlczo8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgIEFmdGVyIHN0YXJ0aW5nIHlvdXIgcHJvZ3JhbSB3aXRoCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHNjcmVlbj4KLXdpbmUgLWRlYnVnIG15cHJvZy5leGUKLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIHRoZSBwcm9ncmFtIGxvYWRzIGFuZCB5b3UgZ2V0IGEgcHJvbXB0IGF0IHRoZSBwcm9ncmFtCi0gICAgICAgICAgc3RhcnRpbmcgcG9pbnQuIFRoZW4geW91IGNhbiBzZXQgYnJlYWtwb2ludHM6Ci0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHNjcmVlbj4KLSAgYiBSb3V0aW5lTmFtZSAgICAgIChieSBvdXRpbmUgbmFtZSkgT1IKLSAgYiAqMHg4MTI1NzUgICAgICAgIChieSBhZGRyZXNzKQotICAgICAgICA8L3NjcmVlbj4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgVGhlbiB5b3UgaGl0IDxjb21tYW5kPmM8L2NvbW1hbmQ+IChjb250aW51ZSkgdG8gcnVuIHRoZQotICAgICAgICAgIHByb2dyYW0uIEl0IHN0b3BzIGF0IHRoZSBicmVha3BvaW50LiBZb3UgY2FuIHR5cGUKLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8c2NyZWVuPgotICBzdGVwICAgICAgICAgICAgICAgKHRvIHN0ZXAgb25lIGxpbmUpIE9SCi0gIHN0ZXBpICAgICAgICAgICAgICAodG8gc3RlcCBvbmUgbWFjaGluZSBpbnN0cnVjdGlvbiBhdCBhIHRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgaGVyZSwgaXQgaGVscHMgdG8ga25vdyB0aGUgYmFzaWMgMzg2Ci0gICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gc2V0KQotICBpbmZvIHJlZyAgICAgICAgICAgKHRvIHNlZSByZWdpc3RlcnMpCi0gIGluZm8gc3RhY2sgICAgICAgICAodG8gc2VlIGhleCB2YWx1ZXMgaW4gdGhlIHN0YWNrKQotICBpbmZvIGxvY2FsICAgICAgICAgKHRvIHNlZSBsb2NhbCB2YXJpYWJsZXMpCi0gIGxpc3QgJmx0O2xpbmUgbnVtYmVyJmd0OyAodG8gbGlzdCBzb3VyY2UgY29kZSkKLSAgeCAmbHQ7dmFyaWFibGUgbmFtZSZndDsgICh0byBleGFtaW5lIGEgdmFyaWFibGU7IG9ubHkgd29ya3MgaWYgY29kZQotICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbikKLSAgeCAweDQyNjk5NzggICAgICAgICh0byBleGFtaW5lIGEgbWVtb3J5IGxvY2F0aW9uKQotICA/ICAgICAgICAgICAgICAgICAgKGhlbHApCi0gIHEgICAgICAgICAgICAgICAgICAocXVpdCkKLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgIEJ5IGhpdHRpbmcgPGtleWNhcD5FbnRlcjwva2V5Y2FwPiwgeW91IHJlcGVhdCB0aGUgbGFzdAotICAgICAgICAgIGNvbW1hbmQuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgIDwvc2VjdDI+Ci0gICAgPC9zZWN0MT4KLQotICAgIDxzZWN0MSBpZD0iY3ZzLXJlZ3Jlc3Npb24iPgotICAgICAgPHRpdGxlPkhvdyB0byBkbyByZWdyZXNzaW9uIHRlc3RpbmcgdXNpbmcgQ3ZzPC90aXRsZT4KLQotICAgICAgPHBhcmE+Ci0gICAgICAgIHdyaXR0ZW4gYnkgR2VyYXJkIFBhdGVsICg/Pz8pCi0gICAgICA8L3BhcmE+Ci0gICAgICA8cGFyYT4KLSAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vYnVncmVwb3J0czwvZmlsZW5hbWU+KQotICAgICAgPC9wYXJhPgotCi0gICAgICA8cGFyYT4KLSAgICAgICAgQSBwcm9ibGVtIHRoYXQgY2FuIGhhcHBlbiBzb21ldGltZXMgaXMgJ2l0IHVzZWQgdG8gd29yawotICAgICAgICBiZWZvcmUsIG5vdyBpdCBkb2Vzbid0IGFueW1vcmUuLi4nLiBIZXJlIGlzIGEgc3RlcCBieSBzdGVwCi0gICAgICAgIHByb2NlZHVyZSB0byB0cnkgdG8gcGlucG9pbnQgd2hlbiB0aGUgcHJvYmxlbSBvY2N1cmVkLiBUaGlzIGlzCi0gICAgICAgICpOT1QqIGZvciBjYXN1YWwgdXNlcnMuCi0gICAgICA8L3BhcmE+Ci0KLSAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgR2V0IHRoZSAnZnVsbCBjdnMnIGFyY2hpdmUgZnJvbSB3aW5laHEuIFRoaXMgYXJjaGl2ZSBpcwotICAgICAgICAgICAgdGhlIGN2cyB0cmVlIGJ1dCB3aXRoIHRoZSB0YWdzIGNvbnRyb2xpbmcgdGhlIHZlcnNpb25pbmcKLSAgICAgICAgICAgIHN5c3RlbS4gSXQncyBhIGJpZyBmaWxlICg+IDE1IG1lZykgd2l0aCBhIG5hbWUgbGlrZQotICAgICAgICAgICAgZnVsbC1jdnMtJmx0O2xhc3QgdXBkYXRlIGRhdGUmZ3Q7IChpdCdzIG1vcmUgdGhhbiAxMDBtYgotICAgICAgICAgICAgd2hlbiB1bmNvbXByZXNzZWQsIHlvdSBjYW4ndCB2ZXJ5IHdlbGwgZG8gdGhpcyB3aXRoCi0gICAgICAgICAgICBzbWFsbCwgb2xkIGNvbXB1dGVycyBvciBzbG93IEludGVybmV0IGNvbm5lY3Rpb25zKS4KLSAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIHVudGFyIGl0IGludG8gYSByZXBvc2l0b3J5IGRpcmVjdG9yeToKLSAgICAgICAgICAgIDxzY3JlZW4+Ci1jZCAvaG9tZS9nZXJhcmQKLXRhciAtenhmZnVsbC1jdnMtMjAwMC0wNS0yMC50YXIuZ3oKLW12IHdpbmUgcmVwb3NpdG9yeQotICAgICAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBleHRyYWN0IGEgbmV3IGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4gVGhpcyBkaXJlY3RvcnkgbXVzdAotICAgICAgICAgICAgbm90IGJlIGluIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSByZXBvc2l0b3J5IGVsc2UKLSAgICAgICAgICAgIDxjb21tYW5kPmN2czwvY29tbWFuZD4gd2lsbCB0aGluayBpdCdzIHBhcnQgb2YgdGhlCi0gICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBkZW55IHlvdSBhbiBleHRyYWN0aW9uIGluIHRoZSByZXBvc2l0b3J5OgotICAgICAgICAgIDxzY3JlZW4+Ci1jZCAvaG9tZS9nZXJhcmQKLW12IHdpbmUgd2luZV9jdXJyZW50ICgtPiB0aGlzIHByb3RlY3RzIHlvdXIgY3VycmVudCB3aW5lIHNhbmRib3gsIGlmIGFueSkKLWV4cG9ydCBDVlNST09UPS9ob21lL2dlcmFyZC9yZXBvc2l0b3J5Ci1jZCAvaG9tZS9nZXJhcmQKLWN2cyAtZCAkQ1ZTUk9PVCBjaGVja291dCB3aW5lCi0gICAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTm90ZSB0aGF0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGRvIGEgY2hlY2tvdXQgYXQgYSBnaXZlbgotICAgICAgICAgICAgZGF0ZTsgeW91IGFsd2F5cyBkbyB0aGUgY2hlY2tvdXQgZm9yIHRoZSBsYXN0IGRhdGUgd2hlcmUKLSAgICAgICAgICAgIHRoZSBmdWxsLWN2cy14eHggc25hcHNob3Qgd2FzIGdlbmVyYXRlZC4KLSAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIHlvdSB3aWxsIGhhdmUgbm93IGluIHRoZSA8ZmlsZW5hbWU+fi93aW5lPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGRpcmVjdG9yeSBhbiBpbWFnZSBvZiB0aGUgY3ZzIHRyZWUsIG9uIHRoZSBjbGllbnQgc2lkZS4KLSAgICAgICAgICAgIE5vdyB1cGRhdGUgdGhpcyBpbWFnZSB0byB0aGUgZGF0ZSB5b3Ugd2FudDoKLSAgICAgICAgICA8c2NyZWVuPgotY2QgL2hvbWUvZ2VyYXJkL3dpbmUKLWN2cyAtZCAkQ1ZTUk9PVCB1cGRhdGUgLUQgIjE5OTktMDYtMDEiICAgCi0gICAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGRhdGUgZm9ybWF0IGlzIDxsaXRlcmFsPllZWVktTU0tREQ8L2xpdGVyYWw+LgotICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE1hbnkgbWVzc2FnZXMgd2lsbCBpbmZvcm0geW91IHRoYXQgbW9yZSByZWNlbnQgZmlsZXMgaGF2ZQotICAgICAgICAgICAgYmVlbiBkZWxldGVkIHRvIHNldCBiYWNrIHRoZSBjbGllbnQgY3ZzIHRyZWUgdG8gdGhlIGRhdGUKLSAgICAgICAgICAgIHlvdSBhc2tlZCwgZm9yIGV4YW1wbGU6Ci0gICAgICAgICAgPHNjcmVlbj4KLWN2cyB1cGRhdGU6IHRzeDExL3RzX3hmODZkZ2EyLmMgaXMgbm8gbG9uZ2VyIGluIHRoZSByZXBvc2l0b3J5Ci0gICAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGNvbW1hbmQ+Y3ZzIHVwZGF0ZTwvY29tbWFuZD4gaXMgbm90IGxpbWl0ZWQgdG8gdXBncmFkZSB0bwotICAgICAgICAgICAgYSAqbmV3ZXIqIHZlcnNpb24gYXMgSSBoYXZlIGJlbGlldmVkIGZvciBmYXIgdG9vIGxvbmcgOi0oCi0gICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBOb3cgcHJvY2VlZCBhcyBmb3IgYSBub3JtYWwgdXBkYXRlOgotICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICA8c2NyZWVuPgotLi9jb25maWd1cmUKLW1ha2UgZGVwZW5kICYmIG1ha2UKLSAgICAgICAgICA8L3NjcmVlbj4KLSAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IGhhdmUgZm91bmQgdGhlIGV4YWN0IGRhdGUgd2hlbiBhIGJ1ZyB3YXMgYWRkZWQgdG8KLSAgICAgICAgICAgIHRoZSBjdnMgdHJlZSwgdXNlIHNvbWV0aGluZyBsaWtlIDoKLSAgICAgICAgICA8c2NyZWVuPgotY3ZzIC1kICRDVlNST09UIGRpZmYgLUQgIjE5OTktMDctMTAiIC1EICIxOTk5LTA3LTEyIgotICAgICAgICAgIDwvc2NyZWVuPgotICAgICAgICAgICAgdG8gZ2V0IGFsbCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgbGFzdCBjdnMgdHJlZQotICAgICAgICAgICAgdmVyc2lvbiBrbm93biB0byB3b3JrIGFuZCBjb2RlIHRoYXQgZmlyc3QgZGlzcGxheWVkIHRoZQotICAgICAgICAgICAgbWlzYmVoYXZpb3IuCi0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIEkgZGlkIG5vdCBpbmNsdWRlIGZsYWdzIGZvciA8Y29tbWFuZD5kaWZmPC9jb21tYW5kPgotICAgICAgICAgICAgICBzaW5jZSB0aGV5IGFyZSBpbiBteSA8ZmlsZW5hbWU+LmN2c3JjPC9maWxlbmFtZT4gZmlsZToKLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxzY3JlZW4+Ci1jdnMgLXogMwotdXBkYXRlIC1kUEEKLWRpZmYgLXUKLSAgICAgICAgICAgIDwvc2NyZWVuPgotICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZyb20gdGhpcyBkaWZmIGZpbGUsIHBhcnRpY3VsYXJseSB0aGUgZmlsZSBuYW1lcywgYW5kIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPkNoYW5nZUxvZzwvZmlsZW5hbWU+LCBpdCdzIHVzdWFsbHkgcG9zc2libGUgdG8KLSAgICAgICAgICAgIGZpbmQgdGhlIGRpZmZlcmVudCBpbmRpdmlkdWFsIHBhdGNoZXMgdGhhdCB3ZXJlIGRvbmUgYXQKLSAgICAgICAgICAgIHRoaXMgdGltZS4gCi0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgYW55IG5vbi1wcm9ncmFtbWVyIHJlYWRzIHRoaXMsIHRoZSBmYXN0ZXN0IG1ldGhvZCB0byBnZXQKLSAgICAgICAgICAgIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgcHJvYmxlbSBvY2N1cmVkIGlzIHRvIHVzZSBhIGJpbmFyeQotICAgICAgICAgICAgc2VhcmNoLCB0aGF0IGlzLCBpZiB0aGUgcHJvYmxlbSBvY2N1cmVkIGluIDE5OTksIHN0YXJ0IGF0Ci0gICAgICAgICAgICBtaWQteWVhciwgdGhlbiBpcyB0aGUgcHJvYmxlbSBpcyBhbHJlYWR5IGhlcmUsIGJhY2sgdG8gMXN0Ci0gICAgICAgICAgICBBcHJpbCwgaWYgbm90LCB0byAxc3QgT2N0b2JlciwgYW5kIHNvIG9uLgotICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIG5leHQgc3RlcCBpcyB0byBzdGFydCBmcm9tIHRoZSBsYXN0IHdvcmtpbmcgdmVyc2lvbgotICAgICAgICAgICAgYW5kIHRvIGRpZyB0aGUgaW5kaXZpZHVhbCBjb250cmlidXRpb25zIGZyb20KLSAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaW50ZWdyaXRhLmNvbS9jZ2ktbG9jYWwvbHdnYXRlLnBsL1dJTkUtUEFUQ0hFUy8iPgotICAgICAgICAgICAgICBodHRwOi8vd3d3LmludGVncml0YS5jb20vY2dpLWxvY2FsL2x3Z2F0ZS5wbC9XSU5FLVBBVENIRVMvPC91bGluaz4KLSAgICAgICAgICAgICh3aGVyZSB0aGUgV2luZSBwYXRjaGVzIG1haWxpbmcgbGlzdCBpcyBhcmNoaXZlZCkKLSAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB0aGUgcGF0Y2ggd2FzIGRvbmUgYnkgdGhlIFdpbmUgbWFpbnRhaW5lciBvciBpZiBpdCB3YXMKLSAgICAgICAgICAgIHNlbnQgZGlyZWN0bHkgdG8gaGlzIG1haWwgYWRkcmVzcyB3aXRob3V0IGdvaW5nIGZpcnN0IHRocm91Z2ggCi0gICAgICAgICAgIDx1bGluayB1cmw9Im1haWx0bzp3aW5lLXBhdGNoZXNAd2luZWhxLmNvbSI+d2luZS1wYXRjaGVzPC91bGluaz4sCi0gICAgICAgICAgICB5b3UgYXJlIG91dCBvZiBsdWNrIGFzIHlvdSB3aWxsIG5ldmVyIGZpbmQgdGhlIHBhdGNoIGluCi0gICAgICAgICAgICB0aGUgYXJjaGl2ZS4gSWYgaXQgaXMsIGl0J3Mgb2Z0ZW4gcG9zc2libGUgdG8gYXBwbHkgdGhlCi0gICAgICAgICAgICBwYXRjaGVzIG9uZSBieSBvbmUgdG8gbGFzdCB3b3JraW5nIGN2cyBzbmFwc2hvdCwgY29tcGlsZSBhbmQgdGVzdC4KLSAgICAgICAgICAgIElmIHlvdSBoYXZlIHNhdmVkIHRoZSBuZXh0IGNhbmRpZGF0ZSBhcwotICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL2dlcmFyZC9idWdnZWRwYXRjaDEudHh0PC9maWxlbmFtZT46Ci0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxzY3JlZW4+Ci1jZCAvaG9tZS9nZXJhcmQvd2luZQotcGF0Y2ggLXAgMCAmbHQ7IC9ob21lL2dlcmFyZC9idWdnZWRwYXRjaDEudHh0Ci0gICAgICAgICAgPC9zY3JlZW4+Ci0gICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCZXdhcmUgdGhhdCB0aGUgY29tbWl0dGVkIHBhdGNoIGlzIG5vdCBhbHdheXMgaWRlbnRpY2FsIHRvCi0gICAgICAgICAgICB0aGUgcGF0Y2ggdGhhdCB0aGUgYXV0aG9yIHNlbnQgdG8gd2luZS1wYXRjaGVzLCBhcwotICAgICAgICAgICAgc29tZXRpbWVzIHRoZSBXaW5lIG1haW50YWluZXIgY2hhbmdlcyB0aGluZ3MgYSBiaXQuCi0gICAgICAgICAgPC9wYXJhPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGZpbmQgb25lIHBhdGNoIHRoYXQgaXMgZ2V0dGluZyB0aGUgY3ZzIHNvdXJjZSB0cmVlIHRvCi0gICAgICAgICAgICByZXByb2R1Y2UgdGhlIHByb2JsZW0sIHlvdSBoYXZlIGFsbW9zdCB3b247IHBvc3QgdGhlIHByb2JsZW0gb24KLSAgICAgICAgICAgIDxzeXN0ZW1pdGVtPmNvbXAuZW11bGF0b3JzLndpbmRvd3Mud2luZTwvc3lzdGVtaXRlbT4gYW5kIHRoZXJlCi0gICAgICAgICAgICBpcyBhIGNoYW5jZSB0aGF0IHRoZSBhdXRob3Igd2lsbCBqdW1wIGluIHRvIHN1Z2dlc3QgYSBmaXg7IG9yCi0gICAgICAgICAgICB0aGVyZSBpcyBhbHdheXMgdGhlIHBvc3NpYmlsaXR5IHRvIGxvb2sgaGFyZCBhdCB0aGUgcGF0Y2ggdW50aWwKLSAgICAgICAgICAgIGl0IGlzIGNvZXJjZWQgdG8gcmV2ZWFsIHdoZXJlIGlzIHRoZSBidWcgOi0pIAotICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgPC9zZWN0MT4KICAgPC9jaGFwdGVyPgogCiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2RlZmF1bHQuZHNsIGIvZG9jdW1lbnRhdGlvbi9kZWZhdWx0LmRzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWMwOTYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jdW1lbnRhdGlvbi9kZWZhdWx0LmRzbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgc3R5bGUtc2hlZXQgUFVCTElDICItLy9KYW1lcyBDbGFyay8vRFREIERTU1NMIFN0eWxlIFNoZWV0Ly9FTiIgWworPCFFTlRJVFkgd2Fsc2gtc3R5bGUgUFVCTElDICItLy9Ob3JtYW4gV2Fsc2gvL0RPQ1VNRU5UIERvY0Jvb2sgSFRNTCBTdHlsZXNoZWV0Ly9FTiIgQ0RBVEEgRFNTU0w+Cis8IUVOVElUWSBjeWdudXMtc3R5bGUgU1lTVEVNICIvdXNyL2xpYi9zZ21sL3N0eWxlc2hlZXQvZHNzc2wvZG9jYm9vay9jeWdudXMvY3lnbnVzLWJvdGguZHNsIiBDREFUQSBEU1NTTD4KK10+CisKKzxzdHlsZS1zaGVldD4KKzxzdHlsZS1zcGVjaWZpY2F0aW9uIGlkPSJodG1sIiB1c2U9ImRvY2Jvb2siPgorPHN0eWxlLXNwZWNpZmljYXRpb24tYm9keT4KKworKGRlZmluZSAldXNlLWlkLWFzLWZpbGVuYW1lJSAjdCkKKyhkZWZpbmUgJWh0bWwtZXh0JSAiLmh0bWwiKQorKGRlZmluZSAlaHRtbC1oZWFkZXItdGFncyUgJygpKQorCis7OyhkZWZpbmUgJXN0eWxlc2hlZXQlICIuLi8uLi93aW5laHEuY3NzIikKKzs7KGRlZmluZSAlc3R5bGVzaGVldC10eXBlJSAidGV4dC9jc3MiKQorCisoZGVmaW5lICVzaGFkZS12ZXJiYXRpbSUgI3QpCisoZGVmaW5lICVzZWN0aW9uLWF1dG9sYWJlbCUgI3QpCisKKzs7IEN1c3RvbWl6ZSB0aGUgYm9keSB0YWcgY29sb3IgYXR0cmlidXRlcworKGRlZmluZSAlYm9keS1hdHRyJSAKKyAgKGxpc3QKKyAgIChsaXN0ICJCR0NPTE9SIiAiI0ZGRkZGRiIpCisgICAobGlzdCAiVEVYVCIgIiMwMDAwMDAiKQorICAgKGxpc3QgIkxJTksiICIjYTUwZDBkIikKKyAgIChsaXN0ICJWTElOSyIgIiM1MDUwNTAiKQorICAgKGxpc3QgIkFMSU5LIiAiI2E1MGQwZCIpKSkKKworOzsgQ2hhbmdlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHByb2dyYW1saXN0aW5nIGFuZCBzY3JlZW4sIGV0Yy4KKyhkZWZpbmUgKCRzaGFkZS12ZXJiYXRpbS1hdHRyJCkKKyAgKGxpc3QKKyAgIChsaXN0ICJCT1JERVIiICIwIikKKyAgIDsobGlzdCAiQkdDT0xPUiIgIiNFMEUwRTAiKSAgOyBsaWdodCBncmV5CisgICAobGlzdCAiQkdDT0xPUiIgIiNFMEQwRDAiKSAgOyBsaWdodCBncmF5aXNoIHJlZAorICAgOyhsaXN0ICJCR0NPTE9SIiAiI2JjODY4NiIpICA7IGRhcmsgcm9zZQorICAgOyhsaXN0ICJCR0NPTE9SIiAiI0ZGRDM5QiIpICA7IGJ1cmx5d29vZDEgKHRhbikKKyAgIDsobGlzdCAiQkdDT0xPUiIgIiNGRkU3QkEiKSAgOyB3aGVhdDEgKGxpZ2h0IHRhbikKKyAgIChsaXN0ICJXSURUSCIgKCR0YWJsZS13aWR0aCQpKSkpCisKKzs7IEN1c3RvbWl6ZSBzeXN0ZW1pdGVtIGVsZW1lbnQgdG8gaGF2ZSBkaWZmZXJlbnQgZm9ybWF0dGluZywgYWNjb3JkaW5nCis7OyB0byB3aGljaCBjbGFzcyBhdHRyaWJ1dGUgaXQgY29udGFpbnMuCisoZWxlbWVudCBzeXN0ZW1pdGVtCisgIChsZXQgKChjbGFzcyAoYXR0cmlidXRlLXN0cmluZyAobm9ybWFsaXplICJjbGFzcyIpKSkpCisgICAgKGNvbmQKKyAgICAgKChlcXVhbD8gY2xhc3MgKG5vcm1hbGl6ZSAic3lzdGVtbmFtZSIpKSAoJGl0YWxpYy1tb25vLXNlcSQpKQorICAgICAoKGVxdWFsPyBjbGFzcyAobm9ybWFsaXplICJjb25zdGFudCIpKSAoJG1vbm8tc2VxJCkpCisgICAgIChlbHNlICgkY2hhcnNlcSQpKSkpKQorCis7OyBPa2F5LCB0aGlzIGlzIGEgbGl0dGxlIHRyaWNreS4gIEJ5IGRlZmF1bHQsIGl0IGFwcGVhcnMgdGhhdCBzZXRpbmZvIGlzCis7OyBjb21wbGV0ZWx5IHR1cm5lZCBvZmYgKHdpdGggZW1wdHktc29zb2ZvKS4gIFRoZSBzZXRpbmZvIHRpdGxlIGlzIGV4dHJhY3RlZAorOzsgdGhyb3VnaCBzb21lIG90aGVyIG1lYW5zLCBzbyB3ZSBjYW4gaWdub3JlIGl0IHdoZW4gd2UgcHJvY2VzcyB0aGUgc2V0aW5mbworOzsgYmVsb3cuCisKKzs7IFByb2Nlc3Mgc2V0aW5mbyBlbGVtZW50CisoZWxlbWVudCBzZXRpbmZvIChwcm9jZXNzLWNoaWxkcmVuKSkKKzs7IElnbm9yZSB0aXRsZSBlbGVtZW50IC0tIG90aGVyd2lzZSBpdCdsbCBhcHBlYXIgYWxvbmdzaWRlIHRoZSByZWxlYXNlaW5mbworOzsgZWxlbWVudC4gIElmIHdlIGFkZCBhbnkgb3RoZXIgZWxlbWVudHMgdG8gc2V0aW5mbywgd2UnbGwgaGF2ZSB0byBibGFuayB0aGVtCis7OyBvdXQgaGVyZSwgYWxzby4KKyhlbGVtZW50IChzZXRpbmZvIHRpdGxlKQorICAoZW1wdHktc29zb2ZvKSkKKzs7IEVuY2xvc2UgcmVsZWFzZWluZm8gZWxlbWVudCBpbiBpdGFsaWNzCisoZWxlbWVudCAoc2V0aW5mbyByZWxlYXNlaW5mbykKKzsgIChtYWtlIGVsZW1lbnQgZ2k6ICJpIgorOyAgKHByb2Nlc3MtY2hpbGRyZW4pKSkKKyAgKHByb2Nlc3MtY2hpbGRyZW4pKQorCis8L3N0eWxlLXNwZWNpZmljYXRpb24tYm9keT4KKzwvc3R5bGUtc3BlY2lmaWNhdGlvbj4KKworPGV4dGVybmFsLXNwZWNpZmljYXRpb24gaWQ9ImRvY2Jvb2siIGRvY3VtZW50PSJ3YWxzaC1zdHlsZSI+CisKKzwvc3R5bGUtc2hlZXQ+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2RsbHMuc2dtbCBiL2RvY3VtZW50YXRpb24vZGxscy5zZ21sCmluZGV4IGU2ZTE2NjkuLmExYTc2MzMgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vZGxscy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vZGxscy5zZ21sCkBAIC0xLDUgKzEsNSBAQAotICAgIDxjaGFwdGVyIGlkPSJkbGxzIj4KLSAgICAgIDx0aXRsZT5XaW5lIEJ1aWx0aW4gRExMczwvdGl0bGU+CisgIDxjaGFwdGVyIGlkPSJkbGxzIj4KKyAgICA8dGl0bGU+V2luZSBCdWlsdGluIERMTHMgT3ZlcnZpZXc8L3RpdGxlPgogICAgIDxwYXJhPkEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IFdpbmUncyBidWlsdGluIERMTHMuLi48L3BhcmE+CiAKICAgICA8c2VjdDEgaWQ9ImNvbW1vbi1jb250cm9scyI+CkBAIC0xMSw3ICsxMSw3IEBACiAgICAgICA8L2JyaWRnZWhlYWQ+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5IEVyaWMgS29obCAmbHQ7ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUmZ3Q7CisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczwvZmlsZW5hbWU+KQpAQCAtMTgwLDcgKzE4MCw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RHVtbXkgd3JpdHRlbiBieSBFcmljIEtvaGwuICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBEdW1teSB3cml0dGVuIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC0yMDUsNyArMjA3LDkgQEAKICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgIDx0ZXJtPkF1dGhvcjo8L3Rlcm0+CiAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYT5EdW1teSB3cml0dGVuIGJ5IEVyaWMgS29obC4gJmx0O2Vrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIER1bW15IHdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KQEAgLTIzMCw3ICsyMzQsOSBAQAogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgPHRlcm0+QXV0aG9yOjwvdGVybT4KICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhPkR1bW15IHdyaXR0ZW4gYnkgRXJpYyBLb2hsLiAmbHQ7ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUmZ3Q7PC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgRHVtbXkgd3JpdHRlbiBieSAmbmFtZS1lcmljLWtvaGw7IDxlbWFpbD4mZW1haWwtZXJpYy1rb2hsOzwvZW1haWw+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgpAQCAtMjU1LDcgKzI2MSw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RHVtbXkgd3JpdHRlbiBieSBFcmljIEtvaGwuICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBEdW1teSB3cml0dGVuIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC0yODAsNyArMjg4LDkgQEAKICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgIDx0ZXJtPkF1dGhvcjo8L3Rlcm0+CiAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYT5EdW1teSB3cml0dGVuIGJ5IEFsZXggUHJpZW0uICZsdDthbGV4cEBzY2kua3VuLm5sJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIER1bW15IHdyaXR0ZW4gYnkgJm5hbWUtYWxleC1wcmllbTsgPGVtYWlsPiZlbWFpbC1hbGV4LXByaWVtOzwvZW1haWw+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgpAQCAtMzA1LDcgKzMxNSw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RXJpYyBLb2hsICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBEdW1teSB3cml0dGVuIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC0zMzQsNyArMzQ2LDkgQEAKICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgIDx0ZXJtPkF1dGhvcjo8L3Rlcm0+CiAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYT5EdW1teSB3cml0dGVuIGJ5IEVyaWMgS29obC4gJmx0O2Vrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KQEAgLTM1OSw3ICszNzMsOSBAQAogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgPHRlcm0+QXV0aG9yOjwvdGVybT4KICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhPkVyaWMgS29obCAmbHQ7ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUmZ3Q7PC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgRHVtbXkgd3JpdHRlbiBieSAmbmFtZS1lcmljLWtvaGw7IDxlbWFpbD4mZW1haWwtZXJpYy1rb2hsOzwvZW1haWw+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgpAQCAtMzc4LDkgKzM5NCw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICBEdW1teSB3cml0dGVuIGJ5IEVyaWMgS29obC4gJmx0O2Vrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlJmd0OywKLSAgICAgICAgICAgICAgICAgIEFsZXggUHJpZW0gJmx0O2FsZXhwQHNjaS5rdW4ubmwmZ3Q7CisgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgRHVtbXkgd3JpdHRlbiBieSAmbmFtZS1lcmljLWtvaGw7IDxlbWFpbD4mZW1haWwtZXJpYy1rb2hsOzwvZW1haWw+LAorICAgICAgICAgICAgICAgICAgJm5hbWUtYWxleC1wcmllbTsgPGVtYWlsPiZlbWFpbC1hbGV4LXByaWVtOzwvZW1haWw+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC00MDMsMTYgKzQxOSwxOSBAQAogICAgICAgICAgICAgICAgIDxwYXJhPkR1bW15IHdyaXR0ZW4gYnk6IDwvcGFyYT4KICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5FcmljIEtvaGwuICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5MdWMgVG91cmFuZ2VhdSAmbHQ7bHVjQG1hY2FkYW1pYW4uY29tJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Jm5hbWUtbHVjLXRvdXJhbmdlYXU7IDxlbWFpbD4mZW1haWwtbHVjLXRvdXJhbmdlYXU7PC9lbWFpbD48L3BhcmE+CiAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Lb2VuIERlZm9yY2hlICZsdDtqb3plZkBrb3RuZXQub3JnJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Jm5hbWUta29lbi1kZWZvcmNoZTsgPGVtYWlsPiZlbWFpbC1rb2VuLWRlZm9yY2hlOzwvZW1haWw+PC9wYXJhPgogICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+RnJhbmNpcyBCZWF1ZGV0ICZsdDtmcmFuY2lzQG1hY2FkYW1pYW4uY29tJmd0OyBhbmQgdGhlICJDb3JlbC1UZWFtIjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Jm5hbWUtZnJhbmNpcy1iZWF1ZGV0OyA8ZW1haWw+JmVtYWlsLWZyYW5jaXMtYmVhdWRldDs8L2VtYWlsPgorICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgIkNvcmVsIFRlYW0iPC9wYXJhPgogICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KQEAgLTQ0Myw3ICs0NjIsOSBAQAogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgPHRlcm0+QXV0aG9yOjwvdGVybT4KICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhPkR1bW15IHdyaXR0ZW4gYnkgRXJpYyBLb2hsLiAmbHQ7ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUmZ3Q7PC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1lcmljLWtvaGw7IDxlbWFpbD4mZW1haWwtZXJpYy1rb2hsOzwvZW1haWw+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgpAQCAtNDY4LDcgKzQ4OSw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RHVtbXkgd3JpdHRlbiBieSBFcmljIEtvaGwuICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC00OTMsNyArNTE2LDkgQEAKICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgIDx0ZXJtPkF1dGhvcjo8L3Rlcm0+CiAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYT5EdW1teSB3cml0dGVuIGJ5IEVyaWMgS29obC4gJmx0O2Vrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KQEAgLTU0Myw4ICs1NjgsOCBAQAogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICBBbmRlcnMgQ2FybHNzb24gJmx0O2FuZGVycy5jYXJsc3NvbkBsaW51eC5udSZndDsgYW5kCi0gICAgICAgICAgICAgICAgICBGcmFuY2lzIEJlYXVkZXQgJmx0O2ZyYW5jaXNAbWFjYWRhbWlhbi5jb20mZ3Q7CisgICAgICAgICAgICAgICAgICAmbmFtZS1hbmRlcnMtY2FybHNzb247IDxlbWFpbD4mZW1haWwtYW5kZXJzLWNhcmxzc29uOzwvZW1haWw+IGFuZAorICAgICAgICAgICAgICAgICAgJm5hbWUtZnJhbmNpcy1iZWF1ZGV0OyA8ZW1haWw+JmVtYWlsLWZyYW5jaXMtYmVhdWRldDs8L2VtYWlsPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNTcwLDcgKzU5NSw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RXJpYyBLb2hsICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC02MjMsNyArNjUwLDkgQEAKICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgIDx0ZXJtPkF1dGhvcjo8L3Rlcm0+CiAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYT5BbmRlcnMgQ2FybHNzb24gJmx0O2FuZGVycy5jYXJsc3NvbkBsaW51eC5udSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAmbmFtZS1hbmRlcnMtY2FybHNzb247IDxlbWFpbD4mZW1haWwtYW5kZXJzLWNhcmxzc29uOzwvZW1haWw+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgpAQCAtNjQyLDcgKzY3MSw5IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RXJpYyBLb2hsICZsdDtla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSZndDs8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CkBAIC02NjQsNyArNjk1LDkgQEAKICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgIDx0ZXJtPkF1dGhvcjo8L3Rlcm0+CiAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYT5FcmljIEtvaGwgJmx0O2Vrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KQEAgLTY5MSw4ICs3MjQsOCBAQAogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICBEdW1teSB3cml0dGVuIGJ5IEVyaWMgS29obCAmbHQ7ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUmZ3Q7LAotICAgICAgICAgICAgICAgICAgQWxleCBQcmllbSAmbHQ7YWxleHBAc2NpLmt1bi5ubCZndDsKKyAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPiBhbmQgCisgICAgICAgICAgICAgICAgICAmbmFtZS1hbGV4LXByaWVtOyA8ZW1haWw+JmVtYWlsLWFsZXgtcHJpZW07PC9lbWFpbD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTcxMiwxMyArNzQ1LDE3IEBACiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5BdXRob3I6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RHVtbXkgd3JpdHRlbiBieSBFcmljIEtvaGwuLCBBbGV4IFByaWVtICZsdDthbGV4cEBzY2kua3VuLm5sJmd0OzwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtZXJpYy1rb2hsOyA8ZW1haWw+JmVtYWlsLWVyaWMta29obDs8L2VtYWlsPiBhbmQgCisgICAgICAgICAgICAgICAgICAmbmFtZS1hbGV4LXByaWVtOyA8ZW1haWw+JmVtYWlsLWFsZXgtcHJpZW07PC9lbWFpbD4sIGZpeGVzIGJ5CisgICAgICAgICAgICAgICAgICAmbmFtZS1hcmljLXN0ZXdhcnQ7IDxlbWFpbD4mZW1haWwtYXJpYy1zdGV3YXJ0OzwvZW1haWw+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICA8dGVybT5TdGF0dXM6PC90ZXJtPgogICAgICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VW5kZXIgY29uc3RydWN0aW9uLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5RdWl0ZSB1c2FibGUgYWxyZWFkeS48L3BhcmE+CiAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KQEAgLTczMyw3ICs3NzAsNyBAQAogICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBieSBEaW1pdHJpZSBPLiBQYXVuLgotICAgICAgICAgICAgICAgICAgU29tZSBtaW5vciBjaGFuZ2VzIGJ5IEVyaWMgS29obCAmbHQ7ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUmZ3Q7LgorICAgICAgICAgICAgICAgICAgU29tZSBtaW5vciBjaGFuZ2VzIGJ5ICZuYW1lLWVyaWMta29obDsgPGVtYWlsPiZlbWFpbC1lcmljLWtvaGw7PC9lbWFpbD4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC03OTgsNyArODM1LDcgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxzZWN0Mz4KLSAgICAgICAgICA8dGl0bGU+NS4xIER5bW5hbWljIFN0b3JhZ2UgQXJyYXkgKERTQSk8L3RpdGxlPgorICAgICAgICAgIDx0aXRsZT41LjEgRHluYW1pYyBTdG9yYWdlIEFycmF5IChEU0EpPC90aXRsZT4KIAogICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIERTQSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gc3RvcmUgYW5kIG1hbmFnZSBkeW5hbWljCkBAIC05MDMsNiArOTQwLDYgQEAKIDwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogTG9jYWwgdmFyaWFibGVzOgogbW9kZTogc2dtbAotc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCiBFbmQ6CiAtLT4KZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sIGIvZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwKaW5kZXggMTQzYmQ5NS4uODljMjJkNCAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwKKysrIGIvZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwKQEAgLTYsNyArNiw3IEBACiAgICAgICA8dGl0bGU+V3JpdGluZyBXaW5lIEFQSSBEb2N1bWVudGF0aW9uPC90aXRsZT4KIAogICAgICAgPHBhcmE+Ci0gICAgICAgIHdyaXR0ZW4gYnkgKD8/PykKKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1kb3VnbGFzLXJpZGd3YXk7IDxlbWFpbD4mZW1haWwtZG91Z2xhcy1yaWRnd2F5OzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vUkVBRE1FLmRvY3VtZW50YXRpb248L2ZpbGVuYW1lPikKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgIDwvcGFyYT4KICAgICAgIDxzY3JlZW4+CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgICAgICAgIENvcHlNZXRhRmlsZTMyQSAgIChHREkzMi4yMykKKyAqICAgICAgICAgQ29weU1ldGFGaWxlQSAgIChHREkzMi4yMykKICAqCiAgKiAgQ29waWVzIHRoZSBtZXRhZmlsZSBjb3JyZXNwb25kaW5nIHRvIGhTcmNNZXRhRmlsZSB0byBlaXRoZXIKICAqICBhIGRpc2sgZmlsZSwgaWYgYSBmaWxlbmFtZSBpcyBnaXZlbiwgb3IgdG8gYSBuZXcgbWVtb3J5IGJhc2VkCkBAIC0zMiw4ICszMiw4IEBACiAgKgogICogIENvcHlpbmcgdG8gZGlzayByZXR1cm5zIE5VTEwgZXZlbiBpZiBzdWNjZXNzZnVsLgogICovCi1ITUVUQUZJTEUzMiBXSU5BUEkgQ29weU1ldGFGaWxlMzJBKAotCQkgICBITUVUQUZJTEUzMiBoU3JjTWV0YUZpbGUsIC8qIGhhbmRsZSBvZiBtZXRhZmlsZSB0byBjb3B5ICovCitITUVUQUZJTEUgV0lOQVBJIENvcHlNZXRhRmlsZUEoCisJCSAgIEhNRVRBRklMRSBoU3JjTWV0YUZpbGUsIC8qIGhhbmRsZSBvZiBtZXRhZmlsZSB0byBjb3B5ICovCiAJCSAgIExQQ1NUUiBscEZpbGVuYW1lIC8qIGZpbGVuYW1lIGlmIGNvcHlpbmcgdG8gYSBmaWxlICovCiApIHsgLi4uIH0KICAgICAgIDwvc2NyZWVuPgpAQCAtNDYsMTcgKzQ2LDE3IEBACiAKIAogTkFNRQotICAgICAgIENvcHlNZXRhRmlsZUEgLSBDb3B5TWV0YUZpbGUzMkEgICAoR0RJMzIuMjMpCisgICAgICAgQ29weU1ldGFGaWxlQSAgIChHREkzMi4yMykKIAogU1lOT1BTSVMKLSAgICAgICBITUVUQUZJTEUzMiBDb3B5TWV0YUZpbGVBCisgICAgICAgSE1FVEFGSUxFIENvcHlNZXRhRmlsZUEKICAgICAgICAoCi0gICAgICAgICAgICBITUVUQUZJTEUzMiBoU3JjTWV0YUZpbGUsCisgICAgICAgICAgICBITUVUQUZJTEUgaFNyY01ldGFGaWxlLAogICAgICAgICAgICAgTFBDU1RSIGxwRmlsZW5hbWUKICAgICAgICApOwogCiBQQVJBTUVURVJTCi0gICAgICAgSE1FVEFGSUxFMzIgaFNyY01ldGFGaWxlCisgICAgICAgSE1FVEFGSUxFIGhTcmNNZXRhRmlsZQogICAgICAgICAgICAgICBIYW5kbGUgb2YgbWV0YWZpbGUgdG8gY29weS4KIAogICAgICAgIExQQ1NUUiBscEZpbGVuYW1lCkBAIC04NCw2ICs4NCw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwgYi9kb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwKaW5kZXggZTQ1Y2JmNC4uNDgzNjgyZCAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vZm9udHMuc2dtbApAQCAtNSw3ICs1LDcgQEAKICAgICAgIDx0aXRsZT5Gb250czwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5ID8/PworICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFsZXgta29yb2JrYTsgPGVtYWlsPiZlbWFpbC1hbGV4LWtvcm9ia2E7PC9lbWFpbD4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9mb250czwvZmlsZW5hbWU+KQpAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgIENvbnZlcnQgPGZpbGVuYW1lPi5iZGY8L2ZpbGVuYW1lPiBmaWxlcyBwcm9kdWNlZCBieSBTdGVwCiAgICAgICAgICAgICAgIDEgaW50byA8ZmlsZW5hbWU+LnBjZjwvZmlsZW5hbWU+IGZpbGVzIHdpdGgKLSAgICAgICAgICAgICAgPGNvbW1hbmQ+YmRmdG9wY2YgLW8gJmx0O3RhcmdldCBmaWxlJmd0OyAmbHQ7b3JpZ2luYWwgYmRmLWZpbGUmZ3Q7PC9jb21tYW5kPi4KKyAgICAgICAgICAgICAgPGNvbW1hbmQ+YmRmdG9wY2Y8L2NvbW1hbmQ+LgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPGxpc3RpdGVtPgpAQCAtNDkzLDYgKzQ5Myw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJjaGFwdGVyIiAiIikKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwgYi9kb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmY4OTliCi0tLSAvZGV2L251bGwKKysrIGIvZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwKQEAgLTAsMCArMSwzMjggQEAKKyAgPGNoYXB0ZXIgaWQ9ImdldHRpbmctd2luZSI+CisgICAgPHRpdGxlPkdldHRpbmcgV2luZTwvdGl0bGU+CisKKyAgICA8c2VjdDE+CisgICAgICA8dGl0bGU+VGhlIE1hbnkgRm9ybXMgb2YgV2luZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHN0YW5kYXJkIFdpbmUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIHF1aXRlIGEgZmV3IGRpZmZlcmVudAorICAgICAgICBleGVjdXRhYmxlcywgbGlicmFyaWVzLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gIEFsbCBvZiB0aGVzZQorICAgICAgICBtdXN0IGJlIHNldCB1cCBwcm9wZXJseSBmb3IgV2luZSB0byB3b3JrIHdlbGwuICBUaGlzIGNoYXB0ZXIKKyAgICAgICAgd2lsbCBndWlkZSB5b3UgdGhyb3VnaCB0aGUgbmVjZXNzYXJ5IHN0ZXBzIHRvIGdldCBXaW5lCisgICAgICAgIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJZiB5b3UgYXJlIHJ1bm5pbmcgYSBkaXN0cmlidXRpb24gb2YgTGludXggdGhhdCB1c2VzIHBhY2thZ2VzCisgICAgICAgIHRvIGtlZXAgdHJhY2sgb2YgaW5zdGFsbGVkIHNvZnR3YXJlLCB5b3UgbWF5IGJlIGluIGx1Y2s6IEEKKyAgICAgICAgcHJlcGFja2FnZWQgdmVyc2lvbiBvZiBXaW5lIG1heSBhbHJlYWR5IGV4aXN0IGZvciB5b3VyIHN5c3RlbS4KKyAgICAgICAgVGhlIGZpcnN0IHRocmVlIHNlY3Rpb25zIHdpbGwgdGVsbCB5b3UgaG93IHRvIGZpbmQgdGhlIGxhdGVzdAorICAgICAgICBXaW5lIHBhY2thZ2VzIGFuZCBnZXQgdGhlbSBpbnN0YWxsZWQuICBZb3Ugc2hvdWxkIGJlIGNhcmVmdWwsCisgICAgICAgIHRob3VnaCwgYWJvdXQgbWl4aW5nIHBhY2thZ2VzIGJldHdlZW4gZGlmZmVyZW50IGRpc3RyaWJ1dGlvbnMsCisgICAgICAgIGFuZCBldmVuIGZyb20gZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgT2Z0ZW4gYSBwYWNrYWdlIHdpbGwgb25seSB3b3JrIG9uIHRoZSBkaXN0cmlidXRpb24gaXQncworICAgICAgICBjb21waWxlZCBmb3IuICBXZSdsbCBjb3ZlciA8bGluaworICAgICAgICBsaW5rZW5kPSJnZXR0aW5nLWRpc3QtZGViaWFuIj5EZWJpYW48L2xpbms+LCA8bGluaworICAgICAgICBsaW5rZW5kPSJnZXR0aW5nLWRpc3QtcmVkaGF0Ij5SZWRoYXQ8L2xpbms+LCBhbmQgPGxpbmsKKyAgICAgICAgbGlua2VuZD0iZ2V0dGluZy1kaXN0LW90aGVyIj5vdGhlcjwvbGluaz4gZGlzdHJpYnV0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJZiB5b3UncmUgbm90IGx1Y2t5IGVub3VnaCB0byBoYXZlIGFuIGF2YWlsYWJsZSBwYWNrYWdlIGZvcgorICAgICAgICB5b3VyIG9wZXJhdGluZyBzeXN0ZW0sIG9yIGlmIHlvdSdkIHByZWZlciBhIG5ld2VyIHZlcnNpb24gb2YKKyAgICAgICAgV2luZSB0aGFuIGFscmVhZHkgZXhpc3RzIGFzIGEgcGFja2FnZSwgeW91IG1heSBoYXZlIHRvCisgICAgICAgIGRvd25sb2FkIHRoZSBXaW5lIHNvdXJjZSBjb2RlIGFuZCBjb21waWxlIGl0IHlvdXJzZWxmIG9uIHlvdXIKKyAgICAgICAgb3duIG1hY2hpbmUuICBEb24ndCB3b3JyeSwgaXQncyBub3QgdG9vIGhhcmQgdG8gZG8gdGhpcywKKyAgICAgICAgZXNwZWNpYWxseSB3aXRoIHRoZSBtYW55IGhlbHBmdWwgdG9vbHMgdGhhdCBjb21lIHdpdGggV2luZS4KKyAgICAgICAgWW91IGRvbid0IG5lZWQgYW55IHByb2dyYW1taW5nIGV4cGVyaWVuY2UgdG8gY29tcGlsZSBhbmQKKyAgICAgICAgaW5zdGFsbCBXaW5lLCBhbHRob3VnaCBpdCBtaWdodCBiZSBuaWNlIHRvIGhhdmUgc29tZSBtaW5vcgorICAgICAgICBVTklYIGFkbWluaXN0cmF0aXZlIHNraWxsLiAgV2UnbGwgY292ZXIgaG93IHRvIHJldHJpZXZlIGFuZAorICAgICAgICBjb21waWxlIHRoZSBvZmZpY2lhbCBzb3VyY2UgcmVsZWFzZXMgZnJvbSB0aGUgPGxpbmsKKyAgICAgICAgbGlua2VuZD0iZ2V0dGluZy1zb3VyY2UtZnRwIj5GVFAgYXJjaGl2ZXM8L2xpbms+LCBhbmQgYWxzbyBob3cKKyAgICAgICAgdG8gZ2V0IHRoZSBjdXR0aW5nIGVkZ2UgdXAtdG8tdGhlLW1pbnV0ZSBmcmVzaCBXaW5lIHNvdXJjZQorICAgICAgICBjb2RlIGZyb20gPGxpbmsgbGlua2VuZD0iZ2V0dGluZy1zb3VyY2UtY3ZzIj5DVlMgKENvbmN1cnJlbnQKKyAgICAgICAgVmVyc2lvbnMgU3lzdGVtKTwvbGluaz4uICBCb3RoIHByb2Nlc3NlcyBvZiBzb3VyY2UgY29kZQorICAgICAgICBpbnN0YWxsYXRpb24gYXJlIHNpbWlsYXIsIGFuZCBvbmNlIHlvdSBtYXN0ZXIgb25lLCB5b3Ugc2hvdWxkCisgICAgICAgIGhhdmUgbm8gdHJvdWJsZSBkZWFsaW5nIHdpdGggdGhlIG90aGVyIG9uZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBGaW5hbGx5LCB5b3UgbWF5IHNvbWVkYXkgbmVlZCB0byBrbm93IGhvdyB0byBhcHBseSBhIHNvdXJjZQorICAgICAgICBjb2RlIHBhdGNoIHRvIHlvdXIgdmVyc2lvbiBvZiBXaW5lLiAgUGVyaGFwcyB5b3UndmUgdW5jb3ZlcmVkCisgICAgICAgIGEgYnVnIGluIFdpbmUsIHJlcG9ydGVkIGl0IHRvIHRoZSA8dWxpbmsKKyAgICAgICAgdXJsPSJtYWlsdG86d2luZS1kZXZlbEB3aW5laHEuY29tIj5XaW5lIG1haWxpbmcgbGlzdDwvdWxpbms+LAorICAgICAgICBhbmQgcmVjZWl2ZWQgYSBwYXRjaCBmcm9tIGEgZGV2ZWxvcGVyIHRvIGhvcGVmdWxseSBmaXggdGhlCisgICAgICAgIGJ1Zy4gIFRoZSBsYXN0IHNlY3Rpb24gaW4gdGhpcyBjaGFwdGVyIHdpbGwgc2hvdyB5b3UgaG93IHRvCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9ImdldHRpbmctdXBncmFkaW5nIj5zYWZlbHkgYXBwbHkgdGhlCisgICAgICAgIHBhdGNoPC9saW5rPiBhbmQgcmV2ZXJ0IGl0IGlmIHRoZSBwYXRjaCBkb2Vzbid0IHdvcmsuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iZ2V0dGluZy1kaXN0LWRlYmlhbiI+CisgICAgICA8dGl0bGU+R2V0dGluZyBXaW5lIGZvciBhIERlYmlhbiBTeXN0ZW08L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gbW9zdCBjYXNlcyBvbiBhIERlYmlhbiBzeXN0ZW0sIHlvdSBjYW4gaW5zdGFsbCBXaW5lIHdpdGggYQorICAgICAgICBzaW5nbGUgY29tbWFuZCwgYXMgcm9vdDoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzY3JlZW4+CisjIGFwdC1nZXQgaW5zdGFsbCB3aW5lCisgICAgICA8L3NjcmVlbj4KKyAgICAgIDxwYXJhPgorICAgICAgICA8Y29tbWFuZD5hcHQtZ2V0PC9jb21tYW5kPiB3aWxsIGNvbm5lY3QgdG8gYSBEZWJpYW4gYXJjaGl2ZQorICAgICAgICBhY3Jvc3MgdGhlIEludGVybmV0ICh0aHVzLCB5b3UgbXVzdCBiZSBvbmxpbmUpLCB0aGVuIGRvd25sb2FkCisgICAgICAgIHRoZSBXaW5lIHBhY2thZ2UgYW5kIGluc3RhbGwgaXQgb24geW91ciBzeXN0ZW0uICBFbmQgb2Ygc3RvcnkuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBPZiBjb3Vyc2UsIERlYmlhbidzIHByZS1wYWNrYWdlZCB2ZXJzaW9uIG9mIFdpbmUgbWF5IG5vdCBiZSB0aGUKKyAgICAgICAgbW9zdCByZWNlbnQgcmVsZWFzZS4gIElmIHlvdSBhcmUgcnVubmluZyB0aGUgc3RhYmxlIHZlcnNpb24gb2YKKyAgICAgICAgRGViaWFuLCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0IGEgc2xpZ2h0bHkgbmV3ZXIgdmVyc2lvbiBvZiBXaW5lCisgICAgICAgIGJ5IGdyYWJiaW5nIHRoZSBwYWNrYWdlIGZyb20gdGhlIHVuc3RhYmxlIGRpc3RyaWJ1dGlvbiwgYWx0aG91Z2gKKyAgICAgICAgdGhpcyBtYXkgYmUgYSBsaXR0bGUgcmlza3ksIGRlcGVuZGluZyBvbiBob3cgZmFyIHRoZSB1bnN0YWJsZQorICAgICAgICBkaXN0cmlidXRpb24gaGFzIGRpdmVyZ2VkIGZyb20gdGhlIHN0YWJsZSBvbmUuICBZb3UgY2FuIGZpbmQgYQorICAgICAgICBsaXN0IG9mIFdpbmUgYmluYXJ5IHBhY2thZ2VzIGZvciB0aGUgdmFyaW91cyBEZWJpYW4gcmVsZWFzZXMKKyAgICAgICAgdXNpbmcgdGhlCisgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9jZ2kuZGViaWFuLm9yZy9jZ2ktYmluL3NlYXJjaF9wYWNrYWdlcy5wbD9rZXl3b3Jkcz13aW5lJmFtcDtzZWFyY2hvbj1uYW1lcyZhbXA7dmVyc2lvbj1hbGwmYW1wO3JlbGVhc2U9YWxsIj4KKyAgICAgICAgICBwYWNrYWdlIHNlYXJjaCBlbmdpbmU8L3VsaW5rPiBhdCA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmRlYmlhbi5vcmciPgorICAgICAgICAgIHd3dy5kZWJpYW4ub3JnPC91bGluaz4uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUbyBpbnN0YWxsIGEgcGFja2FnZSB0aGF0J3Mgbm90IHBhcnQgb2YgeW91ciBkaXN0cmlidXRpb24sIHlvdQorICAgICAgICBtdXN0IHVzZSA8Y29tbWFuZD5kcGtnPC9jb21tYW5kPiBpbnN0ZWFkIG9mCisgICAgICAgIDxjb21tYW5kPmFwdC1nZXQ8L2NvbW1hbmQ+LiAgU2luY2UgPGNvbW1hbmQ+ZHBrZzwvY29tbWFuZD4KKyAgICAgICAgZG9lc24ndCBkb3dubG9hZCB0aGUgZmlsZSBmb3IgeW91LCB5b3UgbXVzdCBkbyBpdCB5b3Vyc2VsZi4KKyAgICAgICAgRm9sbG93IHRoZSBsaW5rIG9uIHRoZSBwYWNrYWdlIHNlYXJjaCBlbmdpbmUgdG8gdGhlIGRlc2lyZWQKKyAgICAgICAgcGFja2FnZSwgdGhlbiBjbGljayBvbiB0aGUgPGd1aWJ1dHRvbj5HbyBUbyBEb3dubG9hZAorICAgICAgICAgIFBhZ2U8L2d1aWJ1dHRvbj4gYnV0dG9uIGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4gIFNhdmUgdGhlCisgICAgICAgIGZpbGUgdG8geW91ciBoYXJkIGRyaXZlLCB0aGVuIHJ1biA8Y29tbWFuZD5kcGtnPC9jb21tYW5kPiBvbiBpdC4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzYXZlZCB0aGUgZmlsZSB0byB5b3VyIGhvbWUgZGlyZWN0b3J5LCB5b3UKKyAgICAgICAgbWlnaHQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIGFjdGlvbnMgdG8gaW5zdGFsbCBpdDoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzY3JlZW4+CiskIHN1IC0KKzxlbXBoYXNpcz4mbHQ7VHlwZSBpbiByb290IHBhc3N3b3JkPjwvZW1waGFzaXM+CisjIGNkIC9ob21lL3VzZXIKKyMgZHBrZyAtaSB3aW5lXzAuMC4yMDAwMDEwOS0zLmRlYgorICAgIDwvc2NyZWVuPgorICAgICAgPHBhcmE+CisgICAgICAgIFlvdSBtYXkgYWxzbyB3YW50IHRvIGluc3RhbGwgdGhlCisgICAgICAgIDxzeXN0ZW1pdGVtPndpbmUtZG9jPC9zeXN0ZW1pdGVtPiBwYWNrYWdlLCBhbmQgaWYgeW91IGFyZQorICAgICAgICB1c2luZyBXaW5lIGZyb20gdGhlIDIuMyBkaXN0cmlidXRpb24gKFdvb2R5KSwgdGhlCisgICAgICAgIDxzeXN0ZW1pdGVtPndpbmUtdXRpbHM8L3N5c3RlbWl0ZW0+IHBhY2thZ2UgYXMgd2VsbC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJnZXR0aW5nLWRpc3QtcmVkaGF0Ij4KKyAgICAgIDx0aXRsZT5HZXR0aW5nIFdpbmUgZm9yIGEgUmVkaGF0IFN5c3RlbTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBSZWRoYXQvUlBNIHVzZXJzIGNhbiB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3JwbWZpbmQubmV0L2xpbnV4L1JQTS8iPgorICAgICAgICAgIHJwbWZpbmQubmV0PC91bGluaz4gdG8gdHJhY2sgZG93biBhdmFpbGFibGUgV2luZSBSUE0gYmluYXJpZXMuICAKKyAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3JwbWZpbmQubmV0L2xpbnV4L1JQTS9XQnlOYW1lLmh0bWwiPiBUaGlzCisgICAgICAgICAgcGFnZTwvdWxpbms+IGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgcnBtZmluZCBwYWNrYWdlcyB0aGF0IHN0YXJ0IHdpdGgKKyAgICAgICAgdGhlIGxldHRlciAiVyIsIGluY2x1ZGluZyBhIGZldyBXaW5lIHBhY2thZ2VzCisgICAgICA8L3BhcmE+CisKKyAgICAgIDwhLS0gKioqIFNob3VsZCByZWFsbHkgZmxlc2ggdGhpcyBvdXQgbW9yZSEgIEFueSBSZWRoYXQtcnVubmluZworICAgICAgKioqIHZvbHVudGVlcnM/CisgICAgICAtLT4KKworICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9ImdldHRpbmctZGlzdC1vdGhlciI+CisgICAgICA8dGl0bGU+R2V0dGluZyBXaW5lIGZvciBPdGhlciBEaXN0cmlidXRpb25zPC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBmaXJzdCBwbGFjZSB5b3Ugc2hvdWxkIGxvb2sgaWYgeW91ciBzeXN0ZW0gaXNuJ3QgRGViaWFuIG9yCisgICAgICAgIFJlZGhhdCBpcyB0aGUgPHVsaW5rCisgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rvd25sb2FkLmh0bWwiPldpbmVIUSBEb3dubG9hZAorICAgICAgICBQYWdlPC91bGluaz4uICBUaGlzIHBhZ2UgbGlzdHMgbWFueSBhc3NvcnRlZCBhcmNoaXZlcyBvZgorICAgICAgICBiaW5hcnkgKHByZWNvbXBpbGVkKSBXaW5lIGZpbGVzLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2Z0cHNlYXJjaC5seWNvcy5jb20vP2Zvcm09bWVkaXVtIj4KKyAgICAgICAgICBMeWNvcyBGVFBTZWFyY2g8L3VsaW5rPiBpcyBhbm90aGVyIHVzZWZ1bCByZXNvdXJjZSBmb3IKKyAgICAgICAgdHJhY2tpbmcgZG93biBtaXNjZWxsYW5lb3VzIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPCEtLSAqKiogQWRkIG90aGVyIGRpc3RyaWJ1dGlvbnMsIGUuZy4sIE1hbmRyYWtlLCBTVVNFLCBTbGFja3dhcmUgKioqIC0tPgorCisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iZ2V0dGluZy1zb3VyY2UtZnRwIj4KKyAgICAgIDx0aXRsZT5HZXR0aW5nIFdpbmUgU291cmNlIENvZGUgZnJvbSB0aGUgRlRQIEFyY2hpdmU8L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSWYgdGhlIHZlcnNpb24gb2YgV2luZSB5b3Ugd2FudCBkb2VzIG5vdCBleGlzdCBpbiBwYWNrYWdlIGZvcm0sCisgICAgICAgIHlvdSBjYW4gZG93bmxvYWQgdGhlIHNvdXJjZSBjb2RlIHlvdXJzZWxmIGFuZCBjb21waWxlIGl0IG9uIHlvdXIKKyAgICAgICAgbWFjaGluZS4gIEFsdGhvdWdoIHRoaXMgbWlnaHQgc2VlbSBhIGxpdHRsZSBpbnRpbWlkYXRpbmcgYXQKKyAgICAgICAgZmlyc3QgaWYgeW91J3ZlIG5ldmVyIGRvbmUgaXQsIHlvdSdsbCBmaW5kIHRoYXQgaXQnbGwgb2Z0ZW4gZ28KKyAgICAgICAgcXVpdGUgc21vb3RobHksIGVzcGVjaWFsbHkgb24gdGhlIG5ld2VyIExpbnV4IGRpc3RyaWJ1dGlvbnMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgc2FmZXN0IHdheSB0byBncmFiIHRoZSBzb3VyY2UgaXMgZnJvbSBvbmUgb2YgdGhlIG9mZmljaWFsCisgICAgICAgIEZUUCBhcmNoaXZlcy4gIEFuIHVwIHRvIGRhdGUgbGlzdGluZyBpcyBpbiB0aGUgPHVsaW5rCisgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9BTk5PVU5DRSI+QU5OT1VOQ0UgPC91bGluaz4KKyAgICAgICAgZmlsZSBpbiB0aGUgV2luZSBkaXN0cmlidXRpb24gKHdoaWNoIHlvdSB3b3VsZCBoYXZlIGlmIHlvdQorICAgICAgICBhbHJlYWR5IGRvd25sb2FkZWQgaXQpLiAgSGVyZSBpcyBhIChwb3NzaWJseSBvdXQgb2YgZGF0ZSkgbGlzdAorICAgICAgICBvZiBGVFAgc2VydmVycyBjYXJyeWluZyBXaW5lOgorICAgICAgPC9wYXJhPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CisgICAgICAgICAgICAgIGZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KKyAgICAgICAgICAgIDwvdWxpbms+CisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly90c3gtMTEubWl0LmVkdS9wdWIvbGludXgvQUxQSEEvV2luZS9kZXZlbG9wbWVudC8iPgorICAgICAgICAgICAgICBmdHA6Ly90c3gtMTEubWl0LmVkdS9wdWIvbGludXgvQUxQSEEvV2luZS9kZXZlbG9wbWVudC8KKyAgICAgICAgICAgIDwvdWxpbms+CisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KKyAgICAgICAgICAgICAgZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LworICAgICAgICAgICAgPC91bGluaz4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8iPgorICAgICAgICAgICAgICBmdHA6Ly9vcmN1cy5wcm9nc29jLnV0cy5lZHUuYXUvcHViL1dpbmUvZGV2ZWxvcG1lbnQvCisgICAgICAgICAgICA8L3VsaW5rPgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBvZmZpY2lhbCByZWxlYXNlcyBhcmUgdGFnZ2VkIGJ5IGRhdGUgd2l0aCB0aGUgZm9ybWF0CisgICAgICAgICJXaW5lLVlZWVlNTURELnRhci5neiIuICBZb3VyIGJlc3QgYmV0IGlzIHRvIGdyYWIgdGhlIGxhdGVzdAorICAgICAgICBvbmUuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgRklYTUU6IEV4cGxhaW4gaG93IHRvIHVuLXRhciwgY29tcGlsZSwgYW5kIGluc3RhbGwgV2luZSBmcm9tIGEgdGFyYmFsbC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+PC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9ImdldHRpbmctc291cmNlLWN2cyI+CisgICAgICA8dGl0bGU+R2V0dGluZyBXaW5lIFNvdXJjZSBDb2RlIGZyb20gQ1ZTPC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBvZmZpY2lhbCB3ZWIgcGFnZSBmb3IgV2luZSBDVlMgaXMKKyAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5odG1sIj4KKyAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vZGV2Lmh0bWw8L3VsaW5rPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBGaXJzdCwgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUgbGF0ZXN0IFdpbmUgc291cmNlcworICAgICAgICB1c2luZyBDVlMuIFlvdSBjYW4gdGVsbCBpdCB3aGVyZSB0byBmaW5kIHRoZSBzb3VyY2UgdHJlZSBieQorICAgICAgICBzZXR0aW5nIHRoZSA8ZW52YXI+Q1ZTUk9PVDwvZW52YXI+IGVudmlyb25tZW50IHZhcmlhYmxlLiBZb3UKKyAgICAgICAgYWxzbyBoYXZlIHRvIGxvZyBpbiBhbm9ueW1vdXNseSB0byB0aGUgd2luZSBDVlMgc2VydmVyLiAgSW4KKyAgICAgICAgPGNvbW1hbmQ+YmFzaDwvY29tbWFuZD4sIGl0IG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzY3JlZW4+CiskIGV4cG9ydCBDVlNST09UPTpwc2VydmVyOmN2c0BjdnMud2luZWhxLmNvbTovaG9tZS93aW5lCiskIGN2cyBsb2dpbgorUGFzc3dvcmQ6IGN2cworJCBjdnMgY2hlY2tvdXQgd2luZQorICAgIDwvc2NyZWVuPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoYXQnbGwgcHVsbCBkb3duIHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSBmcm9tCisgICAgICAgIHdpbmVocS5jb20gYW5kIHBsYWNlIGl0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoYWN0dWFsbHkKKyAgICAgICAgaW4gdGhlICd3aW5lJyBzdWJkaXJlY3RvcnkpLiAgQ1ZTIGhhcyBhIG1pbGxpb24gY29tbWFuZCBsaW5lCisgICAgICAgIHBhcmFtZXRlcnMsIHNvIHRoZXJlIGFyZSBtYW55IHdheXMgdG8gcHVsbCBkb3duIGZpbGVzLCBmcm9tCisgICAgICAgIGFueXdoZXJlIGluIHRoZSByZXZpc2lvbiBoaXN0b3J5LiAgTGF0ZXIsIHlvdSBjYW4gZ3JhYiBqdXN0CisgICAgICAgIHRoZSB1cGRhdGVzOgorICAgICAgPC9wYXJhPgorICAgICAgPHNjcmVlbj4KKyQgY3ZzIC1kUCB1cGRhdGUKKyAgICAgIDwvc2NyZWVuPgorICAgICAgPHBhcmE+CisgICAgICAgIDxjb21tYW5kPmN2cyB1cGRhdGU8L2NvbW1hbmQ+IHdvcmtzIGZyb20gaW5zaWRlIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgWW91IGRvbid0IG5lZWQgdGhlIDxlbnZhcj5DVlNST09UPC9lbnZhcj4gZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgdG8gcnVuIGl0IGVpdGhlci4gIFlvdSBqdXN0IGhhdmUgdG8gYmUgaW5zaWRlIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgVGhlIDxwYXJhbWV0ZXI+LWQ8L3BhcmFtZXRlcj4gYW5kIDxwYXJhbWV0ZXI+LVA8L3BhcmFtZXRlcj4KKyAgICAgICAgb3B0aW9ucyBtYWtlIHN1cmUgeW91ciBsb2NhbCBXaW5lIHRyZWUgZGlyZWN0b3J5IHN0cnVjdHVyZSBzdGF5cworICAgICAgICBpbiBzeW5jIHdpdGggdGhlIHJlbW90ZSByZXBvc2l0b3J5LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIHlvdSd2ZSBtYWRlIGNoYW5nZXMsIHlvdSBjYW4gY3JlYXRlIGEgcGF0Y2ggd2l0aAorICAgICAgICA8Y29tbWFuZD5jdnMgZGlmZiAtdTwvY29tbWFuZD4sIHdoaWNoIHNlbmRzIG91dHB1dCB0byBzdGRvdXQKKyAgICAgICAgKHRoZSA8cGFyYW1ldGVyPi11PC9wYXJhbWV0ZXI+IGNvbnRyb2xzIHRoZSBmb3JtYXQgb2YgdGhlCisgICAgICAgIHBhdGNoKS4gU28sIHRvIGNyZWF0ZSBhbiA8ZmlsZW5hbWU+bXlfcGF0Y2guZGlmZjwvZmlsZW5hbWU+CisgICAgICAgIGZpbGUsIHlvdSB3b3VsZCBkbyB0aGlzOgorICAgICAgPC9wYXJhPgorICAgICAgPHNjcmVlbj4KKyQgY3ZzIGRpZmYgLXUgPiBteV9wYXRjaC5kaWZmCisgICAgICA8L3NjcmVlbj4KKyAgICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGNhbGwgPGNvbW1hbmQ+Y3ZzIGRpZmY8L2NvbW1hbmQ+IGZyb20gYW55d2hlcmUgaW4gdGhlCisgICAgICAgIHRyZWUgKGp1c3QgbGlrZSA8Y29tbWFuZD5jdnMgdXBkYXRlPC9jb21tYW5kPiksIGFuZCBpdCB3aWxsCisgICAgICAgIGFsd2F5cyBncmFiIHJlY3Vyc2l2ZWx5IGZyb20gdGhhdCBwb2ludC4gIFlvdSBjYW4gYWxzbyBzcGVjaWZ5CisgICAgICAgIHNpbmdsZSBmaWxlcyBvciBzdWJkaXJlY3RvcmllczoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzY3JlZW4+CiskIGN2cyBkaWZmIC11IGRsbHMvd2luYXNwaSA+IG15X2FzcGlfcGF0Y2guZGlmZgorICAgICAgPC9zY3JlZW4+CisgICAgICA8cGFyYT4KKyAgICAgICAgRXhwZXJpbWVudCBhcm91bmQgYSBsaXR0bGUuICBJdCdzIGZhaXJseSBpbnR1aXRpdmUuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iZ2V0dGluZy11cGdyYWRpbmciPgorICAgICAgPHRpdGxlPlVwZ3JhZGluZyBXaW5lIHdpdGggYSBQYXRjaDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IGhhdmUgdGhlIFdpbmUgc291cmNlIGNvZGUsIGFzIG9wcG9zZWQgdG8gYSBiaW5hcnkKKyAgICAgICAgZGlzdHJpYnV0aW9uLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGFwcGx5aW5nIHBhdGNoZXMgdG8gdGhlCisgICAgICAgIHNvdXJjZSB0cmVlIHRvIGZpeCBidWdzIGFuZCBhZGQgZXhwZXJpbWVudGFsIGZlYXR1cmVzLgorICAgICAgICBQZXJoYXBzIHlvdSd2ZSBmb3VuZCBhIGJ1ZywgcmVwb3J0ZWQgaXQgdG8gdGhlIDx1bGluaworICAgICAgICB1cmw9Im1haWx0bzp3aW5lLWRldmVsQHdpbmVocS5jb20iPldpbmUgbWFpbGluZyBsaXN0PC91bGluaz4sCisgICAgICAgIGFuZCByZWNlaXZlZCBhIHBhdGNoIGZpbGUgdG8gZml4IHRoZSBidWcuICBZb3UgY2FuIGFwcGx5IHRoZQorICAgICAgICBwYXRjaCB3aXRoIHRoZSA8Y29tbWFuZD5wYXRjaDwvY29tbWFuZD4gY29tbWFuZCwgd2hpY2ggdGFrZXMgYQorICAgICAgICBzdHJlYW1lZCBwYXRjaCBmcm9tIDxmaWxlbmFtZT5zdGRpbjwvZmlsZW5hbWU+OgorICAgICAgPC9wYXJhPgorICAgICAgPHNjcmVlbj4KKyQgY2Qgd2luZQorJCBwYXRjaCAtcDAgPCAuLi9wYXRjaF90b19hcHBseS5kaWZmCisgICAgICA8L3NjcmVlbj4KKyAgICAgIDxwYXJhPgorICAgICAgICBUbyByZW1vdmUgdGhlIHBhdGNoLCB1c2UgdGhlIDxwYXJhbWV0ZXI+LVI8L3BhcmFtZXRlcj4gb3B0aW9uOgorICAgICAgPC9wYXJhPgorICAgICAgPHNjcmVlbj4KKyQgcGF0Y2ggLXAwIC1SIDwgLi4vcGF0Y2hfdG9fYXBwbHkuZGlmZgorICAgICAgPC9zY3JlZW4+CisgICAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IHdhbnQgdG8gZG8gYSB0ZXN0IHJ1biB0byBzZWUgaWYgdGhlIHBhdGNoIHdpbGwgYXBwbHkKKyAgICAgICAgc3VjY2Vzc2Z1bGx5IChlLmcuLCBpZiB0aGUgcGF0Y2ggd2FzIGNyZWF0ZWQgZnJvbSBhbiBvbGRlciBvcgorICAgICAgICBuZXdlciB2ZXJzaW9uIG9mIHRoZSB0cmVlKSwgeW91IGNhbiB1c2UgdGhlCisgICAgICAgIDxwYXJhbWV0ZXI+LS1kcnktcnVuPC9wYXJhbWV0ZXI+IHBhcmFtZXRlciB0byBydW4gdGhlIHBhdGNoCisgICAgICAgIHdpdGhvdXQgd3JpdGluZyB0byBhbnkgZmlsZXM6CisgICAgICA8L3BhcmE+CisgICAgICA8c2NyZWVuPgorJCBwYXRjaCAtcDAgLS1kcnktcnVuIDwgLi4vcGF0Y2hfdG9fYXBwbHkuZGlmZgorICAgICAgPC9zY3JlZW4+CisgICAgICA8cGFyYT4KKyAgICAgICAgPGNvbW1hbmQ+cGF0Y2g8L2NvbW1hbmQ+IGlzIHByZXR0eSBzbWFydCBhYm91dCBleHRyYWN0aW5nCisgICAgICAgIHBhdGNoZXMgZnJvbSB0aGUgbWlkZGxlIG9mIGEgZmlsZSwgc28gaWYgeW91IHNhdmUgYW4gZW1haWwgd2l0aAorICAgICAgICBhbiBpbmxpbmVkIHBhdGNoIHRvIGEgZmlsZSBvbiB5b3VyIGhhcmQgZHJpdmUsIHlvdSBjYW4gaW52b2tlCisgICAgICAgIHBhdGNoIG9uIGl0IHdpdGhvdXQgc3RyaXBwaW5nIG91dCB0aGUgZW1haWwgaGVhZGVycyBhbmQgb3RoZXIKKyAgICAgICAgdGV4dC4gIDxjb21tYW5kPnBhdGNoPC9jb21tYW5kPiBpZ25vcmVzIGV2ZXJ5dGhpbmcgdGhhdCBkb2Vzbid0CisgICAgICAgIGxvb2sgbGlrZSBhIHBhdGNoLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEZJWE1FOiBHbyBpbnRvIG1vcmUgZGVwdGggYWJvdXQgdGhlIC1wMCBvcHRpb24uLi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgIDwvY2hhcHRlcj4KKworPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiBzZ21sCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAiY2hhcHRlciIgIiIpCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vaTE4bi5zZ21sIGIvZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwKaW5kZXggMjFlNThlMy4uM2E5NTExYyAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwKKysrIGIvZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwKQEAgLTUsMTIgKzUsMTMgQEAKICAgICAgIDx0aXRsZT5BZGRpbmcgTmV3IExhbmd1YWdlczwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5IE1vcnRlbiBXZWxpbmRlciwgSmFudWFyeSAxOTk2LgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLW1vcnRlbi13ZWxpbmRlcjsgPGVtYWlsPiZlbWFpbC1tb3J0ZW4td2VsaW5kZXI7PC9lbWFpbD4sCisgICAgICAgIEphbnVhcnkgMTk5Ni4KICAgICAgIDwvcGFyYT4KIAogICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgIDxwYXJhPlRoZXJlYWZ0ZXIgcmV2aXNlZCBGZWJydWFyaSAxOTk5IGJ5IEtsYWFzIHZhbiBHZW5kPC9wYXJhPgorICAgICAgICAgIDxwYXJhPlRoZXJlYWZ0ZXIgcmV2aXNlZCBGZWJydWFyeSAxOTk5IGJ5IEtsYWFzIHZhbiBHZW5kPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgPHBhcmE+UmV2aXNlZCBhZ2FpbiBNYXkgMjMsIDE5OTksIEtsYWFzIHZhbiBHZW5kPC9wYXJhPgpAQCAtMzcsNiArMzgsNyBAQAogICAgICAgICAgIDxtZW1iZXI+SmFwYW5lc2U8L21lbWJlcj4KICAgICAgICAgICA8bWVtYmVyPlJvbWFuaWFuPC9tZW1iZXI+CiAgICAgICAgICAgPG1lbWJlcj5Dcm9hdGlhbjwvbWVtYmVyPgorICAgICAgICAgIDxtZW1iZXI+U2xvdmFrPC9tZW1iZXI+CiAgICAgICAgICAgPG1lbWJlcj5UdXJraXNoPC9tZW1iZXI+CiAgICAgICAgICAgPG1lbWJlcj5TbG92YW5pYW48L21lbWJlcj4KICAgICAgICAgPC9zaW1wbGVsaXN0PgpAQCAtMTk2LDYgKzE5OCw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwgYi9kb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwKaW5kZXggM2Y5NDMzZC4uNDUyY2JkOSAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbApAQCAtNiw3ICs2LDcgQEAKICAgICAgIDx0aXRsZT5CdWlsdGluIERMTHM8L3RpdGxlPgogCiAgICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSAmbHQ7anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWp1ZXJnZW4tc2NobWllZDsgPGVtYWlsPiZlbWFpbC1qdWVyZ2VuLXNjaG1pZWQ7PC9lbWFpbD4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9pbnRlcm5hbC1kbGw8L2ZpbGVuYW1lPikKQEAgLTE5NSw3ICsxOTUsNyBAQAogICAgICAgPHRpdGxlPkZpbGUgSGFuZGxlczwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5ICg/Pz8pCisgICAgICAgIFdyaXR0ZW4gYnkgKD8/PykKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9maWxlaGFuZGxlczwvZmlsZW5hbWU+KQpAQCAtMjYwLDcgKzI2MCw3IEBACiAgICAgICA8dGl0bGU+RG9pbmcgQSBIYXJkd2FyZSBUcmFjZSBJbiBXaW5lPC90aXRsZT4KIAogICAgICAgPHBhcmE+Ci0gICAgICAgIHdyaXR0ZW4gYnkgSm9uYXRoYW4gQnV6emFyZCAmbHQ7amFiQGhleC5wcmVzdGVsLmNvLnVrPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWpvbmF0aGFuLWJ1enphcmQ7IDxlbWFpbD4mZW1haWwtam9uYXRoYW4tYnV6emFyZDs8L2VtYWlsPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2lvcG9ydC10cmFjZS1oaW50czwvZmlsZW5hbWU+KQpAQCAtNTMwLDYgKzUzMCw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCBiL2RvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sCmluZGV4IDlhZWQwMTQuLjQ4YTk5OTggMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sCkBAIC0xLDEyICsxLDEzIEBACiAgIDxjaGFwdGVyIGlkPSJpbnN0YWxsaW5nIj4KLSAgICA8dGl0bGU+SW5zdGFsbGluZyBXaW5lPC90aXRsZT4KKyAgICA8dGl0bGU+SW5zdGFsbGluZy9jb21waWxpbmcgV2luZTwvdGl0bGU+CiAgICAgPHBhcmE+SG93IHRvIGluc3RhbGwgV2luZS4uLjwvcGFyYT4KIAotICAgIDxzZWN0MSBpZD0icmVwbGFjZS13aW5kb3dzIj4KKyAgICA8c2VjdDEgaWQ9InJlcGxhY2Utd2luZG93cyIgeHJlZmxhYmVsPSItLUluc3RhbGxpbmcgU2VjdGlvbi0tIj4KICAgICAgIDx0aXRsZT5XV04gIzUyIEZlYXR1cmU6IFJlcGxhY2luZyBXaW5kb3dzPC90aXRsZT4KIAogICAgICAgPHBhcmE+Ci0gICAgICAgIFdyaXR0ZW4gYnkgT3ZlIEvldmVuIDxlbWFpbD5vdmVrQHdpbmVocS5jb208L2VtYWlsPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLW92ZS1rYWF2ZW47IDxlbWFpbD4mZW1haWwtb3ZlLWthYXZlbjs8L2VtYWlsPgorICAgICAgICAKICAgICAgIDwvcGFyYT4KIAogICAgICAgPHNlY3QyPgpAQCAtMTk3LDcgKzE5OCw3IEBACiAgICAgPHNlY3QxIGlkPSJuby13aW5kb3dzIj4KICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIFdpbmUgV2l0aG91dCBXaW5kb3dzPC90aXRsZT4KICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5ID8/PworICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWphbWVzLWp1cmFuOyA8ZW1haWw+JmVtYWlsLWphbWVzLWp1cmFuOzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vbm8td2luZG93czwvZmlsZW5hbWU+KQpAQCAtMjA2LDcgKzIwNyw3IEBACiAgICAgICA8cGFyYT4KICAgICAgICAgQSBtYWpvciBnb2FsIG9mIFdpbmUgaXMgdG8gYWxsb3cgdXNlcnMgdG8gcnVuIFdpbmRvd3MgcHJvZ3JhbXMKICAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gaW5zdGFsbCBXaW5kb3dzIG9uIHRoZWlyIG1hY2hpbmUuIFdpbmUKLSAgICAgICAgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgbWFpbiBETEwncyB1c3VhbGx5CisgICAgICAgIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIG1haW4gRExMcyB1c3VhbGx5CiAgICAgICAgIHByb3ZpZGVkIHdpdGggV2luZG93cy4gVGhlcmVmb3JlLCBvbmNlIFdpbmUgaXMgZmluaXNoZWQsIHlvdQogICAgICAgICB3aWxsIG5vdCBuZWVkIHRvIGhhdmUgd2luZG93cyBpbnN0YWxsZWQgdG8gdXNlIFdpbmUuCiAgICAgICA8L3BhcmE+CkBAIC0yNTksNyArMjYwLDcgQEAKIAogICAgICAgPHBhcmE+CiAgICAgICAgIEJlY2F1c2UgV2luZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBzb21lIHByb2dyYW1zIHdpbGwgd29yawotICAgICAgICBiZXR0ZXIgd2l0aCBuYXRpdmUgV2luZG93cyBETEwncyB0aGFuIHdpdGggV2luZSdzCisgICAgICAgIGJldHRlciB3aXRoIG5hdGl2ZSBXaW5kb3dzIERMTHMgdGhhbiB3aXRoIFdpbmUncwogICAgICAgICByZXBsYWNlbWVudHMuIFdpbmUgaGFzIGJlZW4gZGVzaWduZWQgdG8gbWFrZSB0aGlzIHBvc3NpYmxlLgogICAgICAgICBIZXJlIGFyZSBzb21lIHRpcHMgYnkgSnVlcmdlbiBTY2htaWVkIChhbmQgb3RoZXJzKSBvbiBob3cgdG8KICAgICAgICAgcHJvY2VlZC4gVGhpcyBhc3N1bWVzIHRoYXQgeW91cgpAQCAtMjc1LDcgKzI3Niw3IEBACiAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBSdW4gdGhlIGFwcGxpY2F0aW9uIHdpdGggPHBhcmFtZXRlcj4tLWRlYnVnbXNnCiAgICAgICAgICAgICAgICttb2R1bGUsK2ZpbGU8L3BhcmFtZXRlcj4gdG8gZmluZCBvdXQgd2hpY2ggZmlsZXMgYXJlCi0gICAgICAgICAgICBuZWVkZWQuIENvcHkgdGhlIHJlcXVpcmVkIERMTCdzIG9uZSBieSBvbmUgdG8gdGhlCisgICAgICAgICAgICBuZWVkZWQuIENvcHkgdGhlIHJlcXVpcmVkIERMTHMgb25lIGJ5IG9uZSB0byB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5DOlx3aW5kb3dzXHN5c3RlbTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4gRG8gbm90CiAgICAgICAgICAgICBjb3B5IEtFUk5FTC9LRVJORUwzMiwgR0RJL0dESTMyLCBvciBVU0VSL1VTRVIzMi4gVGhlc2UKICAgICAgICAgICAgIGltcGxlbWVudCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBXaW5kb3dzIEFQSSwgYW5kCkBAIC0yODgsMTMgKzI4OSwxMyBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IG9yCiAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpbmVyYzwvZmlsZW5hbWU+IHRvIHNwZWNpZnkKICAgICAgICAgICAgIDxxdW90ZT5uYXRpdmU8L3F1b3RlPiBiZWZvcmUgPHF1b3RlPmJ1aWx0aW48L3F1b3RlPiBmb3IKLSAgICAgICAgICAgIHRoZSBXaW5kb3dzIERMTCdzIHlvdSB3YW50IHRvIHVzZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHRoZSBXaW5kb3dzIERMTHMgeW91IHdhbnQgdG8gdXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgYWJvdXQgdGhpcywgc2VlIHRoZSBXaW5lIG1hbnBhZ2UuCiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBOb3RlIHRoYXQgc29tZSBuZXR3b3JrIERMTCdzIGFyZSBub3QgbmVlZGVkIGV2ZW4gdGhvdWdoCisgICAgICAgICAgICBOb3RlIHRoYXQgc29tZSBuZXR3b3JrIERMTHMgYXJlIG5vdCBuZWVkZWQgZXZlbiB0aG91Z2gKICAgICAgICAgICAgIFdpbmUgaXMgbG9va2luZyBmb3IgdGhlbS4gVGhlIFdpbmRvd3MKICAgICAgICAgICAgIDxmaWxlbmFtZT5NUFIuRExMPC9maWxlbmFtZT4gY3VycmVudGx5IGRvZXMgbm90IHdvcms7IHlvdQogICAgICAgICAgICAgbXVzdCB1c2UgdGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uLgpAQCAtMzAzLDcgKzMwNCw3IEBACiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvcHkgU0hFTEwvU0hFTEwzMiBhbmQgQ09NRExHL0NPTURMRzMyIENPTU1DVFJML0NPTUNUTDMyCi0gICAgICAgICAgICBvbmx5IGFzIHBhaXJzIHRvIHlvdXIgV2luZSBkaXJlY3RvcnkgKHRoZXNlIERMTCdzIGFyZQorICAgICAgICAgICAgb25seSBhcyBwYWlycyB0byB5b3VyIFdpbmUgZGlyZWN0b3J5ICh0aGVzZSBETExzIGFyZQogICAgICAgICAgICAgPHF1b3RlPmNsZWFuPC9xdW90ZT4gdG8gdXNlKS4gIE1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGVzZQogICAgICAgICAgICAgc3BlY2lmaWVkIGluIHRoZSA8cXVvdGU+W0RsbFBhaXJzXTwvcXVvdGU+IHNlY3Rpb24gb2YKICAgICAgICAgICAgIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiBvciAud2luZXJjLgpAQCAtMzExLDE4ICszMTIsMTggQEAKICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQmUgY29uc2lzdGVudDogVXNlIG9ubHkgRExMJ3MgZnJvbSB0aGUgc2FtZSBXaW5kb3dzIHZlcnNpb24KKyAgICAgICAgICAgIEJlIGNvbnNpc3RlbnQ6IFVzZSBvbmx5IERMTHMgZnJvbSB0aGUgc2FtZSBXaW5kb3dzIHZlcnNpb24KICAgICAgICAgICAgIHRvZ2V0aGVyLgogICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgUHV0IDxmaWxlbmFtZT5yZWdlZGl0LmV4ZTwvZmlsZW5hbWU+IGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPkM6XHdpbmRvd3M8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKLSAgICAgICAgICAgICg8YXBwbGljYXRpb24+b2ZmaWNlOTU8L2FwcGxpY2F0aW9uPiBpbXBvcnRzIGEKLSAgICAgICAgICAgIDxmaWxlbmFtZT4qLnJlZzwvZmlsZW5hbWU+IGZpbGUgd2hlbiBpdCBydW5zIHdpdGggYSBlbXB0eQorICAgICAgICAgICAgPGZpbGVuYW1lPkM6XHdpbmRvd3M8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAoPGFwcGxpY2F0aW9uPk9mZmljZSA5NTwvYXBwbGljYXRpb24+IGltcG9ydHMgYQorICAgICAgICAgICAgPGZpbGVuYW1lPioucmVnPC9maWxlbmFtZT4gZmlsZSB3aGVuIGl0IHJ1bnMgd2l0aCBhbiBlbXB0eQogICAgICAgICAgICAgcmVnaXN0cnksIGRvbid0IGtub3cgYWJvdXQKLSAgICAgICAgICAgIDxhcHBsaWNhdGlvbj5vZmZpY2U5NzwvYXBwbGljYXRpb24+KS4KKyAgICAgICAgICAgIDxhcHBsaWNhdGlvbj5PZmZpY2UgOTc8L2FwcGxpY2F0aW9uPikuCiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICA8bGlzdGl0ZW0+CkBAIC0zMzgsNyArMzM5LDcgQEAKICAgICA8c2VjdDEgaWQ9InZmYXQiPgogICAgICAgPHRpdGxlPkRlYWxpbmcgV2l0aCBGQVQvVkZBVCBQYXJ0aXRpb25zPC90aXRsZT4KICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5IFN0ZXZlbiBFbGxpb3R0IChlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbSkKKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1zdGV2ZW4tZWxsaW90dDsgPGVtYWlsPiZlbWFpbC1zdGV2ZW4tZWxsaW90dDs8L2VtYWlsPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2xpbnV4LWZhdC1wZXJtaXNzaW9uczwvZmlsZW5hbWU+KQpAQCAtMzgxLDExICszODIsMTEgQEAKICAgICAgICAgPC9wYXJhPgogICAgICAgICA8cGFyYT4KICAgICAgICAgICBNb3N0IG1vZGVybiBMaW51eCBkaXN0cmlidXRpb25zIGVpdGhlciBkZXRlY3Qgb3IgYWxsb3cKLSAgICAgICAgICBleGlzdGluZyBGQVQgZmlsZSBzeXN0ZW1zIHRvIGJlIGNvbmZpZ3VyZWQgc28gdGhhdCBjYW4gYmUKKyAgICAgICAgICBleGlzdGluZyBGQVQgZmlsZSBzeXN0ZW1zIHRvIGJlIGNvbmZpZ3VyZWQgc28gdGhhdCB0aGV5IGNhbiBiZQogICAgICAgICAgIG1vdW50ZWQsIGluIGEgbG9jYXRpb24gc3VjaCBhcyA8ZmlsZW5hbWU+L2M8L2ZpbGVuYW1lPiwKICAgICAgICAgICBlaXRoZXIgcGVyc2lzdGVudGx5IChvbiBib290dXApIG9yIG9uIGFuIGFzIG5lZWRlZCBiYXNpcy4gSW4KICAgICAgICAgICBlaXRoZXIgY2FzZSwgYnkgZGVmYXVsdCwgdGhlIHBlcm1pc3Npb25zIHdpbGwgcHJvYmFibHkgYmUKLSAgICAgICAgICBjb25maWd1cmVkIHNvIHRoYXQgdGhleSBsb29rIHNvbWV0aGluZyBsaWtlOgorICAgICAgICAgIGNvbmZpZ3VyZWQgc28gdGhhdCB0aGV5IGxvb2sgbGlrZToKICAgICAgICAgPC9wYXJhPgogICAgICAgICA8c2NyZWVuPgogPHByb21wdD5+PjwvcHJvbXB0Pjx1c2VyaW5wdXQ+Y2QgL2M8L3VzZXJpbnB1dD4KQEAgLTQwMyw3ICs0MDQsNyBAQAogICAgICAgICAgIGZpbGVzeXN0ZW0uCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgVGhlcmUgdGhyZWUgbWFqb3IgYXBwcm9hY2hlcyB0byBvdmVyY29taW5nIHRoZSByZXN0cmljdGl2ZQorICAgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBtYWpvciBhcHByb2FjaGVzIHRvIG92ZXJjb21pbmcgdGhlIHJlc3RyaWN0aXZlCiAgICAgICAgICAgcGVybWlzc2lvbnMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGg6CiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPG9yZGVyZWRsaXN0PgpAQCAtNTI0LDcgKzUyNSw3IEBACiAgICAgICAgICAgU2hhZG93aW5nIHByb3ZpZGVzIGEgZmluZXIgZ3JhbnVsYXJpdHkgb2YgY29udHJvbC4gIFBhcnRzIG9mCiAgICAgICAgICAgdGhlIG9yaWdpbmFsIEZBVCBmaWxlc3lzdGVtIGNhbiBiZSBjb3BpZWQgc28gdGhhdCB0aGUKICAgICAgICAgICBhcHBsaWNhdGlvbiBjYW4gc2FmZWx5IHdvcmsgd2l0aCB0aG9zZSBjb3BpZWQgcGFydHMgd2hpbGUKLSAgICAgICAgICB0aGUgYXBwbGljYXRpb24gY29udGludWUgdG8gZGlyZWN0bHkgcmVhZCB0aGUgcmVtYWluaW5nCisgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIGNvbnRpbnVlcyB0byBkaXJlY3RseSByZWFkIHRoZSByZW1haW5pbmcKICAgICAgICAgICBwYXJ0cy4gIFRoaXMgaXMgZG9uZSB3aXRoIHN5bWJvbGljIGxpbmtzLiBGb3IgZXhhbXBsZSwKICAgICAgICAgICBjb25zaWRlciBhIHN5c3RlbSB3aGVyZSBhbiBhcHBsaWNhdGlvbiBuYW1lZAogICAgICAgICAgIDxhcHBsaWNhdGlvbj5BbkFwcDwvYXBwbGljYXRpb24+IG11c3QgYmUgYWJsZSB0byByZWFkIGFuZApAQCAtNTU4LDcgKzU1OSw4IEBACiAgICAgPHNlY3QxIGlkPSJzY3NpLXN1cHBvcnQiPgogICAgICAgPHRpdGxlPlNDU0kgU3VwcG9ydDwvdGl0bGU+CiAgICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBCcnVjZSBNaWxuZXI7IEFkZGl0aW9ucyBieSBBbmRyZWFzIE1vaHIKKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1icnVjZS1taWxuZXI7IDxlbWFpbD4mZW1haWwtYnJ1Y2UtbWlsbmVyOzwvZW1haWw+OworICAgICAgICBBZGRpdGlvbnMgYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2FzcGk8L2ZpbGVuYW1lPikKQEAgLTU4NiwxOCArNTg4LDE5IEBACiAgICAgICAgIHRvIGl0IHRvIHRoZSBTQ1NJIGJ1cy4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgICBJZiB5b3UgdXNlIHRoZSB3cm9uZyBzY3NpIGRldmljZSBpbiB5b3VyIHNldHVwIGZpbGUsIHlvdSBjYW4gc2VuZAorICAgICAgICBJZiB5b3UgdXNlIHRoZSB3cm9uZyBTQ1NJIGRldmljZSBpbiB5b3VyIHNldHVwIGZpbGUsIHlvdSBjYW4gc2VuZAogICAgICAgICBjb21wbGV0ZWx5IGJvZ3VzIGNvbW1hbmRzIHRvIHRoZSB3cm9uZyBkZXZpY2UgLSBBbiBleGFtcGxlIHdvdWxkIGJlCiAgICAgICAgIGZvcm1hdHRpbmcgeW91ciBoYXJkIGRyaXZlcyAoYXNzdW1pbmcgdGhlIGRldmljZSBnYXZlIHlvdSBwZXJtaXNzaW9uIC0KICAgICAgICAgaWYgeW91J3JlIHJ1bm5pbmcgYXMgcm9vdCwgYWxsIGJldHMgYXJlIG9mZikuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICAgU28gcGxlYXNlIG1ha2Ugc3VyZSB0aGF0ICoqYWxsKiogU0NTSSBkZXZpY2VzIG5vdCBuZWVkZWQgYnkgdGhlIHByb2dyYW0gCisgICAgICAgIFNvIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCA8ZW1waGFzaXM+YWxsPC9lbXBoYXNpcz4gU0NTSSBkZXZpY2VzIG5vdCBuZWVkZWQgYnkgdGhlIHByb2dyYW0gCiAgICAgICAgIGhhdmUgdGhlaXIgcGVybWlzc2lvbnMgc2V0IGFzIHJlc3RyaWN0ZWQgYXMgcG9zc2libGUgISAKICAgICAgIDwvcGFyYT4KIAogICAgICAgPHBhcmE+CiAgICAgICAgIENvb2tib29rIGZvciBzZXR0aW5nIHVwIHNjYW5uZXI6IChBdCBsZWFzdCBob3cgbWluZSBpcyB0byB3b3JrKQorCSh3ZWxsLCBmb3Igb3RoZXIgZGV2aWNlcyBzdWNoIGFzIENEIGJ1cm5lcnMsIE1PIGRyaXZlcywgLi4uLCB0b28pCiAgICAgICA8L3BhcmE+CiAKICAgICAgIDxzZWN0Mj4KQEAgLTYyOCwyMCArNjMxLDI3IEBACiAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgWW91ciBzY3NpIGNhcmQgbXVzdCBiZSBzdXBwb3J0ZWQgdW5kZXIgbGludXguIFRoaXMgd2lsbAotICAgICAgICAgICAgICBub3Qgd29yayB3aXRoIGFuIHVua25vd24gc2NzaSBjYXJkLiBFdmVuIGZvciBjaGVhcCduCisgICAgICAgICAgICAgIFlvdXIgU0NTSSBjYXJkIG11c3QgYmUgc3VwcG9ydGVkIHVuZGVyIGxpbnV4LiBUaGlzIHdpbGwKKyAgICAgICAgICAgICAgbm90IHdvcmsgd2l0aCBhbiB1bmtub3duIFNDU0kgY2FyZC4gRXZlbiBmb3IgY2hlYXAnbgogICAgICAgICAgICAgICBjcmFwcHkgInNjYW5uZXIgb25seSIgY29udHJvbGxlcnMgc29tZSBzcGVjaWFsIExpbnV4CiAgICAgICAgICAgICAgIGRyaXZlcnMgZXhpc3Qgb24gdGhlIG5ldC4KKwkgICAgICBJZiB5b3UgaW50ZW5kIHRvIHVzZSB5b3VyIElERSBkZXZpY2UsIHlvdSBuZWVkIHRvIHVzZSB0aGUKKwkgICAgICBpZGUtc2NzaSBlbXVsYXRpb24uCisJICAgICAgUmVhZAorCSAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cubGludXhkb2Mub3JnL0hPV1RPL0NELVdyaXRpbmctSE9XVE8uaHRtbCI+CisJICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5saW51eGRvYy5vcmcvSE9XVE8vQ0QtV3JpdGluZy1IT1dUTy5odG1sPC91bGluaz4KKwkgICAgICBmb3IgaWRlLXNjc2kgc2V0dXAgaW5zdHJ1Y3Rpb25zLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIENvbXBpbGUgZ2VuZXJpYyBzY3NpIGRyaXZlcnMgaW50byB5b3VyIGtlcm5lbC4KKyAgICAgICAgICAgICAgQ29tcGlsZSBnZW5lcmljIFNDU0kgZHJpdmVycyBpbnRvIHlvdXIga2VybmVsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQgdXNlcyBzbWFsbGVyIHNjc2kgYnVmZmVycyB0aGFuIFdpbmRvd3MuCisJICAgICAgVGhpcyBzZWVtcyB0byBiZSBub3QgcmVxdWlyZWQgYW55IG1vcmUgZm9yIG5ld2VyICgyLjIueCkga2VybmVsczoKKyAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdCB1c2VzIHNtYWxsZXIgU0NTSSBidWZmZXJzIHRoYW4gV2luZG93cy4KICAgICAgICAgICAgICAgVGhlcmUgaXMgYSBrZXJuZWwgYnVpbGQgZGVmaW5lIDxsaXRlcmFsPlNHX0JJR19CVUZGPC9saXRlcmFsPiAoaW4KICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNnLmg8L2ZpbGVuYW1lPikgdGhhdCBpcyBieSBkZWZhdWx0IHNldCB0b28KICAgICAgICAgICAgICAgbG93LiBUaGUgU0FORSBwcm9qZWN0IHJlY29tbWVuZHMKQEAgLTY1MSw5ICs2NjEsMTEgQEAKICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICBNYWtlIHRoZSBkZXZpY2VzIGZvciB0aGUgc2Nhbm5lciAoZ2VuZXJpYyBzY3NpIGRldmljZXMpCi0gICAgICAgICAgICAgIC0gbG9vayBhdCB0aGUgc2NzaSBwcm9ncmFtbWluZyBob3ctdG8gZm9yIGRldmljZQotICAgICAgICAgICAgICBudW1iZXJpbmcuCisgICAgICAgICAgICAgIE1ha2UgdGhlIGRldmljZXMgZm9yIHRoZSBzY2FubmVyIChnZW5lcmljIFNDU0kgZGV2aWNlcykKKyAgICAgICAgICAgICAgLSBsb29rIGF0IHRoZSBTQ1NJIHByb2dyYW1taW5nIEhPV1RPIGF0CisgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cubGludXhkb2Mub3JnL0hPV1RPL1NDU0ktUHJvZ3JhbW1pbmctSE9XVE8uaHRtbCI+CisJCQkgIGh0dHA6Ly93d3cubGludXhkb2Mub3JnL0hPV1RPL1NDU0ktUHJvZ3JhbW1pbmctSE9XVE8uaHRtbDwvdWxpbms+CisJICAgICAgZm9yIGRldmljZSBudW1iZXJpbmcuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICA8bGlzdGl0ZW0+CkBAIC02NjEsMTYgKzY3MywxNyBAQAogICAgICAgICAgICAgICBJIHdvdWxkIHJlY29tbWVuZCBtYWtpbmcgdGhlIHNjYW5uZXIgZGV2aWNlIHdyaXRhYmxlIGJ5CiAgICAgICAgICAgICAgIGEgZ3JvdXAuIEkgbWFkZSBhIGdyb3VwIGNhbGxlZAogICAgICAgICAgICAgICA8bGl0ZXJhbD5zY2FubmVyPC9saXRlcmFsPiBhbmQgYWRkZWQgbXlzZWxmIHRvIGl0LgotICAgICAgICAgICAgICBSdW5uaW5nIGFzIHJvb3QgaW5jcmVhc2VzIHlvdXIgcmlzayBvZiBzZW5kaW5nIGJhZCBzY3NpCisgICAgICAgICAgICAgIFJ1bm5pbmcgYXMgcm9vdCBpbmNyZWFzZXMgeW91ciByaXNrIG9mIHNlbmRpbmcgYmFkIFNDU0kKICAgICAgICAgICAgICAgY29tbWFuZHMgdG8gdGhlIHdyb25nIGRldmljZS4gV2l0aCBhIHJlZ3VsYXIgdXNlciwgeW91CiAgICAgICAgICAgICAgIGFyZSBiZXR0ZXIgcHJvdGVjdGVkLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgIEFkZCBhIHNjc2kgZGV2aWNlIGVudHJ5IGZvciB5b3VyIHBhcnRpY3VsYXIgc2Nhbm5lciB0bwotICAgICAgICAgICAgICB3aW5lLmNvbmYuIFRoZSBmb3JtYXQgaXMgPGxpdGVyYWw+W3Njc2kKLSAgICAgICAgICAgICAgICBjQ3RUZERdPC9saXRlcmFsPiB3aGVyZQorCSAgICAgIEZvciBXaW4zMiBzb2Z0d2FyZSAoV05BU1BJMzIpLCBXaW5lIGhhcyBhdXRvLWRldGVjdGlvbiBpbiBwbGFjZS4KKwkgICAgICBGb3IgV2luMTYgc29mdHdhcmUgKFdJTkFTUEkpLCB5b3UgbmVlZCB0byBhZGQgYSBTQ1NJIGRldmljZSBlbnRyeQorCSAgICAgIGZvciB5b3VyIHBhcnRpY3VsYXIgc2Nhbm5lciB0byB3aW5lLmNvbmYuIFRoZSBmb3JtYXQgaXMKKwkgICAgICA8bGl0ZXJhbD5bc2NzaSBjQ3RUZERdPC9saXRlcmFsPiB3aGVyZQogICAgICAgICAgICAgICA8bGl0ZXJhbD5DPWNvbnRyb2xsZXI8L2xpdGVyYWw+LAogICAgICAgICAgICAgICA8bGl0ZXJhbD5UPXRhcmdldDwvbGl0ZXJhbD4sIDxsaXRlcmFsPkQ9TFVOPC9saXRlcmFsPgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtNzI3LDE0ICs3NDAsMTQgQEAKICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICBhIEZ1aml0c3UgTTI1MTNBIE1PIGRyaXZlICg2NDBNQikgdXNpbmcgZ2VuZXJpYyBzY3NpCisgICAgICAgICAgICAgIGEgRnVqaXRzdSBNMjUxM0EgTU8gZHJpdmUgKDY0ME1CKSB1c2luZyBnZW5lcmljIFNDU0kKICAgICAgICAgICAgICAgZHJpdmVycy4gRm9ybWF0dGluZyBhbmQgZWplY3Rpbmcgd29ya2VkIHBlcmZlY3RseS4KICAgICAgICAgICAgICAgVGhhbmtzIHRvIFV3ZSBCb25uZXMgZm9yIGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgISBbQU1dCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDxwYXJhPgotICAgICAgICAgIEkgbWFrZSBubyB3YXJyYW50eSB0byB0aGUgYXNwaSBjb2RlLiBJdCBtYWtlcyBteSBzY2FubmVyCisgICAgICAgICAgSSBtYWtlIG5vIHdhcnJhbnR5IHRvIHRoZSBBU1BJIGNvZGUuIEl0IG1ha2VzIG15IHNjYW5uZXIKICAgICAgICAgICB3b3JrLiBZb3VyIGRldmljZXMgbWF5IGV4cGxvZGUuIEkgaGF2ZSBubyB3YXkgb2YgZGV0ZXJtaW5pbmcKICAgICAgICAgICB0aGlzLiBJIHRha2UgemVybyByZXNwb25zaWJpbGl0eSEKICAgICAgICAgPC9wYXJhPgpAQCAtNzQ2LDYgKzc1OSw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJjaGFwdGVyIiAiIikKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCBiL2RvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxYmFiYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwKQEAgLTAsMCArMSwyNTkgQEAKKyAgPGNoYXB0ZXIgaWQ9ImludHJvZHVjdGlvbiI+CisgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisKKyAgICA8c2VjdDEgaWQ9IndoYXQtaXMtd2luZSI+CisgICAgICA8dGl0bGU+V2hhdCBpcyBXaW5lPzwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWpvaG4tc2hlZXRzOyA8ZW1haWw+JmVtYWlsLWpvaG4tc2hlZXRzOzwvZW1haWw+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPldpbmRvd3MgYW5kIExpbnV4PC90aXRsZT4KKyAgICAgICAgPCEtLSBnZW5lcmFsIGRlc2NyaXB0aW9uIG9mIHdpbmUsIHdoYXQgZG9lcyBpdCBkbz8gLS0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE1hbnkgcGVvcGxlIGhhdmUgZmFjZWQgdGhlIGZydXN0cmF0aW9uIG9mIG93bmluZyBzb2Z0d2FyZSB0aGF0CisgICAgICAgICAgd29uJ3QgcnVuIG9uIHRoZWlyIGNvbXB1dGVyLiAgV2l0aCB0aGUgcmVjZW50IHBvcHVsYXJpdHkgb2YKKyAgICAgICAgICBMaW51eCwgdGhpcyBpcyBoYXBwZW5pbmcgbW9yZSBhbmQgbW9yZSBvZnRlbiBiZWNhdXNlIG9mCisgICAgICAgICAgZGlmZmVyaW5nIG9wZXJhdGluZyBzeXN0ZW1zLiAgWW91ciBXaW5kb3dzIHNvZnR3YXJlIHdvbid0IHJ1bgorICAgICAgICAgIG9uIExpbnV4LCBhbmQgeW91ciBMaW51eCBzb2Z0d2FyZSB3b24ndCBydW4gaW4gV2luZG93cy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBIGNvbW1vbiBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0gaXMgdG8gaW5zdGFsbCBib3RoIG9wZXJhdGluZworICAgICAgICAgIHN5c3RlbXMgb24gdGhlIHNhbWUgY29tcHV0ZXIsIGFzIGEgPHF1b3RlPmR1YWwgYm9vdDwvcXVvdGU+CisgICAgICAgICAgc3lzdGVtLiAgSWYgeW91IHdhbnQgdG8gd3JpdGUgYSBkb2N1bWVudCBpbiBNUyBXb3JkLCB5b3UgY2FuCisgICAgICAgICAgYm9vdCB1cCBpbiBXaW5kb3dzOyBpZiB5b3Ugd2FudCB0byBydW4gdGhlIEdudUNhc2gsIHRoZSBHTk9NRQorICAgICAgICAgIGZpbmFuY2lhbCBhcHBsaWNhdGlvbiwgeW91IGNhbiBzaHV0IGRvd24geW91ciBXaW5kb3dzIHNlc3Npb24KKyAgICAgICAgICBhbmQgcmVib290IGludG8gTGludXguICBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgdGhhdCB5b3UKKyAgICAgICAgICBjYW4ndCBkbyBib3RoIGF0IHRoZSBzYW1lIHRpbWUuICBFYWNoIHRpbWUgeW91IHN3aXRjaCBiYWNrIGFuZAorICAgICAgICAgIGZvcnRoIGJldHdlZW4gTVMgV29yZCBhbmQgR251Q2FzaCwgeW91IGhhdmUgdG8gcmVib290IGFnYWluLgorICAgICAgICAgIFRoaXMgY2FuIGdldCB0aXJlc29tZSBxdWlja2x5LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIExpZmUgd291bGQgYmUgc28gbXVjaCBlYXNpZXIgaWYgeW91IGNvdWxkIHJ1biBhbGwgeW91cgorICAgICAgICAgIGFwcGxpY2F0aW9ucyBvbiB0aGUgc2FtZSBzeXN0ZW0sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5CisgICAgICAgICAgYXJlIHdyaXR0ZW4gZm9yIFdpbmRvd3Mgb3IgZm9yIExpbnV4LiAgT24gV2luZG93cywgdGhpcyBpc24ndAorICAgICAgICAgIHJlYWxseSBwb3NzaWJsZS4KKyAgICAgICAgICA8Zm9vdG5vdGU+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGVjaG5pY2FsbHksIGlmIHlvdSBoYXZlIHR3byBuZXR3b3JrZWQgY29tcHV0ZXJzLCBvbmUKKyAgICAgICAgICAgICAgcnVubmluZyBXaW5kb3dzIGFuZCB0aGUgb3RoZXIgcnVubmluZyBMaW51eCwgYW5kIGlmIHlvdQorICAgICAgICAgICAgICBoYXZlIHNvbWUgc29ydCBvZiBYIHNlcnZlciBzb2Z0d2FyZSBydW5uaW5nIG9uIHRoZSBXaW5kb3dzCisgICAgICAgICAgICAgIHN5c3RlbSwgeW91IGNhbiBleHBvcnQgTGludXggYXBwbGljYXRpb25zIG9udG8gdGhlIFdpbmRvd3MKKyAgICAgICAgICAgICAgc3lzdGVtLiAgVW5mb3J0dW5hdGVseSwgbW9zdCBkZWNlbnQgd2luMzIgWCBzZXJ2ZXJzIGFyZQorICAgICAgICAgICAgICBjb21tZXJjaWFsIHByb2R1Y3RzLCBtYW55IG9mIHdoaWNoIGNvc3QgcXVpdGUgYSBsb3QuCisgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgZG9lc24ndCBzb2x2ZSB0aGUgcHJvYmxlbSBpZiB5b3Ugb25seSBvd24KKyAgICAgICAgICAgICAgb25lIGNvbXB1dGVyIHN5c3RlbS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2Zvb3Rub3RlPgorICAgICAgICAgIEhvd2V2ZXIsIFdpbmUgbWFrZXMgaXQgcG9zc2libGUgdG8gcnVuIG5hdGl2ZSBXaW5kb3dzCisgICAgICAgICAgYXBwbGljYXRpb25zIGFsb25nc2lkZSBuYXRpdmUgTGludXggYXBwbGljYXRpb25zIG9uIGEgTGludXgKKyAgICAgICAgICAob3IgU29sYXJpcykgc3lzdGVtLiAgWW91IGNhbiBzaGFyZSBkZXNrdG9wIHNwYWNlIGJldHdlZW4gTVMKKyAgICAgICAgICBXb3JkIGFuZCBHbnVDYXNoLCBvdmVybGFwcGluZyB0aGVpciB3aW5kb3dzLCBpY29uaXppbmcgdGhlbSwKKyAgICAgICAgICBhbmQgZXZlbiBydW5uaW5nIHRoZW0gZnJvbSB0aGUgc2FtZSBsYXVuY2hlci4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+RW11bGF0aW9uIHZlcnN1cyBOYXRpdmUgTGlua2luZzwvdGl0bGU+CisgICAgICAgIDwhLS0gZW11bGF0b3IgdnMuIFdpbmVsaWIgLS0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFdpbmUgaXMgYSBVTklYIGltcGxlbWVudGF0aW9uIG9mIHRoZSB3aW4zMiBsaWJyYXJpZXMsCisgICAgICAgICAgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYnkgaHVuZHJlZHMgb2Ygdm9sdW50ZWVyIGRldmVsb3BlcnMgYW5kCisgICAgICAgICAgcmVsZWFzZWQgdW5kZXIgYW4gb3BlbiBzb3VyY2UgbGljZW5zZS4gIEFueW9uZSBjYW4gZG93bmxvYWQKKyAgICAgICAgICBhbmQgcmVhZCB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSwgYW5kIGZpeCBidWdzIHRoYXQgYXJpc2UuCisgICAgICAgICAgVGhlIFdpbmUgY29tbXVuaXR5IGlzIGZ1bGwgb2YgcmljaGx5IHRhbGVudGVkIHByb2dyYW1tZXJzCisgICAgICAgICAgd2hvIGhhdmUgc3BlbnQgdGhvdXNhbmRzIG9mIGhvdXJzIG9mIHBlcnNvbmFsIHRpbWUgb24KKyAgICAgICAgICBpbXByb3ZpbmcgV2luZSBzbyB0aGF0IGl0IHdvcmtzIHdlbGwgd2l0aCB0aGUgd2luMzIKKyAgICAgICAgICA8Zmlyc3R0ZXJtPkFwcGxpY2F0aW9ucyBQcm9ncmFtbWluZyBJbnRlcmZhY2U8L2ZpcnN0dGVybT4KKyAgICAgICAgICAoQVBJKSwgYW5kIGtlZXBzIHBhY2Ugd2l0aCBuZXcgZGV2ZWxvcG1lbnRzIGZyb20gTWljcm9zb2Z0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFdpbmUgY2FuIHJ1biBhcHBsaWNhdGlvbnMgaW4gdHdvIGRpc2NyZXRlIHdheXM6IGFzCisgICAgICAgICAgcHJlLWNvbXBpbGVkIFdpbmRvd3MgYmluYXJpZXMsIG9yIGFzIG5hdGl2ZWx5IGNvbXBpbGVkIFgxMQorICAgICAgICAgIChYIFdpbmRvdyBTeXN0ZW0pIGFwcGxpY2F0aW9ucy4gIFRoZSBmb3JtZXIgbWV0aG9kIHVzZXMKKyAgICAgICAgICBlbXVsYXRpb24gdG8gY29ubmVjdCBhIFdpbmRvd3MgYXBwbGljYXRpb24gdG8gdGhlIFdpbmUKKyAgICAgICAgICBsaWJyYXJpZXMuICBZb3UgY2FuIHJ1biB5b3VyIFdpbmRvd3MgYXBwbGljYXRpb24gZGlyZWN0bHkKKyAgICAgICAgICB3aXRoIHRoZSBlbXVsYXRvciwgYnkgaW5zdGFsbGluZyB0aHJvdWdoIFdpbmUgb3IgYnkgc2ltcGx5CisgICAgICAgICAgY29weWluZyB0aGUgV2luZG93cyBleGVjdXRhYmxlcyBvbnRvIHlvdXIgTGludXggc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBvdGhlciB3YXkgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zIHdpdGggV2luZSByZXF1aXJlcworICAgICAgICAgIHRoYXQgeW91IGhhdmUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgYXBwbGljYXRpb24uICBJbnN0ZWFkCisgICAgICAgICAgb2YgY29tcGlsaW5nIGl0IHdpdGggbmF0aXZlIFdpbmRvd3MgY29tcGlsZXJzLCB5b3UgY2FuCisgICAgICAgICAgY29tcGlsZSBpdCB3aXRoIGEgbmF0aXZlIExpbnV4IGNvbXBpbGVyIC0tCisgICAgICAgICAgPGNvbW1hbmQ+Z2NjPC9jb21tYW5kPiBmb3IgZXhhbXBsZSAtLSBhbmQgbGluayBpbiB0aGUgV2luZQorICAgICAgICAgIExpYnJhcmllcyBhcyB5b3Ugd291bGQgd2l0aCBhbnkgb3RoZXIgbmF0aXZlIFVOSVgKKyAgICAgICAgICBhcHBsaWNhdGlvbi4gIFRoZXNlIG5hdGl2ZWx5IGxpbmtlZCBhcHBsaWNhdGlvbnMgYXJlCisgICAgICAgICAgcmVmZXJyZWQgdG8gYXMgV2luZWxpYiBhcHBsaWNhdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIFdpbmUgVXNlcnMgR3VpZGUgd2lsbCBmb2N1cyBvbiBydW5uaW5nIHByZWNvbXBpbGVkCisgICAgICAgICAgV2luZG93cyBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIFdpbmUgZW11bGF0b3IuCisgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tL2RvY3Mvd2luZWxpYi11c2VyLyI+CisgICAgICAgICAgICBUaGUgV2luZWxpYiBVc2VycyBHdWlkZTwvdWxpbms+IHdpbGwgY292ZXIgV2luZWxpYgorICAgICAgICAgICAgYXBwbGljYXRpb25zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPCEtLSB0aGUgZGV2ZWxvcG1lbnQgbW9kZWwgLS0+CisgICAgICAgIDxwYXJhPgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisKKzwhLS0gKioqIE5vdCByZWFsbHkgdXNlZnVsIGFzIGlzLCBidXQgbWF5IGJlIGFibGUgdG8gcmVjeWNsZSB0aGlzIGVsc2V3aGVyZS4uLgorICAgIDxzZWN0MSBpZD0iZ2V0dGluZy1zdGFydGVkIj4KKyAgICAgIDx0aXRsZT5HZXR0aW5nIHN0YXJ0ZWQ8L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1qb2huLXNoZWV0czsgPGVtYWlsPiZlbWFpbC1qb2huLXNoZWV0czs8L2VtYWlsPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV2luZSBjYW4gYmUgcHJldHR5IGludGltaWRhdGluZyBhdCBmaXJzdC4gIFRoZSBXaW5lCisgICAgICAgIGRpc3RyaWJ1dGlvbiBjb25zaXN0cyBvZiBvdmVyIHR3byB0aG91c2FuZCBmaWxlcyBhbmQgaGFsZiBhCisgICAgICAgIG1pbGxpb24gbGluZXMgb2Ygc291cmNlIGNvZGUKKyAgICAgICAgPGZvb3Rub3RlPgorICAgICAgICAgIDxwYXJhPkNydWRlbHkgY2FsY3VsYXRlZCBmcm9tIHJ1bm5pbmcgPGNvbW1hbmQ+ZmluZCAuIHwgd2MKKyAgICAgICAgICAgICAgLWw8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5jYXQgYGZpbmQgLiAtbmFtZSAiKi5jImAgfCB3YworICAgICAgICAgICAgICAtbDwvY29tbWFuZD4sIHJlc3BlY3RpdmVseSwgZnJvbSBhIGZyZXNoIENWUyBjaGVja291dC48L3BhcmE+CisgICAgICAgIDwvZm9vdG5vdGU+LAorICAgICAgICBhbmQgaXMgcHJvYmFibHkgb25lIG9mIHRoZSBzdGVlcGVzdCBsZWFybmluZyBjdXJ2ZXMgaW4gdGhlCisgICAgICAgIG9wZW4gc291cmNlIHdvcmxkLiAgVGhpcyBjaGFwdGVyIHdpbGwgZ2l2ZSB5b3UgYSBjcmFzaCBjb3Vyc2UKKyAgICAgICAgaW4gdGhlIGltcG9ydGFudCB0b3BpY3MgeW91IG5lZWQgdG8ga25vdyB0byBnZXQgc3RhcnRlZCB3aXRoCisgICAgICAgIHJ1bm5pbmcgV2luZSBhcHBsaWNhdGlvbnMuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKy0tPgorCisgICAgPHNlY3QxIGlkPSJ3aW5lLXN0YXRzIj4KKyAgICAgIDx0aXRsZT5XaW5lIFJlcXVpcmVtZW50cyBhbmQgRmVhdHVyZXM8L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1hbmRyZWFzLW1vaHI7IDxlbWFpbD4mZW1haWwtYW5kcmVhcy1tb2hyOzwvZW1haWw+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0MiBpZD0ic3lzdGVtLXJlcXVpcmVtZW50cyI+CisgICAgICAgIDx0aXRsZT5TeXN0ZW0gcmVxdWlyZW1lbnRzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gb3JkZXIgdG8gcnVuIFdpbmUsIHlvdSBuZWVkIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgYSBjb21wdXRlciA7LSkgV2luZTogb25seSBQQ3MgPj0gaTM4NiBhcmUgc3VwcG9ydGVkIGF0CisgICAgICAgICAgICAgICAgdGhlIG1vbWVudC4gIFdpbmVsaWI6IG90aGVyIHBsYXRmb3JtcyBtaWdodCBiZQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZCwgYnV0IGNhbiBiZSB0cmlja3kuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIGEgVU5JWC1saWtlIG9wZXJhdGluZyBzeXN0ZW0gc3VjaCBhcyBMaW51eCwgKkJTRCwKKyAgICAgICAgICAgICAgICBTb2xhcmlzIHg4NgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA+PSAxNk1CIG9mIFJBTS4gIEV2ZXJ5dGhpbmcgYmVsb3cgaXMgcHJldHR5IG11Y2gKKyAgICAgICAgICAgICAgICB1bnVzYWJsZS4gID49IDY0IE1CIGlzIG5lZWRlZCBmb3IgYSAiZ29vZCIgZXhlY3V0aW9uLgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBhbiBYMTEgd2luZG93IHN5c3RlbSAoWEZyZWU4NiBldGMuKS4gIFdpbmUgaXMgcHJlcGFyZWQKKyAgICAgICAgICAgICAgICBmb3Igb3RoZXIgZ3JhcGhpY3MgZGlzcGxheSBkcml2ZXJzLCBidXQgd3JpdGluZworICAgICAgICAgICAgICAgIHN1cHBvcnQgaXMgbm90IHRvbyBlYXN5LiAgVGhlIHRleHQgY29uc29sZSBkaXNwbGF5CisgICAgICAgICAgICAgICAgZHJpdmVyIGlzIG5lYXJseSB1c2FibGUuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0MiBpZD0id2luZS1jYXBhYmlsaXRpZXMiPgorICAgICAgICA8dGl0bGU+V2luZSBjYXBhYmlsaXRpZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE5vdyB0aGF0IHlvdSBob3BlZnVsbHkgbWFuYWdlZCB0byBmdWxmaWxsIHRoZSByZXF1aXJlbWVudHMKKyAgICAgICAgICBtZW50aW9uZWQgYWJvdmUsIHdlIHRlbGwgeW91IHdoYXQgV2luZSBpcyBhYmxlIHRvIGRvL3N1cHBvcnQ6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgZXhlY3V0aW5nIERPUywgV2luIDMueCBhbmQgV2luOXgvTlQvV2luMjAwMAorICAgICAgICAgICAgICAgIHByb2dyYW1zIChtb3N0IG9mIFdpbjMyJ3MgY29udHJvbHMgYXJlIHN1cHBvcnRlZCkKKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT3B0aW9uYWwgdXNlIG9mIGV4dGVybmFsIHZlbmRvciBETExzIChlLmcuIG9yaWdpbmFsCisgICAgICAgICAgICAgICAgV2luZG93cyBETExzKQorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBYMTEtYmFzZWQgZ3JhcGhpY3MgZGlzcGxheSAocmVtb3RlIGRpc3BsYXkgdG8gYW55IFgKKyAgICAgICAgICAgICAgICB0ZXJtaW5hbCBwb3NzaWJsZSksIHRleHQgbW9kZSBjb25zb2xlCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlc2t0b3AtaW4tYS1ib3ggb3IgbWl4YWJsZSB3aW5kb3dzCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFByZXR0eSBhZHZhbmNlZCBEaXJlY3RYIHN1cHBvcnQgZm9yIGdhbWVzCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEdvb2Qgc3VwcG9ydCBmb3Igc291bmQsIGFsdGVybmF0aXZlIGlucHV0IGRldmljZXMKKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUHJpbnRpbmc6IHN1cHBvcnRzIG5hdGl2ZSBXaW4xNiBwcmludGVyIGRyaXZlcnMsCisgICAgICAgICAgICAgICAgSW50ZXJuYWwgUG9zdFNjcmlwdCBkcml2ZXIKKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTW9kZW1zLCBzZXJpYWwgZGV2aWNlcyBhcmUgc3VwcG9ydGVkCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdpbnNvY2sgVENQL0lQIG5ldHdvcmtpbmcKKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQVNQSSBpbnRlcmZhY2UgKFNDU0kpIHN1cHBvcnQgZm9yIHNjYW5uZXJzLCBDRCB3cml0ZXJzLAorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVbmljb2RlIHN1cHBvcnQsIHJlbGF0aXZlbHkgYWR2YW5jZWQgbGFuZ3VhZ2Ugc3VwcG9ydAorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaW5lIGRlYnVnZ2VyIGFuZCBjb25maWd1cmFibGUgdHJhY2UgbG9nZ2luZyBtZXNzYWdlcworICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiBzZ21sCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAiY2hhcHRlciIgIiIpCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vb2xlLnNnbWwgYi9kb2N1bWVudGF0aW9uL29sZS5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZTQ1NTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2N1bWVudGF0aW9uL29sZS5zZ21sCkBAIC0wLDAgKzEsMzk3IEBACisgIDxjaGFwdGVyIGlkPSJvbGUiPgorICAgIDx0aXRsZT5DT00vT0xFIGluIFdpbmU8L3RpdGxlPgorCisgICAgPHNlY3QxIGlkPSJvbGUtYXJjaGl0ZWN0dXJlIj4KKyAgICAgIDx0aXRsZT5DT00vT0xFIEFyY2hpdGVjdHVyZSBpbiBXaW5lPC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBzZWN0aW9uIGdvZXMgaW50byBkZXRhaWwgYWJvdXQgaG93IENPTS9PTEUyIGFyZQorICAgICAgICBpbXBsZW1lbnRlZCBpbiBXaW5lLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9Im9sZS1iaW5hcnkiPgorICAgICAgPHRpdGxlPlVzaW5nIEJpbmFyeSBPTEUgY29tcG9uZW50cyBpbiBXaW5lPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBpbXBvcnQgcHJlLWNvbXBpbGVkIENPTS9PTEUKKyAgICAgICAgY29tcG9uZW50cy4uLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9ImNvbS13cml0aW5nIj4KKyAgICAgIDx0aXRsZT5Xcml0aW5nIE9MRSBDb21wb25lbnRzIGZvciBXaW5lPC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEJhc2VkIG9uIHRoZSBjb21tZW50cyBpbiA8ZmlsZW5hbWU+d2luZS9pbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDwvZmlsZW5hbWU+LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNyZWF0ZSB5b3VyIG93biBuYXRpdmVseQorICAgICAgICBjb21waWxlZCBDT00vT0xFIGNvbXBvbmVudHMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPk1hY3JvcyB0byBkZWZpbmUgYSBDT00gaW50ZXJmYWNlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgZ29hbCBvZiB0aGUgZm9sbG93aW5nIHNldCBvZiBkZWZpbml0aW9ucyBpcyB0byBwcm92aWRlIGEKKyAgICAgICAgICB3YXkgdG8gdXNlIHRoZSBzYW1lIGhlYWRlciBmaWxlIGRlZmluaXRpb25zIHRvIHByb3ZpZGUgYm90aAorICAgICAgICAgIGEgQyBpbnRlcmZhY2UgYW5kIGEgQysrIG9iamVjdCBvcmllbnRlZCBpbnRlcmZhY2UgdG8gQ09NCisgICAgICAgICAgaW50ZXJmYWNlcy4gVGhlIHR5cGUgb2YgaW50ZXJmYWNlIGlzIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIGJ1dCBpdCBpcyBhbHdheXMgcG9zc2libGUgdG8gZ2V0CisgICAgICAgICAgdGhlIEMgaW50ZXJmYWNlIGluIEMrKyBieSBkZWZpbmluZyBDSU5URVJGQUNFLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEl0IGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgYXNzdW1wdGlvbnM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgYWxsIENPTSBpbnRlcmZhY2VzIGRlcml2ZSBmcm9tIElVbmtub3duLCB0aGlzIHNob3VsZCBub3QKKyAgICAgICAgICAgICAgYmUgYSBwcm9ibGVtLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIHRoZSBoZWFkZXIgZmlsZSBvbmx5IGRlZmluZXMgdGhlIGludGVyZmFjZSwgdGhlIGFjdHVhbAorICAgICAgICAgICAgICBmaWVsZHMgYXJlIGRlZmluZWQgc2VwYXJhdGVseSBpbiB0aGUgQyBmaWxlIGltcGxlbWVudGluZworICAgICAgICAgICAgICB0aGUgaW50ZXJmYWNlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgbmF0dXJhbCBhcHByb2FjaCB0byB0aGlzIHByb2JsZW0gd291bGQgYmUgdG8gbWFrZSBzdXJlCisgICAgICAgICAgd2UgZ2V0IGEgQysrIGNsYXNzIGFuZCB2aXJ0dWFsIG1ldGhvZHMgaW4gQysrIGFuZCBhCisgICAgICAgICAgc3RydWN0dXJlIHdpdGggYSB0YWJsZSBvZiBwb2ludGVyIHRvIGZ1bmN0aW9ucyBpbiBDLgorICAgICAgICAgIFVuZm9ydHVuYXRlbHkgdGhlIGxheW91dCBvZiB0aGUgdmlydHVhbCB0YWJsZSBpcyBjb21waWxlcgorICAgICAgICAgIHNwZWNpZmljLCB0aGUgbGF5b3V0IG9mIGcrKyB2aXJ0dWFsIHRhYmxlcyBpcyBub3QgdGhlIHNhbWUKKyAgICAgICAgICBhcyB0aGF0IG9mIGFuIGVnY3MgdmlydHVhbCB0YWJsZSB3aGljaCBpcyBub3QgdGhlIHNhbWUgYXMKKyAgICAgICAgICB0aGF0IGdlbmVyYXRlZCBieSBWaXN1YWwgQysuIFRoZXJlIGFyZSB3b3JrYXJvdW5kcyB0byBtYWtlCisgICAgICAgICAgdGhlIHZpcnR1YWwgdGFibGVzIGNvbXBhdGlibGUgdmlhIHBhZGRpbmcgYnV0IHVuZm9ydHVuYXRlbHkKKyAgICAgICAgICB0aGUgb25lIHdoaWNoIGlzIGltcG9zZWQgdG8gdGhlIFdJTkUgZW11bGF0b3IgYnkgdGhlIFdpbmRvd3MKKyAgICAgICAgICBiaW5hcmllcywgaS5lLiB0aGUgVmlzdWFsIEMrKyBvbmUsIGlzIHRoZSBtb3N0IGNvbXBhY3Qgb2YKKyAgICAgICAgICBhbGwuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU28gdGhlIHNvbHV0aW9uIEkgZmluYWxseSBhZG9wdGVkIGRvZXMgbm90IHVzZSB2aXJ0dWFsCisgICAgICAgICAgdGFibGVzLiBJbnN0ZWFkIEkgdXNlIGlubGluZSBub24gdmlydHVhbCBtZXRob2RzIHRoYXQKKyAgICAgICAgICBkZXJlZmVyZW5jZSB0aGUgbWV0aG9kIHBvaW50ZXIgdGhlbXNlbHZlcyBhbmQgcGVyZm9ybSB0aGUKKyAgICAgICAgICBjYWxsLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIExldCdzIHRha2UgRGlyZWN0M0QgYXMgYW4gZXhhbXBsZToKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+I2RlZmluZSBJQ09NX0lOVEVSRkFDRSBJRGlyZWN0M0QKKyNkZWZpbmUgSURpcmVjdDNEX01FVEhPRFMgXAorICAgIElDT01fTUVUSE9EMShIUkVTVUxULEluaXRpYWxpemUsICAgIFJFRklJRCwpIFwKKyAgICBJQ09NX01FVEhPRDIoSFJFU1VMVCxFbnVtRGV2aWNlcywgICBMUEQzREVOVU1ERVZJQ0VTQ0FMTEJBQ0ssLCBMUFZPSUQsKSBcCisgICAgSUNPTV9NRVRIT0QyKEhSRVNVTFQsQ3JlYXRlTGlnaHQsICAgTFBESVJFQ1QzRExJR0hUKiwsIElVbmtub3duKiwpIFwKKyAgICBJQ09NX01FVEhPRDIoSFJFU1VMVCxDcmVhdGVNYXRlcmlhbCxMUERJUkVDVDNETUFURVJJQUwqLCwgSVVua25vd24qLCkgXAorICAgIElDT01fTUVUSE9EMihIUkVTVUxULENyZWF0ZVZpZXdwb3J0LExQRElSRUNUM0RWSUVXUE9SVCosLCBJVW5rbm93biosKSBcCisgICAgSUNPTV9NRVRIT0QyKEhSRVNVTFQsRmluZERldmljZSwgICAgTFBEM0RGSU5EREVWSUNFU0VBUkNILCwgTFBEM0RGSU5EREVWSUNFUkVTVUxULCkKKyNkZWZpbmUgSURpcmVjdDNEX0lNRVRIT0RTIFwKKyAgICBJVW5rbm93bl9JTUVUSE9EUyBcCisgICAgSURpcmVjdDNEX01FVEhPRFMKK0lDT01fREVGSU5FKElEaXJlY3QzRCxJVW5rbm93bikKKyN1bmRlZiBJQ09NX0lOVEVSRkFDRQorCisjaWZkZWYgSUNPTV9DSU5URVJGQUNFCisvLyAqKiogSVVua25vd24gbWV0aG9kcyAqKiogLy8KKyNkZWZpbmUgSURpcmVjdDNEX1F1ZXJ5SW50ZXJmYWNlKHAsYSxiKSBJQ09NX0NBTEwyKFF1ZXJ5SW50ZXJmYWNlLHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfQWRkUmVmKHApICAgICAgICAgICAgIElDT01fQ0FMTCAoQWRkUmVmLHApCisjZGVmaW5lIElEaXJlY3QzRF9SZWxlYXNlKHApICAgICAgICAgICAgSUNPTV9DQUxMIChSZWxlYXNlLHApCisvLyAqKiogSURpcmVjdDNEIG1ldGhvZHMgKioqIC8vCisjZGVmaW5lIElEaXJlY3QzRF9Jbml0aWFsaXplKHAsYSkgICAgICAgSUNPTV9DQUxMMShJbml0aWFsaXplLHAsYSkKKyNkZWZpbmUgSURpcmVjdDNEX0VudW1EZXZpY2VzKHAsYSxiKSAgICBJQ09NX0NBTEwyKEVudW1EZXZpY2UscCxhLGIpCisjZGVmaW5lIElEaXJlY3QzRF9DcmVhdGVMaWdodChwLGEsYikgICAgSUNPTV9DQUxMMihDcmVhdGVMaWdodCxwLGEsYikKKyNkZWZpbmUgSURpcmVjdDNEX0NyZWF0ZU1hdGVyaWFsKHAsYSxiKSBJQ09NX0NBTEwyKENyZWF0ZU1hdGVyaWFsLHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfQ3JlYXRlVmlld3BvcnQocCxhLGIpIElDT01fQ0FMTDIoQ3JlYXRlVmlld3BvcnQscCxhLGIpCisjZGVmaW5lIElEaXJlY3QzRF9GaW5kRGV2aWNlKHAsYSxiKSAgICAgSUNPTV9DQUxMMihGaW5kRGV2aWNlLHAsYSxiKQorI2VuZGlmPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQ29tbWVudHM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIElDT01fSU5URVJGQUNFIG1hY3JvIGlzIHVzZWQgaW4gdGhlIElDT01fTUVUSE9EIG1hY3JvcworICAgICAgICAgIHRvIGRlZmluZSB0aGUgdHlwZSBvZiB0aGUgJ3RoaXMnIHBvaW50ZXIuIERlZmluaW5nIHRoaXMKKyAgICAgICAgICBtYWNybyBoZXJlIHNhdmVzIHVzIHRoZSB0cm91YmxlIG9mIGhhdmluZyB0byByZXBlYXQgdGhlCisgICAgICAgICAgaW50ZXJmYWNlIG5hbWUgZXZlcnl3aGVyZS4gTm90ZSBob3dldmVyIHRoYXQgYmVjYXVzZSBvZiB0aGUKKyAgICAgICAgICB3YXkgbWFjcm9zIHdvcmssIGEgbWFjcm8gbGlrZSBJQ09NX01FVEhPRDEgY2Fubm90IHVzZQorICAgICAgICAgICdJQ09NX0lOVEVSRkFDRSMjX1ZUQUJMRScgYmVjYXVzZSB0aGlzIHdvdWxkIGdpdmUKKyAgICAgICAgICAnSUNPTV9JTlRFUkZBQ0VfVlRBQkxFJyBhbmQgbm90ICdJRGlyZWN0M0RfVlRBQkxFJy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJQ09NX01FVEhPRFMgZGVmaW5lcyB0aGUgbWV0aG9kcyBzcGVjaWZpYyB0byB0aGlzCisgICAgICAgICAgaW50ZXJmYWNlLiBJdCBpcyB0aGVuIGFnZ3JlZ2F0ZWQgd2l0aCB0aGUgaW5oZXJpdGVkIG1ldGhvZHMKKyAgICAgICAgICB0byBmb3JtIElDT01fSU1FVEhPRFMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSUNPTV9JTUVUSE9EUyBkZWZpbmVzIHRoZSBsaXN0IG9mIG1ldGhvZHMgdGhhdCBhcmUKKyAgICAgICAgICBpbmhlcml0YWJsZSBmcm9tIHRoaXMgaW50ZXJmYWNlLiBJdCBtdXN0IGJlIHdyaXR0ZW4gbWFudWFsbHkKKyAgICAgICAgICAocmF0aGVyIHRoYW4gdXNpbmcgYSBtYWNybyB0byBnZW5lcmF0ZSB0aGUgZXF1aXZhbGVudCBjb2RlKQorICAgICAgICAgIHRvIGF2b2lkIG1hY3JvIHJlY3Vyc2lvbiAod2hpY2ggY29tcGlsZXJzIGRvbid0IGxpa2UpLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBJQ09NX0RFRklORSBmaW5hbGx5IGRlY2xhcmVzIGFsbCB0aGUgc3RydWN0dXJlcworICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgdGhlIGludGVyZmFjZS4gV2UgaGF2ZSB0byBleHBsaWNpdGx5IHVzZSB0aGUKKyAgICAgICAgICBpbnRlcmZhY2UgbmFtZSBmb3IgbWFjcm8gZXhwYW5zaW9uIHJlYXNvbnMgYWdhaW4uICBJbmhlcml0ZWQKKyAgICAgICAgICBtZXRob2RzIGFyZSBpbmhlcml0ZWQgaW4gQyBieSB1c2luZyB0aGUgSURpcmVjdDNEX01FVEhPRFMKKyAgICAgICAgICBtYWNybyBhbmQgdGhlIHBhcmVudCdzIFh4eF9JTUVUSE9EUyBtYWNyby4gSW4gQysrIHdlIG5lZWQKKyAgICAgICAgICBvbmx5IHVzZSB0aGUgSURpcmVjdDNEX01FVEhPRFMgc2luY2UgbWV0aG9kIGluaGVyaXRhbmNlIGlzCisgICAgICAgICAgdGFrZW4gY2FyZSBvZiBieSB0aGUgbGFuZ3VhZ2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gQysrIHRoZSBJQ09NX01FVEhPRCBtYWNyb3MgZ2VuZXJhdGUgYSBmdW5jdGlvbiBwcm90b3R5cGUKKyAgICAgICAgICBhbmQgYSBjYWxsIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBtZXRob2QuIFRoaXMgbWVhbnMgdXNpbmcKKyAgICAgICAgICBvbmNlICd0MSBwMSwgdDIgcDIsIC4uLicgYW5kIG9uY2UgJ3AxLCBwMicgd2l0aG91dCB0aGUKKyAgICAgICAgICB0eXBlcy4gVGhlIG9ubHkgd2F5IEkgZm91bmQgdG8gaGFuZGxlIHRoaXMgaXMgdG8gaGF2ZSBvbmUKKyAgICAgICAgICBJQ09NX01FVEhPRCBtYWNybyBwZXIgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYW5kIHRvIGhhdmUgaXQKKyAgICAgICAgICB0YWtlIG9ubHkgdGhlIHR5cGUgaW5mb3JtYXRpb24gKHdpdGggY29uc3QgaWYgbmVjZXNzYXJ5KSBhcworICAgICAgICAgIHBhcmFtZXRlcnMuICBUaGUgJ3VuZGVmIElDT01fSU5URVJGQUNFJyBpcyBoZXJlIHRvIHJlbWluZAorICAgICAgICAgIHlvdSB0aGF0IHVzaW5nIElDT01fSU5URVJGQUNFIGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHdpbGwKKyAgICAgICAgICBub3Qgd29yay4gVGhpcyB0aW1lIGl0J3MgYmVjYXVzZSB0aGUgSUNPTV9DQUxMIG1hY3JvCisgICAgICAgICAgZXhwYW5zaW9uIGlzIGRvbmUgb25seSBvbmNlIHRoZSAnSURpcmVjdDNEX1h4eCcgbWFjcm8gaXMKKyAgICAgICAgICBleHBhbmRlZC4gQW5kIGJ5IHRoYXQgdGltZSBJQ09NX0lOVEVSRkFDRSB3aWxsIGJlIGxvbmcgZ29uZQorICAgICAgICAgIGFueXdheS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBZb3UgbWF5IGhhdmUgbm90aWNlZCB0aGUgZG91YmxlIGNvbW1hcyBhZnRlciBlYWNoIHBhcmFtZXRlcgorICAgICAgICAgIHR5cGUuIFRoaXMgYWxsb3dzIHlvdSB0byBwdXQgdGhlIG5hbWUgb2YgdGhhdCBwYXJhbWV0ZXIKKyAgICAgICAgICB3aGljaCBJIHRoaW5rIGlzIGdvb2QgZm9yIGRvY3VtZW50YXRpb24uIEl0IGlzIG5vdCByZXF1aXJlZAorICAgICAgICAgIGFuZCBzaW5jZSBJIGRpZCBub3Qga25vdyB3aGF0IHRvIHB1dCB0aGVyZSBmb3IgdGhpcyBleGFtcGxlCisgICAgICAgICAgKEkgY291bGQgb25seSBmaW5kIGRvYyBhYm91dCBJRGlyZWN0M0QyKSwgSSBsZWZ0IHRoZW0gYmxhbmsuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRmluYWxseSB0aGUgc2V0IG9mICdJRGlyZWN0M0RfWHh4JyBtYWNyb3MgaXMgYSBzdGFuZGFyZCBzZXQKKyAgICAgICAgICBvZiBtYWNyb3MgZGVmaW5lZCB0byBlYXNlIGFjY2VzcyB0byB0aGUgaW50ZXJmYWNlIG1ldGhvZHMgaW4KKyAgICAgICAgICBDLiBVbmZvcnR1bmF0ZWx5IEkgZG9uJ3Qgc2VlIGFueSB3YXkgdG8gYXZvaWQgaGF2aW5nIHRvCisgICAgICAgICAgZHVwbGljYXRlIHRoZSBpbmhlcml0ZWQgbWV0aG9kIGRlZmluaXRpb25zIHRoZXJlLiBUaGlzIHRpbWUKKyAgICAgICAgICBJIGNvdWxkIGhhdmUgdXNlZCBhIHRyaWNrIHRvIHVzZSBvbmx5IG9uZSBtYWNybyB3aGF0ZXZlciB0aGUKKyAgICAgICAgICBudW1iZXIgb2YgcGFyYW1ldGVycyBidXQgSSBwcmVmZXJlZCB0byBoYXZlIGl0IHdvcmsgdGhlIHNhbWUKKyAgICAgICAgICB3YXkgYXMgYWJvdmUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgWW91IHByb2JhYmx5IGhhdmUgbm90aWNlZCB0aGF0IHdlIGRvbid0IGRlZmluZSB0aGUgZmllbGRzIHdlCisgICAgICAgICAgbmVlZCB0byBhY3R1YWxseSBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2U6IHJlZmVyZW5jZSBjb3VudCwKKyAgICAgICAgICBwb2ludGVyIHRvIG90aGVyIHJlc291cmNlcyBhbmQgbWlzY2VsbGFuZW91cyBmaWVsZHMuIFRoYXQncworICAgICAgICAgIGJlY2F1c2UgdGhlc2UgaW50ZXJmYWNlcyBhcmUganVzdCB0aGF0OiBpbnRlcmZhY2VzLiBUaGV5IG1heQorICAgICAgICAgIGJlIGltcGxlbWVudGVkIG1vcmUgdGhhbiBvbmNlLCBpbiBkaWZmZXJlbnQgY29udGV4dHMgYW5kCisgICAgICAgICAgc29tZXRpbWVzIG5vdCBldmVuIGluIFdpbmUuIFRodXMgaXQgd291bGQgbm90IG1ha2Ugc2Vuc2UgdG8KKyAgICAgICAgICBpbXBvc2UgdGhhdCB0aGUgaW50ZXJmYWNlIGNvbnRhaW5zIHNvbWUgc3BlY2lmaWMgZmllbGRzLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5CaW5kaW5ncyBpbiBDPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiBDIHRoaXMgZ2l2ZXM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPnR5cGVkZWYgc3RydWN0IElEaXJlY3QzRFZ0YmwgSURpcmVjdDNEVnRibDsKK3N0cnVjdCBJRGlyZWN0M0QgeworICAgIElEaXJlY3QzRFZ0YmwqIGxwVnRibDsKK307CitzdHJ1Y3QgSURpcmVjdDNEVnRibCB7CisgICAgSFJFU1VMVCAoKmZuUXVlcnlJbnRlcmZhY2UpKElEaXJlY3QzRCogbWUsIFJFRklJRCByaWlkLCBMUFZPSUQqIHBwdk9iaik7CisgICAgVUxPTkcgKCpmbkFkZFJlZikoSURpcmVjdDNEKiBtZSk7CisgICAgVUxPTkcgKCpmblJlbGVhc2UpKElEaXJlY3QzRCogbWUpOworICAgIEhSRVNVTFQgKCpmbkluaXRpYWxpemUpKElEaXJlY3QzRCogbWUsIFJFRklJRCBhKTsKKyAgICBIUkVTVUxUICgqZm5FbnVtRGV2aWNlcykoSURpcmVjdDNEKiBtZSwgTFBEM0RFTlVNREVWSUNFU0NBTExCQUNLIGEsIExQVk9JRCBiKTsKKyAgICBIUkVTVUxUICgqZm5DcmVhdGVMaWdodCkoSURpcmVjdDNEKiBtZSwgTFBESVJFQ1QzRExJR0hUKiBhLCBJVW5rbm93biogYik7CisgICAgSFJFU1VMVCAoKmZuQ3JlYXRlTWF0ZXJpYWwpKElEaXJlY3QzRCogbWUsIExQRElSRUNUM0RNQVRFUklBTCogYSwgSVVua25vd24qIGIpOworICAgIEhSRVNVTFQgKCpmbkNyZWF0ZVZpZXdwb3J0KShJRGlyZWN0M0QqIG1lLCBMUERJUkVDVDNEVklFV1BPUlQqIGEsIElVbmtub3duKiBiKTsKKyAgICBIUkVTVUxUICgqZm5GaW5kRGV2aWNlKShJRGlyZWN0M0QqIG1lLCBMUEQzREZJTkRERVZJQ0VTRUFSQ0ggYSwgTFBEM0RGSU5EREVWSUNFUkVTVUxUIGIpOworfTsgCisKKyNpZmRlZiBJQ09NX0NJTlRFUkZBQ0UKKy8vICoqKiBJVW5rbm93biBtZXRob2RzICoqKiAvLworI2RlZmluZSBJRGlyZWN0M0RfUXVlcnlJbnRlcmZhY2UocCxhLGIpIChwKS0+bHBWdGJsLT5mblF1ZXJ5SW50ZXJmYWNlKHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfQWRkUmVmKHApICAgICAgICAgICAgIChwKS0+bHBWdGJsLT5mbkFkZFJlZihwKQorI2RlZmluZSBJRGlyZWN0M0RfUmVsZWFzZShwKSAgICAgICAgICAgIChwKS0+bHBWdGJsLT5mblJlbGVhc2UocCkKKy8vICoqKiBJRGlyZWN0M0QgbWV0aG9kcyAqKiogLy8KKyNkZWZpbmUgSURpcmVjdDNEX0luaXRpYWxpemUocCxhKSAgICAgICAocCktPmxwVnRibC0+Zm5Jbml0aWFsaXplKHAsYSkKKyNkZWZpbmUgSURpcmVjdDNEX0VudW1EZXZpY2VzKHAsYSxiKSAgICAocCktPmxwVnRibC0+Zm5FbnVtRGV2aWNlKHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfQ3JlYXRlTGlnaHQocCxhLGIpICAgIChwKS0+bHBWdGJsLT5mbkNyZWF0ZUxpZ2h0KHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfQ3JlYXRlTWF0ZXJpYWwocCxhLGIpIChwKS0+bHBWdGJsLT5mbkNyZWF0ZU1hdGVyaWFsKHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfQ3JlYXRlVmlld3BvcnQocCxhLGIpIChwKS0+bHBWdGJsLT5mbkNyZWF0ZVZpZXdwb3J0KHAsYSxiKQorI2RlZmluZSBJRGlyZWN0M0RfRmluZERldmljZShwLGEsYikgICAgIChwKS0+bHBWdGJsLT5mbkZpbmREZXZpY2UocCxhLGIpCisjZW5kaWY8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDb21tZW50czoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJRGlyZWN0M0Qgb25seSBjb250YWlucyBhIHBvaW50ZXIgdG8gdGhlIElEaXJlY3QzRAorICAgICAgICAgIHZpcnR1YWwvanVtcCB0YWJsZS4gVGhpcyBpcyB0aGUgb25seSB0aGluZyB0aGUgdXNlciBuZWVkcyB0bworICAgICAgICAgIGtub3cgdG8gdXNlIHRoZSBpbnRlcmZhY2UuIE9mIGNvdXJzZSB0aGUgc3RydWN0dXJlIHdlIHdpbGwKKyAgICAgICAgICBkZWZpbmUgdG8gaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHdpbGwgaGF2ZSBtb3JlIGZpZWxkcyBidXQKKyAgICAgICAgICB0aGUgZmlyc3Qgb25lIHdpbGwgbWF0Y2ggdGhpcyBwb2ludGVyLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBjb2RlIGdlbmVyYXRlZCBieSBJQ09NX0RFRklORSBkZWZpbmVzIGJvdGggdGhlIHN0cnVjdHVyZQorICAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgaW50ZXJmYWNlIGFuZCB0aGUgc3RydWN0dXJlIGZvciB0aGUganVtcAorICAgICAgICAgIHRhYmxlLiBJQ09NX0RFRklORSB1c2VzIHRoZSBwYXJlbnQncyBYeHhfSU1FVEhPRFMgbWFjcm8gdG8KKyAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlcGVhdCB0aGUgcHJvdG90eXBlcyBvZiBhbGwgdGhlIGluaGVyaXRlZAorICAgICAgICAgIG1ldGhvZHMgYW5kIHRoZW4gdXNlcyBJRGlyZWN0M0RfTUVUSE9EUyB0byBkZWZpbmUgdGhlCisgICAgICAgICAgSURpcmVjdDNEIG1ldGhvZHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRWFjaCBtZXRob2QgaXMgZGVjbGFyZWQgYXMgYSBwb2ludGVyIHRvIGZ1bmN0aW9uIGZpZWxkIGluCisgICAgICAgICAgdGhlIGp1bXAgdGFibGUuIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGZpbGwgdGhpcyBqdW1wIHRhYmxlCisgICAgICAgICAgd2l0aCBhcHByb3ByaWF0ZSB2YWx1ZXMsIHByb2JhYmx5IHVzaW5nIGEgc3RhdGljIHZhcmlhYmxlLAorICAgICAgICAgIGFuZCBpbml0aWFsaXplIHRoZSBscFZ0YmwgZmllbGQgdG8gcG9pbnQgdG8gdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgSURpcmVjdDNEX1h4eCBtYWNyb3MgdGhlbiBqdXN0IGRlcmVmZW5jZSB0aGUgbHBWdGJsCisgICAgICAgICAgcG9pbnRlciBhbmQgdXNlIHRoZSBmdW5jdGlvbiBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAgICAgICAgbWFjcm8gbmFtZS4gVGhpcyBlbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB2aXJ0dWFsIHRhYmxlCisgICAgICAgICAgYW5kIHNob3VsZCBiZSBqdXN0IGFzIGZhc3QuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBDIGNvZGUgc2hvdWxkIGJlIHF1aXRlIGNvbXBhdGlibGUgd2l0aCB0aGUgV2luZG93cworICAgICAgICAgIGhlYWRlcnMgYm90aCBmb3IgY29kZSB0aGF0IHVzZXMgQ09NIGludGVyZmFjZXMgYW5kIGZvciBjb2RlCisgICAgICAgICAgaW1wbGVtZW50aW5nIGEgQ09NIGludGVyZmFjZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+QmluZGluZ3MgaW4gQysrPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQW5kIGluIEMrKyAod2l0aCBnY2MncyBnKyspOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz50eXBlZGVmIHN0cnVjdCBJRGlyZWN0M0Q6IHB1YmxpYyBJVW5rbm93biB7CisgICAgcHJpdmF0ZTogSFJFU1VMVCAoKmZuSW5pdGlhbGl6ZSkoSURpcmVjdDNEKiBtZSwgUkVGSUlEIGEpOworICAgIHB1YmxpYzogaW5saW5lIEhSRVNVTFQgSW5pdGlhbGl6ZShSRUZJSUQgYSkgeyByZXR1cm4gKChJRGlyZWN0M0QqKXQubHBWdGJsKS0+Zm5Jbml0aWFsaXplKHRoaXMsYSk7IH07CisgICAgcHJpdmF0ZTogSFJFU1VMVCAoKmZuRW51bURldmljZXMpKElEaXJlY3QzRCogbWUsIExQRDNERU5VTURFVklDRVNDQUxMQkFDSyBhLCBMUFZPSUQgYik7CisgICAgcHVibGljOiBpbmxpbmUgSFJFU1VMVCBFbnVtRGV2aWNlcyhMUEQzREVOVU1ERVZJQ0VTQ0FMTEJBQ0sgYSwgTFBWT0lEIGIpCisgICAgICAgIHsgcmV0dXJuICgoSURpcmVjdDNEKil0LmxwVnRibCktPmZuRW51bURldmljZXModGhpcyxhLGIpOyB9OworICAgIHByaXZhdGU6IEhSRVNVTFQgKCpmbkNyZWF0ZUxpZ2h0KShJRGlyZWN0M0QqIG1lLCBMUERJUkVDVDNETElHSFQqIGEsIElVbmtub3duKiBiKTsKKyAgICBwdWJsaWM6IGlubGluZSBIUkVTVUxUIENyZWF0ZUxpZ2h0KExQRElSRUNUM0RMSUdIVCogYSwgSVVua25vd24qIGIpCisgICAgICAgIHsgcmV0dXJuICgoSURpcmVjdDNEKil0LmxwVnRibCktPmZuQ3JlYXRlTGlnaHQodGhpcyxhLGIpOyB9OworICAgIHByaXZhdGU6IEhSRVNVTFQgKCpmbkNyZWF0ZU1hdGVyaWFsKShJRGlyZWN0M0QqIG1lLCBMUERJUkVDVDNETUFURVJJQUwqIGEsIElVbmtub3duKiBiKTsKKyAgICBwdWJsaWM6IGlubGluZSBIUkVTVUxUIENyZWF0ZU1hdGVyaWFsKExQRElSRUNUM0RNQVRFUklBTCogYSwgSVVua25vd24qIGIpCisgICAgICAgIHsgcmV0dXJuICgoSURpcmVjdDNEKil0LmxwVnRibCktPmZuQ3JlYXRlTWF0ZXJpYWwodGhpcyxhLGIpOyB9OworICAgIHByaXZhdGU6IEhSRVNVTFQgKCpmbkNyZWF0ZVZpZXdwb3J0KShJRGlyZWN0M0QqIG1lLCBMUERJUkVDVDNEVklFV1BPUlQqIGEsIElVbmtub3duKiBiKTsKKyAgICBwdWJsaWM6IGlubGluZSBIUkVTVUxUIENyZWF0ZVZpZXdwb3J0KExQRElSRUNUM0RWSUVXUE9SVCogYSwgSVVua25vd24qIGIpCisgICAgICAgIHsgcmV0dXJuICgoSURpcmVjdDNEKil0LmxwVnRibCktPmZuQ3JlYXRlVmlld3BvcnQodGhpcyxhLGIpOyB9OworICAgIHByaXZhdGU6ICBIUkVTVUxUICgqZm5GaW5kRGV2aWNlKShJRGlyZWN0M0QqIG1lLCBMUEQzREZJTkRERVZJQ0VTRUFSQ0ggYSwgTFBEM0RGSU5EREVWSUNFUkVTVUxUIGIpOworICAgIHB1YmxpYzogaW5saW5lIEhSRVNVTFQgRmluZERldmljZShMUEQzREZJTkRERVZJQ0VTRUFSQ0ggYSwgTFBEM0RGSU5EREVWSUNFUkVTVUxUIGIpCisgICAgICAgIHsgcmV0dXJuICgoSURpcmVjdDNEKil0LmxwVnRibCktPmZuRmluZERldmljZSh0aGlzLGEsYik7IH07Cit9OzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIENvbW1lbnRzOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIEMrKyBJRGlyZWN0M0QgZG9lcyBkb3VibGUgZHV0eSBhcyBib3RoIHRoZSB2aXJ0dWFsL2p1bXAKKyAgICAgICAgICB0YWJsZSBhbmQgYXMgdGhlIGludGVyZmFjZSBkZWZpbml0aW9uLiBUaGUgcmVhc29uIGZvciB0aGlzCisgICAgICAgICAgaXMgdG8gYXZvaWQgaGF2aW5nIHRvIGR1cGxpY2F0ZSB0aGUgbWVob2QgZGVmaW5pdGlvbnM6IG9uY2UKKyAgICAgICAgICB0byBoYXZlIHRoZSBmdW5jdGlvbiBwb2ludGVycyBpbiB0aGUganVtcCB0YWJsZSBhbmQgb25jZSB0bworICAgICAgICAgIGhhdmUgdGhlIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSBjbGFzcy4gSGVyZSBvbmUgbWFjcm8gY2FuCisgICAgICAgICAgZ2VuZXJhdGUgYm90aC4gVGhpcyBtZWFucyB0aG91Z2ggdGhhdCB0aGUgZmlyc3QgcG9pbnRlciwKKyAgICAgICAgICB0LmxwVnRibCBkZWZpbmVkIGluIElVbmtub3duLCBtdXN0IGJlIGludGVycHJldGVkIGFzIHRoZQorICAgICAgICAgIGp1bXAgdGFibGUgcG9pbnRlciBpZiB3ZSBpbnRlcnByZXQgdGhlIHN0cnVjdHVyZSBhcyB0aGUKKyAgICAgICAgICBpbnRlcmZhY2UgY2xhc3MsIGFuZCBhcyB0aGUgZnVuY3Rpb24gcG9pbnRlciB0byB0aGUKKyAgICAgICAgICBRdWVyeUludGVyZmFjZSBtZXRob2QsIHQuZm5RdWVyeUludGVyZmFjZSwgaWYgd2UgaW50ZXJwcmV0CisgICAgICAgICAgdGhlIHN0cnVjdHVyZSBhcyB0aGUganVtcCB0YWJsZS4gRm9ydHVuYXRlbHkgdGhpcyBneW1uYXN0aWMKKyAgICAgICAgICBpcyBlbnRpcmVseSB0YWtlbiBjYXJlIG9mIGluIHRoZSBoZWFkZXIgb2YgSVVua25vd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgT2YgY291cnNlIGluIEMrKyB3ZSB1c2UgaW5oZXJpdGFuY2Ugc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvCisgICAgICAgICAgZHVwbGljYXRlIHRoZSBtZXRob2QgZGVmaW5pdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU2luY2UgSURpcmVjdDNEIGRvZXMgZG91YmxlIGR1dHksIGVhY2ggSUNPTV9NRVRIT0QgbWFjcm8KKyAgICAgICAgICBkZWZpbmVzIGJvdGggYSBmdW5jdGlvbiBwb2ludGVyIGFuZCBhIG5vbi12aXJ0dWFsIGlubGluZQorICAgICAgICAgIG1ldGhvZCB3aGljaCBkZXJlZmVyZW5jZXMgaXQgYW5kIGNhbGxzIGl0LiBUaGlzIHdheSB0aGlzCisgICAgICAgICAgbWV0aG9kIGJlaGF2ZXMganVzdCBsaWtlIGEgdmlydHVhbCBtZXRob2QgYnV0IGRvZXMgbm90CisgICAgICAgICAgY3JlYXRlIGEgdHJ1ZSBDKysgdmlydHVhbCB0YWJsZSB3aGljaCB3b3VsZCBicmVhayB0aGUKKyAgICAgICAgICBzdHJ1Y3R1cmUgbGF5b3V0LiBJZiB5b3UgbG9vayBhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UKKyAgICAgICAgICBtZXRob2RzIHlvdSdsbCBub3RpY2UgdGhhdCB0aGV5IHdvdWxkIG5vdCB3b3JrIGZvciB2b2lkCisgICAgICAgICAgZnVuY3Rpb25zLiBXZSBoYXZlIHRvIHJldHVybiBzb21ldGhpbmcgYW5kIGZvcnR1bmF0ZWx5IHRoaXMKKyAgICAgICAgICBzZWVtcyB0byBiZSB3aGF0IGFsbCB0aGUgQ09NIG1ldGhvZHMgZG8gKG90aGVyd2lzZSB3ZSB3b3VsZAorICAgICAgICAgIG5lZWQgYW5vdGhlciBzZXQgb2YgbWFjcm9zKS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBOb3RlIGhvdyB0aGUgSUNPTV9NRVRIT0QgZ2VuZXJhdGVzIGJvdGggZnVuY3Rpb24gcHJvdG90eXBlcworICAgICAgICAgIG1peGluZyB0eXBlcyBhbmQgZm9ybWFsIHBhcmFtZXRlciBuYW1lcyBhbmQgdGhlIG1ldGhvZAorICAgICAgICAgIGludm9jYXRpb24gdXNpbmcgb25seSB0aGUgZm9ybWFsIHBhcmFtZXRlciBuYW1lLiBUaGlzIGlzIHRoZQorICAgICAgICAgIHJlYXNvbiB3aHkgd2UgbmVlZCBkaWZmZXJlbnQgbWFjcm9zIHRvIGhhbmRsZSBkaWZmZXJlbnQKKyAgICAgICAgICBudW1iZXJzIG9mIHBhcmFtZXRlcnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRmluYWxseSB0aGVyZSBpcyBubyBJRGlyZWN0M0RfWHh4IG1hY3JvLiBUaGVzZSBhcmUgbm90CisgICAgICAgICAgbmVlZGVkIGluIEMrKyB1bmxlc3MgdGhlIENJTlRFUkZBQ0UgbWFjcm8gaXMgZGVmaW5lZCBpbgorICAgICAgICAgIHdoaWNoIGNhc2Ugd2Ugd291bGQgbm90IGJlIGhlcmUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBDKysgY29kZSB3b3JrcyB3ZWxsIGZvciBjb2RlIHRoYXQganVzdCB1c2VzIENPTQorICAgICAgICAgIGludGVyZmFjZXMuIEJ1dCBpdCB3aWxsIG5vdCB3b3JrIHdpdGggQysrIGNvZGUgaW1wbGVtZW50IGEKKyAgICAgICAgICBDT00gaW50ZXJmYWNlLiBUaGF0J3MgYmVjYXVzZSBzdWNoIGNvZGUgYXNzdW1lcyB0aGUKKyAgICAgICAgICBpbnRlcmZhY2UgbWV0aG9kcyBhcmUgZGVjbGFyZWQgYXMgdmlydHVhbCBDKysgbWV0aG9kcyB3aGljaAorICAgICAgICAgIGlzIG5vdCB0aGUgY2FzZSBoZXJlLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5JbXBsZW1lbnRpbmcgYSBDT00gaW50ZXJmYWNlLjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBjb250aW51ZXMgdGhlIGFib3ZlIGV4YW1wbGUuIFRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoYXQKKyAgICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gaXMgaW4gQy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+dHlwZWRlZiBzdHJ1Y3QgX0lEaXJlY3QzRCB7CisgICAgdm9pZCogbHBWdGJsOworICAgIC8vIC4uLgorIH0gX0lEaXJlY3QzRDsKKworc3RhdGljIElDT01fVlRBQkxFKElEaXJlY3QzRCkgZDNkdnQ7CisKKy8vIGltcGxlbWVudCB0aGUgSURpcmVjdDNEIG1ldGhvZHMgaGVyZQorCitpbnQgSURpcmVjdDNEX2ZuUXVlcnlJbnRlcmZhY2UoSURpcmVjdDNEKiBtZSkKK3sKKyAgICBJQ09NX1RISVMoSURpcmVjdDNELG1lKTsKKyAgICAvLyAuLi4KK30KKworLy8gLi4uCisKK3N0YXRpYyBJQ09NX1ZUQUJMRShJRGlyZWN0M0QpIGQzZHZ0ID0geworICAgIElDT01fTVNWVEFCTEVfQ09NUEFUX0R1bW15UlRUSVZBTFVFCisgICAgSURpcmVjdDNEX2ZuUXVlcnlJbnRlcmZhY2UsCisgICAgSURpcmVjdDNEX2ZuQWRkLAorICAgIElEaXJlY3QzRF9mbkFkZDIsCisgICAgSURpcmVjdDNEX2ZuSW5pdGlhbGl6ZSwKKyAgICBJRGlyZWN0M0RfZm5TZXRXaWR0aAorfTs8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDb21tZW50czoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXZSBmaXJzdCBkZWZpbmUgd2hhdCB0aGUgaW50ZXJmYWNlIHJlYWxseSBjb250YWlucy4gVGhpcyBpcworICAgICAgICAgIHRoZSBfSURpcmVjdDNEIHN0cnVjdHVyZS4gVGhlIGZpcnN0IGZpZWxkIG11c3Qgb2YgY291cnNlIGJlCisgICAgICAgICAgdGhlIHZpcnR1YWwgdGFibGUgcG9pbnRlci4gRXZlcnl0aGluZyBlbHNlIGlzIGZyZWUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlbiB3ZSBwcmVkZWNsYXJlIG91ciBzdGF0aWMgdmlydHVhbCB0YWJsZSB2YXJpYWJsZSwgd2UKKyAgICAgICAgICB3aWxsIG5lZWQgaXRzIGFkZHJlc3MgaW4gc29tZSBtZXRob2RzIHRvIGluaXRpYWxpemUgdGhlCisgICAgICAgICAgdmlydHVhbCB0YWJsZSBwb2ludGVyIG9mIHRoZSByZXR1cm5lZCBpbnRlcmZhY2Ugb2JqZWN0cy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGVuIHdlIGltcGxlbWVudCB0aGUgaW50ZXJmYWNlIG1ldGhvZHMuIFRvIG1hdGNoIHdoYXQgaGFzCisgICAgICAgICAgYmVlbiBkZWNsYXJlZCBpbiB0aGUgaGVhZGVyIGZpbGUgdGhleSBtdXN0IHRha2UgYSBwb2ludGVyIHRvCisgICAgICAgICAgYSBJRGlyZWN0M0Qgc3RydWN0dXJlIGFuZCB3ZSBtdXN0IGNhc3QgaXQgdG8gYW4gX0lEaXJlY3QzRAorICAgICAgICAgIHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIGZpZWxkcy4gVGhpcyBpcyBwZXJmb3JtZWQgYnkKKyAgICAgICAgICB0aGUgSUNPTV9USElTIG1hY3JvLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZpbmFsbHkgd2UgaW5pdGlhbGl6ZSB0aGUgdmlydHVhbCB0YWJsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogc2dtbAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCBiL2RvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwKaW5kZXggMjcxM2RjMy4uZDA5ODUxMiAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sCkBAIC0xLDE1ICsxLDE2IEBACiAgIDxjaGFwdGVyIGlkPSJvcGVuZ2wiPgogICAgIDx0aXRsZT5XaW5lIGFuZCBPcGVuR0w8L3RpdGxlPgogCi0gICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBMaW9uZWwgVWxtZXIgJmx0O2xpb25lbC51bG1lckBmcmVlLmZyPiwgbGFzdCBtb2RpZmljYXRpb24gOiAyMDAwLzA2LzEzCi0gICAgICA8L3BhcmE+Ci0gICAgICA8cGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtbGlvbmVsLXVsbWVyOyA8ZW1haWw+JmVtYWlsLWxpb25lbC11bG1lcjs8L2VtYWlsPiwKKyAgICAgIGxhc3QgbW9kaWZpY2F0aW9uIDogMjAwMC8wNi8xMworICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL29wZW5nbDwvZmlsZW5hbWU+KQotICAgICAgPC9wYXJhPgorICAgIDwvcGFyYT4KIAogICAgIDxzZWN0MSBpZD0ib3BlbmdsLXJlcXVpcmVkIj4KLSAgICAgIDx0aXRsZT5JIFdoYXQgaXMgbmVlZGVkIHRvIGhhdmUgT3BlbkdMIHN1cHBvcnQgaW4gV2luZTwvdGl0bGU+CisgICAgICA8dGl0bGU+V2hhdCBpcyBuZWVkZWQgdG8gaGF2ZSBPcGVuR0wgc3VwcG9ydCBpbiBXaW5lPC90aXRsZT4KIAogICAgICAgPHBhcmE+CiAgICAgICAgIEJhc2ljYWxseSwgaWYgeW91IGhhdmUgYSBMaW51eCBPcGVuR0wgQUJJIGNvbXBsaWFudCBsaWJHTApAQCAtMjksNyArMzAsNyBAQAogICAgICAgPC9wYXJhPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JLjEgSGVhZGVyIGZpbGVzPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPkhlYWRlciBmaWxlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGhlIG5lZWRlZCBoZWFkZXIgZmlsZXMgdG8gYnVpbGQgT3BlbkdMIHN1cHBvcnQgaW4gV2luZSBhcmUgOgpAQCAtNjcsNyArNjgsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SS4yIE9wZW5HTCBsaWJyYXJ5IHRocmVhZC1zYWZldHk8L3RpdGxlPgorICAgICAgICA8dGl0bGU+T3BlbkdMIGxpYnJhcnkgdGhyZWFkLXNhZmV0eTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgQWZ0ZXIgdGhhdCwgdGhlIHNjcmlwdCBjaGVja3MgaWYgdGhlIE9wZW5HTCBsaWJyYXJ5IHJlbGllcwpAQCAtOTYsNyArOTcsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SS4zIE9wZW5HTCBsaWJyYXJ5IGl0c2VsZjwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5PcGVuR0wgbGlicmFyeSBpdHNlbGY8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFRvIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgJ2xpYkdMJyBvbiB0aGUgc3lzdGVtLCB0aGUKQEAgLTEwNyw3ICsxMDgsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SS40IGdsWEdldFByb2NBZGRyZXNzQVJCIGZ1bmN0aW9uPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPmdsWEdldFByb2NBZGRyZXNzQVJCIGZ1bmN0aW9uPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBUaGUgY29yZSBvZiBXaW5lJ3MgT3BlbkdMIGltcGxlbWVudGF0aW9uIChhdCBsZWFzdCBmb3IgYWxsCkBAIC0xMzAsNyArMTMxLDcgQEAKICAgICA8L3NlY3QxPgogCiAgICAgPHNlY3QxIGlkPSJvcGVuZ2wtY29uZmlndXJlIj4KLSAgICAgIDx0aXRsZT5JSSBIb3cgdG8gY29uZmlndXJlPC90aXRsZT4KKyAgICAgIDx0aXRsZT5Ib3cgdG8gY29uZmlndXJlPC90aXRsZT4KIAogICAgICAgPHBhcmE+CiAgICAgICAgIENvbmZpZ3VyYXRpb24gaXMgcXVpdGUgZWFzeSA6IG9uY2UgT3BlbkdMIHN1cHBvcnQgaGFzIGJlZW4KQEAgLTE1Niw3ICsxNTcsNyBAQAogICAgIDwvc2VjdDE+CiAKICAgICA8c2VjdDEgaWQ9Im9wZW5nbC13b3JrcyI+Ci0gICAgICA8dGl0bGU+SUlJIEhvdyBpdCBhbGwgd29ya3M8L3RpdGxlPgorICAgICAgPHRpdGxlPkhvdyBpdCBhbGwgd29ya3M8L3RpdGxlPgogCiAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIGNvcmUgT3BlbkdMIGZ1bmN0aW9uIGNhbGxzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuIFdpbmRvd3MKQEAgLTE5MSw3ICsxOTIsNyBAQAogICAgICAgPC9wYXJhPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JSUkuMSBUaGUgV2luZG93aW5nIHN5c3RlbSBpbnRlZ3JhdGlvbjwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5UaGUgV2luZG93aW5nIHN5c3RlbSBpbnRlZ3JhdGlvbjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGhpcyBpbnRlZ3JhdGlvbiBpcyBkb25lIGF0IHR3byBsZXZlbHMgOiAKQEAgLTIyMiw3ICsyMjMsNyBAQAogICAgICAgPC9zZWN0Mj4KIAogICAgICAgPHNlY3QyPgotICAgICAgICA8dGl0bGU+SUlJLjIgVGhlIHRodW5rczwvdGl0bGU+CisgICAgICAgIDx0aXRsZT5UaGUgdGh1bmtzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBUaGUgdGh1bmtzIGFyZSB0aGUgV2luZSBjb2RlIHRoYXQgZG9lcyB0aGUgY2FsbGluZwpAQCAtMzE1LDEwICszMTYsMTAgQEAKICAgICA8L3NlY3QxPgogCiAgICAgPHNlY3QxIGlkPSJvcGVuZ2wtcHJvYmxlbXMiPgotICAgICAgPHRpdGxlPklWICBLbm93biBwcm9ibGVtcyAtIHNob3J0Y29taW5nczwvdGl0bGU+CisgICAgICA8dGl0bGU+S25vd24gcHJvYmxlbXMgLSBzaG9ydGNvbWluZ3M8L3RpdGxlPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JVi4xIE1pc3NpbmcgR0xVMzIuRExMPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPk1pc3NpbmcgR0xVMzIuRExMPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICBHTFUgaXMgYSBsaWJyYXJ5IHRoYXQgaXMgbGF5ZXJlZCB1cG9uIE9wZW5HTC4gVGhlcmUgaXMgYQpAQCAtMzM4LDcgKzMzOSw3IEBACiAgICAgICA8L3NlY3QyPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JVi4yIE9wZW5HTCBub3QgZGV0ZWN0ZWQgYXQgY29uZmlndXJlIHRpbWU8L3RpdGxlPgorICAgICAgICA8dGl0bGU+T3BlbkdMIG5vdCBkZXRlY3RlZCBhdCBjb25maWd1cmUgdGltZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU2VlIHNlY3Rpb24gKEkpIGZvciBhIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoZQpAQCAtMzQ3LDcgKzM0OCw3IEBACiAgICAgICA8L3NlY3QyPgogCiAgICAgICA8c2VjdDI+Ci0gICAgICAgIDx0aXRsZT5JVi4zIFdoZW4gcnVubmluZyBhbiBPcGVuR0wgYXBwbGljYXRpb24sIHRoZSBzY3JlZW4gZmxpY2tlcnM8L3RpdGxlPgorICAgICAgICA8dGl0bGU+V2hlbiBydW5uaW5nIGFuIE9wZW5HTCBhcHBsaWNhdGlvbiwgdGhlIHNjcmVlbiBmbGlja2VyczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU2VlIHNlY3Rpb24gKElJKSBmb3IgaG93IHRvIGNyZWF0ZSB0aGUgY29udGV4dApAQCAtMzU2LDExICszNTcsMTEgQEAKICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklWLjQgV2luZSBnaXZlcyBtZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2UgOiA8L3RpdGxlPgorICAgICAgICA8dGl0bGU+V2luZSBnaXZlcyBtZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2UgOiA8L3RpdGxlPgogCiAgICAgICAgIDxzY3JlZW4+CiBFeHRlbnNpb24gZGVmaW5lZCBpbiB0aGUgT3BlbkdMIGxpYnJhcnkgYnV0IE5PVCBpbiBvcGVuZ2xfZXh0LmMuLi4KLVBsZWFzZSByZXBvcnQgKGxpb25lbC51bG1lckBmcmVlLmZyKSAhCitQbGVhc2UgcmVwb3J0ICgmZW1haWwtbGlvbmVsLXVsbWVyOykgIQogICAgICAgICA8L3NjcmVlbj4KIAogICAgICAgICA8cGFyYT4KQEAgLTM5OCwxMiArMzk5LDEyIEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIElmIHlvdSBoYXZlIHRoaXMsIHJ1biB3aXRoIDxwYXJhbWV0ZXI+LS1kZWJ1Z21zZwogICAgICAgICAgICAgK29wZW5nbDwvcGFyYW1ldGVyPiBhbmQgc2VuZCBtZQotICAgICAgICAgIDxlbWFpbD5saW9uZWwudWxtZXJAZnJlZS5mcjwvZW1haWw+IHRoZSBUUkFDRS4KKyAgICAgICAgICA8ZW1haWw+JmVtYWlsLWxpb25lbC11bG1lcjs8L2VtYWlsPiB0aGUgVFJBQ0UuCiAgICAgICAgIDwvcGFyYT4KICAgICAgIDwvc2VjdDI+CiAKICAgICAgIDxzZWN0Mj4KLSAgICAgICAgPHRpdGxlPklWLjUgPGZpbGVuYW1lPmxpYm9wZW5nbDMyLnNvPC9maWxlbmFtZT4gaXMgYnVpbHQgYnV0IGl0IGlzIHN0aWxsIG5vdCB3b3JraW5nPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5saWJvcGVuZ2wzMi5zbzwvZmlsZW5hbWU+IGlzIGJ1aWx0IGJ1dCBpdCBpcyBzdGlsbCBub3Qgd29ya2luZzwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHNvbWUgbWlzc2luZyBmdW5jdGlvbnMgcmVxdWlyZWQgYnkKQEAgLTQ1Myw2ICs0NTQsNiBAQAogPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCiBMb2NhbCB2YXJpYWJsZXM6CiBtb2RlOiBzZ21sCi1zZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCBiL2RvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwKaW5kZXggMWY4ZmI1Ni4uNmU1YjNkYiAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sCkBAIC0xLDc4ICsxLDIyMiBAQAotICA8Y2hhcHRlciBpZD0icGFja2FnaW5nIj4KLSAgICA8dGl0bGU+UGFja2FnaW5nIFdpbmU8L3RpdGxlPgorPCEtLSBXaW5lIFBhY2thZ2luZyBndWlkZWxpbmVzLiAgVGhpcyBpcyBhIHJvdWdoIG91dGxpbmUgb25seSwgCisgICAgIGFuZCBtdWNoIG9mIHRoaXMgd2FzIHVwIGZvciBvcGVuIGRlYmF0ZSBvbiB3aW5lLWRldmVsLiAgLS0+CisgIAorICAgIDxjaGFwdGVyIGlkPSJwa2ctcHJlZmFjZSI+IDx0aXRsZT5QcmVmYWNlPC90aXRsZT4KIAotICAgIDxzZWN0MSBpZD0iZGlzdHJpYnV0aW5nIj4KLSAgICAgIDx0aXRsZT5BIFNtYWxsIFdJTkUgRGlzdHJpYnV0aW9uIEd1aWRlPC90aXRsZT4KKyAgICAgICAgPHNlY3QxIGlkPSJBdXRob3JzIj4gPHRpdGxlPkF1dGhvcnM8L3RpdGxlPgogCi0gICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBNYXJjdXMgTWVpc3NuZXIgJmx0O01hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgotICAgICAgPC9wYXJhPgotICAgICAgPHBhcmE+Ci0gICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczwvZmlsZW5hbWU+KQotICAgICAgPC9wYXJhPgotCi0gICAgICA8cGFyYT4KLSAgICAgICAgV2hpbGUgcGFja2FnaW5nIFdJTkUgZm9yIG9uZSBvZiB0aGUgTGludXggZGlzdHJpYnV0aW9ucyBJIGNhbWUKLSAgICAgICAgYWNyb3NzIHNldmVyYWwgcG9pbnRzIHdoaWNoIGhhdmUgbm90IGJlZW4gY2xhcmlmaWVkIHlldC4KLSAgICAgICAgUGFydGljdWxhcmx5IGEgaG93LXRvIGZvciBXSU5FIHBhY2thZ2luZyBkaXN0cmlidXRvcnMgaXMKLSAgICAgICAgbWlzc2luZy4gVGhpcyBkb2N1bWVudCB0cmllcyB0byBnaXZlIGEgYnJpZWYgb3ZlcnZpZXcgb3ZlciB0aGUKLSAgICAgICAgcmF0aW9uYWxlcyBJIHRob3VnaHQgdXAgYW5kIGhvdyBJIHRyaWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICAgICAgKFdoaWxlIHRoZSBleGFtcGxlcyB1c2UgPGNvbW1hbmQ+cnBtPC9jb21tYW5kPiBtb3N0IG9mIHRoaXMKLSAgICAgICAgc3R1ZmYgY2FuIGJlIGFwcGxpZWQgdG8gb3RoZXIgcGFja2FnZXJzIHRvby4pCi0gICAgICA8L3BhcmE+Ci0KLSAgICAgIDxub3RlPgogICAgICAgICA8cGFyYT4KLSAgICAgICAgICBZT1UgU0hPVUxEIFJFQ0hFQ0sgVEhJUyBGSUxFIEVWRVJZIFRXTyBNT05USFMgT1IgU08KLSAgICAgICAgICAoPGNvbW1hbmQ+ZGlmZiAtdU48L2NvbW1hbmQ+IGNvbWVzIHRvIG15IG1pbmQgaGVyZS4uLikuCi0gICAgICAgICAgV2UnbGwgYmUgYWRkaW5nIHN0dWZmIGNvbnN0YW50bHkgaGVyZSBpbiBvcmRlciB0byBpbXByb3ZlCi0gICAgICAgICAgdGhlIFdpbmUgZW52aXJvbm1lbnQgIQorICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtbWFyY3VzLW1laXNzbmVyOyA8ZW1haWw+JmVtYWlsLW1hcmN1cy1tZWlzc25lcjs8L2VtYWlsPgorICAgICAgICAgIFVwZGF0ZWQgYnkgJm5hbWUtamVyZW15LXdoaXRlOyA8ZW1haWw+JmVtYWlsLWplcmVteS13aGl0ZTs8L2VtYWlsPgogICAgICAgICA8L3BhcmE+Ci0gICAgICA8L25vdGU+CisgICAgPC9zZWN0MT4KIAotICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICA8bGlzdGl0ZW0+CisgICAgPHNlY3QxIGlkPSJEYXRlIj4gPHRpdGxlPkRvY3VtZW50IFJldmlzaW9uIERhdGU8L3RpdGxlPgogCi0gICAgICAgICAgPHBhcmE+UmF0aW9uYWxlczwvcGFyYT4KLSAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgV0lORSBpbnN0YWxsIHNob3VsZDoKLSAgICAgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGRvY3VtZW50IGlzIGV4dHJlbWVseQorICAgICAgdGltZSBzZW5zaXRpdmUuICA8ZW1waGFzaXM+SXQgaXMgdml0YWwgdGhhdCBhIHBhY2thZ2VyCisgICAgICBzdGF5IGN1cnJlbnQgd2l0aCBjaGFuZ2VzIGluIFdpbmUuIDwvPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUaGlzIGRvY3VtZW50IHdhcyBsYXN0IHJldmlzZWQgb24gTm92ZW1iZXIgMiwgMjAwMC48L3BhcmE+CisKKyAgICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9IlRlcm1zIj4gPHRpdGxlPlRlcm1zIHVzZWQgaW4gdGhpcyBkb2N1bWVudDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+VGhlcmUgYXJlIHNldmVyYWwgdGVybXMgYW5kIHBhdGhzIHVzZWQgaW4gdGhpcworICAgICAgICBkb2N1bWVudCBhcyBwbGFjZSBob2xkZXJzIGZvciBjb25maWd1cmFibGUgdmFsdWVzLgorICAgICAgICBUaG9zZSB0ZXJtcyBhcmUgZGVzY3JpYmVkIGhlcmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9V0lORUNPTkZESVI+PHBhcmEgaWQ9d2luZWNvbmZkaXIuaWQ+PEVuVmFyPldJTkVDT05GRElSPC9FblZhcj48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGVudmFyPldJTkVDT05GRElSPC9lbnZhcj4gaXMgdGhlIHVzZXJzIFdpbmUgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBhbG1vc3QgYWx3YXlzIH4vLndpbmUsIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbgorICAgICAgICAgICAgICAgIGJ5IHRoZSB1c2VyIGJ5IHNldHRpbmcgdGhlIDxFblZhcj5XSU5FQ09ORkRJUjwvRW5WYXI+IGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICAgICAgPGxpc3RpdGVtIGlkPVBSRUZJWD48cGFyYSBpZD1wcmVmaXguaWQ+PEVuVmFyPlBSRUZJWDwvRW5WYXI+PC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxlbnZhcj5QUkVGSVg8L2VudmFyPiBpcyB0aGUgcHJlZml4IHVzZWQgd2hlbiBzZWxlY3RpbmcKKyAgICAgICAgICAgICAgICBhbiBpbnN0YWxsYXRpb24gdGFyZ2V0LiAgVGhlIGN1cnJlbnQgZGVmYXVsdCBpcyAvdXNyLgorICAgICAgICAgICAgICAgIFRoaXMgcmVzdWx0cyBpbiBiaW5hcnkgaW5zdGFsbGF0aW9uIGludG8gL3Vzci9iaW4sCisgICAgICAgICAgICAgICAgbGlicmFyeSBpbnN0YWxsYXRpb24gaW50byAvdXNyL3dpbmUvbGliLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgcGFja2FnZXIuCisgICAgICAgICAgICAgICAgSW4gZmFjdCwgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5wYXRobmFtZS5jb20vZmhzLyI+RkhTIDIuMTwvdWxpbms+CisgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbnMgc3VnZ2VzdCB0aGF0IGEgYmV0dGVyCisgICAgICAgICAgICAgICAgcHJlZml4IGlzIC9vcHQvd2luZS4gIElkZWFsbHksIGEgcGFja2FnZXIgd291bGQgYWxzbworICAgICAgICAgICAgICAgIGFsbG93IHRoZSBpbnN0YWxsZXIgdG8gb3ZlcnJpZGUgdGhpcyB2YWx1ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9RVRDRElSPjxwYXJhIGlkPWV0Y2Rpci5pZD48RW5WYXI+RVRDRElSPC9FblZhcj48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGVudmFyPkVUQ0RJUjwvZW52YXI+IGlzIHRoZSBwcmVmaXggdGhhdCBXaW5lIHVzZXMKKyAgICAgICAgICAgICAgICB0byBmaW5kIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgVGhpcyBjYW4gYmUgY2hhbmdlZCBieSB0aGUgY29uZmlndXJlIG9wdGlvbiBzeXNjb25mZGlyLgorICAgICAgICAgICAgICAgIFRoZSBjdXJyZW50IGRlZmF1bHQgaXMgL2V0Yy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9V0lORE9XU0RJUj48cGFyYSBpZD13aW5kb3dzZGlyLmlkPjxFblZhcj5XSU5ET1dTRElSPC9FblZhcj48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGVudmFyPldJTkRPV1NESVI8L2VudmFyPiBpcyBhbiBpbXBvcnRhbnQgY29uY2VwdAorICAgICAgICAgICAgICAgIHRvIFdpbmUuICBUaGlzIGRpcmVjdG9yeSBzcGVjaWZpZXMgd2hhdCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGUgcm9vdCBXaW5kb3dzIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIChlLmcuIEM6XFdJTkRPV1MpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBpcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIGluCisgICAgICAgICAgICAgICAgdGhlIHVzZXJzIDxsaW5rIGxpbmtlbmQ9d2luZXJjPmNvbmZpZ3VyYXRpb24gZmlsZTwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEdlbmVyYWxseSBzcGVha2luZywgdGhpcyBkaXJlY3RvcnkgaXMgZWl0aGVyIHNldAorICAgICAgICAgICAgICAgIHRvIHBvaW50IGF0IGFuIGVtcHR5IGRpcmVjdG9yeSwgb3IgaXQgaXMgc2V0CisgICAgICAgICAgICAgICAgdG8gcG9pbnQgYXQgYSBXaW5kb3dzIHBhcnRpdGlvbiB0aGF0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgbW91bnRlZCB0aHJvdWdoIHRoZSB2ZmF0IGRyaXZlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCB0aGUgcGFja2FnZXIKKyAgICAgICAgICAgICAgICB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIDxlbnZhcj5XSU5ET1dTRElSPC9lbnZhcj4KKyAgICAgICAgICAgICAgICBhbmQgY29udmV5IHRoaXMgaW5mb3JtYXRpb24gYW5kIGNob2ljZSB0byB0aGUgZW5kCisgICAgICAgICAgICAgICAgdXNlcjwvZW1waGFzaXM+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKworCisgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisKKworCisgICAgPGNoYXB0ZXIgaWQ9InBrZy1pbnRyb2R1Y3Rpb24iPiA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGRvY3VtZW50IGF0dGVtcHRzIHRvIGVzdGFibGlzaCBndWlkZWxpbmVzCisgICAgICAgIGZvciBwZW9wbGUgbWFraW5nIGJpbmFyeSBwYWNrYWdlcyBvZiBXaW5lLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJdCBleHByZXNzZXMgdGhlIGJhc2ljIHByaW5jaXBsZXMgdGhhdCB0aGUKKyAgICAgICAgV2luZSBkZXZlbG9wZXJzIGhhdmUgYWdyZWVkIHNob3VsZCBiZQorICAgICAgICB1c2VkIHdoZW4gYnVpbGRpbmcgV2luZS4gIAorICAgICAgICBJdCBhbHNvIGF0dGVtcHRzIHRvIGhpZ2hsaWdodCB0aGUgYXJlYXMKKyAgICAgICAgd2hlcmUgdGhlcmUgYXJlIGRpZmZlcmVudCBhcHByb2FjaGVzCisgICAgICAgIHRvIHBhY2thZ2luZyBXaW5lLCBzbyB0aGF0IHRoZSBwYWNrYWdlcgorICAgICAgICBjYW4gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGFsdGVybmF0aXZlcworICAgICAgICB0aGF0IGhhdmUgYmVlbiBjb25zaWRlcmVkIGFuZCB0aGVpciByYXRpb25hbGVzLgorICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdDEgaWQ9IkdvYWxzIj4gPHRpdGxlPkdvYWxzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbiBpbnN0YWxsYXRpb24gZnJvbSBhIFdpbmUgcGFjYWthZ2Ugc2hvdWxkOgorICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKwogICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICA8cGFyYT5Ob3QgaGF2ZSBhIHdvcmxkIHdyaXRlYWJsZSBkaXJlY3RvcnkgKC10cmVlKS48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW5zdGFsbCBxdWlja2x5IGFuZCBzaW1wbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBpbml0aWFsIGluc3RhbGxhdGlvbiBzaG91bGQgcmVxdWlyZSBubyB1c2VyCisgICAgICAgICAgICAgICAgaW5wdXQuICBBbiBycG0gLWkgd2luZS5ycG0gb3IgYXB0IGdldCB3aW5lCisgICAgICAgICAgICAgICAgc2hvdWxkIHN1ZmZpY2UgZm9yIGluaXRpYWwgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXb3JrIHF1aWNrbHkgYW5kIHNpbXBseQorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBsYXVuY2ggU29saXRhaXJlCisgICAgICAgICAgICAgICAgd2l0aGluIG1pbnV0ZXMgb2YgZG93bmxvYWRpbmcgdGhlIFdpbmUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCiAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFJlcXVpcmUgb25seSBhcyBtdWNoIHVzZXIgaW5wdXQgYXMgbmVlZGVkLiBJdCB3b3VsZCBiZQotICAgICAgICAgICAgICAgIHZlcnkgZ29vZCBpZiBpdCB3b3VsZCBub3QgcmVxdWlyZSBhbnkgYXQgYWxsLiBKdXN0IGxldAotICAgICAgICAgICAgICAgIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBkbyA8Y29tbWFuZD5ycG0gLWkKLSAgICAgICAgICAgICAgICAgIHdpbmUucnBtPC9jb21tYW5kPiBhbmQgbGV0IGFueSB1c2VyIGJlIGFibGUgdG8gcnVuCi0gICAgICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBzb2wuZXhlPC9jb21tYW5kPiBpbnN0YW50bHkuCisgICAgICAgICAgICAgIENvbXBseSB3aXRoIEZpbGVzeXN0ZW0gSGllcmFyY2h5IFN0YW5kYXJkIAogICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBHaXZlIHRoZSB1c2VyIGFzIG11Y2ggZmxleGliaWxpdHkgYXMgcG9zc2libGUgdG8KLSAgICAgICAgICAgICAgICBpbnN0YWxsIGhpcyBvd24gYXBwbGljYXRpb25zLCBkbyBoaXMgb3duIGNvbmZpZ3VyaW5nCi0gICAgICAgICAgICAgICAgZXRjLgorICAgICAgICAgICAgICBBIFdpbmUgaW5zdGFsbGF0aW9uIHNob3VsZCwgYXMgbXVjaCBhcyBwb3NzaWJsZSwgY29tcGx5CisgICAgICAgICAgICAgIHdpdGggdGhlIAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucGF0aG5hbWUuY29tL2Zocy8iPkZIUyBzdGFuZGFyZDwvdWxpbms+LgogICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUHJlc2VydmUgZmxleGliaWxpdHkKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTm9uZSBvZiB0aGUgZmxleGliaWxpdHkgYnVpbHQgaW50byBXaW5lIHNob3VsZAorICAgICAgICAgICAgICAgIGJlIGhpZGRlbiBmcm9tIHRoZSBlbmQgdXNlci4gCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKwogICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBDb21lIGFzIHByZWNvbmZpZ3VyZWQgYXMgcG9zc2libGUsIHNvIHRoZSB1c2VyIGRvZXMKICAgICAgICAgICAgICAgICBub3QgbmVlZCB0byBjaGFuZ2UgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgPHBhcmE+VXNlIG9ubHkgYXMgbXVjaCBkaXNrc3BhY2UgYXMgbmVlZGVkIHBlciB1c2VyLjwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFJlZHVjZSBzdXBwb3J0IHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgQSBwYWNrYWdlZCB2ZXJzaW9uIG9mIFdpbmUgc2hvdWxkIGJlIHN1ZmZpY2llbnRseSBlYXN5CisgICAgICAgICAgICAgIHRvIHVzZSBhbmQgaGF2ZSBxdWljayBhbmQgZWFzeSBhY2Nlc3MgdG8gRkFRcyBhbmQKKyAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdWNoIHRoYXQgcmVxdWVzdHMgdG8gdGhlCisgICAgICAgICAgICAgIG5ld3Nncm91cCBhbmQgZGV2ZWxvcG1lbnQgZ3JvdXAgZ28gZG93bi4KKyAgICAgICAgICAgICAgRnVydGhlciwgaXQgc2hvdWxkIGJlIGVhc3kgZm9yIHVzZXJzIHRvIGNhcHR1cmUKKyAgICAgICAgICAgICAgZ29vZCBidWcgcmVwb3J0cy4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKwogICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogCi0gICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBIFdJTkUgaW5zdGFsbCBuZWVkczoKLSAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPC9zZWN0MT4KKworICAgICAgICA8c2VjdDEgaWQ9IlJlcXVpcmVtZW50cyI+IDx0aXRsZT5SZXF1aXJlbWVudHM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFN1Y2Nlc3NmdWxseSBpbnN0YWxsaW5nIFdpbmUgcmVxdWlyZXM6CisgICAgICA8L3BhcmE+CiAKICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+TXVjaCB0aG91Z2h0IGFuZCB3b3JrIGZyb20gdGhlIHBhY2thZ2VyICgxeCk8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaW5lIHdpbGwgbm90IHJ1biB3aXRoIG91dCBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gIEZ1cnRoZXIsCisgICAgICAgICAgbm8gZGVmYXVsdCBpcyBjdXJyZW50bHkgcHJvdmlkZWQgYnkgV2luZS4gIFNvbWUgcGFja2FnZXJzIG1heSBhdHRlbXB0CisgICAgICAgICAgdG8gcHJvdmlkZSAob3IgZHluYW1pY2FsbHkgZ2VuZXJhdGUpIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uCisgICAgICAgICAgZmlsZS4gIFNvbWUgcGFja2FnZXJzIG1heSB3aXNoIHRvCisgICAgICAgICAgcmVseSBvbiB3aW5lY2ZnIHRvIGdlbmVyYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorCisKICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgQSB3cml0ZWFibGUgPGZpbGVuYW1lPkM6XDwvZmlsZW5hbWU+IGRpcmVjdG9yeQpAQCAtODUsMTMgKzIyOSwyNyBAQAogICAgICAgICAgICAgICAgICAgRmlsZXNcPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKwogICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi5leGU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmRsbDwvZmlsZW5hbWU+IGZyb20gYSBnbG9iYWwgcmVhZC1vbmx5Ci0gICAgICAgICAgICAgICAgV2luZG93cyBpbnN0YWxsYXRpb24gdG8gYmUgZm91bmQgYnkgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgICAgIEFuIGluaXRpYWwgc2V0IG9mIHJlZ2lzdHJ5IGVudHJpZXMuCiAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgY3VycmVudCBXaW5lIHN0YW5kYXJkIGlzIHRvIHVzZSB0aGUgcmVnYXBpIHRvb2wKKyAgICAgICAgICAgICAgICBhZ2FpbnN0IHRoZSAnd2luZWRlZmF1bHQucmVnJyBmaWxlIHRvIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgYSBkZWZhdWx0IHJlZ2lzdHJ5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVyZSBhcmUgc2V2ZXJhbCBvdGhlciBjaG9pY2VzIHRoYXQgY291bGQgYmUgbWFkZTsKKyAgICAgICAgICAgICAgICByZWdpc3RyaWVzIGNhbiBiZSBpbXBvcnRlZCBmcm9tIGEgV2luZG93cyBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgQXQgdGhpcyB0aW1lLCBXaW5lIGRvZXMgbm90IGNvbXBsZXRlbHkgc3VwcG9ydAorICAgICAgICAgICAgICAgIGEgY29tcGxleCBtdWx0aSB1c2VyIGluc3RhbGxhdGlvbiwgYWxhIFdpbmRvd3MgTlQsCisgICAgICAgICAgICAgICAgYnV0IGl0IGNvdWxkIGZhaXJseSByZWFkaWx5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKwogICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBTb21lIHNwZWNpYWwgPGZpbGVuYW1lPi5kbGw8L2ZpbGVuYW1lPiBhbmQKQEAgLTEwMCwxNCArMjU4LDg3OSBAQAogICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBkaXJlY3RseSBjaGVjayBmb3IgdGhlaXIgcHJlc2VuY2UuCiAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgIDxwYXJhPlNvbWUgc3BlY2lhbCBwcm9ncmFtIGVudmlyb25tZW50LjwvcGFyYT4KLSAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICAgICAgPC9zZWN0MT4KKworCisgICAgPC9jaGFwdGVyPgorCisKKworCisgICAgPGNoYXB0ZXIgaWQ9IkNvbXBvbmVudHMiPjx0aXRsZT5XaW5lIENvbXBvbmVudHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBsaXN0cyBhbGwgZmlsZXMgdGhhdCBwZXJ0YWluIHRvIFdpbmUuCisgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0MSBpZD1zdGF0aWM+PHRpdGxlPldpbmUgU3RhdGljIGFuZCBTaGFyZWFibGUgRmlsZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cworICAgICAgICBhcmUgaW5zdGFsbGVkIHRocm91Z2ggYSBzdGFuZGFyZCAnbWFrZSBpbnN0YWxsJworICAgICAgICBvZiBXaW5lLgorCisgICAgICAgIDxjYXV0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgSXQgaXMgdml0YWwgdGhhdCBhIHBhY2thZ2VyIGNoZWNrIGZvcgorICAgICAgICBjaGFuZ2VzIGluIFdpbmUuICBUaGlzIGxpc3Qgd2lsbCBsaWtlbHkgYmUgb3V0CisgICAgICAgIG9mIGRhdGUgYnkgdGhlIHRpbWUgdGhpcyBkb2N1bWVudCBpcyBjb21taXR0ZWQgdG8gQ1ZTLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvY2F1dGlvbj4KKworICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorCisgICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9YmluZmlsZXM+CisgICAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD48dGl0bGU+RXhlY3V0YWJsZSBGaWxlczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndpbmU8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gV2luZSBleGVjdXRhYmxlLiAgVGhpcyBwcm9ncmFtIHdpbGwgbG9hZAorICAgICAgICAgICAgICAgICAgICBhIFdpbmRvd3MgYmluYXJ5IGFuZCBydW4gaXQsIHJlbHlpbmcgdXBvbgorICAgICAgICAgICAgICAgICAgICB0aGUgV2luZSBzaGFyZWQgb2JqZWN0IGxpYnJhcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndpbmVzZXJ2ZXI8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFdpbmUgc2VydmVyIGlzIGNyaXRpY2FsIHRvIFdpbmU7IGl0IGlzIHRoZQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoYXQgY29vcmRpbmF0ZXMgYWxsIHNoYXJlZCBXaW5kb3dzCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndpbmVjbGlwc3J2PC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBXaW5lIENsaXBib2FyZCBTZXJ2ZXIgaXMgYSBzdGFuZGFsb25lIFhMaWIKKyAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gd2hvc2UgcHVycG9zZSBpcyB0byBtYW5hZ2UgdGhlIFggc2VsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIHdoZW4gV2luZSBleGl0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndpbmVkYmc8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2luZWRiZyBpcyB0aGUgV2luZSBidWlsdCBpbiBkZWJ1Z2dlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndpbmVjZmc8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIFRjbC9UayBiYXNlZCBmcm9udCBlbmQgdGhhdCBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICBhIHVzZXIgZnJpZW5kbHkgdG9vbCB0byBlZGl0IGFuZCBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9V0lORUNPTkZESVIgZW5kdGVybT13aW5lY29uZmRpci5pZD48L2xpbms+L2NvbmZpZyBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+d2luZXNoZWxsbGluazwvZmlsZW5hbWU+PC90ZXJtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNoZWxsIHNjcmlwdCBjYW4gYmUgY2FsbGVkIGJ5IFdpbmUgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gcHJvcG9nYXRlIERlc2t0b3AgaWNvbiBhbmQgbWVudSBjcmVhdGlvbgorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyBvdXQgdG8gYSBHTk9NRSBvciBLREUgKG9yIG90aGVyCisgICAgICAgICAgICAgICAgICAgIFdpbmRvdyBNYW5hZ2VycykuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT53aW5lYnVpbGQ8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2luZWJ1aWxkIGlzIGEgdG9vbCB1c2VkIGZvciBXaW5lbGliIGFwcGxpY2F0aW9ucworICAgICAgICAgICAgICAgICAgICAoYW5kIGJ5IFdpbmUgaXRzZWxmKSB0byBhbGxvdyBhIGRldmVsb3BlciB0bworICAgICAgICAgICAgICAgICAgICBjb21waWxlIGEgLnNwZWMgZmlsZSBpbnRvIGEgLnNwZWMuYyBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndtYzwvZmlsZW5hbWU+PC90ZXJtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgd21jIHRvb2xzIGlzIHRoZSBXaW5lIE1lc3NhZ2UgQ29tcGlsZXIuICBJdAorICAgICAgICAgICAgICAgICAgICBhbGxvd3MgV2luZG93cyBtZXNzYWdlIGZpbGVzIHRvIGJlIGNvbXBpbGVkCisgICAgICAgICAgICAgICAgICAgIGludG8gYSBmb3JtYXQgdXNhYmxlIGJ5IFdpbmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+d3JjPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB3cmMgdG9vbCBpcyB0aGUgV2luZSBSZXNvdXJjZSBDb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgSXQgYWxsb3dzIFdpbmVsaWIgcHJvZ3JhbW1lcnMgKGFuZCBXaW5lIGl0c2VsZikKKyAgICAgICAgICAgICAgICAgICAgdG8gY29tcGlsZSBXaW5kb3dzIHN0eWxlIHJlc291cmNlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGludG8gYSBmb3JtIHVzYWJsZSBieSBXaW5lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPmZudDJiZGY8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZudDJiZGYgdXRpbGl0eSBleHRyYWN0cyBmb250cyBmcm9tIC5mbnQgb3IKKyAgICAgICAgICAgICAgICAgICAgLmRsbCBmaWxlcyBhbmQgc3RvcmVzIHRoZW4gaW4gLmRiZiBmb3JtYXQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+ZG9zbW9kPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERPUyBWaXJ0dWFsIE1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgIDxsaXN0aXRlbSBpZD1saWJmaWxlcz4KKyAgICAgICAgPHBhcmE+IFNoYXJlZCBPYmplY3QgTGlicmFyeSBGaWxlcyA8L3BhcmE+CisKKyAgICAgICAgPHNpbXBsZWxpc3QgY29sdW1ucz01PgorCis8bWVtYmVyPmxpYndpbmUuc28uMS4wPC8+Cis8bWVtYmVyPmxpYmRkcmF3LnNvLjEuMDwvPgorPG1lbWJlcj5saWJvcGVuZ2wzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlieDExZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJhZHZhcGkzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGliYXZpZmlsMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYmNvbWN0bDMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJjb21kbGczMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGliY3J0ZGxsLnNvLjEuMDwvPgorPG1lbWJlcj5saWJkY2ltYW4zMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGliZGlucHV0LnNvLjEuMDwvPgorPG1lbWJlcj5saWJkcGxheS5zby4xLjA8Lz4KKzxtZW1iZXI+bGliZHBsYXl4LnNvLjEuMDwvPgorPG1lbWJlcj5saWJkc291bmQuc28uMS4wPC8+Cis8bWVtYmVyPmxpYmdkaTMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJpY21wLnNvLjEuMDwvPgorPG1lbWJlcj5saWJpbWFnZWhscC5zby4xLjA8Lz4KKzxtZW1iZXI+bGliaW1tMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYmtlcm5lbDMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJsejMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJtcHIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1zYWNtMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1zbmV0MzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1zdmZ3MzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm9kYmMzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlib2xlMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm9sZWF1dDMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJvbGVjbGkzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlib2xlZGxnLnNvLjEuMDwvPgorPG1lbWJlcj5saWJvbGVwcm8zMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlib2xlc3ZyMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYnBzYXBpLnNvLjEuMDwvPgorPG1lbWJlcj5saWJyYXNhcGkzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlicmljaGVkMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYnJwY3J0NC5zby4xLjA8Lz4KKzxtZW1iZXI+bGlic2VyaWFsdWkuc28uMS4wPC8+Cis8bWVtYmVyPmxpYnNldHVwYXBpLnNvLjEuMDwvPgorPG1lbWJlcj5saWJzaGVsbDMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJzaGZvbGRlci5zby4xLjA8Lz4KKzxtZW1iZXI+bGlic2hsd2FwaS5zby4xLjA8Lz4KKzxtZW1iZXI+bGlidGFwaTMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ0dHlkcnYuc28uMS4wPC8+Cis8bWVtYmVyPmxpYnVybG1vbi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlidXNlcjMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ2ZXJzaW9uLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3MzJza3JubC5zby4xLjA8Lz4KKzxtZW1iZXI+bGlid25hc3BpMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYndpbmVwcy5zby4xLjA8Lz4KKzxtZW1iZXI+bGlid2luaW5ldC5zby4xLjA8Lz4KKzxtZW1iZXI+bGliam95c3RpY2suZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3aW5tbS5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibWNpYW5pbS5kcnYuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1jaWF2aS5kcnYuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1jaWNkYS5kcnYuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1jaXNlcS5kcnYuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1jaXdhdmUuZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJtaWRpbWFwLmRydi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibXNhY20uZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3aW5lb3NzLmRydi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlid3MyXzMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3aW5zcG9vbC5kcnYuc28uMS4wPC8+Cis8bWVtYmVyPmxpYndvdzMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3c29jazMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3aW5lX3VuaWNvZGUuc28uMS4wPC8+CisgICAgICAgIDwvc2ltcGxlbGlzdD4KKworICAgICAgICA8L2xpc3RpdGVtPgorCisKKyAgICAgICAgICAgIDxsaXN0aXRlbSBpZD1tYW5maWxlcz4KKyAgICAgICAgICAgIDxwYXJhPiBNYW4gUGFnZXM8L3BhcmE+CisgICAgICAgICAgICAgICAgPHNpbXBsZWxpc3QgY29sdW1ucz0xPgorPG1lbWJlcj53aW5lLm1hbjwvPgorPG1lbWJlcj53aW5lLmNvbmYubWFuPC8+Cis8bWVtYmVyPndtYy5tYW48Lz4KKzxtZW1iZXI+d3JjLm1hbjwvPgorICAgICAgICA8L3NpbXBsZWxpc3Q+CisKKyAgICAgICAgPC9saXN0aXRlbT4KKworCisgICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9aW5jbHVkZWZpbGVzPgorICAgICAgICAgICAgPHBhcmE+IEluY2x1ZGUgRmlsZXM8L3BhcmE+CisgICAgICAgICAgICAgICAgPHNpbXBsZWxpc3QgY29sdW1ucz01PgorCis8bWVtYmVyPmJhc2V0c2QuaDwvPgorPG1lbWJlcj5jZGVyci5oPC8+Cis8bWVtYmVyPmNndWlkLmg8Lz4KKzxtZW1iZXI+Y29tbWN0cmwuaDwvPgorPG1lbWJlcj5jb21tZGxnLmg8Lz4KKzxtZW1iZXI+Y29tcG9iai5oPC8+Cis8bWVtYmVyPmQzZC5oPC8+Cis8bWVtYmVyPmQzZGNhcHMuaDwvPgorPG1lbWJlcj5kM2R0eXBlcy5oPC8+Cis8bWVtYmVyPmQzZHZlYy5pbmw8Lz4KKzxtZW1iZXI+ZGRlLmg8Lz4KKzxtZW1iZXI+ZGRlbWwuaDwvPgorPG1lbWJlcj5kZHJhdy5oPC8+Cis8bWVtYmVyPmRpZ2l0YWx2Lmg8Lz4KKzxtZW1iZXI+ZGlucHV0Lmg8Lz4KKzxtZW1iZXI+ZGlzcGRpYi5oPC8+Cis8bWVtYmVyPmRsZ3MuaDwvPgorPG1lbWJlcj5kb2NvYmouaDwvPgorPG1lbWJlcj5kcGxheS5oPC8+Cis8bWVtYmVyPmRwbG9iYnkuaDwvPgorPG1lbWJlcj5kc291bmQuaDwvPgorPG1lbWJlcj5ndWlkZGVmLmg8Lz4KKzxtZW1iZXI+aW1hZ2VobHAuaDwvPgorPG1lbWJlcj5pbW0uaDwvPgorPG1lbWJlcj5pbml0Z3VpZC5oPC8+Cis8bWVtYmVyPmluc3RhbmNlLmg8Lz4KKzxtZW1iZXI+bG1jb25zLmg8Lz4KKzxtZW1iZXI+bHpleHBhbmQuaDwvPgorPG1lbWJlcj5tYXBpZGVmcy5oPC8+Cis8bWVtYmVyPm1jeC5oPC8+Cis8bWVtYmVyPm1tcmVnLmg8Lz4KKzxtZW1iZXI+bW1zeXN0ZW0uaDwvPgorPG1lbWJlcj5tc2FjbS5oPC8+Cis8bWVtYmVyPm50c2VjYXBpLmg8Lz4KKzxtZW1iZXI+b2FpZGwuaDwvPgorPG1lbWJlcj5vYmpiYXNlLmg8Lz4KKzxtZW1iZXI+b2JqaWRsLmg8Lz4KKzxtZW1iZXI+b2NpZGwuaDwvPgorPG1lbWJlcj5vbGUyLmg8Lz4KKzxtZW1iZXI+b2xlMnZlci5oPC8+Cis8bWVtYmVyPm9sZWF1dG8uaDwvPgorPG1lbWJlcj5vbGVjdGwuaDwvPgorPG1lbWJlcj5vbGVkbGcuaDwvPgorPG1lbWJlcj5vbGVpZGwuaDwvPgorPG1lbWJlcj5wb3BwYWNrLmg8Lz4KKzxtZW1iZXI+cHJzaHQuaDwvPgorPG1lbWJlcj5wc2FwaS5oPC8+Cis8bWVtYmVyPnBzaHBhY2sxLmg8Lz4KKzxtZW1iZXI+cHNocGFjazIuaDwvPgorPG1lbWJlcj5wc2hwYWNrNC5oPC8+Cis8bWVtYmVyPnBzaHBhY2s4Lmg8Lz4KKzxtZW1iZXI+cmFzLmg8Lz4KKzxtZW1iZXI+cmVnc3RyLmg8Lz4KKzxtZW1iZXI+cmljaGVkaXQuaDwvPgorPG1lbWJlcj5ycGMuaDwvPgorPG1lbWJlcj5zZXJ2cHJvdi5oPC8+Cis8bWVtYmVyPnNoZWxsYXBpLmg8Lz4KKzxtZW1iZXI+c2hsZ3VpZC5oPC8+Cis8bWVtYmVyPnNobG9iai5oPC8+Cis8bWVtYmVyPnNobHdhcGkuaDwvPgorPG1lbWJlcj5zcWwuaDwvPgorPG1lbWJlcj5zcWxleHQuaDwvPgorPG1lbWJlcj5zcWx0eXBlcy5oPC8+Cis8bWVtYmVyPnN0b3JhZ2UuaDwvPgorPG1lbWJlcj50YXBpLmg8Lz4KKzxtZW1iZXI+dGxoZWxwMzIuaDwvPgorPG1lbWJlcj51bmtud24uaDwvPgorPG1lbWJlcj51cmxtb24uaDwvPgorPG1lbWJlcj52ZXIuaDwvPgorPG1lbWJlcj52ZncuaDwvPgorPG1lbWJlcj53aW5iYXNlLmg8Lz4KKzxtZW1iZXI+d2luY29uLmg8Lz4KKzxtZW1iZXI+d2luY3J5cHQuaDwvPgorPG1lbWJlcj53aW5kZWYuaDwvPgorPG1lbWJlcj53aW5kb3dzLmg8Lz4KKzxtZW1iZXI+d2luZG93c3guaDwvPgorPG1lbWJlcj53aW5lL2V4Y2VwdGlvbi5oPC8+Cis8bWVtYmVyPndpbmUvaWNtcGFwaS5oPC8+Cis8bWVtYmVyPndpbmUvaXBleHBvcnQuaDwvPgorPG1lbWJlcj53aW5lL29ial9iYXNlLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfY2FjaGUuaDwvPgorPG1lbWJlcj53aW5lL29ial9jaGFubmVsLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfY2xpZW50c2VydmVyLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaDwvPgorPG1lbWJlcj53aW5lL29ial9jb25uZWN0aW9uLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfY29udGV4dG1lbnUuaDwvPgorPG1lbWJlcj53aW5lL29ial9jb250cm9sLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfZGF0YW9iamVjdC5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX2RyYWdkcm9wLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfZW51bWlkbGlzdC5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX2Vycm9yaW5mby5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX2V4dHJhY3RpY29uLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfaW5wbGFjZS5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX21hcnNoYWwuaDwvPgorPG1lbWJlcj53aW5lL29ial9taXNjLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfbW9uaWtlci5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX29sZWF1dC5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX29sZWZvbnQuaDwvPgorPG1lbWJlcj53aW5lL29ial9vbGVvYmouaDwvPgorPG1lbWJlcj53aW5lL29ial9vbGV1bmRvLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfb2xldmlldy5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX3BpY3R1cmUuaDwvPgorPG1lbWJlcj53aW5lL29ial9wcm9wZXJ0eS5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oPC8+Cis8bWVtYmVyPndpbmUvb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfc2hlbGxicm93c2VyLmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfc2hlbGxleHRpbml0Lmg8Lz4KKzxtZW1iZXI+d2luZS9vYmpfc2hlbGxmb2xkZXIuaDwvPgorPG1lbWJlcj53aW5lL29ial9zaGVsbGxpbmsuaDwvPgorPG1lbWJlcj53aW5lL29ial9zaGVsbHZpZXcuaDwvPgorPG1lbWJlcj53aW5lL29ial9zdG9yYWdlLmg8Lz4KKzxtZW1iZXI+d2luZS91bmljb2RlLmg8Lz4KKzxtZW1iZXI+d2luZXJyb3IuaDwvPgorPG1lbWJlcj53aW5nZGkuaDwvPgorPG1lbWJlcj53aW5pbmV0Lmg8Lz4KKzxtZW1iZXI+d2luaW9jdGwuaDwvPgorPG1lbWJlcj53aW5uZXR3ay5oPC8+Cis8bWVtYmVyPndpbm5scy5oPC8+Cis8bWVtYmVyPndpbm50Lmg8Lz4KKzxtZW1iZXI+d2lucmVnLmg8Lz4KKzxtZW1iZXI+d2lucmVzcmMuaDwvPgorPG1lbWJlcj53aW5zb2NrLmg8Lz4KKzxtZW1iZXI+d2luc29jazIuaDwvPgorPG1lbWJlcj53aW5zcG9vbC5oPC8+Cis8bWVtYmVyPndpbnN2Yy5oPC8+Cis8bWVtYmVyPndpbnVzZXIuaDwvPgorPG1lbWJlcj53aW52ZXIuaDwvPgorPG1lbWJlcj53bmFzcGkzMi5oPC8+Cis8bWVtYmVyPndvd250MzIuaDwvPgorPG1lbWJlcj53dHlwZXMuaDwvPgorPG1lbWJlcj56bW91c2UuaDwvPgorICAgICAgICA8L3NpbXBsZWxpc3Q+CisKKyAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8bGlzdGl0ZW0gaWQ9ZG9jZmlsZXM+CisgICAgICAgIDxwYXJhPgorICAgICAgICBEb2N1bWVudGF0aW9uIGZpbGVzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIEkgZG8gbm90IGhhdmUgYQorICAgICAgICBkZWZpbml0aXZlIGxpc3Qgb2YgZG9jdW1lbnRhdGlvbiBmaWxlcyB0byAKKyAgICAgICAgYmUgaW5zdGFsbGVkLiAgSG93ZXZlciwgdGhleSBkbyBpbmNsdWRlIAorICAgICAgICB0aGUgSFRNTCBmaWxlcyBnZW5lcmF0ZWQgZnJvbSB0aGUgU0dNTCBpbiB0aGUgV2luZSBDVlMgdHJlZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorCisKKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKworICAgICAgICA8L3NlY3QxPgorCisKKyAgICAgICAgPHNlY3QxIGlkPW5vbnN0YXRpYz48dGl0bGU+RHluYW1pYyBXaW5lIEZpbGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgV2luZSBhbHNvIGdlbmVyYXRlcyBhbmQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiBkeW5hbWljCisgICAgICAgIGZpbGVzLCBpbmNsdWRpbmcgdXNlciBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCByZWdpc3RyeSBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIHRoZXJlIHdhcyBub3QgYSBjbGVhcgorICAgICAgICBjb25zZW5zdXMgb2Ygd2hlcmUgdGhlc2UgZmlsZXMgc2hvdWxkIGJlIGxvY2F0ZWQsIGFuZCBob3cKKyAgICAgICAgdGhleSBzaG91bGQgYmUgaGFuZGxlZC4gIFRoaXMgc2VjdGlvbiBhdHRlbXB0cworICAgICAgICB0byBleHBsYWluIHRoZSBhbHRlcm5hdGl2ZXMgY2xlYXJseS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxvcmRlcmVkbGlzdD4KKworICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+PHRpdGxlPkNvbmZpZ3VyYXRpb24gRmlsZTwvdGl0bGU+CisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5IGlkPXdpbmVyYz48dGVybT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4vY29uZmlnPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBpcyB0aGUgdXNlciBsb2NhbCBXaW5lIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBpZiB0aGlzIGZpbGUgZXhpc3RzLAorICAgICAgICAgICAgICAgICAgICB0aGVuIG5vIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBsb2FkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1FVENESVIgZW5kdGVybT1ldGNkaXIuaWQ+PC9saW5rPi93aW5lLmNvbmY8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgZ2xvYmFsIFdpbmUgY29uZmlndXJhdGlvbiBmaWxlLiAgSXQKKyAgICAgICAgICAgICAgICAgICAgaXMgb25seSB1c2VkIGlmIHRoZSB1c2VyIHJ1bm5pbmcgV2luZSBoYXMKKyAgICAgICAgICAgICAgICAgICAgbm8gbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTb21lIHBhY2thZ2VycyBmZWVsIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBub3QKKyAgICAgICAgICAgICAgICAgICAgYmUgc3VwcGxpZWQsIGFuZCB0aGF0IG9ubHkgYSB3aW5lLmNvbmYuZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgZ2l2ZW4gaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT3RoZXIgcGFja2FnZXJzIGZlZWwgdGhhdCB0aGlzIGZpbGUgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIGJlIHRoZSBwcmVkb21pbmFudCBmaWxlIHVzZWQsIGFuZCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHVzZXJzIHNob3VsZCBvbmx5IHNoaWZ0IHRvIGEgbG9jYWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmaWxlIGlmIHRoZXkgbmVlZCB0by4gIEFuIGFyZ3VtZW50IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIG1hZGUgdGhhdCB0aGUgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBpbmhlcml0IHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHRpbWUsIFdpbmUgZG9lcyBub3QgZG8gdGhpczsKKyAgICAgICAgICAgICAgICAgICAgcGxlYXNlIHJlZmVyIHRvIHRoZSBXaW5lSFEgZGlzY3Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBhcmNoaXZlcyBmb3IgdGhlIGRlYmF0ZSBjb25jZXJuaW5nIHRoaXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGViYXRlIGlzIGFkZHJlc3NlZCBtb3JlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgYmVsb3csIGluIDxsaW5rIGxpbmtlbmQ9c3RyYXRlZ3kgZW5kdGVybT1zdHJhdGVneS5pZD48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8bGlzdGl0ZW0+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5SZWdpc3RyeSBGaWxlczwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHJlcGxpY2F0ZSB0aGUgV2luZG93cyByZWdpc3RyeSBzeXN0ZW0sCisgICAgICAgICAgICAgICAgV2luZSBzdG9yZXMgcmVnaXN0cnkgZW50cmllcyBpbiBhIHNlcmllcyBvZiBmaWxlcy4KKworICAgICAgICAgICAgICAgIEZvciBhbiBleGNlbGxlbnQgb3ZlcnZpZXcgb2YgdGhpcyBpc3N1ZSwgcmVhZAorICAgICAgICAgICAgICAgIHRoaXMKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vTmV3cy8yMDAwLTI1Lmh0bWwjRlRSIj4KKyAgICAgICAgICAgICAgICBXaW5lIFdlZWtseSBOZXdzIGZlYXR1cmUuPC91bGluaz4KKworICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBib3R0b20gbGluZSBpcyB0aGF0LCBhdCBXaW5lIHNlcnZlciBzdGFydHVwLAorICAgICAgICAgICAgICAgIFdpbmUgbG9hZHMgYWxsIHJlZ2lzdHJ5IGVudHJpZXMgaW50byBtZW1vcnkKKyAgICAgICAgICAgICAgICB0byBjcmVhdGUgYW4gaW4gbWVtb3J5IGltYWdlIG9mIHRoZSByZWdpc3RyeS4KKyAgICAgICAgICAgICAgICBUaGUgb3JkZXIgb2YgZmlsZXMgd2hpY2ggV2luZSB1c2VzIHRvIGxvYWQKKyAgICAgICAgICAgICAgICByZWdpc3RyeSBlbnRyaWVzIGlzIGV4dHJlbWVseSBpbXBvcnRhbnQsCisgICAgICAgICAgICAgICAgYXMgaXQgYWZmZWN0cyB3aGF0IHJlZ2lzdHJ5IGVudHJpZXMgYXJlCisgICAgICAgICAgICAgICAgYWN0dWFsbHkgcHJlc2VudC4gIFRoZSBvcmRlciBpcyByb3VnaGx5IHRoYXQKKyAgICAgICAgICAgICAgICAuZGF0IGZpbGVzIGZyb20gYSBXaW5kb3dzIHBhcnRpb24gYXJlIGxvYWRlZCwKKyAgICAgICAgICAgICAgICB0aGVuIGdsb2JhbCByZWdpc3RyeSBzZXR0aW5ncyBmcm9tIDxsaW5rIGxpbmtlbmQ9RVRDRElSIGVuZHRlcm09ZXRjZGlyLmlkPjwvbGluaz4sCisgICAgICAgICAgICAgICAgYW5kIHRoZW4gZmluYWxseSBsb2NhbCByZWdpc3RyeSBzZXR0aW5ncyBhcmUKKyAgICAgICAgICAgICAgICBsb2FkZWQgZnJvbSA8bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPiAKKyAgICAgICAgICAgICAgICAuICBBcyBlYWNoIHNldCBhcmUgbG9hZGVkLAorICAgICAgICAgICAgICAgIHRoZXkgY2FuIG92ZXJyaWRlIHRoZSBwcmlvciBlbnRyaWVzLiAgVGh1cywKKyAgICAgICAgICAgICAgICB0aGUgbG9jYWwgcmVnaXN0cnkgZmlsZXMgdGFrZSBwcmVjZWRlbmNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZW4sIGF0IGV4aXQgKG9yIGF0IHBlcmlvZGljIGludGVydmFscyksCisgICAgICAgICAgICAgICAgV2luZSB3aWxsIHdyaXRlIGVpdGhlciBhbGwgcmVnaXN0cnkgZW50cmllcworICAgICAgICAgICAgICAgIChvciwgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nKSBjaGFuZ2VkCisgICAgICAgICAgICAgICAgcmVnaXN0cnkgZW50cmllcyB0byBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4vc3lzdGVtLnJlZzwvZmlsZW5hbWU+PC90ZXJtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHVzZXJzIGxvY2FsIGNvcHkgb2YgCisgICAgICAgICAgICAgICAgICAgIHRoZSBIS0VZX0xPQ0FMX01BQ0hJTkUgcmVnaXN0cnkgaGl2ZS4gIEluIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgdXNlLCBpdCB3aWxsIGNvbnRhaW4gb25seSBjaGFuZ2VzIG1hZGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgcmVnaXN0cnkgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4vdXNlci5yZWc8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB1c2VycyBsb2NhbCBjb3B5IG9mIAorICAgICAgICAgICAgICAgICAgICB0aGUgSEtFWV9DVVJSRU5UX1VTRVIgcmVnaXN0cnkgaGl2ZS4gIEluCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYWwgdXNlLCBpdCB3aWxsIGNvbnRhaW4gb25seSBjaGFuZ2VzIG1hZGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgcmVnaXN0cnkgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4vdXNlcmRlZi5yZWc8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB1c2VycyBsb2NhbCBjb3B5IG9mIAorICAgICAgICAgICAgICAgICAgICB0aGUgSEtFWV9VU0VSU1wuRGVmYXVsdCByZWdpc3RyeSBoaXZlLiAgSW4KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbCB1c2UsIGl0IHdpbGwgY29udGFpbiBvbmx5IGNoYW5nZXMgbWFkZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCByZWdpc3RyeSB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi93aW5lLnVzZXJyZWc8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGJlaW5nIGRlcHJlY2F0ZWQuICBJdCBpcyBvbmx5IHJlYWQKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhlcmUgaXMgbm8gdXNlci5yZWcgb3Igd2luZS51c2VycmVnLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgaXQgc3VwcGxpZWQgdGhlIGNvbnRlbnRzIG9mIEhLRVlfVVNFUlMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPUVUQ0RJUiBlbmR0ZXJtPWV0Y2Rpci5pZD48L2xpbms+L3dpbmUuc3lzdGVtcmVnPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZ2xvYmFsIHZhbHVlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgSEtFWV9MT0NBTF9NQUNISU5FLiAgVGhlIHZhbHVlcyBpbiB0aGlzIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgdXNlcnMgbG9jYWwgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkgaXMgaGFyZCBjb2RlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgd2luZSwgZ2VuZXJhbGx5IHRvIC9ldGMuICBUaGlzIHdpbGwgaG9wZWZ1bGx5IGJlCisgICAgICAgICAgICAgICAgICAgIGZpeGVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworCisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPUVUQ0RJUiBlbmR0ZXJtPWV0Y2Rpci5pZD48L2xpbms+L3dpbmUudXNlcnJlZzwvZmlsZW5hbWU+PC90ZXJtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGdsb2JhbCB2YWx1ZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIEhLRVlfVVNFUlMuICBUaGUgdmFsdWVzIGluIHRoaXMgZmlsZQorICAgICAgICAgICAgICAgICAgICBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSB1c2VycyBsb2NhbCBzZXR0aW5ncy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGxpa2VseSB0byBiZSBkZXByZWNhdGVkIGluCisgICAgICAgICAgICAgICAgICAgIGZhdm9yIG9mIGEgZ2xvYmFsIHdpbmUudXNlcmRlZi5yZWcgdGhhdCB3aWxsCisgICAgICAgICAgICAgICAgICAgIG9ubHkgY29udGFpbiBIS0VZX1VTRVJTLy5EZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgorCisKICAgICAgICAgPC9saXN0aXRlbT4KIAogICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgPHBhcmE+SW1wbGVtZW50YXRpb248L3BhcmE+CisgICAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD48dGl0bGU+T3RoZXIgZmlsZXMgaW4gPGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz48L3RpdGxlPgorICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4vd2luZXNlcnZlci1bdXNlcm5hbWVdPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGZpbGVzIHVzZWQgYnkgV2luZSBhbmQgdGhlIFdpbmVzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gY29tbXVuaWNhdGUuICBBIHBhY2thZ2VyIG1heSB3YW50IHRvIGhhdmUgYSBmYWNpbGl0eQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHVzZXIgdG8gZXJhc2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgIGFzIGEgY3Jhc2ggaW4gdGhlIHdpbmVzZXJ2ZXIgcmVzdWx0aW5nIGluIGEgYm9ndXMgbG9jaworICAgICAgICAgICAgICAgICAgICBmaWxlIGNhbiByZW5kZXIgd2luZSB1bnVzYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9V0lORUNPTkZESVIgZW5kdGVybT13aW5lY29uZmRpci5pZD48L2xpbms+L2NhY2hlZG1ldHJpY3MuW2Rpc3BsYXldPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBjb250YWlucyBmb250IG1ldHJpY3MgZm9yIHRoZSBnaXZlbiBYIGRpc3BsYXkuCisgICAgICAgICAgICAgICAgICAgIEdlbmVyYWxseSwgdGhpcyBjYWNoZSBpcyBnZW5lcmF0ZWQgb25jZSBhdCBXaW5lIHN0YXJ0IHRpbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKworICAgICAgICA8L29yZGVyZWRsaXN0PgorCisKKyAgICAgICAgPC9zZWN0MT4KKworICAgICAgICA8c2VjdDEgaWQ9d2lucGFydGl0aW9uPjx0aXRsZT5JbXBvcnRhbnQgRmlsZXMgZnJvbSBhIFdpbmRvd3MgUGFydGl0aW9uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIFdpbmUgaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSBmaWxlcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBvZiB0aGUKKyAgICAgICAgYWN0dWFsIE1pY3Jvc29mdCBXaW5kb3dzIG9wZXJhdGluZyBzeXN0ZW0uICBHZW5lcmFsbHkgdGhlc2UKKyAgICAgICAgZmlsZXMgYXJlIGxvYWRlZCBvbiBhIFZGQVQgcGFydGl0aW9uIHRoYXQgaXMgbW91bnRlZAorICAgICAgICB1bmRlciBMaW51eC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpcyBwcm9iYWJseSB0aGUgbW9zdCBpbXBvcnRhbnQgY29uZmlndXJhdGlvbiBkZXRhaWwuCisgICAgICAgIFRoZSB1c2Ugb2YgV2luZG93cyByZWdpc3RyeSBhbmQgRExMIGZpbGVzIGRyYW1hdGljYWxseQorICAgICAgICBhbHRlcnMgdGhlIGJlaGF2aW91ciBvZiBXaW5lLiAgSWYgbm90aGluZyBlbHNlLAorICAgICAgICBwYWNha2FnZXIgaGF2ZSB0byBtYWtlIHRoaXMgZGlzdGluY3Rpb24gY2xlYXIKKyAgICAgICAgdG8gdGhlIGVuZCB1c2VyLCBzbyB0aGF0IHRoZXkgY2FuIGludGVsbGlnZW50bHkKKyAgICAgICAgY2hvb3NlIHRoZWlyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgCisKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorCisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD48dGl0bGU+UmVnaXN0cnkgRmlsZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+W1dJTkRPV1NESVJdL3N5c3RlbTMyL3N5c3RlbS5kYXQ8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPltXSU5ET1dTRElSXS9zeXN0ZW0zMi91c2VyLmRhdDwvZmlsZW5hbWU+PC90ZXJtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+W1dJTkRPV1NESVJdL3dpbi5pbmk8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhPiAKKyAgICAgICAgICAgICAgICBXaW5kb3dzIER5bmFtaWMgTGluayBMaWJyYXJpZXMgKFtXSU5ET1dTRElSXS9zeXN0ZW0zMi8qLmRsbCkKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+IAorICAgICAgICAgICAgICAgIFdpbmUgaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSB0aGUgYWN0dWFsbCBXaW5kb3dzIERMTCBmaWxlcworICAgICAgICAgICAgICAgIHdoZW4gcnVubmluZyBhbiBhcHBsaWNhdGlvbi4gIEFuIGVuZCB1c2VyIGNhbiBjb25maWd1cmUKKyAgICAgICAgICAgICAgICBXaW5lIHNvIHRoYXQgV2luZSB1c2VzIHNvbWUgb3IgYWxsIG9mIHRoZXNlIERMTCBmaWxlcworICAgICAgICAgICAgICAgIHdoZW4gcnVubmluZyBhIGdpdmVuIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKworICAgICAgICA8L3NlY3QxPgorCisgICAgPC9jaGFwdGVyPgorCisgICAgPGNoYXB0ZXIgaWQ9c3RyYXRlZ3k+PHRpdGxlIGlkPXN0cmF0ZWd5LmlkPlBhY2thZ2luZyBTdHJhdGVnaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlcmUgaGFzIHJlY2VudGx5IGJlZW4gYSBsb3Qgb2YgZGlzY3Vzc2lvbiBvbiB0aGUgV2luZQorICAgICAgICBkZXZlbG9wbWVudCBtYWlsaW5nIGxpc3QgYWJvdXQgdGhlIGJlc3Qgd2F5IHRvIAorICAgICAgICBidWlsZCBXaW5lIHBhY2thZ2VzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGVyZSB3YXMgYSBsb3Qgb2YgZGlzY3Vzc2lvbiwgYW5kIHNldmVyYWwgZGl2ZXJnaW5nCisgICAgICAgIHBvaW50cyBvZiB2aWV3LiAgVGhpcyBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudAorICAgICAgICBhdHRlbXB0cyB0byBwcmVzZW50IHRoZSBhcmVhcyBvZiBjb21tb24gYWdyZWVtZW50LAorICAgICAgICBhbmQgYWxzbyB0byBwcmVzZW50IHRoZSBkaWZmZXJlbnQgYXBwcm9hY2hlcworICAgICAgICBhZHZvY2F0ZWQgb24gdGhlIG1haWxpbmcgbGlzdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0MSBpZD13aGF0ZmlsZXM+PHRpdGxlPkRpc3RyaWJ1dGlvbiBvZiBXaW5lIGludG8gcGFja2FnZXM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1vc3QgYmFzaWMgcXVlc3Rpb24gdG8gYXNrIGlzIGdpdmVuIHRoZSBXaW5lIENWUyB0cmVlLAorICAgICAgICB3aGF0IHBoeXNpY2FsIGZpbGVzIGFyZSB5b3UsIHRoZSBwYWNrYWdlciwgZ29pbmcgdG8gcHJvZHVjZT8KKyAgICAgICAgQXJlIHlvdSBnb2luZyB0byBwcm9kdWNlIG9ubHkgYSB3aW5lLnJwbSAoYXMgTWFyY3VzIGhhcyBkb25lKSwKKyAgICAgICAgb3IgYXJlIHlvdSBnb2luZyB0byBwcm9kdWNlIDUgZGViaWFuIGZpbGVzCisgICAgICAgIChsaWJ3aW5lLWRldiwgbGlid2luZSwgd2luZS1kb2MsIHdpbmUtdXRpbHMsIGFuZCB3aW5lKSBhcworICAgICAgICBPdmUgaGFzIGRvbmU/CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIEF0IHRoaXMgcG9pbnQsIHRoZXJlIGlzIG5vIGNvbnNlbnN1cworICAgICAgICBhbW9uZ3N0IHRoZSB3aW5lLWRldmVsIGNvbW11bml0eSBvbiB0aGlzIHN1YmplY3QuIAorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdDE+CisKKyAgICAgICAgPHNlY3QxIGlkPXdoZXJlZmlsZXM+PHRpdGxlPldoZXJlIHRvIGluc3RhbGwgZmlsZXM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBxdWVzdGlvbiBpcyBub3QgcmVhbGx5IGNvbnRlc3RlZC4gIEl0IHdpbGwgdmFyeQorICAgICAgICBieSBkaXN0cmlidXRpb24sIGFuZCBpcyByZWFsbHkgdXAgdG8gdGhlIHBhY2thZ2VyLgorICAgICAgICBBcyBhIGd1aWRlbGluZSwgdGhlIGN1cnJlbnQgJ21ha2UgaW5zdGFsbCcgcHJvY2VzcworICAgICAgICBzZWVtcyB0byBiZWhhdmUgc3VjaCB0aGF0CisgICAgICAgIGlmIHdlIHBpY2sgYSBzaW5nbGUgPGxpbmsgbGlua2VuZD1QUkVGSVggZW5kdGVybT1wcmVmaXguaWQ+PC9saW5rPiwKKyAgICAgICAgdGhlbiA6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAKKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgYWxsIDxsaW5rIGxpbmtlbmQ9YmluZmlsZXM+YmluYXJ5IGZpbGVzPC9saW5rPiBnbyBpbnRvCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPVBSRUZJWCBlbmR0ZXJtPXByZWZpeC5pZD48L2xpbms+L2JpbiwKKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgYWxsIDxsaW5rIGxpbmtlbmQ9bGliZmlsZXM+bGlicmFyeSBmaWxlczwvbGluaz4gZ28gaW50bworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD1QUkVGSVggZW5kdGVybT1wcmVmaXguaWQ+PC9saW5rPi9saWIsCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGFsbCA8bGluayBsaW5rZW5kPWluY2x1ZGVmaWxlcz5pbmNsdWRlIGZpbGVzPC9saW5rPiBnbyBpbnRvCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPVBSRUZJWCBlbmR0ZXJtPXByZWZpeC5pZD48L2xpbms+L2luY2x1ZGUsCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGFsbCA8bGluayBsaW5rZW5kPWRvY2ZpbGVzPmRvY3VtZW50YXRpb24gZmlsZXM8L2xpbms+IGdvIGludG8KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9UFJFRklYIGVuZHRlcm09cHJlZml4LmlkPjwvbGluaz4vZG9jL3dpbmUsCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPW1hbmZpbGVzPm1hbiBwYWdlczwvbGluaz4gZ28gaW50bworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD1QUkVGSVggZW5kdGVybT1wcmVmaXguaWQ+PC9saW5rPi9tYW4sCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIFJlZmVyIHRvIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiB0aGUgRGViaWFuIHBhY2thZ2UKKyAgICAgICAgYW5kIHRoZSBPcGVuTGludXggcGFja2FnZSBmb3Igc3BlY2lmaWMgZGV0YWlscyBvbiBob3cKKyAgICAgICAgdGhvc2UgcGFja2FnZXMgYXJlIGJ1aWx0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3QyIGlkPW9wdD48dGl0bGU+VGhlIHF1ZXN0aW9uIG9mIC9vcHQvd2luZTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgRkhTIDIuMSBzcGVjaWZpY2F0aW9uIHN1Z2dlc3RzIHRoYXQgV2luZSBhcyBhIHBhY2thZ2UKKyAgICAgICAgc2hvdWxkIGJlIGluc3RhbGxlZCB0byAvb3B0L3dpbmUuICBOb25lIG9mIHRoZQorICAgICAgICBleGlzdGluZyBwYWNrYWdlcyBmb2xsb3cgdGhpcyBndWlkZWxpbmUgKHRvZGF5OworICAgICAgICBjaGVjayBhZ2FpbiB0b21vcnJvdykuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0Mj4KKyAgICAgICAgCisgICAgICAgIDwvc2VjdDE+CisKKyAgICAgICAgPHNlY3QxIGlkPXdoYXR0b21ha2U+PHRpdGxlPldoYXQgZmlsZXMgdG8gY3JlYXRlPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIGluc3RhbGxpbmcgdGhlIHN0YXRpYyBhbmQgc2hhcmVhYmxlIGZpbGVzLCB0aGUgbmV4dAorICAgICAgICBxdWVzdGlvbiB0aGUgcGFja2FnZXIgbmVlZHMgdG8gYXNrIGlzIGhvdyBtdWNoIGR5bmFtaWMKKyAgICAgICAgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRvbmUsIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgZmlsZXMgc2hvdWxkIGJlIGNyZWF0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIGFwcHJvYWNoZXMgdG8gdGhpczoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFJlbHkgY29tcGxldGVseSBvbiB1c2VyIGZpbGUgc3BhY2UgLSBpbnN0YWxsIG5vdGhpbmcKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBhcHByb2FjaCByZWxpZXMgdXBvbiB0aGUgbmV3IHdpbmVjZmcgdXRpbGl0eSBhbmQKKyAgICAgICAgICAgICAgICB0aGUgbmV3IGFiaWxpdHkgb2YgV2luZSB0byBsYXVuY2ggd2luZWNmZyBpZiBubyBjb25maWd1cmF0aW9uIGZpbGUgaXMgZm91bmQuCisgICAgICAgICAgICAgICAgVGhlIGJhc2ljIGNvbmNlcHQgaXMgdGhhdCBubyBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlcworICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkIGF0IGluc3RhbGwgdGltZS4KKyAgICAgICAgICAgICAgICBJbnN0ZWFkLCBXaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGNyZWF0ZWQgb24gdGhlCisgICAgICAgICAgICAgICAgZmx5IGJ5IHRoZSB3aW5lY2ZnIHByb2dyYW0gd2hlbiBXaW5lIGlzIGludm9rZWQuCisgICAgICAgICAgICAgICAgRnVydGhlciwgd2luZWNmZyBjcmVhdGVzIGRlZmF1bHQgV2luZG93cyBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgIGFuZCBwYXRocyB0aGF0IGFyZSBzdG9yZWQgY29tcGxldGVseSBpbgorICAgICAgICAgICAgICAgIHRoZSB1c2VycyA8bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBhcHByb2FjaCBoYXMgdGhlIGJlbmVmaXQgb2Ygc2ltcGxpY2l0eSBpbiB0aGF0IGFsbAorICAgICAgICAgICAgICAgIFdpbmUgZmlsZXMgYXJlIGVpdGhlciBzdG9yZWQgdW5kZXIgL29wdC93aW5lIG9yIHVuZGVyCisgICAgICAgICAgICAgICAgfi8ud2luZS4gIEZ1cnRoZXIsIHRoZXJlIGlzIG9ubHkgZXZlciBvbmUgV2luZSAKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgYXBwcm9hY2gsIGhvd2V2ZXIsIGFkZHMgYW5vdGhlciBsZXZlbCBvZiBjb21wbGV4aXR5LgorICAgICAgICAgICAgICAgIEl0IGRvZXMgbm90IGFsbG93IFdpbmUgdG8gcnVuIFNvbGl0YWlyZSAnb3V0IG9mIHRoZSBib3gnOworICAgICAgICAgICAgICAgIHRoZSB1c2VyIG11c3QgcnVuIHRoZSBjb25maWd1cmF0aW9uIHByb2dyYW0gZmlyc3QuICBGdXJ0aGVyLAorICAgICAgICAgICAgICAgIHdpbmVjZmcgcmVxdWlyZXMgVGNsL1RrLCBhIHJlcXVpcmVtZW50IG5vdCBiZWxvdmVkIGJ5IHNvbWUuCisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIGFwcHJvYWNoIGNsb3NlcyB0aGUgZG9vciBvbiBtdWx0aQorICAgICAgICAgICAgICAgIHVzZXIgY29uZmlndXJhdGlvbnMgYW5kIHByZXN1bWVzIGEgc2luZ2xlIHVzZXIgYXBwcm9hY2guCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKworCisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnVpbGQgYSByZWFzb25hYmxlIHNldCBvZiBkZWZhdWx0cyBmb3IgdGhlIGdsb2JhbCB3aW5lLmNvbmYsCisgICAgICAgICAgICAgICAgZmFjaWxpdGF0ZSBjcmVhdGlvbiBvZiBhIHVzZXIncyBsb2NhbCBXaW5lIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgYXBwcm9hY2gsIGJlc3Qgc2hvd24gYnkgTWFyY3VzLCBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHByb2Nlc3MgdG8gYXV0byBzY2FuIHRoZSBzeXN0ZW0sCisgICAgICAgICAgICAgICAgYW5kIGdlbmVyYXRlIGEgZ2xvYmFsIHdpbmUuY29uZiBmaWxlIHdpdGggYmVzdAorICAgICAgICAgICAgICAgIGd1ZXNzIGRlZmF1bHRzLiAgVGhlIE9wZW5MaW51eCBwYWNrYWdlcyBmb2xsb3cKKyAgICAgICAgICAgICAgICB0aGlzIGJlaGF2aW91ci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGtleXMgdG8gdGhpcyBhcHByb2FjaCBhcmUgYWx3YXlzIHB1dHRpbmcKKyAgICAgICAgICAgICAgICBhbiBleGlzdGluZyBXaW5kb3dzIHBhcnRpdGlvbiBpbnRvIHRoZQorICAgICAgICAgICAgICAgIHBhdGgsIGFuZCBiZWluZyBhYmxlIHRvIHJ1biBTb2xpdGFpcmUKKyAgICAgICAgICAgICAgICByaWdodCBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgICAgICAgICBBbm90aGVyIGdvb2QgdGhpbmcgdGhhdCBNYXJjdXMgZG9lcyBpcyBoZQorICAgICAgICAgICAgICAgIGRldGVjdHMgYSBmaXJzdCB0aW1lIGluc3RhbGxhdGlvbiBhbmQKKyAgICAgICAgICAgICAgICBkb2VzIHNvbWUgY2xldmVyIHRoaW5ncyB0byBpbXByb3ZlIHRoZQorICAgICAgICAgICAgICAgIHVzZXIncyBXaW5lIGV4cGVyaWVuY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgZmxhdyB3aXRoIHRoaXMgYXBwcm9hY2gsIGhvd2V2ZXIsIGlzIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAgICBnaXZlIHRoZSB1c2VyIGFuIG9idmlvdXMgd2F5IHRvIGNob29zZSBub3QgdG8KKyAgICAgICAgICAgICAgICB1c2UgYSBXaW5kb3dzIHBhcnRpdGlvbi4gIAorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCdWlsZCBhIHJlYXNvbmFibGUgc2V0IG9mIGRlZmF1bHRzIGZvciB0aGUgZ2xvYmFsIHdpbmUuY29uZiwKKyAgICAgICAgICAgICAgICBhbmQgYXNrIHRoZSB1c2VyIGlmIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgYXBwcm9hY2gsIGRlbW9uc3RyYXRlZCBieSBPdmUsIGNhdXNlcyB0aGUKKyAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gcHJvY2VzcyB0byBhdXRvIHNjYW4gdGhlIHN5c3RlbSwKKyAgICAgICAgICAgICAgICBhbmQgZ2VuZXJhdGUgYSBnbG9iYWwgd2luZS5jb25mIGZpbGUgd2l0aCBiZXN0CisgICAgICAgICAgICAgICAgZ3Vlc3MgZGVmYXVsdHMuICBCZWNhdXNlIE92ZSBidWlsdCBhIERlYmlhbgorICAgICAgICAgICAgICAgIHBhY2thZ2UsIGhlIHdhcyBhYmxlIHRvIGZ1cnRoZXIgcXVlcnkgZGViY29uZiBhbmQKKyAgICAgICAgICAgICAgICBnZXQgcGVybWlzc2lvbiB0byBhc2sgdGhlIHVzZXIgc29tZSBxdWVzdGlvbnMsCisgICAgICAgICAgICAgICAgYWxsb3dpbmcgdGhlIHVzZXIgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvCisgICAgICAgICAgICAgICAgdXNlIGEgV2luZG93cyBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKworCisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPC9zZWN0MT4KKworCisgICAgICAgIDxzZWN0MSBpZD13aW5lY29uZj48dGl0bGU+V2hhdCB0byBwdXQgaW50byB0aGUgd2luZSBjb25maWcgZmlsZTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbmV4dCBoYXJkIHF1ZXN0aW9uIGlzIHdoYXQgdGhlIFdpbmUgY29uZmlnIHNob3VsZCBsb29rIGxpa2UuCisgICAgICAgIFRoZSBjdXJyZW50IGJlc3QgcHJhY3RpY2VzIHNlZW1zIHRvIGludm9sdmUgdXNpbmcgZHJpdmVzIGZyb20gTSB0byBaLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxjYXV0aW9uPjxwYXJhPlRoaXMgaXNuJ3QgZG9uZSB5ZXQhICBGaXggaXQsIEplciE8L3BhcmE+PC9jYXV0aW9uPgorICAgICAgICA8L3NlY3QxPgorCisKKyAgICA8L2NoYXB0ZXI+CisKKworCisKKyAgICA8Y2hhcHRlciBpZD0icGtnLUltcGxlbWVudGF0aW9uIj4gPHRpdGxlPkltcGxlbWVudGF0aW9uPC90aXRsZT4KKworICAgIDxzZWN0MSBpZD1PcGVuTGludXg+PHRpdGxlPk9wZW5MaW51eCBTYW1wbGU8L3RpdGxlPgogCiAgICAgICAgICAgPG9yZGVyZWRsaXN0IGluaGVyaXRudW09ImluaGVyaXQiPgogICAgICAgICAgICAgPGxpc3RpdGVtPgpAQCAtMTU3LDggKzExODAsOCBAQAogICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkIDxmaWxlbmFtZT53aW5lZGVmYXVsdC5yZWc8L2ZpbGVuYW1lPi4gVGhpcwogICAgICAgICAgICAgICAgIGNhbiBiZSBkb25lIHVzaW5nIDxjb21tYW5kPi4vcmVnYXBpPC9jb21tYW5kPiBvbmNlIGZvcgogICAgICAgICAgICAgICAgIG9uZSBleGFtcGxlIHVzZXIgYW5kIHRoZW4gcmV1c2luZyBoaXMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpbmUvdXNlci5yZWc8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpbmUvc3lzdGVtLnJlZzwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi91c2VyLnJlZzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi9zeXN0ZW0ucmVnPC9maWxlbmFtZT4gZmlsZXMuCiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICA8dGl0bGU+RklYTUU8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgPHBhcmE+dGhpcyBuZWVkcyB0byBiZSBkb25lIGJldHRlcjwvcGFyYT4KQEAgLTM1OSw2ICsxMzgyLDggQEAKICAgICAgICAgICAgICAgICBUaGUgdXNlciB3aWxsIG5lZWQgdG8gcnVuIGEgc2V0dXAgc2NyaXB0IGJlZm9yZSB0aGUKICAgICAgICAgICAgICAgICBmaXJzdCBpbnZvY2F0aW9uIG9mIFdJTkUuIFRoaXMgc2NyaXB0IHNob3VsZDoKICAgICAgICAgICAgICAgPC9wYXJhPgorCisKICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTQxNSw0MyArMTQ0MCwxNyBAQAogICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisKICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0KLSAgICAgIDxwYXJhPkRvbmUuPC9wYXJhPgotCi0gICAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBwcm9jZWR1cmUgcmVxdWlyZXM6Ci0gICAgICA8L3BhcmE+Ci0KLSAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICA8cGFyYT5NdWNoIHRob3VnaHQgYW5kIHdvcmsgZnJvbSB0aGUgcGFja2FnZXIgKDF4KTwvcGFyYT4KLSAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTm8gd29yayBmb3IgdGhlIHN5c2FkbWluLiBXZWxsIGV4Y2VwdCBvbmUgPGNvbW1hbmQ+cnBtCi0gICAgICAgICAgICAgIC1pPC9jb21tYW5kPiBhbmQgcG9zc2libGUgb25lIGVkaXQgb2YgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgIGZpbGUuCi0gICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb21lIG9yIG5vIHdvcmsgZnJvbSB0aGUgdXNlciwgZXhjZXB0IHJ1bm5pbmcgdGhlIHBlci11c2VyCi0gICAgICAgICAgICBzZXR1cCBzY3JpcHQgb25jZS4KLSAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICA8cGFyYT5JdCBzY2FsZXMgd2VsbCBhbmQgc3VmZmljZXMgbW9zdCBvZiB0aGUgcmF0aW9uYWxlcy48L3BhcmE+Ci0gICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICA8L2l0ZW1pemVkbGlzdD4KIAogCi0gICAgICA8YnJpZGdlaGVhZD5TYW1wbGUgPGZpbGVuYW1lPndpbmUuaW5pPC9maWxlbmFtZT4gZm9yIE9wZW5MaW51eCAyLng6PC9icmlkZ2VoZWFkPgorICAgICAgPHNlY3QyIGlkPXNhbXBsZT48dGl0bGU+U2FtcGxlIDxmaWxlbmFtZT53aW5lLmluaTwvZmlsZW5hbWU+IGZvciBPcGVuTGludXggMi54OjwvdGl0bGU+CiAKLSAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzxwcm9ncmFtbGlzdGluZz4KKworCiA7OwogOzsgTVMtRE9TIGRyaXZlcyBjb25maWd1cmF0aW9uCiA7OwpAQCAtNzQ5LDEyICsxNzQ4LDEyMiBAQAogCiAjICZsdDsvd2luZWNvbmYmZ3Q7CiAgICAgICA8L3Byb2dyYW1saXN0aW5nPgotICAgIDwvc2VjdDE+Ci0gIDwvY2hhcHRlcj4KKworICAgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKworPC9jaGFwdGVyPgorCis8Y2hhcHRlciBpZD10b2RvPjxUaXRsZT5Xb3JrIHRvIGJlIGRvbmU8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgSW4gcHJlcGFyaW5nIHRoaXMgZG9jdW1lbnQsIGl0IGJlY2FtZSBjbGVhciB0aGF0IHRoZXJlIHdlcmUKKyAgICBzdGlsbCBhIHJhbmdlIG9mIGFjdGlvbiBpdGVtcyB0byBiZSBkb25lIGluIFdpbmUKKyAgICB0aGF0IHdvdWxkIGltcHJvdmUgdGhpcyBwYWNrYWdpbmcgcHJvY2Vzcy4KKyAgICBGb3IgbGFjayBvZiBhIGJldHRlciBwbGFjZSwgSSByZWNvcmQgdGhlbSBoZXJlLgorICAgIDxlbXBoYXNpcz5UaGlzIGxpc3QgaXMgYWxtb3N0IGNlcnRhaW4gdG8gYmUgb2Jzb2xldGU7CisgICAgY2hlY2sgYnVnemlsbGEgZm9yIGEgYmV0dGVyIGxpc3QuPC9lbXBoYXNpcz4KKyAgICA8L3BhcmE+CisKKyAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0aW9uIG9mIGNvZGUgYmV0d2VlbiB3aW5lY2ZnIGFuZAorICAgICAgICAgICAgd2luZWNvbmYvd2luZWluc3RhbGwuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEN1cnJlbnRseSwgd2luZWNmZyBkdXBsaWNhdGVzIGFsbCBvZiB0aGUgY29kZSBjb250YWluZWQgCisgICAgICAgICAgICBpbiB3aW5lY29uZi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW5zdGVhZCwgd2luZWNvbmYgc2hvdWxkIGJlIGltcHJvdmVkIHRvIGdlbmVyYXRlCisgICAgICAgICAgICB0aGUgbmV3IHN0eWxlIGNvbmZpZyBmaWxlLCBhbmQgdGhlbiB3aW5lY2ZnIHNob3VsZAorICAgICAgICAgICAgcmVseSBvbiB3aW5lY29uZiB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTaW1pbGFybHksIHRoZXJlIGlzIGZ1bmN0aW9uYWxpdHkgc3VjaCBhcyBjcmVhdGluZworICAgICAgICAgICAgdGhlIGRlZmF1bHQgcmVnaXN0cnkgZmlsZXMgdGhhdCBpcyBub3cgZG9uZSBieQorICAgICAgICAgICAgYm90aCB3aW5lY2ZnIGFuZCB3aW5laW5zdGFsbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXQgdGhpcyB0aW1lLCBpdCBzZWVtcyBsaWtlIHRoZSByaWdodCB0aGluZyB0byBkbworICAgICAgICAgICAgaXMgdG8gYnJlYWsgdXAgb3IgcGFyYW1ldGVyaXplIHdpbmVpbnN0YWxsLCBzbyB0aGF0CisgICAgICAgICAgICBpdCBjYW4gYmUgdXNlZCBmb3Igc2luZ2xlIGZ1bmN0aW9uIGFjdGlvbnMsCisgICAgICAgICAgICBhbmQgdGhlbiBoYXZlIHdpbmVjZmcgY2FsbCB0aG9zZSBmdW5jdGlvbnMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFbmhhbmNlIHdpbmVjZmcgdG8gc3VwcG9ydCBXOiBkcml2ZSBnZW5lcmF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgYmVzdCBwcmFjdGljZXMgY29udmVudGlvbiBub3cgc2VlbXMgdG8gYmUKKyAgICAgICAgICAgIHRvIGdlbmVyYXRlIGEgc2V0IG9mIGRyaXZlcyBmcm9tIE06IHRocm91Z2ggVzouCisgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3aW5lY2ZnIGRvZXMgbm90IGdlbmVyYXRlCisgICAgICAgICAgICBhIGRlZmF1bHQgd2luZSBjb25maWcgZmlsZSB0aGF0IGZvbGxvd3MKKyAgICAgICAgICAgIHRoZXNlIGNvbnZlbnRpb25zLiBJdCBzaG91bGQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFbmhhbmNlIFdpbmUgdG8gYWxsb3cgbW9yZSBkeW5hbWljIHN3aXRjaGluZworICAgICAgICAgICAgYmV0d2VlbiB0aGUgdXNlIG9mIGEgcmVhbCBXaW5kb3dzIHBhcnRpdGlvbgorICAgICAgICAgICAgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdyaXRlIGEgd2luZWxhdW5jaGVyIHV0aWxpdHkgYXBwbGljYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEN1cnJlbnRseSwgV2luZSByZWFsbHkgcmVxdWlyZXMgYSB1c2VyIHRvIGxhdW5jaCBpdAorICAgICAgICAgICAgZnJvbSBhIGNvbW1hbmQgbGluZSwgc28gdGhhdCB0aGUgdXNlciBjYW4gbG9vayBmb3IKKyAgICAgICAgICAgIGVycm9yIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncy4gIEhvd2V2ZXIsIGV2ZW50dWFsbHksIHdlIHdpbGwKKyAgICAgICAgICAgIHdhbnQgdXNlcnMgdG8gYmUgYWJsZSB0byBsYXVuY2ggV2luZSBmcm9tIGEgbW9yZQorICAgICAgICAgICAgZnJpZW5kbHkgR1VJIGxhdW5jaGVyLiAgVGhlIGxhdW5jaGVyIHNob3VsZCBoYXZlIHRoZQorICAgICAgICAgICAgYWJpbGl0eSB0byBhbGxvdyB0aGUgZW5kIHVzZXIgdG8gdHVybiBvbiBkZWJ1Z2dpbmcKKyAgICAgICAgICAgIG1lc3NhZ2VzIGFuZCBjYXB0dXJlIHRob3NlIHRyYWNlcyBmb3IgYnVnIHJlcG9ydGluZworICAgICAgICAgICAgcHVycG9zZXMuICBBbHNvLCBpZiB3ZSBtYWtlIGl0IHBvc3NpYmxlIHRvCisgICAgICAgICAgICBzd2l0Y2ggYmV0d2VlbiB1c2Ugb2YgYSBXaW5kb3dzIHBhcnRpdGlvbiBvciBub3QKKyAgICAgICAgICAgIGF1dG9tYXRpY2FsbHksIHRoYXQgb3B0aW9uIHNob3VsZCBiZSBjb250cm9sbGVkIGhlcmUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBHZXQgTWFyY3VzJ3Mgd2luZXNldHVwIGZhY2lsaXRpZXMgaW50byBDVlMKKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWxvbmcgdGhlIGxpbmVzIG9mIHRoZSBjaGFuZ2VzIHRvIHdpbmVjZmcsCisgICAgICAgICAgICBhbmQgdGhlIGNvbnNvbGlkYXRpb24gb2Ygd2luZWNvbmYgYW5kIHdpbmVpbnN0YWxsLAorICAgICAgICAgICAgd2Ugc2hvdWxkIGV4dHJhY3QgdGhlIGdvb2Qgc3R1ZmYgZnJvbSBNYXJjdXMncworICAgICAgICAgICAgd2luZXNldHVwIHNjcmlwdCwgYW5kIGdldCBpdCBpbnRvIENWUy4KKyAgICAgICAgICAgIEFnYWluLCBwZXJoYXBzIHdlIHNob3VsZCBoYXZlIGEgc2V0IG9mIHNjcmlwdHMKKyAgICAgICAgICAgIHRoYXQgcGVyZm9ybSBkaXNjcmV0ZSBmdW5jdGlvbnMsIG9yIG1heWJlCisgICAgICAgICAgICBvbmUgc2NyaXB0IHdpdGggcGFyYW1ldGVycy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZpbmlzaCB0aGlzIGRvY3VtZW50CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZG9jdW1lbnQgaXMgcHJldHR5IHJvdWdoIGl0c2VsZi4gIE1hbnkgaGFyZAorICAgICAgICAgICAgdGhpbmdzIGFyZW4ndCBhZGRyZXNzZWQsIGFuZCBsb3RzIG9mIHN0dWZmIHdhcyBtaXNzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9vcmRlcmVkbGlzdD4KKzwvY2hhcHRlcj4KKwogCiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAiY2hhcHRlciIgIiIpCiBFbmQ6CiAtLT4KZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sIGIvZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwKaW5kZXggZTdhOWEyZi4uMDBlYmFmMiAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwKKysrIGIvZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwKQEAgLTEsMTEgKzEsNzggQEAKLSAgICA8Y2hhcHRlciBpZD0icGF0Y2hlcyI+Ci0gICAgICA8dGl0bGU+U3VibWl0dGluZyBQYXRjaGVzPC90aXRsZT4KLSAgICA8cGFyYT5Ib3cgdG8gY3JlYXRlIHBhdGNoZXMsIGFuZCB3aGVyZSB0byBzZW5kIHRoZW0uLi48L3BhcmE+Ci0gICAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0icGF0Y2hlcyI+CisgICAgPHRpdGxlPlN1Ym1pdHRpbmcgUGF0Y2hlczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtYWxiZXJ0LWRlbi1oYWFuOyA8ZW1haWw+JmVtYWlsLWFsYmVydC1kZW4taGFhbjs8L2VtYWlsPgorICAgIDwvcGFyYT4KKyAgICA8c2VjdDEgaWQ9InBhdGNoLWZvcm1hdCI+CisgICAgICA8dGl0bGU+UGF0Y2ggRm9ybWF0PC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFlvdXIgcGF0Y2ggc2hvdWxkIGluY2x1ZGU6CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGEgZGVzY3JpcHRpb24gb2Ygd2hhdCB3YXMgd3JvbmcgYW5kIHdoYXQgaXMgbm93IGJldHRlcgorICAgICAgICAgICAgKGFuZCBub3cgYnJva2VuIDopLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgeW91ciBjb250YWN0IGluZm9ybWF0aW9uICggTmFtZS9IYW5kbGUgYW5kIGUtbWFpbCApCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB0aGUgcGF0Y2ggaW4gPGNvbW1hbmQ+ZGlmZiAtdTwvY29tbWFuZD4gZm9ybWF0IChpdCBoYXBwZW5zLi4uKQorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgICA8cGFyYT4KKyAgICAgICAgPGNvbW1hbmQ+Y3ZzIGRpZmYgLXU8L2NvbW1hbmQ+IHdvcmtzIGdyZWF0IGZvciB0aGUgY29tbW9uIGNhc2UKKyAgICAgICAgd2hlcmUgYSBmaWxlIGlzIGVkaXRlZC4gIEhvd2V2ZXIsIGlmIHlvdSBhZGQgb3IgcmVtb3ZlIGEgZmlsZQorICAgICAgICA8Y29tbWFuZD5jdnMgZGlmZjwvY29tbWFuZD4gd2lsbCBub3QgcmVwb3J0IHRoYXQgY29ycmVjdGx5IHNvCisgICAgICAgIG1ha2Ugc3VyZSB5b3UgZXhwbGljaXRseSB0YWtlIGNhcmUgb2YgdGhpcyByYXJlIGNhc2UuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgRm9yIGFkZGl0aW9uczogbWVudGlvbiB0aGF0IHlvdSBoYXZlIHNvbWUgbmV3IGZpbGVzIGFuZAorICAgICAgICBpbmNsdWRlIHRoZW0gYXMgZWl0aGVyIHNlcGFyYXRlIGF0dGFjaG1lbnRzIG9yIGJ5IGFwcGVuZGluZworICAgICAgICA8Y29tbWFuZD5kaWZmIC1OdTwvY29tbWFuZD4gb2YgdGhlbSB0byBhbnkgPGNvbW1hbmQ+Y3ZzIGRpZmYKKyAgICAgICAgICAtdTwvY29tbWFuZD4gb3V0cHV0IHlvdSBtYXkgaGF2ZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBGb3IgcmVtb3ZhbHMsIGxpc3QgdGhlIGZpbGVzLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9InBhdGNoLXF1YWxpdHkiPgorICAgICAgPHRpdGxlPlF1YWxpdHkgQXNzdXJhbmNlPC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICAgIChPciwgIkhvdyBkbyBJIGdldCBBbGV4YW5kcmUgdG8gYXBwbHkgbXkgcGF0Y2ggcXVpY2tseSBzbyBJCisgICAgICAgIGNhbiBidWlsZCBvbiBpdCBhbmQgaXQgd2lsbCBub3QgZ28gc3RhbGU/IikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBNYWtlIHN1cmUgeW91ciBwYXRjaCBhcHBsaWVzIHRvIHRoZSBjdXJyZW50IENWUyBoZWFkCisgICAgICAgIHJldmlzaW9ucy4gIElmIGEgYnVuY2ggb2YgcGF0Y2hlcyBhcmUgY29tbWl0ZWQgdG8gQ1ZTIHRoYXQgbWF5CisgICAgICAgIGFmZmVjdCB3aGV0aGVyIHlvdXIgcGF0Y2ggd2lsbCBhcHBseSBjbGVhbmx5IHRoZW4gdmVyaWZ5IHRoYXQKKyAgICAgICAgeW91ciBwYXRjaCBkb2VzIGFwcGx5ISAgIDxjb21tYW5kPmN2cyB1cGRhdGU8L2NvbW1hbmQ+IGlzIHlvdXIKKyAgICAgICAgZnJpZW5kIQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFNhdmUgeW91cnNlbGYgc29tZSBlbWJhcmFzbWVudCBhbmQgcnVuIHlvdXIgcGF0Y2hlZCBjb2RlCisgICAgICAgIGFnYWluc3QgbW9yZSB0aGFuIGp1c3QgeW91ciBjdXJyZW50IHRlc3QgZXhhbXBsZS4gIEV4cGVyaWVuY2UKKyAgICAgICAgd2lsbCB0ZWxsIHlvdSBob3cgbXVjaCBlZmZvcnQgdG8gYXBwbHkgaGVyZS4KKyAgICAgIDwvcGFyYT4KKworICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KIAogPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCiBMb2NhbCB2YXJpYWJsZXM6CiBtb2RlOiBzZ21sCi1zZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwgYi9kb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbAppbmRleCBjZTBmMGNkLi5mNDYzODc4IDEwMDY0NAotLS0gYS9kb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbApAQCAtMjM2LDggKzIzNiw4IEBACiAgICAgICA8dGl0bGU+UnVubmluZyAmIENvbXBpbGluZyBXSU5FIGluIE9TLzI8L3RpdGxlPgogCiAgICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBSb2JlcnQgUG91bGlvdCAmbHQ7a3J5bm9zQGNsaWMubmV0Jmd0OywgSmFudWFyeSA5LCAxOTk3Ci0KKyAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1yb2JlcnQtcG91bGlvdDsgPGVtYWlsPiZlbWFpbC1yb2JlcnQtcG91bGlvdDs8L2VtYWlsPiwKKyAgICAgICAgSmFudWFyeSA5LCAxOTk3CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vd2luZV9vczI8L2ZpbGVuYW1lPikKQEAgLTM5MCw2ICszOTAsNiBAQAogPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCiBMb2NhbCB2YXJpYWJsZXM6CiBtb2RlOiBzZ21sCi1zZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sIGIvZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sCmluZGV4IDcyNjRjYjIuLjQwMGJkYmEgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwKQEAgLTYsMTUgKzYsMTQgQEAKICAgICAgIDx0aXRsZT5QcmludGluZzwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5ICg/Pz8pCisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtaHV3LWRhdmllczsgPGVtYWlsPiZlbWFpbC1odXctZGF2aWVzOzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vcHJpbnRpbmc8L2ZpbGVuYW1lPikKICAgICAgIDwvcGFyYT4KIAogICAgICAgPHBhcmE+Ci0gICAgICAgIFByaW50aW5nIGluIFdpbmUgY2FuIGJlIGRvbmUgaW4gb25lIG9mIHR3byB3YXlzLiBCb3RoIG9mIHdoaWNoIGFyZSB2ZXJ5Ci0gICAgICAgIGFscGhhLgorICAgICAgICBQcmludGluZyBpbiBXaW5lIGNhbiBiZSBkb25lIGluIG9uZSBvZiB0d28gd2F5cy4gQm90aCBvZiB3aGljaCBhcmUgcHJldHR5IGFscGhhLgogICAgICAgPC9wYXJhPgogICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICA8bGlzdGl0ZW0+CkBAIC0zMCw4ICsyOSw4IEBACiAKICAgICAgIDxwYXJhPgogICAgICAgICBOb3RlIHRoYXQgYXQgdGhlIG1vbWVudCBXaW5QcmludGVycyAoY2hlYXAsIGR1bWIgcHJpbnRlcnMgdGhhdCByZXF1aXJlCi0gICAgICAgIHRoZSBob3N0IGNvbXB1dGVyIHRvIGV4cGxpY2l0bHkgY29udHJvbCB0aGUgaGVhZCkgd2lsbCBub3Qgd29yay4gSXQgaXMKLSAgICAgICAgdW5jbGVhciB3aGV0aGVyIHRoZXkgZXZlciB3aWxsLgorICAgICAgICB0aGUgaG9zdCBjb21wdXRlciB0byBleHBsaWNpdGx5IGNvbnRyb2wgdGhlIGhlYWQpIHdpbGwgbm90IHdvcmsgd2l0aAorCXRoZWlyIFdpbmRvd3MgcHJpbnRlciBkcml2ZXJzLiAgSXQgaXMgdW5jbGVhciB3aGV0aGVyIHRoZXkgZXZlciB3aWxsLgogICAgICAgPC9wYXJhPgogCiAgICAgICA8c2VjdDI+CkBAIC05Myw3ICs5Miw3IEBACiAgICAgICA8dGl0bGU+VGhlIFdpbmUgUG9zdFNjcmlwdCBEcml2ZXI8L3RpdGxlPgogCiAgICAgICA8cGFyYT4KLSAgICAgICAgd3JpdHRlbiBieSBIdXcgRGF2aWVzIDxlbWFpbD5oLmRhdmllczFAcGh5c2ljcy5veC5hYy51azwvZW1haWw+CisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtaHV3LWRhdmllczsgPGVtYWlsPiZlbWFpbC1odXctZGF2aWVzOzwvZW1haWw+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vcHNkcml2ZXI8L2ZpbGVuYW1lPikKQEAgLTI1MSw3ICsyNTAsNyBAQAogICAgICAgICAgIFBsZWFzZSBjb250YWN0IG1lIGlmIHlvdSB3YW50IHRvIGhlbHAgc28gdGhhdCB3ZSBjYW4gYXZvaWQgZHVwbGljYXRpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgSHV3IERhdmllcyA8ZW1haWw+aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs8L2VtYWlsPgorICAgICAgICAgICZuYW1lLWh1dy1kYXZpZXM7IDxlbWFpbD4mZW1haWwtaHV3LWRhdmllczs8L2VtYWlsPgogICAgICAgICA8L3BhcmE+CiAgICAgICA8L3NlY3QyPgogICAgIDwvc2VjdDE+CkBAIC0yNjAsNiArMjU5LDYgQEAKIDwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogTG9jYWwgdmFyaWFibGVzOgogbW9kZTogc2dtbAotc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAiYm9vayIgImNoYXB0ZXIiICIiKQorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwgYi9kb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwKaW5kZXggOTAwMGVlZC4uYTYyMzU0ZCAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbApAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgPC9zZWN0Mj4KIAogICAgIDxzZWN0Mj4KLSAgICAgIDx0aXRsZT5XaW5lIHJlZ2lzdHJ5IGRhdGEgZmlsZXNyPC90aXRsZT4KKyAgICAgIDx0aXRsZT5XaW5lIHJlZ2lzdHJ5IGRhdGEgZmlsZXM8L3RpdGxlPgogICAKICAgICAgIDxwYXJhPgogICAgICAgICBJbiB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5LCB0aGVyZSBpcyBhIHN1YmRpcmVjdG9yeSBuYW1lZApkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwgYi9kb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbAppbmRleCBiODNkYjZkLi5lOTUyZDk5IDEwMDY0NAotLS0gYS9kb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbApAQCAtMSwxOCArMSwzNzMgQEAKICAgPGNoYXB0ZXIgaWQ9InJ1bm5pbmciPgogICAgIDx0aXRsZT5SdW5uaW5nIFdpbmU8L3RpdGxlPgotICAgIDxwYXJhPkV4cGxhaW4gdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIHlvdSBjYW4gdXNlIHRvIHJ1biBXaW5lPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBXcml0dGVuIGJ5ICZuYW1lLWpvaG4tc2hlZXRzOyA8ZW1haWw+JmVtYWlsLWpvaG4tc2hlZXRzOzwvZW1haWw+CisgICAgPC9wYXJhPgogCiAgICAgPHNlY3QxIGlkPSJydW5uaW5nLXdpbmUiPgogICAgICAgPHRpdGxlPkhvdyB0byBydW4gV2luZTwvdGl0bGU+CiAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzLi4uCisgICAgICAgIFdpbmUgaXMgYSB2ZXJ5IGNvbXBsaWNhdGVkIHBpZWNlIG9mIHNvZnR3YXJlIHdpdGggbWFueSB3YXlzIHRvCisgICAgICAgIGFkanVzdCBob3cgaXQgcnVucy4gIFdpdGggdmVyeSBmZXcgZXhjZXB0aW9ucywgeW91IGNhbgorICAgICAgICBhY3RpdmF0ZSB0aGUgc2FtZSBzZXQgb2YgZmVhdHVyZXMgdGhyb3VnaCB0aGUgPGxpbmsKKyAgICAgICAgbGlua2VuZD0iY29uZmlndXJpbmciPmNvbmZpZ3VyYXRpb24gZmlsZSA8L2xpbms+IGFzIHlvdSBjYW4KKyAgICAgICAgd2l0aCBjb21tYW5kLWxpbmUgcGFyYW1ldGVycy4gIEluIHRoaXMgY2hhcHRlciwgd2UnbGwgYnJpZWZseQorICAgICAgICBkaXNjdXNzIHRoZXNlIHBhcmFtZXRlcnMsIGFuZCBtYXRjaCB0aGVtIHVwIHdpdGggdGhlaXIKKyAgICAgICAgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy4KICAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gaW52b2tlIHRoZSA8Y29tbWFuZD53aW5lIC0taGVscDwvY29tbWFuZD4gY29tbWFuZCB0bworICAgICAgICBnZXQgYSBsaXN0aW5nIG9mIGFsbCBXaW5lJ3MgY29tbWFuZC1saW5lIHBhcmFtZXRlcnM6CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgPHNjcmVlbj4KK1VzYWdlOiAuL3dpbmUgW29wdGlvbnNdIHByb2dyYW1fbmFtZSBbYXJndW1lbnRzXQorCitPcHRpb25zOgorICAgLS1jb25maWcgbmFtZSAgICBTcGVjaWZ5IGNvbmZpZyBmaWxlIHRvIHVzZQorICAgLS1kZWJ1Z21zZyBuYW1lICBUdXJuIGRlYnVnZ2luZy1tZXNzYWdlcyBvbiBvciBvZmYKKyAgIC0tZGVza3RvcCBnZW9tICAgVXNlIGEgZGVza3RvcCB3aW5kb3cgb2YgdGhlIGdpdmVuIGdlb21ldHJ5CisgICAtLWRpc3BsYXkgbmFtZSAgIFVzZSB0aGUgc3BlY2lmaWVkIGRpc3BsYXkKKyAgIC0tZGxsIG5hbWUgICAgICAgRW5hYmxlIG9yIGRpc2FibGUgYnVpbHQtaW4gRExMcworICAgLS1kb3N2ZXIgeC54eCAgICBET1MgdmVyc2lvbiB0byBpbWl0YXRlIChlLmcuIDYuMjIpCisgICAgICAgICAgICAgICAgICAgIE9ubHkgdmFsaWQgd2l0aCAtLXdpbnZlciB3aW4zMQorICAgLS1oZWxwLC1oICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCisgICAtLWxhbmd1YWdlIHh4ICAgIFNldCB0aGUgbGFuZ3VhZ2UgKG9uZSBvZiBCcixDYSxDcyxDeSxEYSxEZSxFbixFbyxFcyxGaSxGcixHYSxHZCxHdiwKKyAgICAgICAgICAgICAgICAgICAgSHIsSHUsSXQsSmEsS28sS3csTmwsTm8sUGwsUHQsU2ssU3YsUnUsV2EpCisgICAtLW1hbmFnZWQgICAgICAgIEFsbG93IHRoZSB3aW5kb3cgbWFuYWdlciB0byBtYW5hZ2UgY3JlYXRlZCB3aW5kb3dzCisgICAtLXN5bmNocm9ub3VzICAgIFR1cm4gb24gc3luY2hyb25vdXMgZGlzcGxheSBtb2RlCisgICAtLXZlcnNpb24sLXYgICAgIERpc3BsYXkgdGhlIFdpbmUgdmVyc2lvbgorICAgLS13aW52ZXIgICAgICAgICBWZXJzaW9uIHRvIGltaXRhdGUgKHdpbjk1LG50NDAsd2luMzEsbnQyayx3aW45OCxudDM1MSx3aW4zMCx3aW4yMCkKKyAgICAgICAgPC9zY3JlZW4+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIHNwZWNpZnkgYXMgbWFueSBvcHRpb25zIGFzIHlvdSB3YW50LCBpZiBhbnkuCisgICAgICAgIFR5cGljYWxseSwgeW91IHdpbGwgd2FudCB0byBoYXZlIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIHNldAorICAgICAgICB1cCB3aXRoIGEgc2Vuc2libGUgc2V0IG9mIGRlZmF1bHRzOyBpbiB0aGlzIGNhc2UsIHlvdSBjYW4gcnVuCisgICAgICAgIDxjb21tYW5kPndpbmU8L2NvbW1hbmQ+IHdpdGhvdXQgZXhwbGljaXRseSBsaXN0aW5nIGFueQorICAgICAgICBvcHRpb25zLiAgSW4gcmFyZSBjYXNlcywgeW91IG1pZ2h0IHdhbnQgdG8gb3ZlcnJpZGUgY2VydGFpbgorICAgICAgICBwYXJhbWV0ZXJzIG9uIHRoZSBjb21tYW5kIGxpbmUuICBJZiB5b3UgZmluZCB5b3Vyc2VsZiB1c2luZworICAgICAgICB0aGUgc2FtZSBsb25nIHNldCBvZiBjb21tYW5kIG9wdGlvbnMgd2l0aCBjZXJ0YWluCisgICAgICAgIGFwcGxpY2F0aW9ucywgeW91IG1pZ2h0IGZpbmQgaXQgZWFzaWVyIHRvIHdvcmsgd2l0aCBtdWx0aXBsZQorICAgICAgICBjb25maWcgZmlsZXMsIHVzaW5nIHRoZSA8bGluaworICAgICAgICBsaW5rZW5kPSJjb25maWctcGFyYW1ldGVyIj48cGFyYW1ldGVyPi0tY29uZmlnPC9wYXJhbWV0ZXI+CisgICAgICAgIHBhcmFtZXRlcjwvbGluaz4gdG8gc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgQWZ0ZXIgdGhlIG9wdGlvbnMsIHlvdSBzaG91bGQgcHV0IHRoZSBuYW1lIG9mIHRoZSBmaWxlIHlvdQorICAgICAgICB3YW50IDxjb21tYW5kPndpbmU8L2NvbW1hbmQ+IHRvIGV4ZWN1dGUuICBJZiB0aGUgZXhlY3V0YWJsZSBpcworICAgICAgICBpbiB0aGUgPHBhcmFtZXRlcj5QYXRoPC9wYXJhbWV0ZXI+IHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCB5b3UgY2FuIHNpbXBseSBnaXZlIHRoZSBleGVjdXRhYmxlIGZpbGUKKyAgICAgICAgbmFtZS4gIEhvd2V2ZXIsIGlmIHRoZSBleGVjdXRhYmxlIGlzIG5vdCBpbgorICAgICAgICA8cGFyYW1ldGVyPlBhdGg8L3BhcmFtZXRlcj4sIHlvdSBtdXN0IGdpdmUgdGhlIGZ1bGwgcGF0aCB0bworICAgICAgICB0aGUgZXhlY3V0YWJsZSAoaW4gV2luZG93cyBmb3JtYXQsIG5vdCBVTklYIGZvcm1hdCEpLiAgRm9yCisgICAgICAgIGV4YW1wbGUsIGdpdmVuIGEgPHBhcmFtZXRlcj5QYXRoPC9wYXJhbWV0ZXI+IG9mIHRoZSBmb2xsb3dpbmc6CisgICAgICA8L3BhcmE+CisgICAgICA8c2NyZWVuPgorW3dpbmVdCisiUGF0aCI9ImM6XHdpbmRvd3M7Yzpcd2luZG93c1xzeXN0ZW07ZTpcO2U6XHRlc3Q7ZjpcIgorICAgICAgPC9zY3JlZW4+CisgICAgICA8cGFyYT4KKyAgICAgICAgWW91IGNvdWxkIHJ1biB0aGUgZmlsZQorICAgICAgICA8ZmlsZW5hbWU+Yzpcd2luZG93c1xzeXN0ZW1cZm9vLmV4ZTwvZmlsZW5hbWU+IHdpdGg6CisgICAgICA8L3BhcmE+CisgICAgICA8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+d2luZSBmb28uZXhlPC91c2VyaW5wdXQ+CisgICAgICA8L3NjcmVlbj4KKyAgICAgIDxwYXJhPgorICAgICAgICBIb3dldmVyLCB5b3Ugd291bGQgaGF2ZSB0byBydW4gdGhlIGZpbGUKKyAgICAgICAgPGZpbGVuYW1lPmM6XG15YXBwc1xmb28uZXhlPC9maWxlbmFtZT4gd2l0aCB0aGlzIGNvbW1hbmQ6CisgICAgICA8L3BhcmE+CisgICAgICA8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+d2luZSBjOlxteWFwcHNcZm9vLmV4ZTwvdXNlcmlucHV0PgorICAgICAgPC9zY3JlZW4+CisgICAgICA8cGFyYT4KKyAgICAgICAgRmluYWxseSwgaWYgeW91IHdhbnQgdG8gcGFzcyBhbnkgcGFyYW1ldGVycyB0byB5b3VyIHdpbmRvd3MKKyAgICAgICAgYXBwbGljYXRpb24sIHlvdSBjYW4gbGlzdCB0aGVtIGF0IHRoZSBlbmQsIGp1c3QgYWZ0ZXIgdGhlCisgICAgICAgIGV4ZWN1dGFibGUgbmFtZS4gIFRodXMsIHRvIHJ1biB0aGUgaW1hZ2luYXJ5CisgICAgICAgIDxjb21tYW5kPmZvby5leGU8L2NvbW1hbmQ+IFdpbmRvd3MgYXBwbGljYXRpb24gd2l0aCBpdHMKKyAgICAgICAgPHBhcmFtZXRlcj4vYWR2YW5jZWQ8L3BhcmFtZXRlcj4gbW9kZSBwYXJhbWV0ZXIsIHdoaWxlCisgICAgICAgIGludm9raW5nIFdpbmUgaW4gPGxpbmsKKyAgICAgICAgbGlua2VuZD0ibWFuYWdlZC1wYXJhbWV0ZXIiPjxwYXJhbWV0ZXI+LS1tYW5hZ2VkPC9wYXJhbWV0ZXI+CisgICAgICAgIG1vZGU8L2xpbms+LCB5b3Ugd291bGQgZG8gc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzY3JlZW4+Cis8cHJvbXB0PiQ8L3Byb21wdD4gPHVzZXJpbnB1dD53aW5lIC0tbWFuYWdlZCBmb28uZXhlIC9hZHZhbmNlZDwvdXNlcmlucHV0PgorICAgICAgPC9zY3JlZW4+CisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gb3RoZXIgd29yZHMsIG9wdGlvbnMgdGhhdCBhZmZlY3QgV2luZSBzaG91bGQgY29tZQorICAgICAgICA8ZW1waGFzaXM+YmVmb3JlPC9lbXBoYXNpcz4gdGhlIFdpbmRvd3MgcHJvZ3JhbSBuYW1lLCB3aGlsZQorICAgICAgICBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBXaW5kb3dzIHByb2dyYW0gc2hvdWxkIGNvbWUKKyAgICAgICAgPGVtcGhhc2lzPmFmdGVyPC9lbXBoYXNpcz4gaXQuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iY29tbWFuZC1saW5lLW9wdGlvbnMiPgorICAgICAgPHRpdGxlPkNvbW1hbmQtTGluZSBPcHRpb25zPC90aXRsZT4KKyAgICAgIDxzZWN0MiBpZD0iY29uZmlnLXBhcmFtZXRlciI+CisgICAgICAgIDx0aXRsZT4tLWNvbmZpZzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSA8cGFyYW1ldGVyPi0tY29uZmlnPC9wYXJhbWV0ZXI+IHBhcmFtZXRlciBhbGxvd3MgeW91IHRvCisgICAgICAgICAgc3BlY2lmeSB3aGljaCBjb25maWd1cmF0aW9uIGZpbGUgeW91IHdhbnQgdG8gdXNlIGZvciB0aGUKKyAgICAgICAgICBjdXJyZW50IGludm9jYXRpb24gb2YgPGNvbW1hbmQ+d2luZTwvY29tbWFuZD4uICBGb3IgZXhhbXBsZSwKKyAgICAgICAgICBpZiB5b3UgbGlrZSB0byBydW4gYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiBvciBzZXQgb2YKKyAgICAgICAgICBhcHBsaWNhdGlvbnMgd2l0aCBhIGRpZmZlcmVudCBhcnJheSBvZiBvcHRpb25zIHRoYW4geW91cgorICAgICAgICAgIG5vcm1hbCBkZWZhdWx0cywgeW91IG1pZ2h0IHNldCB1cCBhIGRpZmZlcmVudCBjb25maWcgZmlsZQorICAgICAgICAgIGZvciB0aGVtLCBhbmQgdXNlIHRoZSA8cGFyYW1ldGVyPi0tY29uZmlnPC9wYXJhbWV0ZXI+IG9wdGlvbgorICAgICAgICAgIHRvIG1ha2UgdXNlIG9mIGl0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIDxwYXJhbWV0ZXI+LS1jb25maWc8L3BhcmFtZXRlcj4gaXMKKyAgICAgICAgICA8ZmlsZW5hbWU+fi8ud2luZXJjPC9maWxlbmFtZT4uICBUaGlzIHZhbHVlIGlzIGhhcmR3aXJlZAorICAgICAgICAgIGludG8gdGhlIFdpbmUgc291cmNlIGNvZGUuICBJbiBmdXR1cmUgdmVyc2lvbnMgb2YgV2luZSwgdGhlCisgICAgICAgICAgZGVmYXVsdCBtYXkgY2hhbmdlIHRvIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+LS1kZWJ1Z21zZyBbY2hhbm5lbHNdPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2luZSBpc24ndCBwZXJmZWN0LCBhbmQgbWFueSBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzdGlsbAorICAgICAgICAgIGRvbid0IHJ1biB3aXRob3V0IGJ1Z3MgdW5kZXIgV2luZSAoYnV0IHRoZW4sIG1hbnkgb2YgdGhlbQorICAgICAgICAgIGRvbid0IHJ1biB3aXRob3V0IGJ1Z3MgdW5kZXIgbmF0aXZlIFdpbmRvd3MgZWl0aGVyISkuICBUbworICAgICAgICAgIG1ha2UgaXQgZWFzaWVyIGZvciBwZW9wbGUgdG8gdHJhY2sgZG93biB0aGUgY2F1c2VzIGJlaGluZAorICAgICAgICAgIGVhY2ggYnVnLCBXaW5lIHByb3ZpZGVzIGEgbnVtYmVyIG9mIDxmaXJzdHRlcm0+ZGVidWcKKyAgICAgICAgICBjaGFubmVsczwvZmlyc3R0ZXJtPiB0aGF0IHlvdSBjYW4gdGFwIGludG8uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRWFjaCBkZWJ1ZyBjaGFubmVsLCB3aGVuIGFjdGl2YXRlZCwgd2lsbCB0cmlnZ2VyIGxvZ2dpbmcKKyAgICAgICAgICBtZXNzYWdlcyB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIGNvbnNvbGUgd2hlcmUgeW91IGludm9rZWQKKyAgICAgICAgICA8Y29tbWFuZD53aW5lPC9jb21tYW5kPi4gIEZyb20gdGhlcmUgeW91IGNhbiByZWRpcmVjdCB0aGUKKyAgICAgICAgICBtZXNzYWdlcyB0byBhIGZpbGUgYW5kIGV4YW1pbmUgaXQgYXQgeW91ciBsZWlzdXJlLiAgQnV0IGJlCisgICAgICAgICAgZm9yZXdhcm5lZCEgIFNvbWUgZGVidWcgY2hhbm5lbHMgY2FuIGdlbmVyYXRlIGluY3JlZGlibGUKKyAgICAgICAgICB2b2x1bWVzIG9mIGxvZyBtZXNzYWdlcy4gIEFtb25nIHRoZSBtb3N0IHByb2xpZmljIG9mZmVuZGVycworICAgICAgICAgIGFyZSA8cGFyYW1ldGVyPnJlbGF5PC9wYXJhbWV0ZXI+IHdoaWNoIHNwaXRzIG91dCBhIGxvZworICAgICAgICAgIG1lc3NhZ2UgZXZlcnkgdGltZSBhIHdpbjMyIGZ1bmN0aW9uIGlzIGNhbGxlZCwKKyAgICAgICAgICA8cGFyYW1ldGVyPndpbjwvcGFyYW1ldGVyPiB3aGljaCB0cmFja3Mgd2luZG93cyBtZXNzYWdlCisgICAgICAgICAgcGFzc2luZywgYW5kIG9mIGNvdXJzZSA8cGFyYW1ldGVyPmFsbDwvcGFyYW1ldGVyPiB3aGljaCBpcworICAgICAgICAgIGFuIGFsaWFzIGZvciBldmVyeSBzaW5nbGUgZGVidWcgY2hhbm5lbCB0aGF0IGV4aXN0cy4gIEZvciBhCisgICAgICAgICAgY29tcGxleCBhcHBsaWNhdGlvbiwgeW91ciBkZWJ1ZyBsb2dzIGNhbiBlYXNpbHkgdG9wIDEgTUIgYW5kCisgICAgICAgICAgaGlnaGVyLiAgQSA8cGFyYW1ldGVyPnJlbGF5PC9wYXJhbWV0ZXI+IHRyYWNlIGNhbiBvZnRlbgorICAgICAgICAgIGdlbmVyYXRlIG1vcmUgdGhhbiAxMCBNQiBvZiBsb2cgbWVzc2FnZXMsIGRlcGVuZGluZyBvbiBob3cKKyAgICAgICAgICBsb25nIHlvdSBydW4gdGhlIGFwcGxpY2F0aW9uLiAgTG9nZ2luZyBkb2VzIHNsb3cgZG93biBXaW5lCisgICAgICAgICAgcXVpdGUgYSBiaXQsIHNvIGRvbid0IHVzZSA8cGFyYW1ldGVyPi0tZGVidWdtc2c8L3BhcmFtZXRlcj4KKyAgICAgICAgICB1bmxlc3MgeW91IHJlYWxseSBkbyB3YW50IGxvZyBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaXRoaW4gZWFjaCBkZWJ1ZyBjaGFubmVsLCB5b3UgY2FuIGZ1cnRoZXIgc3BlY2lmeSBhCisgICAgICAgICAgPGZpcnN0dGVybT5tZXNzYWdlIGNsYXNzPC9maXJzdHRlcm0+LCB0byBmaWx0ZXIgb3V0IHRoZQorICAgICAgICAgIGRpZmZlcmVudCBzZXZlcml0aWVzIG9mIGVycm9ycy4gIFRoZSBmb3VyIG1lc3NhZ2UgY2xhc3NlcworICAgICAgICAgIGFyZToKKyAgICAgICAgICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgICAgICAgICAgPG1lbWJlcj48cGFyYW1ldGVyPnRyYWNlPC9wYXJhbWV0ZXI+PC9tZW1iZXI+CisgICAgICAgICAgICA8bWVtYmVyPjxwYXJhbWV0ZXI+Zml4bWU8L3BhcmFtZXRlcj48L21lbWJlcj4KKyAgICAgICAgICAgIDxtZW1iZXI+PHBhcmFtZXRlcj53YXJuPC9wYXJhbWV0ZXI+PC9tZW1iZXI+CisgICAgICAgICAgICA8bWVtYmVyPjxwYXJhbWV0ZXI+ZXJyPC9wYXJhbWV0ZXI+PC9tZW1iZXI+CisgICAgICAgICAgPC9zaW1wbGVsaXN0Pi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUbyB0dXJuIG9uIGEgZGVidWcgY2hhbm5lbCwgdXNlIHRoZSBmb3JtCisgICAgICAgICAgPHBhcmFtZXRlcj5jbGFzcytjaGFubmVsPC9wYXJhbWV0ZXI+LiAgVG8gdHVybiBpdCBvZmYsIHVzZQorICAgICAgICAgIDxwYXJhbWV0ZXI+Y2xhc3MtY2hhbm5lbDwvcGFyYW1ldGVyPi4gIFRvIGxpc3QgbW9yZSB0aGFuIG9uZQorICAgICAgICAgIGNoYW5uZWwgaW4gdGhlIHNhbWUgPHBhcmFtZXRlcj4tLWRlYnVnbXNnPC9wYXJhbWV0ZXI+CisgICAgICAgICAgb3B0aW9uLCBzZXBhcmF0ZSB0aGVtIHdpdGggY29tbWFzLiAgRm9yIGV4YW1wbGUsIHRvIHJlcXVlc3QKKyAgICAgICAgICA8cGFyYW1ldGVyPndhcm48L3BhcmFtZXRlcj4gY2xhc3MgbWVzc2FnZXMgaW4gdGhlCisgICAgICAgICAgPHBhcmFtZXRlcj5oZWFwPC9wYXJhbWV0ZXI+IGRlYnVnIGNoYW5uZWwsIHlvdSBjb3VsZCBpbnZva2UKKyAgICAgICAgICA8Y29tbWFuZD53aW5lPC9jb21tYW5kPiBsaWtlIHRoaXM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNjcmVlbj4KKzxwcm9tcHQ+JDwvcHJvbXB0PiA8dXNlcmlucHV0PndpbmUgLS1kZWJ1Z21zZyB3YXJuK2hlYXAgPHJlcGxhY2VhYmxlPnByb2dyYW1fbmFtZTwvcmVwbGFjZWFibGU+PC91c2VyaW5wdXQ+CisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiB5b3UgbGVhdmUgb2ZmIHRoZSBtZXNzYWdlIGNsYXNzLCA8Y29tbWFuZD53aW5lPC9jb21tYW5kPgorICAgICAgICAgIHdpbGwgZGlzcGxheSBtZXNzYWdlcyBmcm9tIGFsbCBmb3VyIGNsYXNzZXMgZm9yIHRoYXQgY2hhbm5lbDoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+d2luZSAtLWRlYnVnbXNnICtoZWFwIDxyZXBsYWNlYWJsZT5wcm9ncmFtX25hbWU8L3JlcGxhY2VhYmxlPjwvdXNlcmlucHV0PgorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgeW91IHdhbnRlZCB0byBzZWUgbG9nIG1lc3NhZ2VzIGZvciBldmVyeXRoaW5nIGV4Y2VwdCB0aGUKKyAgICAgICAgICByZWxheSBjaGFubmVsLCB5b3UgbWlnaHQgZG8gc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+d2luZSAtLWRlYnVnbXNnICthbGwsLXJlbGF5IDxyZXBsYWNlYWJsZT5wcm9ncmFtX25hbWU8L3JlcGxhY2VhYmxlPjwvdXNlcmlucHV0PgorICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSGVyZSBpcyBhIG1hc3RlciBsaXN0IG9mIGFsbCB0aGUgZGVidWcgY2hhbm5lbHMgYW5kIGNsYXNzZXMKKyAgICAgICAgICBpbiBXaW5lLiAgTW9yZSBjaGFubmVscyBtaWdodCBiZSBhZGRlZCB0byAob3Igc3VidHJhY3RlZAorICAgICAgICAgIGZyb20pIGxhdGVyIHZlcnNpb25zLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzY3JlZW4+CithbGwgICAgICAgYWNjZWwgICAgIGFkdmFwaSAgICBhbmltYXRlICAgYXNwaSAgICAgIGF0b20gICAgICBhdmlmaWxlICAgYml0Ymx0ICAgCitiaXRtYXAgICAgY2FyZXQgICAgIGNkcm9tICAgICBjbGFzcyAgICAgY2xpcGJvYXJkIGNsaXBwaW5nICBjb21ibyAgICAgY29tYm9leCAgCitjb21tICAgICAgY29tbWN0cmwgIGNvbW1kbGcgICBjb25zb2xlICAgY3J0ZGxsICAgIGN1cnNvciAgICBkYXRldGltZSAgZGMgICAgICAgCitkZGVtbCAgICAgZGRyYXcgICAgIGRlYnVnICAgICBkZWJ1Z3N0ciAgZGVsYXlobHAgIGRpYWxvZyAgICBkaW5wdXQgICAgZGxsICAgICAgCitkb3NmcyAgICAgZG9zbWVtICAgIGRwbGF5ICAgICBkcml2ZXIgICAgZHNvdW5kICAgIGVkaXQgICAgICBlbGZkbGwgICAgZW5obWV0YWZpbGUKK2V2ZW50ICAgICBleGVjICAgICAgZmlsZSAgICAgIGZpeHVwICAgICBmb250ICAgICAgZ2RpICAgICAgIGdsb2JhbCAgICBncmFwaGljcyAKK2hlYWRlciAgICBoZWFwICAgICAgaG9vayAgICAgIGhvdGtleSAgICBpY21wICAgICAgaWNvbiAgICAgIGltYWdlaGxwICBpbWFnZWxpc3QKK2ltbSAgICAgICBpbnQgICAgICAgaW50MTAgICAgIGludDE2ICAgICBpbnQxNyAgICAgaW50MTkgICAgIGludDIxICAgICBpbnQzMSAgICAKK2lvICAgICAgICBpcGFkZHJlc3Mgam95c3RpY2sgIGtleSAgICAgICBrZXlib2FyZCAgbGR0ICAgICAgIGxpc3Rib3ggICBsaXN0dmlldyAKK2xvY2FsICAgICBtY2kgICAgICAgbWNpYW5pbSAgIG1jaWF2aSAgICBtY2ljZGEgICAgbWNpbWlkaSAgIG1jaXdhdmUgICBtZGkgICAgICAKK21lbnUgICAgICBtZXNzYWdlICAgbWV0YWZpbGUgIG1pZGkgICAgICBtbWF1eCAgICAgbW1pbyAgICAgIG1tc3lzICAgICBtbXRpbWUgICAKK21vZHVsZSAgICBtb250aGNhbCAgbXByICAgICAgIG1zYWNtICAgICBtc2cgICAgICAgbXN2aWRlbyAgIG5hdGl2ZWZvbnQgbm9uY2xpZW50CitudGRsbCAgICAgb2RiYyAgICAgIG9sZSAgICAgICBvcGVuZ2wgICAgcGFnZXIgICAgIHBhbGV0dGUgICBwaWRsICAgICAgcHJpbnQgICAgCitwcm9jZXNzICAgcHJvZmlsZSAgIHByb2dyZXNzICBwcm9wICAgICAgcHJvcHNoZWV0IHBzYXBpICAgICBwc2RydiAgICAgcmFzICAgICAgCityZWJhciAgICAgcmVnICAgICAgIHJlZ2lvbiAgICByZWxheSAgICAgcmVzb3VyY2UgIHJpY2hlZGl0ICBzY3JvbGwgICAgc2VnbWVudCAgCitzZWggICAgICAgc2VsZWN0b3IgIHNlbmRtc2cgICBzZXJ2ZXIgICAgc2V0dXBhcGkgIHNldHVweCAgICBzaGVsbCAgICAgc25vb3AgICAgCitzb3VuZCAgICAgc3RhdGljICAgIHN0YXR1c2JhciBzdG9yYWdlICAgc3RyZXNzICAgIHN0cmluZyAgICBzeXNjb2xvciAgc3lzdGVtICAgCit0YWIgICAgICAgdGFwZSAgICAgIHRhcGkgICAgICB0YXNrICAgICAgdGV4dCAgICAgIHRocmVhZCAgICB0aHVuayAgICAgdGltZXIgICAgCit0b29sYmFyICAgdG9vbGhlbHAgIHRvb2x0aXBzICB0cmFja2JhciAgdHJlZXZpZXcgIHR0eWRydiAgICB0d2VhayAgICAgdHlwZWxpYiAgCit1cGRvd24gICAgdmVyICAgICAgIHZpcnR1YWwgICB2eGQgICAgICAgd2F2ZSAgICAgIHdpbiAgICAgICB3aW4xNmRydiAgd2luMzIgICAgCit3aW5nICAgICAgd2luaW5ldCAgIHdpbnNvY2sgICB3aW5zcG9vbCAgd25ldCAgICAgIHgxMSAgICAgICB4MTFkcnYgICAgCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IGRlYnVnIGNoYW5uZWxzLCBjaGVjayBvdXQgdGhlCisgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tL2RvY3Mvd2luZS1kZXZlbC8iPgorICAgICAgICAgICAgVGhlIFdpbmUgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+LS1kZXNrdG9wIFtnZW9tZXRyeV08L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBCeSBkZWZhdWx0LCA8Y29tbWFuZD53aW5lPC9jb21tYW5kPiBydW5zIGFwcGxpY2F0aW9ucyBvbgorICAgICAgICAgIHlvdXIgcmVndWxhciBkZXNrdG9wLiAgV2luZSBhcHBsaWNhdGlvbiB3aW5kb3dzIGludGVybWluZ2xlCisgICAgICAgICAgd2l0aCBuYXRpdmUgWDExIGFwcGxpY2F0aW9ucy4gIFdpbmRvd3Mgb3ZlcmxhcCBlYWNoIG90aGVyLAorICAgICAgICAgIGFuZCB5b3UgY2FuIHJlc2l6ZSB0aGVtIGluIHJlbGF0aW9uIHRvIGVhY2ggb3RoZXIuCisgICAgICAgICAgTm9ybWFsbHksIHdoZW4geW91IG1pbmltaXplIFdpbmUgd2luZG93cywgdGhleSBjb2xsYXBzZSBpbnRvCisgICAgICAgICAgYSBzbWFsbCBpY29uIGF0IHRoZSBsb3dlciBsZWZ0IGNvcm5lciBvZiB5b3VyIGRlc2t0b3AsCisgICAgICAgICAgY2lyY3VtdmVudGluZyB0aGUgYmVoYXZpb3Igb2YgeW91ciBvdGhlciBub24tV2luZSB3aW5kb3dzLgorICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSdyZSBydW5uaW5nIGluIDxsaW5rIGxpbmtlbmQ9Im1hbmFnZWQtcGFyYW1ldGVyIj4KKyAgICAgICAgICAtLW1hbmFnZWQgbW9kZTwvbGluaz4sIHlvdXIgV2luZSBhcHBsaWNhdGlvbnMgd2lsbCBtaW5pbWl6ZQorICAgICAgICAgIGp1c3QgbGlrZSB5b3VyIG90aGVyIHdpbmRvd3MuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgdG8gcmVzdHJpY3QgV2luZSB3aW5kb3dzIHRvIGEKKyAgICAgICAgICBzbWFsbGVyIGFyZWEgb2YgeW91ciBkZXNrdG9wLiAgVGhpcyBpcyB3aGF0IHRoZQorICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZXNrdG9wPC9wYXJhbWV0ZXI+IG9wdGlvbiBjb250cm9scy4gIFdoZW5ldmVyCisgICAgICAgICAgeW91IHBhc3MgdGhpcyBvcHRpb24gdG8gPGNvbW1hbmQ+d2luZTwvY29tbWFuZD4sIGl0IHdpbGwKKyAgICAgICAgICBjcmVhdGUgYSB3aW5kb3cgb2YgdGhhdCBzaXplIGFuZCB1c2UgdGhhdCBhcyBXaW5lJ3MgZGVza3RvcAorICAgICAgICAgIGluc3RlYWQgb2YgYm9ycm93aW5nIHRoZSByZWd1bGFyIGRlc2t0b3Agc3BhY2UuICBXaW5lIHdpbGwKKyAgICAgICAgICB0aGVuIHBsYWNlIHRoZSBhcHBsaWNhdGlvbiB3aW5kb3cgaW5zaWRlIHRoZSBuZXcgZGVza3RvcAorICAgICAgICAgIHdpbmRvdy4gIElmIHlvdSBtaW5pbWl6ZSB0aGUgYXBwbGljYXRpb24sIGl0IHdpbGwgaWNvbml6ZSB0bworICAgICAgICAgIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgaXRzIG93biBkZXNrdG9wIHdpbmRvdy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgPHBhcmFtZXRlcj4tLWRlc2t0b3A8L3BhcmFtZXRlcj4gb3B0aW9uIGdlb21ldHJ5IGluZm8gaW4KKyAgICAgICAgICB0aGUgc3RhbmRhcmQgWDExIGdlb21ldHJ5IGZvcm1hdCwgZS5nLiwgIjY0MHg0ODAiIGZvciBhCisgICAgICAgICAgZGVza3RvcCB3aW5kb3cgNjQwIHBpeGVscyB3aWRlIGFuZCA0ODAgcGl4ZWxzIGhpZ2guICBZb3UgY2FuCisgICAgICAgICAgYWxzbyBpbiB0aGVvcnkgc3BlY2lmeSB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVwcGVyIGxlZnQKKyAgICAgICAgICBjb3JuZXIgb2YgdGhlIGRlc2t0b3Agd2luZG93LCBidXQgeW91ciB3aW5kb3cgbWFuYWdlciBtYXkKKyAgICAgICAgICBjaG9vc2UgdG8gb3ZlcnJpZGUgdGhhdCByZXF1ZXN0LiAgVGhlIGZvbGxvd2luZyBpbnZvY2F0aW9uCisgICAgICAgICAgd291bGQgb3BlbiBhIG5ldyA2NDAgeCA0ODAgZGVza3RvcCB3aW5kb3cgYXQgY29vcmRpbmF0ZXMKKyAgICAgICAgICAoMTAsIDI1KToKKyAgICAgICAgICA8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+d2luZSAtLWRlc2t0b3AgNjQweDQ4MCsxMCsyNSBmb28uZXhlPC91c2VyaW5wdXQ+CisgICAgICAgICAgPC9zY3JlZW4+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTW9yZSBjb21tb25seSwgeW91J2xsIGxlYXZlIG9mZiB0aGUgc3RhcnRpbmcgY29vcmRpbmF0ZXMsCisgICAgICAgICAgYW5kIG9ubHkgdXNlIHRoZSBoZWlnaHQgYW5kIHdpZHRoOgorICAgICAgICAgIDxzY3JlZW4+Cis8cHJvbXB0PiQ8L3Byb21wdD4gPHVzZXJpbnB1dD53aW5lIC0tZGVza3RvcCA2NDB4NDgwIGZvby5leGU8L3VzZXJpbnB1dD4KKyAgICAgICAgICA8L3NjcmVlbj4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+LS1kaXNwbGF5PC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQnkgZGVmYXVsdCwgd2luZSB3aWxsIGRpc3BsYXkgaXRzIHdpbmRvd3Mgb24gd2hpY2hldmVyIFgKKyAgICAgICAgICBEaXNwbGF5IHlvdSBoYXZlIGluIHRoZSA8ZW52YXI+JERJU1BMQVk8L2VudmFyPiBlbnZpcm9ubWVudAorICAgICAgICAgIHZhcmlhYmxlLiAgT2Z0ZW4sIDxlbnZhcj4kRElTUExBWTwvZW52YXI+IGlzIHNldCB0bworICAgICAgICAgIDxsaXRlcmFsPjowPC9saXRlcmFsPiwgd2hpY2ggc2VuZHMgYWxsIHdpbmRvd3MgdG8gdGhlCisgICAgICAgICAgcHJpbWFyeSB2aWRlbyBtb25pdG9yIG9uIHRoZSBjdXJyZW50IGhvc3QgbWFjaGluZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUbyBzZW5kIHdpbmRvd3MgdG8gYSBkaWZmZXJlbnQgbW9uaXRvciBvbiB0aGUgc2FtZSBzeXN0ZW0sCisgICAgICAgICAgeW91IGNvdWxkIGNoYW5nZSA8bGl0ZXJhbD46MDwvbGl0ZXJhbD4gdG8gYSBkaWZmZXJlbnQKKyAgICAgICAgICBudW1iZXIsIGZvciBleGFtcGxlIDxsaXRlcmFsPjoxPC9saXRlcmFsPiB0byBzZW5kIG91dHB1dCB0bworICAgICAgICAgIHRoZSBzZWNvbmQgbW9uaXRvci4gIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IG90aGVyIHN5c3RlbXMuICBJZgorICAgICAgICAgIHlvdSB3ZXJlIGxvZ2dlZCBpbnRvIHRoZSBzeXN0ZW0gPHN5c3RlbWl0ZW0KKyAgICAgICAgICBjbGFzcz0ic3lzdGVtbmFtZSI+YWxwaGE8L3N5c3RlbWl0ZW0+LCBidXQgd2FudGVkIHdpbmUgdG8KKyAgICAgICAgICBydW4gb24gYW5vdGhlciBzeXN0ZW0gb24gdGhlIG5ldHdvcmssIDxzeXN0ZW1pdGVtCisgICAgICAgICAgY2xhc3M9InN5c3RlbW5hbWUiPmJldGE8L3N5c3RlbWl0ZW0+LCB5b3UgbWlnaHQgdXNlIGEKKyAgICAgICAgICA8ZW52YXI+JERJU1BMQVk8L2VudmFyPiBvZiA8bGl0ZXJhbD5iZXRhOjA8L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFlvdSBjYW4gYWxzbyBkZWNsYXJlIGRpc3BsYXkgdmFsdWVzIG9uIHRoZSB3aW5lIGNvbW1hbmQKKyAgICAgICAgICBsaW5lLCB1c2luZyB0aGUgPHBhcmFtZXRlcj4tLWRpc3BsYXk8L3BhcmFtZXRlcj4gb3B0aW9uLgorICAgICAgICAgIFRoZSBsYXN0IGV4YW1wbGUgYWJvdmUgbWlnaHQgbG9vayBsaWtlIHRoaXM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPHByb21wdD4kPC9wcm9tcHQ+IHdpbmUgLS1kaXNwbGF5PSJiZXRhOjAiIGZvby5leGUKKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPi0tZGxsPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPi0tZG9zdmVyPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPi0taGVscDwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT4tLWxhbmd1YWdlPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0MiBpZD0ibWFuYWdlZC1wYXJhbWV0ZXIiPgorICAgICAgICA8dGl0bGU+LS1tYW5hZ2VkPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPi0tc3luY2hyb25vdXM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAKKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+LS12ZXJzaW9uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPi0td2ludmVyPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CiAgICAgPC9zZWN0MT4KICAgPC9jaGFwdGVyPgogCiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJjaGFwdGVyIiAiIikKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICJjaGFwdGVyIiAiIikKIEVuZDoKIC0tPgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi90b29scy5zZ21sIGIvZG9jdW1lbnRhdGlvbi90b29scy5zZ21sCmluZGV4IDljYmY1NzEuLmU4MTgwNmIgMTAwNjQ0Ci0tLSBhL2RvY3VtZW50YXRpb24vdG9vbHMuc2dtbAorKysgYi9kb2N1bWVudGF0aW9uL3Rvb2xzLnNnbWwKQEAgLTUsNyArNSw3IEBACiAgICAgICA8dGl0bGU+YmluMnJlczwvdGl0bGU+CiAKICAgICAgIDxwYXJhPgotICAgICAgICB3cml0dGVuIGJ5IGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldCAoMTEvOTkpCisgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtanVlcmdlbi1zY2htaWVkOyA8ZW1haWw+JmVtYWlsLWp1ZXJnZW4tc2NobWllZDs8L2VtYWlsPiAoMTEvOTkpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzPC9maWxlbmFtZT4pCkBAIC04OSw2ICs4OSw2IEBACiA8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKIExvY2FsIHZhcmlhYmxlczoKIG1vZGU6IHNnbWwKLXNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCitzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQogRW5kOgogLS0+CmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwgYi9kb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwKaW5kZXggYjZiZGEyMS4uMGQ4NGIzNSAxMDA2NDQKLS0tIGEvZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbApAQCAtMSwyMyArMSwzMSBAQAotPCFkb2N0eXBlIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgVjMuMS8vRU4iIFsKKzwhZG9jdHlwZSBzZXQgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgVjMuMS8vRU4iIFsKIAotPCFlbnRpdHkgcnVubmluZyBTWVNURU0gInJ1bm5pbmcuc2dtbCI+Cis8IS0tICoqKiBJbmNsdWRlIGxpc3Qgb2YgYXV0aG9ycyAqKiogLS0+Cis8IWVudGl0eSAlIGF1dGhvcnMgU1lTVEVNICJhdXRob3JzLmVudCI+CislYXV0aG9yczsKKworPCEtLSAqKiogRW50aXRpZXMgZm9yIFdpbmUgVXNlciBHdWlkZSAqKiogLS0+Cis8IWVudGl0eSBpbnRyb2R1Y3Rpb24gU1lTVEVNICJpbnRyb2R1Y3Rpb24uc2dtbCI+Cis8IWVudGl0eSBnZXR0aW5nIFNZU1RFTSAiZ2V0dGluZy5zZ21sIj4KIDwhZW50aXR5IGluc3RhbGxpbmcgU1lTVEVNICJpbnN0YWxsaW5nLnNnbWwiPgogPCFlbnRpdHkgY29uZmlndXJpbmcgU1lTVEVNICJjb25maWd1cmluZy5zZ21sIj4KIDwhZW50aXR5IHJlZ2lzdHJ5IFNZU1RFTSAicmVnaXN0cnkuc2dtbCI+Cis8IWVudGl0eSBydW5uaW5nIFNZU1RFTSAicnVubmluZy5zZ21sIj4KIDwhZW50aXR5IGJ1Z3MgU1lTVEVNICJidWdzLnNnbWwiPgorCis8IS0tICoqKiBOb3QgY3VycmVudGx5IHVzZWQgKD8/PykgKioqIC0tPgogPCFlbnRpdHkgZm9udHMgU1lTVEVNICJmb250cy5zZ21sIj4KIDwhZW50aXR5IHByaW50aW5nIFNZU1RFTSAicHJpbnRpbmcuc2dtbCI+CiAKKzwhLS0gKioqIEVudGl0aWVzIGZvciBXaW5lIERldmVsb3BlciBHdWlkZSAqKiogLS0+CiA8IWVudGl0eSBjb21waWxpbmcgU1lTVEVNICJjb21waWxpbmcuc2dtbCI+CiA8IWVudGl0eSBkZWJ1Z2dpbmcgU1lTVEVNICJkZWJ1Z2dpbmcuc2dtbCI+CiA8IWVudGl0eSBkb2N1bWVudGF0aW9uIFNZU1RFTSAiZG9jdW1lbnRhdGlvbi5zZ21sIj4KIDwhZW50aXR5IHBhdGNoZXMgU1lTVEVNICJwYXRjaGVzLnNnbWwiPgogPCFlbnRpdHkgaTE4biBTWVNURU0gImkxOG4uc2dtbCI+CiA8IWVudGl0eSBwb3J0aW5nIFNZU1RFTSAicG9ydGluZy5zZ21sIj4KLQotPCFlbnRpdHkgcGFja2FnaW5nIFNZU1RFTSAicGFja2FnaW5nLnNnbWwiPgotCiA8IWVudGl0eSBhcmNoaXRlY3R1cmUgU1lTVEVNICJhcmNoaXRlY3R1cmUuc2dtbCI+Cis8IWVudGl0eSBvbGUgU1lTVEVNICJvbGUuc2dtbCI+CiA8IWVudGl0eSBkZWJ1Z2dlciBTWVNURU0gImRlYnVnZ2VyLnNnbWwiPgogPCFlbnRpdHkgY29uc29sZXMgU1lTVEVNICJjb25zb2xlcy5zZ21sIj4KIDwhZW50aXR5IGltcGxlbWVudGF0aW9uIFNZU1RFTSAiaW1wbGVtZW50YXRpb24uc2dtbCI+CkBAIC0yNSw3MCArMzMsOTUgQEAKIDwhZW50aXR5IGJ1aWxkIFNZU1RFTSAiYnVpbGQuc2dtbCI+CiA8IWVudGl0eSB0b29scyBTWVNURU0gInRvb2xzLnNnbWwiPgogPCFlbnRpdHkgZGxscyBTWVNURU0gImRsbHMuc2dtbCI+Ci08IWVudGl0eSBzdGF0dXMgU1lTVEVNICJzdGF0dXMuc2dtbCI+Cis8IWVudGl0eSBjdnMtcmVncmVzc2lvbiBTWVNURU0gImN2cy1yZWdyZXNzaW9uLnNnbWwiPgorCis8IS0tICoqKiBFbnRpdGllcyBmb3IgV2luZSBEZXZlbG9wZXIgR3VpZGUgKioqIC0tPgorPCFlbnRpdHkgd2luZWxpYi11c2VyIFNZU1RFTSAid2luZWxpYi11c2VyLnNnbWwiPgorCis8IS0tICoqKiBFbnRpdGllcyBmb3IgV2luZSBQYWNrYWdlciBHdWlkZSAqKiogLS0+Cis8IWVudGl0eSBwYWNrYWdpbmcgU1lTVEVNICJwYWNrYWdpbmcuc2dtbCI+CisKIF0+CiAKLTxib29rIGlkPSJpbmRleCI+Ci0gIDxib29raW5mbz4KKzxzZXQgaWQ9ImluZGV4Ij4KKyAgPHNldGluZm8+CiAgICAgPHRpdGxlPldpbmUgRG9jdW1lbnRhdGlvbjwvdGl0bGU+Ci0gIDwvYm9va2luZm8+CiAKLSAgPHByZWZhY2UgaWQ9InByZWZhY2UiPgotICAgIDx0aXRsZT5Ob3RlcyBBYm91dCB0aGlzIERvY3VtZW50PC90aXRsZT4KLSAgICA8cGFyYT4KLSAgICAgIFRoZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBleHRyYWN0ZWQgZnJvbSB0aGUgV2luZQotICAgICAgc291cmNlIHRyZWUsIGZyb20gdGhlIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb248L2ZpbGVuYW1lPgotICAgICAgZGlyZWN0b3J5LiAgU28gZmFyLCBubyBuZXcgY29udGVudCBoYXMgYmVlbiBhZGRlZCBhc2lkZSBmcm9tCi0gICAgICBtYXJraW5nIGl0IHVwIGZvciBEb2NCb29rIGFuZCBhIGZldyBtaW5vciB0d2Vha3MgdG8gc21vb3RoCi0gICAgICB0aGF0IHByb2Nlc3MuICBBbGwgY3JlZGl0IHNob3VsZCBnbyB0byB0aGUgb3JpZ2luYWwgYXV0aG9ycywKLSAgICAgIHdobyBhcmUgYXR0cmlidXRlZCBhY2NvcmRpbmcgdGhlIHRoZSAid3JpdHRlbiBieSIgY29tbWVudHMKLSAgICAgIGluIHRob3NlIGZpbGVzLiAgSWYgSSd2ZSBtaXNzZWQgYW55b25lLCBwbGVhc2UgY29udGFjdAotICAgICAgPGVtYWlsPkpvaG4gUi4gU2hlZXRzICZsdDtqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT48L2VtYWlsPgotICAgIDwvcGFyYT4KLSAgPC9wcmVmYWNlPgorICAgIDxyZWxlYXNlaW5mbz4KKyAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGV4dHJhY3RlZCBmcm9tIHRoZSBXaW5lCisgICAgICAgIHNvdXJjZSB0cmVlLCBmcm9tIHRoZSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uPC9maWxlbmFtZT4KKyAgICAgICAgZGlyZWN0b3J5LiAgQWxsIGNyZWRpdCBzaG91bGQgZ28gdG8gdGhlIG9yaWdpbmFsIGF1dGhvcnMsIHdobworICAgICAgICBhcmUgYXR0cmlidXRlZCBhY2NvcmRpbmcgdGhlIHRoZSAid3JpdHRlbiBieSIgY29tbWVudHMgaW4KKyAgICAgICAgdGhvc2UgZmlsZXMuICBBZGRpdGlvbmFsIGNvbnRlbnQgaGFzIGFsc28gYmVlbiBhZGRlZC4KKyAgICAgIDwvZW1waGFzaXM+CisgICAgPC9yZWxlYXNlaW5mbz4KKyAgPC9zZXRpbmZvPgogCi0gIDxwYXJ0IGlkPSJwYXJ0LW9uZSI+Ci0gICAgPHRpdGxlPlVzaW5nIFdpbmU8L3RpdGxlPgorICA8IS0tICoqKiBXaW5lIFVzZXIgR3VpZGUgKioqIC0tPgorICA8Ym9vayBpZD0iaW5kZXgtdXNlciI+CisgICAgPGJvb2tpbmZvPgorICAgICAgPHRpdGxlPldpbmUgVXNlciBHdWlkZTwvdGl0bGU+CisgICAgPC9ib29raW5mbz4KIAotICAgICZydW5uaW5nOworICAgICZpbnRyb2R1Y3Rpb247CisgICAgJmdldHRpbmc7CisKICAgICAmaW5zdGFsbGluZzsKICAgICAmY29uZmlndXJpbmc7CisgICAgJnJ1bm5pbmc7CiAgICAgJmJ1Z3M7CisgICAgPCEtLQogICAgICZmb250czsKICAgICAmcHJpbnRpbmc7CisgICAgLS0+CisgIDwvYm9vaz4KIAotICA8L3BhcnQ+CisgIDwhLS0gKioqIFdpbmUgRGV2ZWxvcGVyIEd1aWRlICoqKiAtLT4KKyAgPGJvb2sgaWQ9ImluZGV4LWRldmVsb3BlciI+CisgICAgPGJvb2tpbmZvPgorICAgICAgPHRpdGxlPldpbmUgRGV2ZWxvcGVyJ3MgR3VpZGU8L3RpdGxlPgorICAgIDwvYm9va2luZm8+CiAKLSAgPHBhcnQgaWQ9InBhcnQtdHdvIj4KLSAgICA8dGl0bGU+RGV2ZWxvcGluZyBXaW5lPC90aXRsZT4KKyAgICA8cGFydCBpZD0icGFydC1vbmUiPgorICAgICAgPHRpdGxlPkRldmVsb3BpbmcgV2luZTwvdGl0bGU+CisgICAgICAmY29tcGlsaW5nOworICAgICAgJmRlYnVnZ2VyOworICAgICAgJmRvY3VtZW50YXRpb247CisgICAgICAmcGF0Y2hlczsKKyAgICAgICZpMThuOworICAgICAgJnRvb2xzOworICAgIDwvcGFydD4KIAotICAgICZjb21waWxpbmc7Ci0gICAgJmRlYnVnZ2luZzsKLSAgICAmZG9jdW1lbnRhdGlvbjsKLSAgICAmcGF0Y2hlczsKLSAgICAmaTE4bjsKLSAgICAmcG9ydGluZzsKKyAgICA8cGFydCBpZD0icGFydC10d28iPgorICAgICAgPHRpdGxlPldpbmUgQXJjaGl0ZWN0dXJlPC90aXRsZT4KKyAgICAgICZhcmNoaXRlY3R1cmU7CisgICAgICAmZGVidWdnaW5nOworICAgICAgJm9sZTsKKyAgICAgICZvcGVuZ2w7CisgICAgICAmYnVpbGQ7CisgICAgICAmZGxsczsKKyAgICA8L3BhcnQ+CiAKLSAgPC9wYXJ0PgorICAgIDxwYXJ0PgorICAgICAgPHRpdGxlPkFkdmFuY2VkIFRvcGljczwvdGl0bGU+CisgICAgICAmaW1wbGVtZW50YXRpb247CisgICAgICAmcG9ydGluZzsKKyAgICAgICZjb25zb2xlczsKKyAgICAgICZjdnMtcmVncmVzc2lvbjsKKyAgICA8L3BhcnQ+CisgIDwvYm9vaz4KIAotICA8cGFydCBpZD0icGFydC10aHJlZSI+Ci0gICAgPHRpdGxlPkRpc3RyaWJ1dGluZyBXaW5lPC90aXRsZT4KKworICA8IS0tICoqKiBXaW5lbGliIFVzZXIgR3VpZGUgKioqIC0tPgorICAmd2luZWxpYi11c2VyOworCisgIDwhLS0gKioqIFdpbmUgUGFja2FnZXIgR3VpZGUgKioqIC0tPgorICA8Ym9vayBpZD0iaW5kZXgtcGtnIj4KKyAgICA8Ym9va2luZm8+CisgICAgICA8dGl0bGU+V2luZSBQYWNrYWdlcnMgR3VpZGU8L3RpdGxlPgorICAgIDwvYm9va2luZm8+CiAKICAgICAmcGFja2FnaW5nOwotCi0gIDwvcGFydD4KLQotICA8cGFydCBpZD0icGFydC1mb3VyIj4KLSAgICA8dGl0bGU+V2luZSBBcmNoaXRlY3R1cmU8L3RpdGxlPgotCi0gICAgJmFyY2hpdGVjdHVyZTsKLSAgICAmZGVidWdnZXI7Ci0gICAgJmNvbnNvbGVzOwotICAgICZpbXBsZW1lbnRhdGlvbjsKLSAgICAmb3BlbmdsOwotICAgICZidWlsZDsKLSAgICAmdG9vbHM7Ci0gICAgJmRsbHM7Ci0KLSAgPC9wYXJ0PgotPC9ib29rPgorICA8L2Jvb2s+Cis8L3NldD4KZGlmZiAtLWdpdCBhL2RvY3VtZW50YXRpb24vd2luZWhxLmRzbCBiL2RvY3VtZW50YXRpb24vd2luZWhxLmRzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGQ2MzI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jdW1lbnRhdGlvbi93aW5laHEuZHNsCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBzdHlsZS1zaGVldCBQVUJMSUMgIi0vL0phbWVzIENsYXJrLy9EVEQgRFNTU0wgU3R5bGUgU2hlZXQvL0VOIiBbCis8IUVOVElUWSB3YWxzaC1zdHlsZSBQVUJMSUMgIi0vL05vcm1hbiBXYWxzaC8vRE9DVU1FTlQgRG9jQm9vayBIVE1MIFN0eWxlc2hlZXQvL0VOIiBDREFUQSBEU1NTTD4KKzwhRU5USVRZIGN5Z251cy1zdHlsZSBTWVNURU0gIi91c3IvbGliL3NnbWwvc3R5bGVzaGVldC9kc3NzbC9kb2Nib29rL2N5Z251cy9jeWdudXMtYm90aC5kc2wiIENEQVRBIERTU1NMPgorXT4KKworPHN0eWxlLXNoZWV0PgorPHN0eWxlLXNwZWNpZmljYXRpb24gaWQ9Imh0bWwiIHVzZT0iZG9jYm9vayI+Cis8c3R5bGUtc3BlY2lmaWNhdGlvbi1ib2R5PgorCisoZGVmaW5lICV1c2UtaWQtYXMtZmlsZW5hbWUlICN0KQorKGRlZmluZSAlaHRtbC1leHQlICIuc2h0bWwiKQorKGRlZmluZSAlaHRtbC1oZWFkZXItdGFncyUgJygpKQorCisoZGVmaW5lICVzdHlsZXNoZWV0JSAiLi4vLi4vd2luZWhxLmNzcyIpCisoZGVmaW5lICVzdHlsZXNoZWV0LXR5cGUlICJ0ZXh0L2NzcyIpCisKKyhkZWZpbmUgJXNoYWRlLXZlcmJhdGltJSAjdCkKKyhkZWZpbmUgJXNlY3Rpb24tYXV0b2xhYmVsJSAjdCkKKworOzsgRGVmaW5lIG5ldyBIVE1MIGhlYWRlcnMKKyhkZWZpbmUgKCRodG1sLWJvZHktc3RhcnQkKQorICAobWFrZSBzZXF1ZW5jZQorICAgIChtYWtlIGZvcm1hdHRpbmctaW5zdHJ1Y3Rpb24gZGF0YTogIiYjNjAhLS0iKQorICAgIChsaXRlcmFsICIjaW5jbHVkZSBmaWxlPVwiaGVhZGVyLmh0bWxcIiAiKQorICAgIChtYWtlIGZvcm1hdHRpbmctaW5zdHJ1Y3Rpb24gZGF0YTogIi0tPiIpKSkKKyhkZWZpbmUgKCRodG1sLWJvZHktZW5kJCkKKyAgKG1ha2Ugc2VxdWVuY2UKKyAgICAobWFrZSBmb3JtYXR0aW5nLWluc3RydWN0aW9uIGRhdGE6ICImIzYwIS0tIikKKyAgICAobGl0ZXJhbCAiI2luY2x1ZGUgZmlsZT1cImZvb3Rlci5odG1sXCIgIikKKyAgICAobWFrZSBmb3JtYXR0aW5nLWluc3RydWN0aW9uIGRhdGE6ICItLT4iKSkpCisKKzs7IEN1c3RvbWl6ZSB0aGUgYm9keSB0YWcgYXR0cmlidXRlcworKGRlZmluZSAlYm9keS1hdHRyJSAKKyAgKGxpc3QKKyAgIChsaXN0ICJCR0NPTE9SIiAiIzU1NTU1NSIpCisgICAobGlzdCAiVEVYVCIgIiMwMDAwMDAiKQorICAgKGxpc3QgIkxJTksiICIjMDAwMEZGIikKKyAgIChsaXN0ICJWTElOSyIgIiM4NDAwODQiKQorICAgKGxpc3QgIkFMSU5LIiAiIzAwMDBGRiIpKSkKKworPC9zdHlsZS1zcGVjaWZpY2F0aW9uLWJvZHk+Cis8L3N0eWxlLXNwZWNpZmljYXRpb24+CisKKzxleHRlcm5hbC1zcGVjaWZpY2F0aW9uIGlkPSJkb2Nib29rIiBkb2N1bWVudD0id2Fsc2gtc3R5bGUiPgorCis8L3N0eWxlLXNoZWV0PgpkaWZmIC0tZ2l0IGEvZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbCBiL2RvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0NmVmZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWwKQEAgLTAsMCArMSwxNzA2IEBACis8Ym9vayBpZD0iaW5kZXgtd2luZWxpYiI+CisgIDxib29raW5mbz4KKyAgICA8dGl0bGU+V2luZWxpYiBVc2VyIEd1aWRlPC90aXRsZT4KKyAgPC9ib29raW5mbz4KKworICA8Y2hhcHRlciBpZD0id2luZWxpYi1pbnRyb2R1Y3Rpb24iPgorICAgIDx0aXRsZSBpZD0iaW50cm9kdWN0aW9uLnRpdGxlIj5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgV2luZWxpYiBpcyBhIGRldmVsb3BtZW50IHRvb2xraXQgd2hpY2ggYWxsb3dzIHlvdSB0byBjb21waWxlIHlvdXIgCisgICAgICBXaW5kb3dzIGFwcGxpY2F0aW9ucyBvbiBVbml4LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIE1vc3Qgb2YgV2luZWxpYidzIGNvZGUgY29uc2lzdHMgb2YgdGhlIFdpbjMyIEFQSSBpbXBsZW1lbnRhdGlvbi4gCisgICAgICBGb3J0dW5hdGVseSB0aGlzIHBhcnQgaXMgMTAwIHBlcmNlbnQgc2hhcmVkIHdpdGggV2luZS4gVGhlIHJlbWFpbmRlciAKKyAgICAgIGNvbnNpc3RzIG9mIFdpbmRvd3MgY29tcGF0aWJsZSBoZWFkZXJzIGFuZCB0b29scyBsaWtlIHRoZSByZXNvdXJjZSAKKyAgICAgIGNvbXBpbGVyIChhbmQgZXZlbiB0aGVzZSBhcmUgdXNlZCB3aGVuIGNvbXBpbGluZyBXaW5lKS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGFua3MgdG8gdGhlIGFib3ZlLCBXaW5lbGliIHN1cHBvcnRzIG1vc3QgQyBhbmQgQysrIDMyYml0IHNvdXJjZSBjb2RlLCAKKyAgICAgIHJlc291cmNlIGFuZCBtZXNzYWdlIGZpbGVzLCBhbmQgY2FuIGdlbmVyYXRlIGdyYXBoaWNhbCBvciBjb25zb2xlIAorICAgICAgYXBwbGljYXRpb25zIGFzIHdlbGwgYXMgZHluYW1pYyBsaWJyYXJpZXMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgV2hhdCBpcyBub3Qgc3VwcG9ydGVkIGlzIDE2Yml0IHNvdXJjZSBjb2RlIGFzIHRoZSB0eXBlcyBpdCBkZXBlbmRzIG9uIAorICAgICAgKGVzcGVjaWFsbHkgc2VnbWVudGVkIHBvaW50ZXJzKSBhcmUgbm90IHN1cHBvcnRlZCBieSBVbml4IGNvbXBpbGVycy4gCisgICAgICBBbHNvIG1pc3NpbmcgYXJlIHNvbWUgb2YgdGhlIG1vcmUgZXhvdGljIGZlYXR1cmVzIG9mIE1pY3Jvc29mdCdzIAorICAgICAgY29tcGlsZXIgbGlrZSBuYXRpdmUgQ09NIHN1cHBvcnQgYW5kIHN0cnVjdHVyZWQgZXhjZXB0aW9uIGhhbmRsaW5nLiAKKyAgICAgIFNvIHlvdSBtYXkgbmVlZCB0byBwZXJmb3JtIHNvbWUgbW9kaWZpY2F0aW9ucyBpbiB5b3VyIGNvZGUgd2hlbiAKKyAgICAgIHJlY29tcGlsaW5nIHlvdXIgYXBwbGljYXRpb24gd2l0aCBXaW5lbGliLiBUaGlzIGd1aWRlIGlzIGhlcmUgdG8gaGVscCAKKyAgICAgIHlvdSBpbiB0aGlzIHRhc2suCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgV2hhdCB5b3UgZ2FpbiBieSByZWNvbXBpbGluZyB5b3VyIGFwcGxpY2F0aW9uIHdpdGggV2luZWxpYiBpcyB0aGUgCisgICAgICBhYmlsaXR5IHRvIG1ha2UgY2FsbHMgdG8gVW5peCBBUElzLCBkaXJlY3RseSBmcm9tIHlvdXIgCisgICAgICBXaW5kb3dzIHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93cyBmb3IgYSBiZXR0ZXIgaW50ZWdyYXRpb24gd2l0aCB0aGUgCisgICAgICBVbml4IGVudmlyb25tZW50IHRoYW4gaXMgYWxsb3dlZCBieSBydW5ubmluZyBhbiB1bm1vZGlmaWVkIFdpbmRvd3MgCisgICAgICBhcHBsaWNhdGlvbiBydW5uaW5nIGluIFdpbmUuIEFub3RoZXIgYmVuZWZpdCBpcyB0aGF0IGEgV2luZWxpYiAKKyAgICAgIGFwcGxpY2F0aW9uIGNhbiByZWxhdGl2ZWx5IGVhc2lseSBiZSByZWNvbXBpbGVkIG9uIGEgbm9uLUludGVsIAorICAgICAgYXJjaGl0ZWN0dXJlIGFuZCBydW4gdGhlcmUgd2l0aG91dCB0aGUgbmVlZCBmb3IgYSBzbG93IHNvZnR3YXJlIAorICAgICAgZW11bGF0aW9uIG9mIHRoZSBwcm9jZXNzb3IuCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9IndpbmVsaWItcmVxdWlyZW1lbnRzIj4KKyAgICA8dGl0bGUgaWQ9InJlcXVpcmVtZW50cy50aXRsZSI+U3lzdGVtIHJlcXVpcmVtZW50czwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgcmVxdWlyZW1lbnRzIGZvciBXaW5lbGliIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvciBXaW5lLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEJhc2ljYWxseSBpZiB5b3UgY2FuIHJ1biBXaW5lIG9uIHlvdXIgY29tcHV0ZXIgdGhlbiB5b3UgY2FuIHJ1biAKKyAgICAgIFdpbmVsaWIuIEJ1dCB0aGUgY29udmVyc2UgaXMgbm90IHRydWUuIFlvdSBjYW4gYWxzbyBidWlsZCBXaW5lbGliIAorICAgICAgYW5kIFdpbmVsaWIgYXBwbGljYXRpb25zIG9uIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGVkIGJ5IFdpbmUsIAorICAgICAgdHlwaWNhbGx5IHBsYXRmb3JtcyB3aXRoIGEgbm9uIGkzODYgcHJvY2Vzc29yLiBCdXQgdGhpcyBpcyBzdGlsbCAKKyAgICAgIHByZXR0eSBtdWNoIGFuIHVuY2hhcnRlZCB0ZXJyaXRvcnkuIEl0IHdvdWxkIGJlIG1vcmUgcmVhc29uYWJsZSB0byAKKyAgICAgIGZpcnN0IHRhcmdldCBvbmUgb2YgdGhlIG1vcmUgbXVuZGFuZSBpMzg2LWJhc2VkIHBsYXRmb3JtcyBmaXJzdC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgbWFpbiBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGNvbXBpbGVyIGJlY29tZXMgbXVjaCBtb3JlIGltcG9ydGFudC4gCisgICAgICBJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGdjYywgZysrLCAKKyAgICAgIGFuZCB0aGUgR05VIGJpbnV0aWxzLiBUaGUgbW9yZSByZWNlbnQgeW91ciBnY2MgY29tcGlsZXIgdGhlIGJldHRlci4gCisgICAgICBGb3IgYW55IHNlcmlvdXMgYW1vdW50IG9mIGNvZGUgeW91IHNob3VsZCBub3QgY29uc2lkZXIgYW55dGhpbmcgb2xkZXIgCisgICAgICB0aGFuIGdjYyAyLjk1LjIuIFRoZSBsYXRlc3QgZ2NjIHNuYXBzaG90cyBjb250YWluIHNvbWUgdXNlZnVsIGJ1ZyAKKyAgICAgIGZpeGVzIGFuZCBtdWNoIGJldHRlciBzdXBwb3J0IGZvciBhbm9ueW1vdXMgc3RydWN0cyBhbmQgdW5pb25zLiBUaGlzIAorICAgICAgY2FuIGhlbHAgcmVkdWNlIHRoZSBudW1iZXIgb2YgY2hhbmdlcyB5b3UgaGF2ZSB0byBkbyBpbiB5b3VyIGNvZGUgYnV0IAorICAgICAgdGhlc2UgYXJlIG5vdCBzdGFibGUgcmVsZWFzZXMgb2YgdGhlIGNvbXBpbGVyIHNvIHlvdSBtYXkgbm90IHdhbnQgdG8gCisgICAgICB1c2UgdGhlbSBpbiBwcm9kdWN0aW9uLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJ3aW5lbGliLWdldHRpbmctc3RhcnRlZCI+CisgICAgPHRpdGxlIGlkPSJnZXR0aW5nLXN0YXJ0ZWQudGl0bGUiPkdldHRpbmcgU3RhcnRlZDwvdGl0bGU+CisgICAgPHNlY3QxIGlkPSJ3aW5lbWFrZXItaW50cm9kdWN0aW9uIj4KKyAgICAgIDx0aXRsZSBpZD0id2luZW1ha2VyLWludHJvZHVjdGlvbi50aXRsZSI+V2luZW1ha2VyIGludHJvZHVjdGlvbjwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgU28gd2hhdCBpcyBuZWVkZWQgdG8gY29tcGlsZSBhIFdpbmRvd3MgYXBwbGljYXRpb24gd2l0aCBXaW5lbGliPworICAgICAgICBXZWxsLCBpdCByZWFsbHkgZGVwZW5kcyBvbiB0aGUgY29tcGxleGl0eSBvZiB5b3VyIGFwcGxpY2F0aW9uIGJ1dCAKKyAgICAgICAgaGVyZSBhcmUgc29tZSBpc3N1ZXMgdGhhdCBhcmUgc2hhcmVkIGJ5IGFsbCBhcHBsaWNhdGlvbnM6CisgICAgICA8L3BhcmE+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB0aGUgY2FzZSBvZiB5b3VyIGZpbGVzIG1heSBiZSBiYWQuIEZvciBleGFtcGxlIHRoZXkgY291bGQgYmUgCisgICAgICAgICAgICBpbiBhbGwgY2FwczogPGZpbGVuYW1lPkhFTExPLkM8L2ZpbGVuYW1lPi4gSXQncyBub3QgdmVyeSBuaWNlIHRvIAorICAgICAgICAgICAgd29yayB3aXRoIGFuZCBwcm9iYWJseSBub3Qgd2hhdCB5b3UgaW50ZW5kZWQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB0aGVuIHRoZSBjYXNlIG9mIHRoZSBmaWxlbmFtZXMgaW4geW91ciBpbmNsdWRlIHN0YXRlbWVudHMgbWF5IGJlIAorICAgICAgICAgICAgd3Jvbmc6IG1heWJlIHRoZXkgaW5jbHVkZSAnV2luZG93cy5oJyBpbnN0ZWFkIG9mICd3aW5kb3dzLmgnLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgeW91ciBpbmNsdWRlIHN0YXRlbWVudHMgbWF5IHVzZSAnXCcgaW5zdGVhZCBvZiAnLycuICdcJyBpcyBub3QgCisgICAgICAgICAgICByZWNvZ25pemVkIGJ5IFVuaXggY29tcGlsZXJzIHdoaWxlICcvJyBpcyByZWNvZ25pemVkIGluIGJvdGggCisgICAgICAgICAgICBlbnZpcm9ubWVudHMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB5b3Ugd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIHVzdWFsIERvcyB0byBVbml4IHRleHQgZmlsZSBjb252ZXJzaW9uCisgICAgICAgICAgICBvdGhlcndpc2UgeW91J2xsIGdldCBpbiB0cm91YmxlIHdoZW4gdGhlIGNvbXBpbGVyIGNvbnNpZGVycyB0aGF0IAorICAgICAgICAgICAgeW91ciAnXCcgaXMgbm90IGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgc2luY2UgaXQgaXMgZm9sbG93ZWQgYnkgYSAKKyAgICAgICAgICAgIHBlc2t5IGNhcnJpYWdlIHJldHVybi4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIHlvdSB3aWxsIGhhdmUgdG8gd3JpdGUgbmV3IG1ha2VmaWxlcy4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBiZXN0IHdheSB0byB0YWtlIGNhcmUgb2YgYWxsIHRoZXNlIGlzc3VlcyBpcyB0byB1c2Ugd2luZW1ha2VyLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFdpbmVtYWtlciBpcyBhIHBlcmwgc2NyaXB0IHdoaWNoIGlzIGRlc2lnbmVkIHRvIGhlbHAgeW91IGJvb3RzdHJhcCAKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gb2YgeW91ciBXaW5kb3dzIHByb2plY3RzIHRvIFdpbmVsaWIuIEluIG9yZGVyIHRvIGRvIAorICAgICAgICB0aGlzIGl0IHdpbGwgZ28gYW5hbHl6ZSB5b3VyIGNvZGUsIGZpeGluZyB0aGUgaXNzdWVzIGxpc3RlZCBhYm92ZSAgCisgICAgICAgIGFuZCBnZW5lcmF0ZSBhdXRvY29uZi1iYXNlZCBNYWtlZmlsZXMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTGV0J3Mgc3VwcG9zZSB0aGF0IFdpbmUvV2luZWxpYiBoYXMgYmVlbiBpbnN0YWxsZWQgaW4gdGhlIAorICAgICAgICA8ZmlsZW5hbWUgY2xhc3M9IkRpcmVjdG9yeSI+L3Vzci9sb2NhbC93aW5lPC9maWxlbmFtZT4KKyAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhhdCB5b3UgYXJlIGFscmVhZHkgaW4gdGhlIHRvcCBkaXJlY3Rvcnkgb2YgeW91ciAKKyAgICAgICAgc291cmNlcy4gVGhlbiBjb252ZXJ0aW5nIHlvdXIgcHJvamVjdCB0byBXaW5lbGliIG1heSBiZSBhcyBzaW1wbGUgCisgICAgICAgIGFzIGp1c3QgcnVubmluZyB0aGUgdGhyZWUgY29tbWFuZHMgYmVsb3c6CisgICAgICA8L3BhcmE+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICQgd2luZW1ha2VyIC0tbG93ZXItdXBwZXJjYXNlCisgICAgICAgICQgLi9jb25maWd1cmUgLS13aXRoLXdpbmU9L3Vzci9sb2NhbC93aW5lCisgICAgICAgICQgbWFrZQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKworICAgICAgPHBhcmE+CisgICAgICAgIEJ1dCBvZiBjb3Vyc2UgdGhpbmdzIGFyZSBub3QgYWx3YXlzIHRoYXQgc2ltcGxlIHdoaWNoIGlzIHdoeSB3ZSBoYXZlIAorICAgICAgICB0aGlzIGd1aWRlIGF0IGFsbC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJ3aW5lbWFrZXItZ3VpZGUiPgorICAgICAgPHRpdGxlIGlkPSJ3aW5lbWFrZXItZ3VpZGUudGl0bGUiPlN0ZXAgYnkgc3RlcCBndWlkZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgTGV0J3MgcmV0cmFjZSB0aGUgc3RlcHMgYWJvdmUgaW4gbW9yZSBkZXRhaWxzLgorICAgICAgPC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48b3B0aW9uPkdldHRpbmcgdGhlIHNvdXJjZTwvb3B0aW9uPjwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgRmlyc3QgaWYgeW91IGNhbiB0cnkgdG8gZ2V0IHRoZSBzb3VyY2VzIHRvZ2V0aGVyIHdpdGggdGhlIAorICAgICAgICAgICAgICBleGVjdXRhYmxlcy9saWJyYXJpZXMgdGhhdCB0aGV5IGJ1aWxkLiBJbiB0aGUgY3VycmVudCBzdGF0ZSBvZiAKKyAgICAgICAgICAgICAgd2luZW1ha2VyIGhhdmluZyB0aGVzZSBhcm91bmQgY2FuIGhlbHAgaXQgZ3Vlc3Mgd2hhdCBpdCBpcyB0aGF0IAorICAgICAgICAgICAgICB5b3VyIHByb2plY3QgaXMgdHJ5aW5nIHRvIGJ1aWxkLiBMYXRlciwgd2hlbiBpdCBpcyBhYmxlIHRvIAorICAgICAgICAgICAgICB1bmRlcnN0YW5kIFZpc3VhbCBDKysgcHJvamVjdHMsIGFuZCBpZiB5b3UgdXNlIHRoZW0sIHRoaXMgd2lsbCAKKyAgICAgICAgICAgICAgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS4gVXN1YWxseSB0aGUgZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcyAKKyAgICAgICAgICAgICAgYXJlIGluIGEgPGZpbGVuYW1lIGNsYXNzPSJEaXJlY3RvcnkiPlJlbGVhc2U8L2ZpbGVuYW1lPiBvciAKKyAgICAgICAgICAgICAgPGZpbGVuYW1lIGNsYXNzPSJEaXJlY3RvcnkiPkRlYnVnPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IG9mIHRoZSAKKyAgICAgICAgICAgICAgZGlyZWN0b3J5IHdoZXJlIHRoZSBzb3VyY2VzIGFyZS4gU28gaXQncyBiZXN0IGlmIHlvdSBjYW4gCisgICAgICAgICAgICAgIHRyYW5zZmVyIHRoZSBzb3VyY2UgZmlsZXMgYW5kIGVpdGhlciBvZiB0aGVzZSBkaXJlY3RvcmllcyB0byAKKyAgICAgICAgICAgICAgTGludXguIE5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byB0cmFuc2ZlciB0aGUgCisgICAgICAgICAgICAgIDxmaWxlbmFtZT4ub2JqPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4ucGNoPC9maWxlbmFtZT4sIAorICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNicjwvZmlsZW5hbWU+IGFuZCBvdGhlciBmaWxlcyB0aGF0IGFsc28gcmVzaWRlIGluIAorICAgICAgICAgICAgICB0aGVzZSBkaXJlY3RvcmllczsgZXNwZWNpYWxseSBhcyB0aGV5IHRlbmQgdG8gYmUgcXVpdGUgYmlnLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxvcHRpb24+Y2QgJmx0O3Jvb3RfZGlyJmd0Ozwvb3B0aW9uPjwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGhlbiBnbyB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgd2hlcmUgYXJlIHlvdXIgc291cmNlIGZpbGVzLiAKKyAgICAgICAgICAgICAgV2luZW1ha2VyIGNhbiBkZWFsIHdpdGggYSB3aG9sZSBkaXJlY3RvcnkgaGllcmFyY2h5IGF0IG9uY2Ugc28gCisgICAgICAgICAgICAgIHlvdSBkb24ndCBuZWVkIHRvIGdvIGludG8gYSBsZWFmIGRpcmVjdG9yeSwgcXVpdGUgdGhlIGNvbnRyYXJ5LiAKKyAgICAgICAgICAgICAgV2luZW1ha2VyIHdpbGwgYXV0b21hdGljYWxseSBnZW5lcmF0ZSBtYWtlZmlsZXMgaW4gZWFjaCAKKyAgICAgICAgICAgICAgZGlyZWN0b3J5IHdoZXJlIG9uZSBpcyByZXF1aXJlZCwgYW5kIHdpbGwgZ2VuZXJhdGUgYSBnbG9iYWwgCisgICAgICAgICAgICAgIG1ha2VmaWxlIHNvIHRoYXQgeW91IGNhbiByZWJ1aWxkIGFsbCB5b3VyIGV4ZWN1dGFibGVzIGFuZCAKKyAgICAgICAgICAgICAgbGlicmFyaWVzIHdpdGggYSBzaW5nbGUgPGNvbW1hbmQ+bWFrZTwvY29tbWFuZD4gY29tbWFuZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48b3B0aW9uPk1ha2luZyB0aGUgc291cmNlIHdyaXRhYmxlPC9vcHRpb24+PC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGVuIG1ha2Ugc3VyZSB5b3UgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8geW91ciBzb3VyY2VzLiBJdCBtYXkgCisgICAgICAgICAgICAgIHNvdW5kIG9idmlvdXMsIGJ1dCBpZiB5b3UgY29waWVkIHlvdXIgc291cmNlIGZpbGVzIGZyb20gYSAKKyAgICAgICAgICAgICAgQ0QtUk9NIG9yIGlmIHRoZXkgYXJlIGluIFNvdXJjZSBTYWZlIG9uIFdpbmRvd3MsIGNoYW5jZXMgYXJlIAorICAgICAgICAgICAgICB0aGF0IHRoZXkgd2lsbCBiZSByZWFkLW9ubHkuIAorICAgICAgICAgICAgICBCdXQgV2luZW1ha2VyIG5lZWRzIHdyaXRlIGFjY2VzcyBzbyB0aGF0IGl0IGNhbiBmaXggdGhlbS4gWW91IAorICAgICAgICAgICAgICBjYW4gYXJyYW5nZSB0aGF0IGJ5IHJ1bm5pbmcgPGNvbW1hbmQ+Y2htb2QgLVIgdSt3IC48L2NvbW1hbmQ+LiAKKyAgICAgICAgICAgICAgQWxzbyB5b3Ugd2lsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIGEgYmFja3VwIGNvcHkgb2YgCisgICAgICAgICAgICAgIHlvdXIgc291cmNlcyBpbiBjYXNlIHNvbWV0aGluZyB3ZW50IGhvcnJpYmx5IHdyb25nLCBvciBtb3JlIAorICAgICAgICAgICAgICBsaWtlbHksIGp1c3QgZm9yIHJlZmVyZW5jZSBhdCBhIGxhdGVyIHBvaW50LiBJZiB5b3UgdXNlIGEgCisgICAgICAgICAgICAgIHZlcnNpb24gY29udHJvbCBzeXN0ZW0geW91J3JlIGFscmVhZHkgY292ZXJlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48b3B0aW9uPlJ1bm5pbmcgd2luZW1ha2VyPC9vcHRpb24+PC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGVuIHlvdSdsbCBydW4gd2luZW1ha2VyLiBIZXJlIGFyZSB0aGUgb3B0aW9ucyB5b3Ugd2lsbCBtb3N0IAorICAgICAgICAgICAgICBsaWtlbHkgd2FudCB0byB1c2UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1sb3dlci11cHBlcmNhc2U8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPHRlcm0+PG9wdGlvbj4tLWxvd2VyLWFsbDwvb3B0aW9uPjwvdGVybT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBzcGVjaWZ5IGhvdyB0byBkZWFsIHdpdGggZmlsZXMsIGFuZCAKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMsIHRoYXQgaGF2ZSBhbiAnaW5jb3JyZWN0JyBjYXNlLiAKKyAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj4tLWxvd2VyLXVwcGVyY2FzZTwvb3B0aW9uPiBzcGVjaWZpZXMgdGhleSBzaG91bGQgCisgICAgICAgICAgICAgICAgICAgIG9ubHkgYmUgcmVuYW1lZCBpZiB0aGVpciBuYW1lIGlzIGFsbCB1cHBlcmNhc2UuIFNvIGZpbGVzIAorICAgICAgICAgICAgICAgICAgICB0aGF0IGhhdmUgYSBtaXhlZCBjYXNlLCBsaWtlICdIZWxsby5jJyB3b3VsZCBub3QgYmUgCisgICAgICAgICAgICAgICAgICAgIHJlbmFtZWQuIDxvcHRpb24+LS1sb3dlci1hbGw8L29wdGlvbj4gd2lsbCByZW5hbWUgYW55IAorICAgICAgICAgICAgICAgICAgICBmaWxlLiBJZiBuZWl0aGVyIGlzIHNwZWNpZmllZCB0aGVuIG5vIGZpbGUgb3IgZGlyZWN0b3J5IAorICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHJlbmFtZWQsIGFsbW9zdC4gQXMgeW91IHdpbGwgc2VlIAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJyZW5hbWluZyI+bGF0ZXI8L2xpbms+IHdpbmVtYWtlciBtYXkgCisgICAgICAgICAgICAgICAgICAgIHN0aWxsIGhhdmUgdG8gcmVuYW1lIHNvbWUgZmlsZXMuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgPHRlcm0+PG9wdGlvbj4tLW5vYmFja3VwPC9vcHRpb24+PC90ZXJtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaW5lbWFrZXIgbm9ybWFsbHkgbWFrZXMgYSBiYWNrdXAgb2YgYWxsIHRoZSBmaWxlcyBpbiB3aGljaCAKKyAgICAgICAgICAgICAgICAgICAgaXQgZG9lcyBtb3JlIHRoYW4gdGhlIHN0YW5kYXJkIERvcyB0byBVbml4IGNvbnZlcnNpb24uIAorICAgICAgICAgICAgICAgICAgICBCdXQgaWYgeW91IGFscmVhZHkgaGF2ZSAoaGFuZHkpIGNvcGllcyBvZiB0aGVzZSBmaWxlcyAKKyAgICAgICAgICAgICAgICAgICAgZWxzZXdoZXJlIHlvdSBtYXkgbm90IG5lZWQgdGhlc2Ugc28geW91IHNob3VsZCB1c2UgdGhpcyAKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1kbGw8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPHRlcm0+PG9wdGlvbj4tLWNvbnNvbGU8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZXNlIG9wdGlvbiBsZXRzIHdpbmVtYWtlciBrbm93IHdoYXQga2luZCBvZiB0YXJnZXQgeW91IGFyZSAKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcuIElmIHlvdSBoYXZlIHRoZSB3aW5kb3dzIGxpYnJhcnkgaW4geW91ciBzb3VyY2UgCisgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeSB0aGVuIHlvdSBzaG91bGQgbm90IG5lZWQgdG8gc3BlY2lmeSAKKyAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj4tLWRsbDwvb3B0aW9uPi4gQnV0IGlmIHlvdSBoYXZlIGNvbnNvbGUgZXhlY3V0YWJsZXMgCisgICAgICAgICAgICAgICAgICAgIHRoZW4geW91IHdpbGwgbmVlZCB0byB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1tZmM8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIHRlbGxzIHdpbmVtYWtlciB0aGF0IHlvdSBhcmUgYnVpbGRpbmcgYW4gTUZDIAorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9saWJyYXJ5LgorICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx0ZXJtPjxvcHRpb24+LURtYWNyb1s9ZGVmbl08L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPHRlcm0+PG9wdGlvbj4tSWRpcjwvb3B0aW9uPjwvdGVybT4KKyAgICAgICAgICAgICAgICA8dGVybT48b3B0aW9uPi1MZGlyPC9vcHRpb24+PC90ZXJtPgorICAgICAgICAgICAgICAgIDx0ZXJtPjxvcHRpb24+LWlkbGw8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPHRlcm0+PG9wdGlvbj4tbGxpYnJhcnk8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8b3B0aW9uPi1pPC9vcHRpb24+IHNwZWNpZmllcyBhIFdpbmVsaWIgbGlicmFyeSB0byAKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHZpYSB0aGUgPGxpbmsgbGlua2VuZD0ic3BlYy1maWxlIj5zcGVjIGZpbGU8Lz4gCisgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbS4gQ29udHJhc3QgdGhpcyB3aXRoIHRoZSA8b3B0aW9uPi1sPC9vcHRpb24+IAorICAgICAgICAgICAgICAgICAgICB3aGljaCBzcGVjaWZpZXMgYSBVbml4IGxpYnJhcnkgdG8gbGluayB3aXRoLiBUaGUgb3RoZXIgCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgd29yayB0aGUgc2FtZSB3YXkgdGhleSB3b3VsZCB3aXRoIGEgQyAKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIuIEFsbCBhcmUgYXBwbGllZCB0byBhbGwgdGhlIHRhcmdldHMgZm91bmQuIAorICAgICAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgYSBkaXJlY3Rvcnkgd2l0aCBlaXRoZXIgCisgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+LUk8L29wdGlvbj4gb3IgPG9wdGlvbj4tTDwvb3B0aW9uPiwgd2luZW1ha2VyIAorICAgICAgICAgICAgICAgICAgICB3aWxsIHByZWZpeCBhIHJlbGF0aXZlIHBhdGggd2l0aCAKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+JChUT1BESVJFQ1RPUlkpLzwvbGl0ZXJhbD4gc28gdGhhdCBpdCBpcyB2YWxpZCAKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBhbnkgb2YgdGhlIHNvdXJjZSBkaXJlY3Rvcmllcy4gWW91IGNhbiBhbHNvIHVzZSBhIAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgcGF0aCB5b3Vyc2VsZiBpZiB5b3Ugd2lzaCAoYnV0IGRvbid0IAorICAgICAgICAgICAgICAgICAgICBmb3JnZXQgdG8gZXNjYXBlIHRoZSAnJCcpLiBGb3IgaW5zdGFuY2UgeW91IGNvdWxkIHNwZWNpZnkgCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPi1JXCQoV0lORUxJQl9JTkNMVURFX1JPT1QpL21zdmNydDwvbGl0ZXJhbD4uCisgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBTbyB5b3VyIGNvbW1hbmQgbWF5IGZpbmFsbHkgbG9vayBsaWtlOgorICAgICAgICAgICAgICA8bGl0ZXJhbD53aW5lbWFrZXIgLS1sb3dlci11cHBlcmNhc2UgLUlteWxpYi9pbmNsdWRlPC9saXRlcmFsPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtIGlkPSJyZW5hbWluZyI+PG9wdGlvbj5GaWxlIHJlbmFtaW5nPC9vcHRpb24+PC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBXaGVuIHlvdSBleGVjdXRlIHdpbmVtYWtlciBpdCB3aWxsIGZpcnN0IHJlbmFtZSBmaWxlcyB0byBicmluZyAKKyAgICAgICAgICAgICAgdGhlaXIgY2hhcmFjdGVyIGNhc2UgaW4gbGluZSB3aXRoIHlvdXIgZXhwZWN0YXRpb25zIGFuZCBzbyB0aGF0IHRoZXkgY2FuIAorICAgICAgICAgICAgICBiZSBwcm9jZXNzZWQgYnkgdGhlIG1ha2VmaWxlcy4gVGhpcyBsYXRlciBjYXRlZ29yeSBpbXBsaWVzIHRoYXQgCisgICAgICAgICAgICAgIGZpbGVzIHdpdGggYSBub24gbG93ZXJjYXNlIGV4dGVuc2lvbiB3aWxsIGJlIHJlbmFtZWQgc28gdGhhdCB0aGUgCisgICAgICAgICAgICAgIGV4dGVuc2lvbiBpcyBpbiBsb3dlcmNhc2UuIFNvLCBmb3IgaW5zdGFuY2UsIAorICAgICAgICAgICAgICA8ZmlsZW5hbWU+SEVMTE8uQzwvZmlsZW5hbWU+IHdpbGwgYmUgcmVuYW1lZCB0byAKKyAgICAgICAgICAgICAgPGZpbGVuYW1lPkhFTExPLmM8L2ZpbGVuYW1lPi4gQWxzbyBpZiBhIGZpbGUgb3IgZGlyZWN0b3J5IG5hbWUgCisgICAgICAgICAgICAgIGNvbnRhaW5zIGEgc3BhY2Ugb3IgYSBkb2xsYXIsIHRoZW4gdGhpcyAKKyAgICAgICAgICAgICAgY2hhcmFjdGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhbiB1bmRlcnNjb3JlLiBUaGlzIGlzIGJlY2F1c2UgCisgICAgICAgICAgICAgIHRoZXNlIGNoYXJhY3RlcnMgY2F1c2UgcHJvYmxlbXMgd2l0aCBjdXJyZW50IHZlcnNpb25zIG9mIGF1dG9jb25mIAorICAgICAgICAgICAgICAoMi4xMykgYW5kIG1ha2UgKDMuNzkpLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxvcHRpb24+U291cmNlIG1vZGlmaWNhdGlvbnMgYW5kIG1ha2VmaWxlIGdlbmVyYXRpb248L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIHdpbmVtYWtlciB3aWxsIHRoZW4gcHJvY2VlZCB0byBtb2RpZnkgdGhlIHNvdXJjZSBmaWxlcyBzbyB0aGF0IAorICAgICAgICAgICAgICB0aGV5IHdpbGwgY29tcGlsZSBtb3JlIHJlYWRpbHkgd2l0aCBXaW5lbGliLiBBcyBpdCBkb2VzIHNvIGl0IAorICAgICAgICAgICAgICBtYXkgcHJpbnQgd2FybmluZ3Mgd2hlbiBpdCBoYXMgdG8gbWFrZSBhIGd1ZXNzIG9yIGlkZW50aWZpZXMgYSAKKyAgICAgICAgICAgICAgY29uc3RydWN0IHRoYXQgaXQgY2Fubm90IGNvcnJlY3QuIEZpbmFsbHkgaXQgd2lsbCBnZW5lcmF0ZSB0aGUgCisgICAgICAgICAgICAgIGF1dG9jb25mLWJhc2VkIG1ha2VmaWxlcy4gT25jZSBhbGwgdGhpcyBpcyBkb25lIHlvdSBjYW4gcmV2aWV3IAorICAgICAgICAgICAgICB0aGUgY2hhbmdlcyB0aGF0IHdpbmVtYWtlciBkaWQgdG8geW91ciBmaWxlcyBieSB1c2luZyAKKyAgICAgICAgICAgICAgPGNvbW1hbmQ+ZGlmZiAtdXc8L2NvbW1hbmQ+LiBGb3IgaW5zdGFuY2U6IAorICAgICAgICAgICAgICA8Y29tbWFuZD5kaWZmIC11dyBoZWxsby5jLmJhayBoZWxsby5jPC9jb21tYW5kPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxvcHRpb24+UnVubmluZyB0aGUgY29uZmlndXJlIHNjcmlwdDwvb3B0aW9uPjwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgQmVmb3JlIHlvdSBydW4gPGNvbW1hbmQ+bWFrZTwvY29tbWFuZD4geW91IG11c3QgcnVuIHRoZSAKKyAgICAgICAgICAgICAgYXV0b2NvbmYgPGNvbW1hbmQ+Y29uZmlndXJlPC9jb21tYW5kPiBzY3JpcHQuIFRoZSBnb2FsIG9mIHRoaXMgCisgICAgICAgICAgICAgIHN0ZXAgaXMgdG8gYW5hbHl6ZSB5b3VyIHN5c3RlbSBhbmQgZ2VuZXJhdGUgY3VzdG9taXplZCAKKyAgICAgICAgICAgICAgbWFrZWZpbGVzIGZyb20gdGhlIDxmaWxlbmFtZT5NYWtlZmlsZS5pbjwvZmlsZW5hbWU+IGZpbGVzLiBUaGlzIAorICAgICAgICAgICAgICBpcyBhbHNvIHdoZW4geW91IGhhdmUgdG8gdGVsbCB3aGVyZSBXaW5lbGliIHJlc2lkZXMgb24geW91ciAKKyAgICAgICAgICAgICAgc3lzdGVtLiBJZiB3aW5lIGlzIGluc3RhbGxlZCBpbiBhIHNpbmdsZSBkaXJlY3Rvcnkgb3IgeW91IGhhdmUgCisgICAgICAgICAgICAgIHRoZSBXaW5lIHNvdXJjZXMgY29tcGlsZWQgc29tZXdoZXJlIHRoZW4geW91IGNhbiBqdXN0IHJ1biAKKyAgICAgICAgICAgICAgPGNvbW1hbmQ+Li9jb25maWd1cmUgLS13aXRoLXdpbmU9L3Vzci9sb2NhbC9iaW48L2NvbW1hbmQ+IAorICAgICAgICAgICAgICBvciA8Y29tbWFuZD4uL2NvbmZpZ3VyZSAtLXdpdGgtd2luZT1+L3dpbmU8L2NvbW1hbmQ+IAorICAgICAgICAgICAgICByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+PG9wdGlvbj5SdW5uaW5nIG1ha2U8L29wdGlvbj48L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFRoaXMgaXMgYSBwcmV0dHkgc2ltcGxlIHN0ZXA6IGp1c3QgdHlwZSA8Y29tbWFuZD5tYWtlPC9jb21tYW5kPiAKKyAgICAgICAgICAgICAgYW5kIHZvaWxhLCB5b3Ugc2hvdWxkIGhhdmUgYWxsIHlvdXIgZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcy4gCisgICAgICAgICAgICAgIElmIHRoaXMgZGlkIG5vdCB3b3JrIG91dCwgdGhlbiBpdCBtZWFucyB0aGF0IHlvdSB3aWxsIGhhdmUgdG8gCisgICAgICAgICAgICAgIHJlYWQgdGhpcyBndWlkZSBmdXJ0aGVyIHRvOgorICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICByZXZpZXcgdGhlIDxmaWxlbmFtZT5NYWtlZmlsZS5pbjwvZmlsZW5hbWU+IGZpbGVzIHRvIAorICAgICAgICAgICAgICAgICAgICBhZGp1c3QgdGhlIGRlZmF1bHQgY29tcGlsYXRpb24gYW5kIGxpbmsgb3B0aW9ucyBzZXQgYnkgCisgICAgICAgICAgICAgICAgICAgIHdpbmVtYWtlci4gU2VlIHRoZSA8eHJlZiBsaW5rZW5kPSJzb3VyY2UtYW5hbHlzaXMiIAorICAgICAgICAgICAgICAgICAgICBlbmR0ZXJtPSJzb3VyY2UtYW5hbHlzaXMudGl0bGUiPiBzZWN0aW9uIGZvciBzb21lIGhpbnRzLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIGZpeCB0aGUgcG9ydGFiaWxpdHkgaXNzdWVzIGluIHlvdXIgc291cmNlcy4gU2VlIAorICAgICAgICAgICAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJwb3J0YWJpbGl0eS1pc3N1ZXMiIAorICAgICAgICAgICAgICAgICAgICBlbmR0ZXJtPSJwb3J0YWJpbGl0eS1pc3N1ZXMudGl0bGUiPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwb3J0YWJpbGl0eS1pc3N1ZXMiPgorICAgIDx0aXRsZSBpZD0icG9ydGFiaWxpdHktaXNzdWVzLnRpdGxlIj5Qb3J0YWJpbGl0eSBpc3N1ZXM8L3RpdGxlPgorICAgIDxzZWN0MSBpZD0iYW5vbiI+CisgICAgICA8dGl0bGUgaWQ9ImFub24udGl0bGUiPkFub255bW91cyB1bmlvbnMvc3RydWN0czwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgQW5vbnltb3VzIHN0cnVjdHMgYW5kIHVuaW9ucyBzdXBwb3J0IGRlcGVuZHMgaGVhdmlseSBvbiB0aGUgY29tcGlsZXIuIAorICAgICAgICBUaGUgYmVzdCBzdXBwb3J0IGlzIHByb3ZpZGVkIGJ5IGdjYy9nKysgMi45NiBhbmQgbGF0ZXIuIEJ1dCB0aGVzZSAKKyAgICAgICAgdmVyc2lvbnMgb2YgZ2NjIGNvbWUgZnJvbSB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoIHNvIHlvdSBtYXkgd2FudCB0byAKKyAgICAgICAgaG9sZCBvZmYgYmVmb3JlIHVzaW5nIHRoZW0gaW4gcHJvZHVjdGlvbi4gZysrIDIuOTUgc3VwcG9ydHMgYW5vbnltb3VzIAorICAgICAgICB1bmlvbnMgYnV0IG5vdCBhbm9ueW1vdXMgc3RydWN0cyBhbmQgZ2NjIDIuOTUgc3VwcG9ydHMgbmVpdGhlci4gT2xkZXIgCisgICAgICAgIHZlcnNpb25zIG9mIGdjYy9nKysgaGF2ZSBubyBzdXBwb3J0IGZvciBlaXRoZXIuCisgICAgICAgIHNpbmNlIGl0IGlzIGFub255bW91cyB1bmlvbnMgdGhhdCBhcmUgdGhlIG1vc3QgZnJlcXVlbnQgaW4gdGhlIAorICAgICAgICB3aW5kb3dzIGhlYWRlcnMsIHlvdSBzaG91bGQgYXQgbGVhc3QgdHJ5IHRvIHVzZSBnY2MvZysrIDIuOTUuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgQnV0IHlvdSBhcmUgc3R1Y2sgd2l0aCBhIGNvbXBpbGVyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbm9ueW1vdXMgCisgICAgICAgIHN0cnVjdHMvdW5pb25zIGFsbCBpcyBub3QgbG9zdC4gVGhlIFdpbmUgaGVhZGVycyBzaG91bGQgZGV0ZWN0IHRoaXMgCisgICAgICAgIGF1dG9tYXRpY2FsbHkgYW5kIGRlZmluZSA8dmFybmFtZT5OT05BTUVMRVNTVU5JT048L3Zhcm5hbWU+IC8gCisgICAgICAgIDx2YXJuYW1lPk5PTkFNRUxFU1NTVFJVQ1Q8L3Zhcm5hbWU+LiBUaGVuIGFueSBhbm9ueW1vdXMgdW5pb24gd2lsbCAKKyAgICAgICAgYmUgZ2l2ZW4gYSBuYW1lIAorICAgICAgICA8bGl0ZXJhbD51PC9saXRlcmFsPiBvciA8bGl0ZXJhbD51MjwvbGl0ZXJhbD4sIDxsaXRlcmFsPnUzPC9saXRlcmFsPiwgCisgICAgICAgIGV0Yy4gdG8gYXZvaWQgbmFtZSBjbGFzaGVzLiBZb3Ugd2lsbCB0aGVuIGhhdmUgdG8gbW9kaWZ5IHlvdXIgY29kZSB0byAKKyAgICAgICAgaW5jbHVkZSB0aG9zZSBuYW1lcyB3aGVyZSBhcHByb3ByaWF0ZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbmFtZSB0aGF0IFdpbmUgYWRkcyB0byBhbm9ueW1vdXMgdW5pb25zIHNob3VsZCBtYXRjaCB0aGF0IHVzZWQgCisgICAgICAgIGJ5IHRoZSBXaW5kb3dzIGhlYWRlcnMuIFNvIGFsbCB5b3UgaGF2ZSB0byBkbyB0byBjb21waWxlIHlvdXIgCisgICAgICAgIG1vZGlmaWVkIGNvZGUgaW4gV2luZG93cyBpcyB0byBleHBsaWNpdGx5IGRlZmluZSB0aGUgCisgICAgICAgIDx2YXJuYW1lPk5PTkFNRUxFU1NVTklPTjwvdmFybmFtZT4gbWFjcm8uIE5vdGUgdGhhdCBpdCB3b3VsZCBiZSB3aXNlIAorICAgICAgICB0byBhbHNvIGV4cGxpY2l0bHkgZGVmaW5lIHRoaXMgbWFjcm8gb24gaW4geW91ciBVbml4IG1ha2VmaWxlCisgICAgICAgICg8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPikgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSB3aWxsIAorICAgICAgICBjb21waWxlIGV2ZW4gaWYgdGhlIGNvbXBpbGVyIGRvZXMgc3VwcG9ydCBhbm9ueW1vdXMgdW5pb25zLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaW5ncyBhcmUgbm90IGFzIG5pY2Ugd2hlbiBkZWFsaW5nIHdpdGggYW5vbnltb3VzIHN0cnVjdHMuIAorICAgICAgICBVbmZvcnR1bmF0ZWx5IHRoZSBXaW5kb3dzIGhlYWRlcnMgbWFrZSBubyBwcm92aXNpb25zIGZvciBjb21waWxlcnMgCisgICAgICAgIHRoYXQgZG8gbm90IHN1cHBvcnQgYW5vbnltb3VzIHN0cnVjdHMuIFNvIHlvdSB3aWxsIG5lZWQgdG8gYmUgbW9yZSAKKyAgICAgICAgc3VidGxlIHdoZW4gbW9kaWZ5aW5nIHlvdXIgY29kZSBpZiB5b3Ugc3RpbGwgd2FudCBpdCB0byBjb21waWxlIGluIAorICAgICAgICBXaW5kb3dzLiBIZXJlJ3MgYSB3YXkgdG8gZG8gaXQ6CisgICAgICA8L3BhcmE+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICNpZmRlZiBXSU5FTElCCisgICAgICAgICNkZWZpbmUgQU5PTlMgLnMKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBBTk9OUworICAgICAgICAjZW5kaWYKKworICAgICAgICAuIC4gLgorCisgICAgICAgIHsKKyAgICAgICAgICBTWVNURU1fSU5GTyBzaTsKKyAgICAgICAgICBHZXRTeXN0ZW1JbmZvKCZhbXA7c2kpOworICAgICAgICAgIHByaW50ZigiUHJvY2Vzc29yIGFyY2hpdGVjdHVyZT0lZFxuIixzaSBBTk9OUyAud1Byb2Nlc3NvckFyY2hpdGVjdHVyZSk7CisgICAgICAgIH0KKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8cGFyYT4KKyAgICAgICAgWW91IG1heSBwdXQgdGhlIDxsaXRlcmFsPiNkZWZpbmU8L2xpdGVyYWw+IGRpcmVjdGl2ZSBkaXJlY3RseSBpbiB0aGUgCisgICAgICAgIHNvdXJjZSBpZiBvbmx5IGZldyBmaWxlcyBhcmUgaW1wYWN0ZWQuIE90aGVyd2lzZSBpdCdzIHByb2JhYmx5IGJlc3QgCisgICAgICAgIHRvIHB1dCBpdCBpbiBvbmUgb2YgeW91ciBwcm9qZWN0J3Mgd2lkZWx5IHVzZWQgaGVhZGVycy4gCisgICAgICAgIEZvcnR1bmF0ZWx5IHVzYWdlIG9mIGFuIGFub255bW91cyBzdHJ1Y3QgaXMgbXVjaCByYXJlciB0aGFuIHVzYWdlIG9mIAorICAgICAgICBhbiBhbm9ueW1vdXMgdW5pb24gc28gdGhlc2UgbW9kaWZpY2F0aW9ucyBzaG91bGQgbm90IGJlIHRvbyBtdWNoIHdvcmsuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9InVuaWNvZGUiPgorICAgICAgPHRpdGxlIGlkPSJ1bmljb2RlLnRpdGxlIj5Vbmljb2RlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBMImZvbyIgZ2VuZXJhdGVzIDQtYnl0ZSBjaGFycywgCisgICAgICAgIHVzZSBfX1RFWFQgKG9yIF9URVhUPyksIAorICAgICAgICBDIGxpYnJhcnkKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0iQy1saWJyYXJ5Ij4KKyAgICAgIDx0aXRsZSBpZD0iQy1saWJyYXJ5LnRpdGxlIj5DIGxpYnJhcnk8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFdpbmVsaWIgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgb24gQyBsaWJyYXJ5OiB0aGF0IG9mIHlvdXIgY29tcGlsZXIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgdGhyZWUgc29sdXRpb25zOiBuYXRpdmUsIG1peGVkIG9yIG1zdmNydCBleGNlcHQgd2Ugb25seSBoYXZlIG5hdGl2ZSByaWdodCBub3csIAorICAgICAgICB1c2luZyB0aGUgbmF0aXZlIEMgbGlicmFyeSAtPiBkaWZmZXJlbnQgYmVoYXZpb3I6IGZvcGVuLCBPX1RFWFQsIAorICAgICAgICB1bmljb2RlIHN1cHBvcnQsCisgICAgICAgIHJlaW1wbGVtZW50IG1zdmNydAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJpbml0LXByb2JsZW1zIj4KKyAgICAgIDx0aXRsZSBpZD0iaW5pdC1wcm9ibGVtcy50aXRsZSI+SW5pdGlhbGl6YXRpb24gcHJvYmxlbXM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIEluaXRpYWxpemF0aW9uIHByb2JsZW1zIG9jY3VyIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGNhbGxzIHRoZSBXaW4zMiBBUEkgCisgICAgICAgIGJlZm9yZSBXaW5lbGliIGhhcyBiZWVuIGluaXRpYWxpemVkLiBIb3cgY2FuIHRoaXMgaGFwcGVuPworICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFdpbmVsaWIgaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGFwcGxpY2F0aW9uJ3MgPGZ1bmN0aW9uPm1haW48L2Z1bmN0aW9uPiAKKyAgICAgICAgYmVmb3JlIGl0IGNhbGxzIHRoZSByZWd1bGFyIDxmdW5jdGlvbj5XaW5NYWluPC9mdW5jdGlvbj4uIEJ1dCwgaW4gQysrLCAKKyAgICAgICAgdGhlIGNvbnN0cnVjdG9ycyBvZiBzdGF0aWMgY2xhc3MgdmFyaWFibGVzIGFyZSBjYWxsZWQgYmVmb3JlIHRoZSAKKyAgICAgICAgPGZ1bmN0aW9uPm1haW48L2Z1bmN0aW9uPiAoYnkgdGhlIG1vZHVsZSdzIGluaXRpYWxpemVyKS4gU28gaWYgc3VjaCAKKyAgICAgICAgYSBjb25zdHJ1Y3RvciBtYWtlcyBjYWxscyB0byB0aGUgV2luMzIgQVBJLCBXaW5lbGliIHdpbGwgbm90IGJlIAorICAgICAgICBpbml0aWFsaXplZCBhdCB0aGUgdGltZSBvZiB0aGUgY2FsbCBhbmQgeW91IG1heSBnZXQgYSBjcmFzaC4gVGhpcyAKKyAgICAgICAgcHJvYmxlbSBpcyBtdWNoIG1vcmUgZnJlcXVlbnQgaW4gQysrIGJlY2F1c2Ugb2YgdGhlc2UgY2xhc3MgCisgICAgICAgIGNvbnN0cnVjdG9ycyBidXQgY291bGQgYWxzbywgYXQgbGVhc3QgaW4gdGhlb3J5LCBoYXBwZW4gaW4gQyBpZiB5b3UgCisgICAgICAgIHdlcmUgdG8gc3BlY2lmeSBhbiBpbml0aWFsaXplciBtYWtpbmcgY2FsbHMgdG8gV2luZWxpYi4gQnV0IG9mIAorICAgICAgICBjb3Vyc2UsIG5vdyB0aGF0IHlvdSBhcmUgYXdhcmUgb2YgdGhpcyBwcm9ibGVtIHlvdSB3b24ndCBkbyBpdCA6LSkuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgRnVydGhlciBjb21wb3VuZGluZyB0aGUgcHJvYmxlbSBpcyB0aGUgZmFjdCB0aGF0IExpbnV4J3MgKEdOVSdzPykgCisgICAgICAgIGN1cnJlbnQgZHluYW1pYyBsaWJyYXJ5IGxvYWRlciBkb2VzIG5vdCBjYWxsIHRoZSBtb2R1bGUgCisgICAgICAgIGluaXRpYWxpemVycyBpbiB0aGVpciBkZXBlbmRlbmN5IG9yZGVyLiBTbyBldmVuIGlmIFdpbmVsaWIgd2VyZSB0byAKKyAgICAgICAgaGF2ZSBpdHMgb3duIGluaXRpYWxpemVyIHRoZXJlIHdvdWxkIGJlIG5vIGdhcmFudGVlIHRoYXQgaXQgd291bGQgYmUgCisgICAgICAgIGNhbGxlZCBiZWZvcmUgdGhlIGluaXRpYWxpemVyIG9mIHRoZSBsaWJyYXJ5IGNvbnRhaW5pbmcgdGhpcyBzdGF0aWMgCisgICAgICAgIHZhcmlhYmxlLiBGaW5hbGx5IGV2ZW4gaWYgdGhlIHZhcmlhYmxlIGlzIGluIGEgbGlicmFyeSB0aGF0IHlvdXIgCisgICAgICAgIGFwcGxpY2F0aW9uIGxpbmtzIHdpdGgsIHRoYXQgbGlicmFyeSdzIGluaXRpYWxpemVyIG1heSBiZSBjYWxsZWQgCisgICAgICAgIGJlZm9yZSBXaW5lbGliIGhhcyBiZWVuIGluaXRpYWxpemVkLiBPbmUgc3VjaCBsaWJyYXJ5IGlzIHRoZSBNRkMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGN1cnJlbnQgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIGFsbCB0aGUgYXBwbGljYXRpb24ncyBjb2RlIGluIGEgCisgICAgICAgIGxpYnJhcnkgYW5kIHRvIHVzZSBhIHNtYWxsIFdpbmVsaWIgYXBwbGljYXRpb24gdG8gZHluYW1pY2FsbHkgbG9hZCAKKyAgICAgICAgdGhpcyBsaWJyYXJ5LiBUdXMgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGJlY29tZXM6CisgICAgICA8L3BhcmE+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB0aGUgd3JhcHBlciBhcHBsaWNhdGlvbiBzdGFydHMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBpdHMgZW1wdHkgaW5pdGlhbGl6ZXIgaXMgcnVuLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgaXRzIDxmdW5jdGlvbj5tYWluPC9mdW5jdGlvbj4gaXMgcnVuLiBJdHMgZmlyc3QgdGFzayBpcyB0byAKKyAgICAgICAgICAgIGluaXRpYWxpemUgV2luZWxpYi4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGl0IHRoZW4gbG9hZHMgdGhlIGFwcGxpY2F0aW9uJ3MgbWFpbiBsaWJyYXJ5LCBwbHVzIGFsbCBpdHMgCisgICAgICAgICAgICBkZXBlbmRlbnQgbGlicmFyaWVzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgd2hpY2ggdHJpZ2dlcnMgdGhlIGV4ZWN1dGlvbiBvZiBhbGwgdGhlc2UgbGlicmFyaWVzIGluaXRpYWxpemVycyAKKyAgICAgICAgICAgIGluIHNvbWUgdW5rbm93biBvcmRlci4gQnV0IGFsbCBpcyBmaW5lIGJlY2F1c2UgV2luZWxpYiBoYXMgCisgICAgICAgICAgICBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYW55d2F5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgZmluYWxseSB0aGUgbWFpbiBmdW5jdGlvbiBjYWxscyB0aGUgPGZ1bmN0aW9uPldpbk1haW48L2Z1bmN0aW9uPiAKKyAgICAgICAgICAgIG9mIHRoZSBhcHBsaWNhdGlvbidzIGxpYnJhcnkuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBtYXkgc291bmQgY29tcGxleCBieSBXaW5lbWFrZXIgbWFrZXMgaXQgc2ltcGxlLiBKdXN0IHNwZWNpZnkgCisgICAgICAgIDxvcHRpb24+LS13cmFwPC9vcHRpb24+IG9yIDxvcHRpb24+LS1tZmM8L29wdGlvbj4gb24gdGhlIGNvbW1hbmQgbGluZSAKKyAgICAgICAgYW5kIGl0IHdpbGwgYWRhcHQgaXRzIG1ha2VmaWxlcyB0byBidWlsZCB0aGUgd3JhcHBlciBhbmQgdGhlIAorICAgICAgICBhcHBsaWNhdGlvbiBsaWJyYXJ5LgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJjb20tc3VwcG9ydCI+CisgICAgICA8dGl0bGUgaWQ9ImNvbS1zdXBwb3J0LnRpdGxlIj5WQydzIG5hdGl2ZSBDT00gc3VwcG9ydDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgZG9uJ3QgdXNlIGl0LCAKKyAgICAgICAgZ3VpZGUgb24gaG93IHRvIHJlcGxhY2UgaXQgd2l0aCBub3JtYWwgQysrIGNvZGUgKHllcywgaG93Pz8/KToKKyAgICAgICAgZXh0cmFjdGluZyBhIC5oIGFuZCAubGliIGZyb20gYSBDT00gZGxsCisgICAgICAgIENhbiAnLWZuby1ydHRpJyBiZSBvZiBzb21lIHVzZSBvciBldmVuIHJlcXVpcmVkPworICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJTRUgiPgorICAgICAgPHRpdGxlIGlkPSJTRUgudGl0bGUiPlNFSDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgaG93IHRvIG1vZGlmeSB0aGUgc3ludGF4IHNvIHRoYXQgaXQgd29ya3MgYm90aCB3aXRoIGdjYydzIG1hY3JvcyBhbmQgV2luZSdzIG1hY3JvcywKKyAgICAgICAgaXMgaXQgZXZlbiBwb3NzaWJsZT8KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ib3RoZXJzIj4KKyAgICAgIDx0aXRsZSBpZD0ib3RoZXJzLnRpdGxlIj5PdGhlcnM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIC1mcGVybWlzc2l2ZSBhbmQgLWZuby1mb3Itc2NvcGUsIAorICAgICAgICBtYXliZSBvdGhlciBvcHRpb25zCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJ3aW5lbGliLXRvb2xraXQiPgorICAgIDx0aXRsZSBpZD0id2luZWxpYi10b29sa2l0LnRpdGxlIj5UaGUgV2luZWxpYiBkZXZlbG9wbWVudCB0b29sa2l0PC90aXRsZT4KKyAgICA8c2VjdDEgaWQ9IndpbmVtYWtlciI+CisgICAgICA8dGl0bGUgaWQ9IndpbmVtYWtlci50aXRsZSI+V2luZW1ha2VyPC90aXRsZT4KKyAgICAgIDxzZWN0MiBpZD0idmMtcHJvamVjdHMiPgorICAgICAgICA8dGl0bGUgaWQ9InZjLXByb2plY3RzLnRpdGxlIj5TdXBwb3J0IGZvciBWaXN1YWwgQysrIHByb2plY3RzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVW5mb3J0dW5hdGVseSBXaW5lbWFrZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IAorICAgICAgICAgIGZpbGVzLCAuLi55ZXQuIFN1cHBvcnRpbmcgVmlzdWFsIEMrKyBwcm9qZWN0IGZpbGVzICh0aGUgCisgICAgICAgICAgPGZpbGVuYW1lPi5kc3A8L2ZpbGVuYW1lPiBhbmQgc29tZSA8ZmlsZW5hbWU+Lm1hazwvZmlsZW5hbWU+IGZpbGVzIAorICAgICAgICAgIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBWaXN1YWwgQysrKSBpcyBkZWZpbml0ZWx5IG9uIAorICAgICAgICAgIHRoZSBsaXN0IG9mIGltcG9ydGFudCBXaW5lbWFrZXIgaW1wcm92ZW1lbnRzIGFzIGl0IHdpbGwgYWxsb3cgaXQgdG8gCisgICAgICAgICAgcHJvcGVybHkgZGV0ZWN0IHRoZSBkZWZpbmVzIHRvIGJlIHVzZWQsIGFueSBjdXN0b20gaW5jbHVkZSBwYXRoLCB0aGUgCisgICAgICAgICAgbGlzdCBvZiBsaWJyYXJpZXMgdG8gbGluayB3aXRoLCBhbmQgZXhhY3RseSB3aGljaCBzb3VyY2UgZmlsZXMgdG8gdXNlCisgICAgICAgICAgdG8gYnVpbGQgYSBzcGVjaWZpYyB0YXJnZXQuIEFsbCB0aGluZ3MgdGhhdCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIAorICAgICAgICAgIFdpbmVtYWtlciBoYXMgdG8gZ3Vlc3Mgb3IgdGhhdCB5b3UgaGF2ZSB0byB0ZWxsIGl0IGFzIHdpbGwgYmVjb21lIAorICAgICAgICAgIGNsZWFyIGluIHRoZSBuZXh0IHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2hlbiB0aGUgdGltZSBjb21lcyBXaW5lbWFrZXIsIGFuZCBpdHMgYXNzb2NpYXRlZCBidWlsZCBzeXN0ZW0sIHdpbGwgCisgICAgICAgICAgbmVlZCBzb21lIGV4dGVuc2lvbnMgdG8gc3VwcG9ydDoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBwZXIgZmlsZSBkZWZpbmVzIGFuZCBpbmNsdWRlIHBhdGhzLiBWaXN1YWwgQysrIHByb2plY3RzIGFsbG93IAorICAgICAgICAgICAgICB0aGUgdXNlciB0byBzcGVjaWZ5IGNvbXBpbGVyIG9wdGlvbnMgZm9yIGVhY2ggaW5kaXZpZHVhbCBmaWxlIAorICAgICAgICAgICAgICBiZWluZyBjb21waWxlZC4gQnV0IHRoaXMgaXMgcHJvYmFibHkgbm90IHZlcnkgZnJlcXVlbnQgc28gaXQgCisgICAgICAgICAgICAgIG1pZ2h0IG5vdCBiZSB0aGF0IGltcG9ydGFudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBtdWx0aXBsZSBjb25maWd1cmF0aW9ucy4gVmlzdWFsIEMrKyBwcm9qZWN0cyB1c3VhbGx5IGhhdmUgYXQgCisgICAgICAgICAgICAgIGxlYXN0IGEgJ0RlYnVnJyBhbmQgYSAnUmVsZWFzZScgY29uZmlndXJhdGlvbiB3aGljaCBhcmUgY29tcGlsZWQgCisgICAgICAgICAgICAgIHdpdGggZGlmZmVyZW50IGNvbXBpbGVyIG9wdGlvbnMuIEhvdyBleGFjdGx5IHdlIGRlYWwgd2l0aCB0aGVzZSAKKyAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgcmVtYWlucyB0byBiZSBkZXRlcm1pbmVkLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic291cmNlLWFuYWx5c2lzIj4KKyAgICAgICAgPHRpdGxlIGlkPSJzb3VyY2UtYW5hbHlzaXMudGl0bGUiPldpbmVtYWtlcidzIHNvdXJjZSBhbmFseXNpczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFdpbmVtYWtlciBjYW4gZG8gaXRzIHdvcmsgZXZlbiB3aXRob3V0IGEgV2luZG93cyBtYWtlZmlsZSBvciBhIAorICAgICAgICAgIFZpc3VhbCBTdHVkaW8gcHJvamVjdCB0byBzdGFydCBmcm9tIChpdCB3b3VsZCBub3Qga25vdyB3aGF0IHRvIGRvIAorICAgICAgICAgIHdpdGggYSB3aW5kb3dzIG1ha2VmaWxlIGFueXdheSkuIFRoaXMgaW52b2x2ZXMgZG9pbmcgbWFueSBlZHVjYXRlZCAKKyAgICAgICAgICBndWVzc2VzIHdoaWNoIG1heSBiZSB3cm9uZy4gQnV0IGJ5IGFuZCBsYXJnZSBpdCB3b3Jrcy4gVGhlIHB1cnBvc2UgCisgICAgICAgICAgb2YgdGhpcyBzZWN0aW9uIGlzIHRvIGRlc2NyaWJlIGluIG1vcmUgZGV0YWlscyBob3cgd2luZW1ha2VyIAorICAgICAgICAgIHByb2NlZWRzIHNvIHRoYXQgeW91IGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB3aHkgaXQgZ2V0cyB0aGluZ3MgCisgICAgICAgICAgd3JvbmcgYW5kIGhvdyB0byBmaXggaXQvYXZvaWQgaXQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQXQgdGhlIGNvcmUgd2luZW1ha2VyIGRvZXMgYSByZWN1cnNpdmUgdHJhdmVyc2FsIG9mIAorICAgICAgICAgIHlvdXIgc291cmNlIHRyZWUgbG9va2luZyBmb3IgdGFyZ2V0cyAodGhpbmdzIHRvIGJ1aWxkKSBhbmQgc291cmNlIAorICAgICAgICAgIGZpbGVzLiBMZXQncyBzdGFydCB3aXRoIHRoZSB0YXJnZXRzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZpcnN0IGFyZSBleGVjdXRhYmxlcyBhbmQgZGxscy4gRWFjaCB0aW1lIGl0IGZpbmRzIG9uZSBvZiB0aGVzZSBpbiAKKyAgICAgICAgICBhIGRpcmVjdG9yeSwgd2luZW1ha2VyIHB1dHMgaXQgaW4gdGhlIGxpc3Qgb2YgdGhpbmdzIHRvIGJ1aWxkIGFuZCAKKyAgICAgICAgICB3aWxsIGxhdGVyIGdlbmVyYXRlIGEgPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4gZmlsZSBpbiB0aGlzIAorICAgICAgICAgIGRpcmVjdG9yeS4gTm90ZSB0aGF0IFdpbmVtYWtlciBhbHNvIGtub3dzIGFib3V0IHRoZSBjb21tb25seSB1c2VkIAorICAgICAgICAgIDxmaWxlbmFtZT5SZWxlYXNlPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5EZWJ1ZzwvZmlsZW5hbWU+IAorICAgICAgICAgIGRpcmVjdG9yaWVzLCBzbyBpdCB3aWxsIGF0dHJpYnV0ZSB0aGUgZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcyAKKyAgICAgICAgICBmb3VuZCBpbiB0aGVzZSB0byB0aGVpciBwYXJlbnQgZGlyZWN0b3J5LiBXaGVuIGl0IGZpbmRzIGFuIAorICAgICAgICAgIGV4ZWN1dGFibGUgb3IgYSBkbGwgd2luZW1ha2VyIGlzIGhhcHB5IGJlY2F1c2UgdGhlc2UgZ2l2ZSBpdCBtb3JlIAorICAgICAgICAgIGluZm9ybWF0aW9uIHRoYW4gdGhlIG90aGVyIGNhc2VzIGRlc2NyaWJlZCBiZWxvdy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBpdCBkb2VzIG5vdCBmaW5kIGFueSBleGVjdXRhYmxlIG9yIGRsbCB3aW5lbWFrZXIgd2lsbCBsb29rIGZvciAKKyAgICAgICAgICBmaWxlcyB3aXRoIGEgPGZpbGVuYW1lPi5tYWs8L2ZpbGVuYW1lPiBleHRlbnNpb24uIElmIHRoZXkgYXJlIG5vdCAKKyAgICAgICAgICBkaXNndWlzZWQgVmlzdWFsIEMrKyBwcm9qZWN0cyAoYW5kIGN1cnJlbnRseSBldmVuIGlmIHRoZXkgYXJlKSwgCisgICAgICAgICAgd2luZW1ha2VyIHdpbGwgYXNzdW1lIHRoYXQgYSB0YXJnZXQgYnkgdGhhdCBuYW1lIHNob3VsZCBiZSBidWlsdCAKKyAgICAgICAgICBpbiB0aGlzIGRpcmVjdG9yeS4gQnV0IGl0IHdpbGwgbm90IGtub3cgd2hldGhlciB0aGlzIHRhcmdldCBpcyBhbiAKKyAgICAgICAgICBleGVjdXRhYmxlIG9yIGEgbGlicmFyeS4gU28gaXQgd2lsbCBhc3N1bWUgaXQgaXMgb2YgdGhlIGRlZmF1bHQgCisgICAgICAgICAgdHlwZSwgaS5lLiBhIGdyYXBoaWNhbCBhcHBsaWNhdGlvbiwgd2hpY2ggeW91IGNhbiBvdmVycmlkZSBieSB1c2luZyAKKyAgICAgICAgICB0aGUgPG9wdGlvbj4tLWN1aWV4ZTwvb3B0aW9uPiBhbmQgPG9wdGlvbj4tLWRsbDwvb3B0aW9uPiBvcHRpb25zLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZpbmFsbHkgd2luZW1ha2VyIHdpbGwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgZmlsZSBjYWxsZWQgCisgICAgICAgICAgPGZpbGVuYW1lPm1ha2VmaWxlPC9maWxlbmFtZT4uIElmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgYXNzdW1lIAorICAgICAgICAgIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUgdGFyZ2V0IHRvIGJ1aWxkIGZvciB0aGlzIGRpcmVjdG9yeS4gQnV0IAorICAgICAgICAgIGl0IHdpbGwgbm90IGtub3cgdGhlIG5hbWUgb3IgdHlwZSBvZiB0aGlzIHRhcmdldC4gRm9yIHRoZSB0eXBlIGl0IAorICAgICAgICAgIHdpbGwgZG8gYXMgaW4gdGhlIGFib3ZlIGNhc2UuIEFuZCBmb3IgdGhlIG5hbWUgaXQgd2lsbCB1c2UgdGhlIAorICAgICAgICAgIGRpcmVjdG9yeSdzIG5hbWUuIEFjdHVhbGx5LCBpZiB0aGUgZGlyZWN0b3J5IHN0YXJ0cyB3aXRoIAorICAgICAgICAgIDxmaWxlbmFtZT5zcmM8L2ZpbGVuYW1lPiB3aW5lbWFrZXIgd2lsbCB0cnkgdG8gbWFrZSB1c2Ugb2YgdGhlIG5hbWUgCisgICAgICAgICAgb2YgdGhlIHBhcmVudCBkaXJlY3RvcnkgaW5zdGVhZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBPbmNlIHRoZSB0YXJnZXQgbGlzdCBmb3IgYSBkaXJlY3RvcnkgaGFzIGJlZW4gZXN0YWJsaXNoZWQsIAorICAgICAgICAgIHdpbmVtYWtlciB3aWxsIGNoZWNrIHdoZXRoZXIgaXQgY29udGFpbnMgYSBtaXggb2YgZXhlY3V0YWJsZXMgYW5kIAorICAgICAgICAgIGxpYnJhcmllcy4gSWYgaXQgaXMgc28sIHRoZW4gd2luZW1ha2VyIHdpbGwgbWFrZSBpdCBzbyB0aGF0IGVhY2ggCisgICAgICAgICAgZXhlY3V0YWJsZSBpcyBsaW5rZWQgd2l0aCBhbGwgdGhlIGxpYnJhcmllcyBvZiB0aGF0IGRpcmVjdG9yeS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiB0aGUgcHJldmlvdXMgdHdvIHN0ZXBzIGRvbid0IHByb2R1Y2UgdGhlIGV4cGVjdGVkIHJlc3VsdHMgKG9yIAorICAgICAgICAgIHlvdSB0aGluayB0aGV5IHdpbGwgbm90KSB0aGVuIHlvdSBzaG91bGQgcHV0IHdpbmVtYWtlciBpbiAKKyAgICAgICAgICBpbnRlcmFjdGl2ZSBtb2RlIChzZWUgPHhyZWYgbGlua2VuZD0iaW50ZXJhY3RpdmUiIAorICAgICAgICAgIGVuZHRlcm09ImludGVyYWN0aXZlLnRpdGxlIj4pLiBUaGlzIHdpbGwgYWxsb3cgeW91IHRvIHNwZWNpZnkgdGhlIAorICAgICAgICAgIHRhcmdldCBsaXN0IChhbmQgbW9yZSkgZm9yIGVhY2ggZGlyZWN0b3J5LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGVhY2ggZGlyZWN0b3J5IHdpbmVtYWtlciBhbHNvIGxvb2tzIGZvciBzb3VyY2UgZmlsZXM6IEMsIEMrKyAKKyAgICAgICAgICBvciByZXNvdXJjZSBmaWxlcy4gSWYgaXQgYWxzbyBmb3VuZCB0YXJnZXRzIHRvIGJ1aWxkIGluIHRoaXMgCisgICAgICAgICAgZGlyZWN0b3J5IGl0IHdpbGwgdGhlbiB0cnkgdG8gYXNzaWduIGVhY2ggc291cmNlIGZpbGUgdG8gb25lIG9mIAorICAgICAgICAgIHRoZXNlIHRhcmdldHMgYmFzZWQgb24gdGhlaXIgbmFtZXMuIFNvdXJjZSBmaWxlcyB0aGF0IGRvIG5vdCBzZWVtIAorICAgICAgICAgIHRvIG1hdGNoIGFueSBzcGVjaWZpYyB0YXJnZXQgYXJlIHB1dCBpbiBhIGdsb2JhbCBsaXN0IGZvciB0aGlzIAorICAgICAgICAgIGRpcmVjdG9yeSwgc2VlIHRoZSA8bGl0ZXJhbD5FWFRSQV94eHg8L2xpdGVyYWw+IHZhcmlhYmxlcyBpbiB0aGUgCisgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4sIGFuZCBsaW5rZWQgd2l0aCBlYWNoIG9mIHRoZSAKKyAgICAgICAgICB0YXJnZXRzLiBUaGUgYXNzdW1wdGlvbiBoZXJlIGlzIHRoYXQgdGhlc2Ugc291cmNlIGZpbGVzIGNvbnRhaW4gCisgICAgICAgICAgY29tbW9uIGNvZGUgd2hpY2ggaXMgc2hhcmVkIGJ5IGFsbCB0aGUgdGFyZ2V0cy4KKyAgICAgICAgICBJZiBubyB0YXJnZXRzIHdlcmUgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGVzZSBmaWxlcyBhcmUgCisgICAgICAgICAgbG9jYXRlZCwgdGhlbiB0aGV5IGFyZSBhc3NpZ25lZCB0byB0aGUgcGFyZW50J3MgZGlyZWN0b3J5LiBTbyBpZiBhIAorICAgICAgICAgIHRhcmdldCBpcyBmb3VuZCBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeSBpdCB3aWxsIGFsc28gJ2luaGVyaXQnIHRoZSAKKyAgICAgICAgICBzb3VyY2UgZmlsZXMgZm91bmQgaW4gaXRzIHN1YmRpcmVjdG9yaWVzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZpbmFsbHkgd2luZW1ha2VyIGFsc28gbG9va3MgZm9yIG1vcmUgZXhvdGljIGZpbGVzIGxpa2UgCisgICAgICAgICAgPGZpbGVuYW1lPi5oPC9maWxlbmFtZT4gaGVhZGVycywgPGZpbGVuYW1lPi5pbmw8L2ZpbGVuYW1lPiBmaWxlcyAKKyAgICAgICAgICBjb250YWluaW5nIGlubGluZSBmdW5jdGlvbnMgYW5kIGEgZmV3IG90aGVycy4gVGhlc2UgYXJlIG5vdCBwdXQgaW4gCisgICAgICAgICAgdGhlIHJlZ3VsYXIgc291cmNlIGZpbGUgbGlzdHMgc2luY2UgdGhleSBhcmUgbm90IGNvbXBpbGVkIGRpcmVjdGx5LiAKKyAgICAgICAgICBCdXQgd2luZW1ha2VyIHdpbGwgc3RpbGwgcmVtZW1iZXIgdGhlbSBzbyB0aGF0IHRoZXkgYXJlIHByb2Nlc3NlZCAKKyAgICAgICAgICB3aGVuIHRoZSB0aW1lIGNvbWVzIHRvIGZpeCB0aGUgc291cmNlIGZpbGVzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZpeGluZyB0aGUgc291cmNlIGZpbGVzIGlzIGRvbmUgYXMgc29vbiBhcyB3aW5lbWFrZXIgaGFzIGZpbmlzaGVkIAorICAgICAgICAgIGl0cyByZWN1cnNpdmUgZGlyZWN0b3J5IHRyYXZlcnNhbC4gVGhlIHR3byBtYWluIHRhc2tzIGluIHRoaXMgc3RlcCAKKyAgICAgICAgICBhcmUgZml4aW5nIHRoZSBDUkxGIGlzc3VlcyBhbmQgdmVyaWZ5aW5nIHRoZSBjYXNlIG9mIHRoZSBpbmNsdWRlIAorICAgICAgICAgIHN0YXRlbWVudHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2luZW1ha2VyIG1ha2VzIGEgYmFja3VwIG9mIGVhY2ggc291cmNlIGZpbGUgKGluIHN1Y2ggYSB3YXkgdGhhdCAKKyAgICAgICAgICBzeW1ib2xpYyBsaW5rcyBhcmUgcHJlc2VydmVkKSwgdGhlbiByZWFkcyBpdCBmaXhpbmcgdGhlIENSTEYgCisgICAgICAgICAgaXNzdWVzIGFuZCB0aGUgb3RoZXIgaXNzdWVzIGFzIGl0IGdvZXMuIE9uY2UgaXQgaGFzIGZpbmlzaGVkIAorICAgICAgICAgIHdvcmtpbmcgb24gYSBmaWxlIGl0IGNoZWNrcyB3aGV0aGVyIGl0IGhhcyBkb25lIGFueSBub24gCisgICAgICAgICAgQ1JMRi1yZWxhdGVkIG1vZGlmaWNhdGlvbiBhbmQgZGVsZXRlcyB0aGUgYmFja3VwIGZpbGUgaWYgaXQgZGlkIAorICAgICAgICAgIG5vdCAob3IgaWYgeW91IHVzZWQgPG9wdGlvbj4tLW5vYmFja3VwPC9vcHRpb24+KS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDaGVja2luZyB0aGUgY2FzZSBvZiB0aGUgaW5jbHVkZSBzdGF0ZW1lbnRzIChvZiBhbnkgZm9ybSwgCisgICAgICAgICAgaW5jbHVkaW5nIGZpbGVzIHJlZmVyZW5jZWQgYnkgcmVzb3VyY2UgZmlsZXMpLCBpcyBkb25lIGluIHRoZSAKKyAgICAgICAgICBjb250ZXh0IG9mIHRoYXQgc291cmNlIGZpbGUncyBwcm9qZWN0LiBUaGlzIHdheSB3aW5lbWFrZXIgY2FuIHVzZSAKKyAgICAgICAgICB0aGUgcHJvcGVyIGluY2x1ZGUgcGF0aCB3aGVuIGxvb2tpbmcgZm9yIHRoZSBmaWxlIHRoYXQgaXMgaW5jbHVkZWQuIAorICAgICAgICAgIElmIHdpbmVtYWtlciBmYWlscyB0byBmaW5kIGEgZmlsZSBpbiBhbnkgb2YgdGhlIGRpcmVjdG9yaWVzIG9mIHRoZSAKKyAgICAgICAgICBpbmNsdWRlIHBhdGgsIGl0IHdpbGwgcmVuYW1lIGl0IHRvIGxvd2VyY2FzZSBvbiB0aGUgYmFzaXMgdGhhdCBpdCAKKyAgICAgICAgICBpcyBtb3N0IGxpa2VseSBhIHN5c3RlbSBoZWFkZXIgYW5kIHRoYXQgYWxsIHN5c3RlbSBoZWFkZXJzIG5hbWVzIAorICAgICAgICAgIGFyZSBsb3dlcmNhc2UgKHRoaXMgY2FuIGJlIG92ZXJyaWRlbiBieSB1c2luZyAKKyAgICAgICAgICA8b3B0aW9uPi0tbm9sb3dlci1pbmNsdWRlPC9vcHRpb24+KS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBGaW5hbGx5IHdpbmVtYWtlciBnZW5lcmF0ZXMgdGhlIDxmaWxlbmFtZT5NYWtlZmlsZS5pbjwvZmlsZW5hbWU+IAorICAgICAgICAgIGZpbGVzIGFuZCBvdGhlciBzdXBwb3J0IGZpbGVzICh3cmFwcGVyIGZpbGVzLCBzcGVjIGZpbGVzLCAKKyAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlLmluPC9maWxlbmFtZT4sIAorICAgICAgICAgIDxmaWxlbmFtZT5NYWtlLnJ1bGVzLmluPC9maWxlbmFtZT4pLiBGcm9tIHRoZSBhYm92ZSBkZXNjcmlwdGlvbiAKKyAgICAgICAgICB5b3UgY2FuIGd1ZXNzIGF0IHRoZSBpdGVtcyB0aGF0IHdpbmVtYWtlciBtYXkgZ2V0IHdyb25nIGluIAorICAgICAgICAgIHRoaXMgcGhhc2U6IG1hY3JvIGRlZmluaXRpb25zLCBpbmNsdWRlIHBhdGgsIGxpYnJhcnkgcGF0aCwgCisgICAgICAgICAgbGlzdCBvZiBsaWJyYXJpZXMgdG8gaW1wb3J0LiBZb3UgY2FuIGRlYWwgd2l0aCB0aGVzZSBpc3N1ZXMgYnkgCisgICAgICAgICAgdXNpbmcgd2luZW1ha2VyJ3MgPG9wdGlvbj4tRDwvb3B0aW9uPiwgPG9wdGlvbj4tSTwvb3B0aW9uPiwgCisgICAgICAgICAgPG9wdGlvbj4tTDwvb3B0aW9uPiBhbmQgPG9wdGlvbj4taTwvb3B0aW9uPiBvcHRpb25zIGlmIHRoZXkgYXJlIAorICAgICAgICAgIGhvbW9nZW5lb3VzIGVub3VnaCBiZXR3ZWVuIGFsbCB5b3VyIHRhcmdldHMuIE90aGVyd2lzZSB5b3UgbWF5IAorICAgICAgICAgIHdhbnQgdG8gdXNlIHdpbmVtYWtlcidzIDxsaW5rIGxpbmtlbmQ9ImludGVyYWN0aXZlIj5pbnRlcmFjdGl2ZSAKKyAgICAgICAgICBtb2RlPC9saW5rPiBzbyB0aGF0IHlvdSBjYW4gc3BlY2lmeSBkaWZmZXJlbnQgc2V0dGluZ3MgZm9yIGVhY2ggCisgICAgICAgICAgcHJvamVjdCAvIHRhcmdldC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBGb3IgaW5zdGFuY2UsIG9uZSBvZiB0aGUgcHJvYmxlbXMgeW91IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIGlzIAorICAgICAgICAgIHRoYXQgb2YgdGhlIDx2YXJuYW1lPlNUUklDVDwvdmFybmFtZT4gbWFjcm8uIFNvbWUgcHJvZ3JhbXMgd2lsbCAKKyAgICAgICAgICBub3QgY29tcGlsZSBpZiA8dmFybmFtZT5TVFJJQ1Q8L3Zhcm5hbWU+IGlzIG5vdCB0dXJuZWQgb24sIGFuZCAKKyAgICAgICAgICBvdGhlcnMgd2lsbCBub3QgY29tcGlsZSBpZiBpdCBpcy4gRm9ydHVuYXRlbHkgYWxsIHRoZSBmaWxlcyBpbiBhIAorICAgICAgICAgIGdpdmVuIHNvdXJjZSB0cmVlIHVzZSB0aGUgc2FtZSBzZXR0aW5nIHNvIHRoYXQgYWxsIHlvdSBoYXZlIHRvIGRvIAorICAgICAgICAgIGlzIGFkZCA8bGl0ZXJhbD4tRFNUUklDVDwvbGl0ZXJhbD4gb24gd2luZW1ha2VyJ3MgY29tbWFuZCBsaW5lIAorICAgICAgICAgIG9yIGluIHRoZSA8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPiBmaWxlKHMpLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZpbmFsbHkgdGhlIG1vc3QgbGlrZWx5IHJlYXNvbnMgZm9yIG1pc3Npbmcgb3IgZHVwbGljYXRlIHN5bWJvbHMgCisgICAgICAgICAgYXJlOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFRoZSB0YXJnZXQgaXMgbm90IGJlaW5nIGxpbmtlZCB3aXRoIHRoZSByaWdodCBzZXQgb2YgbGlicmFyaWVzLiAgCisgICAgICAgICAgICAgIFlvdSBjYW4gYXZvaWQgdGhpcyBieSB1c2luZyB3aW5lbWFrZXIncyA8b3B0aW9uPi1MPC9vcHRpb24+IGFuZCAKKyAgICAgICAgICAgICAgPG9wdGlvbj4taTwvb3B0aW9uPiBvcHRpb25zIG9yIGFkZGluZyB0aGVzZSBsaWJyYXJpZXMgdG8gdGhlIAorICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIE1heWJlIHlvdSBoYXZlIG11bHRpcGxlIHRhcmdldHMgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IGFuZCAKKyAgICAgICAgICAgICAgd2luZW1ha2VyIGd1ZXNzZWQgd3Jvbmcgd2hlbiB0cnlpbmcgdG8gbWF0Y2ggdGhlIHNvdXJjZSBmaWxlcyAKKyAgICAgICAgICAgICAgd2l0aCB0aGUgdGFyZ2V0cy4gVGhlIG9ubHkgd2F5IHRvIGZpeCB0aGlzIGtpbmQgb2YgcHJvYmxlbSBpcyAKKyAgICAgICAgICAgICAgdG8gZWRpdCB0aGUgPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4gZmlsZSBtYW51YWxseS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBXaW5lbWFrZXIgYXNzdW1lcyB5b3UgaGF2ZSBvcmdhbml6ZWQgeW91ciBzb3VyY2UgZmlsZXMgCisgICAgICAgICAgICAgIGhpZXJhcmNoaWNhbGx5LiBJZiBhIHRhcmdldCB1c2VzIHNvdXJjZSBmaWxlcyB0aGF0IGFyZSBpbiBhIAorICAgICAgICAgICAgICBzaWJsaW5nIGRpcmVjdG9yeSwgZS5nLiBpZiB5b3UgbGluayB3aXRoIAorICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li4vaGVsbG8vd29ybGQubzwvZmlsZW5hbWU+IHRoZW4geW91IHdpbGwgZ2V0IG1pc3NpbmcgCisgICAgICAgICAgICAgIHN5bWJvbHMuIEFnYWluIHRoZSBvbmx5IHNvbHV0aW9uIGlzIHRvIG1hbnVhbGx5IGVkaXQgdGhlIAorICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0iaW50ZXJhY3RpdmUiPgorICAgICAgICA8dGl0bGUgaWQ9ImludGVyYWN0aXZlLnRpdGxlIj5UaGUgaW50ZXJhY3RpdmUgbW9kZTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIHdoYXQgaXMgaXQsIAorICAgICAgICAgIHdoZW4gdG8gdXNlIGl0LAorICAgICAgICAgIGhvdyB0byB1c2UgaXQKKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0iTWFrZWZpbGUuaW4iPgorICAgICAgICA8dGl0bGUgaWQ9Ik1ha2VmaWxlLmluLnRpdGxlIj5UaGUgTWFrZWZpbGUuaW4gZmlsZXM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4gaXMgeW91ciBtYWtlZmlsZS4gTW9yZSAKKyAgICAgICAgICBwcmVjaXNlbHkgaXQgaXMgdGhlIHRlbXBsYXRlIGZyb20gd2hpY2ggdGhlIGFjdHVhbCBtYWtlZmlsZSB3aWxsIAorICAgICAgICAgIGJlIGdlbmVyYXRlZCBieSB0aGUgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IHNjcmlwdC4gSXQgYWxzbyAKKyAgICAgICAgICByZWxpZXMgb24gdGhlIDxmaWxlbmFtZT5NYWtlLnJ1bGVzPC9maWxlbmFtZT4gZmlsZSBmb3IgbW9zdCBvZiAKKyAgICAgICAgICB0aGUgYWN0dWFsIGxvZ2ljLiBUaGlzIHdheSBpdCBvbmx5IGNvbnRhaW5zIGEgcmVsYXRpdmVseSBzaW1wbGUgCisgICAgICAgICAgZGVzY3JpcHRpb24gb2Ygd2hhdCBuZWVkcyB0byBiZSBidWlsdCwgbm90IHRoZSBjb21wbGV4IGxvZ2ljIG9mIAorICAgICAgICAgIGhvdyB0aGluZ3MgYXJlIGFjdHVhbGx5IGJ1aWx0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNvIHRoaXMgaXMgdGhlIGZpbGUgdG8gbW9kaWZ5IGlmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGluZ3MuIAorICAgICAgICAgIEhlcmUncyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGl0cyBjb250ZW50OgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyMjIyBHZW5lcmljIGF1dG9jb25mIHZhcmlhYmxlcworCitUT1BTUkNESVIgICAgICAgICAgICAgPSBAdG9wX3NyY2RpckAKK1RPUE9CSkRJUiAgICAgICAgICAgICA9IC4KK1NSQ0RJUiAgICAgICAgICAgICAgICA9IEBzcmNkaXJACitWUEFUSCAgICAgICAgICAgICAgICAgPSBAc3JjZGlyQAorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgYWJvdmUgaXMgcGFydCBvZiB0aGUgc3RhbmRhcmQgYXV0b2NvbmYgYm9pbGVyLXBsYXRlLiBUaGVzZSAKKyAgICAgICAgICB2YXJpYWJsZXMgbWFrZSBpdCBwb3NzaWJsZSB0byBoYXZlIHBlci1hcmNoaXRlY3R1cmUgZGlyZWN0b3JpZXMgZm9yIAorICAgICAgICAgIGNvbXBpbGVkIGZpbGVzIGFuZCBvdGhlciBzaW1pbGFyIGdvb2RpZXMgKEJ1dCBub3RlIHRoYXQgdGhpcyBraW5kIAorICAgICAgICAgIG9mIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdCBiZWVuIHRlc3RlZCB3aXRoIHdpbmVtYWtlciBnZW5lcmF0ZWQgCisgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4gZmlsZXMgeWV0KS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitTVUJESVJTICAgICAgICAgICAgICAgPQorRExMUyAgICAgICAgICAgICAgICAgID0KK0VYRVMgICAgICAgICAgICAgICAgICA9IGhlbGxvCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgaXMgd2hlcmUgdGhlIHRhcmdldHMgZm9yIHRoaXMgZGlyZWN0b3J5IGFyZSBsaXN0ZWQuIFRoZSBuYW1lcyAKKyAgICAgICAgICBhcmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnkuIDx2YXJuYW1lPlNVQkRJUlM8L3Zhcm5hbWU+IGlzIHVzdWFsbHkgCisgICAgICAgICAgb25seSBwcmVzZW50IGluIHRoZSB0b3AtbGV2ZWwgbWFrZWZpbGUuIEZvciBsaWJyYXJpZXMgeW91IHNob3VsZCAKKyAgICAgICAgICBwdXQgdGhlIGZ1bGwgVW5peCBuYW1lLCBlLmcuIDxsaXRlcmFsPmxpYmZvby5zbzwvbGl0ZXJhbD4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorIyMjIEdsb2JhbCBzZXR0aW5ncworCitERUZJTkVTICAgICAgICAgICAgICAgPSAtRFNUUklDVAorSU5DTFVERV9QQVRIICAgICAgICAgID0KK0xJQlJBUllfUEFUSCAgICAgICAgICA9CitMSUJSQVJJRVMgICAgICAgICAgICAgPQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGdsb2JhbCBjb21waWxhdGlvbiBzZXR0aW5nczogdGhleSBhcHBseSAKKyAgICAgICAgICB0byBhbGwgdGhlIHRhcmdldHMgaW4gdGhpcyBtYWtlZmlsZS4gVGhlIDx2YXJuYW1lPkxJQlJBUklFUzwvdmFybmFtZT4gCisgICAgICAgICAgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgVW5peCBsaWJyYXJpZXMgdG8gbGluayB3aXRoLiAKKyAgICAgICAgICBOb3RlIHRoYXQgeW91IHdvdWxkIG5vcm1hbGx5IG5vdCBzcGVjaWZ5IFdpbmVsaWIgbGlicmFyaWVzIHRoZXJlLiBUbyAKKyAgICAgICAgICBsaW5rIHdpdGggYSBXaW5lbGliIGxpYnJhcnksIG9uZSB1c2VzIHRoZSAnaW1wb3J0JyBzdGF0ZW1lbnQgb2YgdGhlIAorICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InNwZWMtZmlsZSI+c3BlYyBmaWxlczwvbGluaz4uIFRoZSBleGNlcHRpb24gaXMgd2hlbiB5b3UgCisgICAgICAgICAgaGF2ZSBub3QgZXhwbGljaXRseSBleHBvcnRlZCB0aGUgZnVuY3Rpb25zIG9mIGEgV2luZWxpYiBsaWJyYXJ5LiBPbmUgCisgICAgICAgICAgbGlicmFyeSB5b3UgYXJlIGxpa2VseSB0byBmaW5kIGhlcmUgaXMgPGxpdGVyYWw+bWZjPC9saXRlcmFsPiAobm90ZSwgCisgICAgICAgICAgdGhlICctbCcgaXMgb21pdHRlZCkuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIG90aGVyIHZhcmlhYmxlIAorICAgICAgICAgIG5hbWVzIHNob3VsZCBiZSBzZWxmLWV4cGxhbmF0b3J5LiBZb3UgY2FuIGFsc28gdXNlIHRocmVlIGFkZGl0aW9uYWwgCisgICAgICAgICAgdmFyaWFibGVzIHRoYXQgYXJlIHVzdWFsbHkgbm90IHByZXNlbnQgaW4gdGhlIGZpbGU6IAorICAgICAgICAgIDx2YXJuYW1lPkNFWFRSQTwvdmFybmFtZT4sIDx2YXJuYW1lPkNYWEVYVFJBPC92YXJuYW1lPiBhbmQgCisgICAgICAgICAgPHZhcm5hbWU+V1JDRVhUUkE8L3Zhcm5hbWU+IHdoaWNoIGFsbG93IHlvdSB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgCisgICAgICAgICAgZmxhZ3MgZm9yLCByZXNwZWN0aXZlbHksIHRoZSBDIGNvbXBpbGVyLCB0aGUgQysrIGNvbXBpbGVyIGFuZCB0aGUgCisgICAgICAgICAgcmVzb3VyY2UgY29tcGlsZXIuIEZpbmFsbHkgbm90ZSB0aGF0IGFsbCB0aGVzZSB2YXJpYWJsZSBjb250YWluIAorICAgICAgICAgIHRoZSBvcHRpb24ncyBuYW1lIGV4Y2VwdCA8dmFybmFtZT5JTVBPUlRTPC92YXJuYW1lPi4gU28geW91IHNob3VsZCAKKyAgICAgICAgICBwdXQgPGxpdGVyYWw+LURTVFJJQ1Q8L2xpdGVyYWw+IGluIDx2YXJuYW1lPkRFRklORVM8L3Zhcm5hbWU+IGJ1dCAKKyAgICAgICAgICA8bGl0ZXJhbD53aW5tbTwvbGl0ZXJhbD4gaW4gPHZhcm5hbWU+SU1QT1JUUzwvdmFybmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlbiBjb21lIG9uZSBzZWN0aW9uIHBlciB0YXJnZXQsIGVhY2ggZGVzY3JpYmluZyB0aGUgdmFyaW91cyAKKyAgICAgICAgICBjb21wb25lbnRzIHRoYXQgdGFyZ2V0IGlzIG1hZGUgb2YuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorIyMjIGhlbGxvIHNvdXJjZXMgYW5kIHNldHRpbmdzCisKK2hlbGxvX0NfU1JDUyAgICAgICAgICA9IGhlbGxvLmMKK2hlbGxvX0NYWF9TUkNTICAgICAgICA9CitoZWxsb19SQ19TUkNTICAgICAgICAgPQoraGVsbG9fU1BFQ19TUkNTICAgICAgID0gaGVsbG8uc3BlYworICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBFYWNoIHNlY3Rpb24gd2lsbCBzdGFydCB3aXRoIGEgY29tbWVudCBpbmRpY2F0aW5nIHRoZSBuYW1lIG9mIHRoZSAKKyAgICAgICAgICB0YXJnZXQuIFRoZW4gY29tZSBhIHNlcmllcyBvZiB2YXJpYWJsZXMgcHJlZml4ZWQgd2l0aCB0aGUgbmFtZSBvZiAKKyAgICAgICAgICB0aGF0IHRhcmdldC4gTm90ZSB0aGF0IHRoZSBuYW1lIG9mIHRoZSBwcmVmaXggbWF5IGJlIHNsaWdodGx5IAorICAgICAgICAgIGRpZmZlcmVudCBmcm9tIHRoYXQgb2YgdGhlIHRhcmdldCBiZWNhdXNlIG9mIHJlc3RyaWN0aW9ucyBvbiB0aGUgCisgICAgICAgICAgdmFyaWFibGUgbmFtZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGFib3ZlIHZhcmlhYmxlcyBsaXN0IHRoZSBzb3VyY2VzIHRoYXQgYXJlIHVzZWQgdG9nZW5lcmF0ZSB0aGUgCisgICAgICAgICAgdGFyZ2V0LiBOb3RlIHRoYXQgdGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHJlc291cmNlIGZpbGUgaW4gCisgICAgICAgICAgPHZhcm5hbWU+UkNfU1JDUzwvdmFybmFtZT4sIGFuZCB0aGF0IDx2YXJuYW1lPlNQRUNfU1JDUzwvdmFybmFtZT4gCisgICAgICAgICAgd2lsbCBhbHdheXMgY29udGFpbiBhIHNpbmdsZSBzcGVjIGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgoraGVsbG9fTElCUkFSWV9QQVRIICAgID0KK2hlbGxvX0xJQlJBUklFUyAgICAgICA9CitoZWxsb19ERVBFTkRTICAgICAgICAgPQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgYWJvdmUgdmFyaWFibGVzIHNwZWNpZnkgaG93IHRvIGxpbmsgdGhlIHRhcmdldC4gTm90ZSB0aGF0IHRoZXkgCisgICAgICAgICAgYWRkIHRvIHRoZSBnbG9iYWwgc2V0dGluZ3Mgd2Ugc2F3IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBmaWxlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDx2YXJuYW1lPkRFUEVORFM8L3Zhcm5hbWU+LCB3aGVuIHByZXNlbnQsIHNwZWNpZmllcyBhIGxpc3Qgb2Ygb3RoZXIgCisgICAgICAgICAgdGFyZ2V0cyB0aGF0IHRoaXMgdGFyZ2V0IGRlcGVuZHMgb24uIFdpbmVtYWtlciB3aWxsIGF1dG9tYXRpY2FsbHkgCisgICAgICAgICAgZmlsbCB0aGlzIGZpZWxkLCBhbmQgdGhlIDx2YXJuYW1lPkxJQlJBUklFUzwvdmFybmFtZT4gZmllbGQsIHdoZW4gYW4gCisgICAgICAgICAgZXhlY3V0YWJsZSBhbmQgYSBsaWJyYXJ5IGFyZSBidWlsdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIHJlYXNvbiB3aHkgd2luZW1ha2VyIGFsc28gbGlua3Mgd2l0aCBsaWJyYXJpZXMgaW4gdGhlIFVuaXggc2Vuc2UgCisgICAgICAgICAgaW4gdGhlIGNhc2UgYWJvdmUgaXMgYmVjYXVzZSBmdW5jdGlvbnMgd2lsbCBub3QgYmUgcHJvcGVybHkgZXhwb3J0ZWQuIAorICAgICAgICAgIE9uY2UgeW91IGhhdmUgZXhwb3J0ZWQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGxpYnJhcnkncyBzcGVjIGZpbGUgCisgICAgICAgICAgeW91IHNob3VsZCByZW1vdmUgdGhlbSBmcm9tIHRoZSA8dmFybmFtZT5MSUJSQVJJRVM8L3Zhcm5hbWU+IGZpZWxkLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KK2hlbGxvX09CSlMgICAgICAgICAgICA9ICQoaGVsbG9fQ19TUkNTOi5jPS5vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAkKGhlbGxvX0NYWF9TUkNTOi5jcHA9Lm8pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICQoRVhUUkFfT0JKUykKKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGFib3ZlIGp1c3QgYnVpbGRzIGEgbGlzdCBvZiBhbGwgdGhlIG9iamVjdCBmaWxlcyB0aGF0IAorICAgICAgICAgIGNvcnJlc3BvbmQgdG8gdGhpcyB0YXJnZXQuIFRoaXMgbGlzdCBpcyBsYXRlciB1c2VkIGZvciB0aGUgbGluayAKKyAgICAgICAgICBjb21tYW5kLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyMjIyBHbG9iYWwgc291cmNlIGxpc3RzCisKK0NfU1JDUyAgICAgICAgICAgICAgICA9ICQoaGVsbG9fQ19TUkNTKQorQ1hYX1NSQ1MgICAgICAgICAgICAgID0gJChoZWxsb19DWFhfU1JDUykKK1JDX1NSQ1MgICAgICAgICAgICAgICA9ICQoaGVsbG9fUkNfU1JDUykKK1NQRUNfU1JDUyAgICAgICAgICAgICA9ICQoaGVsbG9fU1BFQ19TUkNTKQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIHNlY3Rpb24gYnVpbGRzICdzdW1tYXJ5JyBsaXN0cyBvZiBzb3VyY2UgZmlsZXMuIFRoZXNlIGxpc3RzIGFyZSAKKyAgICAgICAgICB1c2VkIGJ5IHRoZSA8ZmlsZW5hbWU+TWFrZS5ydWxlczwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorIyMjIEdlbmVyaWMgYXV0b2NvbmYgdGFyZ2V0cworCithbGw6ICQoRExMUykgJChFWEVTOiU9JS5zbykKKworQE1BS0VfUlVMRVNACisKK2luc3RhbGw6OgorICAgICAgICBmb3IgaSBpbiAkKEVYRVMpOyBkbyAkKElOU1RBTExfUFJPR1JBTSkgJCRpICQoYmluZGlyKTsgZG9uZQorICAgICAgICBmb3IgaSBpbiAkKEVYRVM6JT0lLnNvKSAkKERMTFMpOyBkbyAkKElOU1RBTExfTElCUkFSWSkgJCRpICQobGliZGlyKTsgZG9uZQorCit1bmluc3RhbGw6OgorICAgICAgICBmb3IgaSBpbiAkKEVYRVMpOyBkbyAkKFJNKSAkKGJpbmRpcikvJCRpO2RvbmUKKyAgICAgICAgZm9yIGkgaW4gJChFWEVTOiU9JS5zbykgJChETExTKTsgZG8gJChSTSkgJChsaWJkaXIpLyQkaTtkb25lCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBhYm92ZSBmaXJzdCBkZWZpbmVzIHRoZSBkZWZhdWx0IHRhcmdldCBmb3IgdGhpcyBtYWtlZmlsZS4gSGVyZSAKKyAgICAgICAgICBpdCBjb25zaXN0cyBpbiB0cnlpbmcgdG8gYnVpbGQgYWxsIHRoZSB0YXJnZXRzLiBUaGVuIGl0IGluY2x1ZGVzIAorICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+TWFrZS5ydWxlczwvZmlsZW5hbWU+IGZpbGUgd2hpY2ggY29udGFpbnMgdGhlIGJ1aWxkIAorICAgICAgICAgIGxvZ2ljLCBhbmQgcHJvdmlkZXMgYSBmZXcgbW9yZSBzdGFuZGFyZCB0YXJnZXRzIHRvIGluc3RhbGwgLyAKKyAgICAgICAgICB1bmluc3RhbGwgdGhlIHRhcmdldHMuIAorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyMjIyBUYXJnZXQgc3BlY2lmaWMgYnVpbGQgcnVsZXMKKworJChoZWxsb19TUEVDX1NSQ1M6LnNwZWM9LnRtcC5vKTogJChoZWxsb19PQkpTKQorICAgICAgICAkKExEQ09NQklORSkgJChoZWxsb19PQkpTKSAtbyAkQAorICAgICAgICAtJChTVFJJUCkgJChTVFJJUEZMQUdTKSAkQAorCiskKGhlbGxvX1NQRUNfU1JDUzouc3BlYz0uc3BlYy5jKTogJChoZWxsb19TUEVDX1NSQ1M6LnNwZWMpICQoaGVsbG9fU1BFQ19TUkNTOi5zcGVjPS50bXAubykgJChoZWxsb19SQ19TUkNTOi5yYz0ucmVzKQorICAgICAgICAkKFdJTkVCVUlMRCkgLWZQSUMgJChoZWxsb19MSUJSQVJZX1BBVEgpICQoV0lORV9MSUJSQVJZX1BBVEgpIC1zeW0gJChoZWxsb19TUEVDX1NSQ1M6LnNwZWM9LnRtcC5vKSAtbyAkQCAtc3BlYyAkKGhlbGxvX1NQRUNfU1JDUykKKworaGVsbG8uc286ICQoaGVsbG9fU1BFQ19TUkNTOi5zcGVjPS5zcGVjLm8pICQoaGVsbG9fT0JKUykgJChoZWxsb19ERVAKK0VORFMpIAorICAgICAgICAkKExEU0hBUkVEKSAkKExERExMRkxBR1MpIC1vICRAICQoaGVsbG9fT0JKUykgJChoZWxsb19TUEVDX1NSQ1M6LnNwZWM9LnNwZWMubykgJChoZWxsb19MSUJSQVJZX1BBVEgpICQoaGVsbG9fTElCUkFSSUVTOiU9LWwlKSAkKERMTF9MSU5LKSAkKExJQlMpCisgICAgICAgIHRlc3QgLWUgaGVsbG8gfHwgJChMTl9TKSAkKFdJTkUpIGhlbGxvCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZW4gY29tZSBhZGRpdGlvbmFsIGRpcmVjdGl2ZXMgdG8gbGluayB0aGUgZXhlY3V0YWJsZXMgYW5kIAorICAgICAgICAgIGxpYnJhcmllcy4gVGhlc2UgYXJlIHByZXR0eSBtdWNoIHN0YW5kYXJkIGFuZCB5b3Ugc2hvdWxkIG5vdCBuZWVkIAorICAgICAgICAgIHRvIG1vZGlmeSB0aGVtLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyIGlkPSJNYWtlLnJ1bGVzLmluIj4KKyAgICAgICAgPHRpdGxlIGlkPSJNYWtlLnJ1bGVzLmluLnRpdGxlIj5UaGUgTWFrZS5ydWxlcy5pbiBmaWxlPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2hhdCdzIGluIHRoZSBNYWtlLnJ1bGVzLmluLi4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9ImNvbmZpZ3VyZS5pbiI+CisgICAgICAgIDx0aXRsZSBpZD0iY29uZmlndXJlLmluLnRpdGxlIj5UaGUgY29uZmlndXJlLmluIGZpbGU8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaGF0J3MgaW4gdGhlIGNvbmZpZ3VyZS5pbi4uLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJ3cmMiPgorICAgICAgPHRpdGxlIGlkPSJ3cmMudGl0bGUiPkNvbXBpbGluZyByZXNvdXJjZSBmaWxlczogV1JDPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUbyBjb21waWxlIHJlc291cmNlcyB5b3Ugc2hvdWxkIHVzZSB0aGUgV2luZSBSZXNvdXJjZSBDb21waWxlciwgCisgICAgICAgIHdyYyBmb3Igc2hvcnQsIHdoaWNoIHByb2R1Y2VzIGEgYmluYXJ5IDxmaWxlbmFtZT4ucmVzPC9maWxlbmFtZT4gCisgICAgICAgIGZpbGUuIFRoaXMgcmVzb3VyY2UgZmlsZSBpcyB0aGVuIHVzZWQgYnkgd2luZWJ1aWxkIHdoZW4gY29tcGlsaW5nIAorICAgICAgICB0aGUgc3BlYyBmaWxlIChzZWUgPHhyZWYgbGlua2VuZD0ic3BlYy1maWxlIiAKKyAgICAgICAgZW5kdGVybT0ic3BlYy1maWxlLnRpdGxlIj4pLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEFnYWluIHRoZSBtYWtlZmlsZXMgZ2VuZXJhdGVkIGJ5IHdpbmVtYWtlciB0YWtlIGNhcmUgb2YgdGhpcyBmb3IgeW91LiAKKyAgICAgICAgQnV0IGlmIHlvdSB3ZXJlIHRvIHdyaXRlIHlvdXIgb3duIG1ha2VmaWxlIHlvdSB3b3VsZCBwdXQgc29tZXRoaW5nIAorICAgICAgICBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICA8L3BhcmE+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitXUkM9JChXSU5FX0RJUikvdG9vbHMvd3JjL3dyYworCitXSU5FTElCX0ZMQUdTID0gLUkkKFdJTkVfRElSKS9pbmNsdWRlIC1EV0lORUxJQiAtRF9SRUVOVFJBTlQKK1dSQ0ZMQUdTICAgICAgPSAtciAtTAorCisuU1VGRklYRVM6IC5yYyAucmVzCisKKy5yYy5yZXM6CisJJChXUkMpICQoV1JDRkxBR1MpICQoV0lORUxJQl9GTEFHUykgLW8gJEAgJDwKKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlcmUgYXJlIHR3byBpc3N1ZXMgeW91IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIHdpdGggcmVzb3VyY2UgZmlsZXMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZpcnN0IHByb2JsZW0gaXMgd2l0aCB0aGUgQyBsaWJyYXJ5IGhlYWRlcnMuIFdSQyBkb2VzIG5vdCBrbm93IAorICAgICAgICB3aGVyZSB0aGVzZSBoZWFkZXJzIGFyZSBsb2NhdGVkLiBTbyBpZiBhbiBSQyBmaWxlLCBvZiBhIGZpbGUgaXQgCisgICAgICAgIGluY2x1ZGVzLCByZWZlcmVuY2VzIHN1Y2ggYSBoZWFkZXIgeW91IHdpbGwgZ2V0IGEgJ2ZpbGUgbm90IGZvdW5kJyAKKyAgICAgICAgZXJyb3IgZnJvbSB3cmMuIEhlcmUgYXJlIGEgZmV3IHdheXMgdG8gZGVhbCB3aXRoIHRoaXM6CisgICAgICA8L3BhcmE+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgc29sdXRpb24gdHJhZGl0aW9uYWxseSB1c2VkIGJ5IHRoZSBXaW5lbGliIGhlYWRlcnMgaXMgdG8gCisgICAgICAgICAgICBlbmNsb3NlIHRoZSBvZmZlbmRpbmcgaW5jbHVkZSBzdGF0ZW1lbnQgaW4gYW4gCisgICAgICAgICAgICA8bGl0ZXJhbD4jaWZuZGVmIFJDX0lOVk9LRUQ8L2xpdGVyYWw+IHN0YXRlbWVudCB3aGVyZSAKKyAgICAgICAgICAgIDx2YXJuYW1lPlJDX0lOVk9LRUQ8L3Zhcm5hbWU+IGlzIGEgbWFjcm8gbmFtZSB3aGljaCBpcyAKKyAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZGVmaW5lZCBieSB3cmMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbHRlcm5hdGVseSB5b3UgY2FuIGFkZCBvbmUgb3IgbW9yZSA8b3B0aW9uPi1JPC9vcHRpb24+IGRpcmVjdGl2ZSAKKyAgICAgICAgICAgIHRvIHlvdXIgd3JjIGNvbW1hbmQgc28gdGhhdCBpdCBmaW5kcyB5b3Ugc3lzdGVtIGZpbGVzLiBGb3IgCisgICAgICAgICAgICBpbnN0YW5jZSB5b3UgbWF5IGFkZCA8bGl0ZXJhbD4tSS91c3IvaW5jbHVkZSAKKyAgICAgICAgICAgIC1JL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuMi9pbmNsdWRlPC9saXRlcmFsPiB0byBjYXRlciAKKyAgICAgICAgICAgIHRvIGJvdGggQyBhbmQgQysrIGhlYWRlcnMuIEJ1dCB0aGlzIHN1cHBvc2VzIHRoYXQgeW91IGtub3cgd2hlcmUgCisgICAgICAgICAgICB0aGVzZSBoZWFkZXIgZmlsZXMgcmVzaWRlIHdoaWNoIGRlY3JlYXNlcyB0aGUgcG9ydGFiaWxpdHkgb2YgeW91ciAKKyAgICAgICAgICAgIG1ha2VmaWxlcyB0byBvdGhlciBwbGF0Zm9ybXMgKHVubGVzcyB5b3UgYXV0b21hdGljYWxseSBkZXRlY3QgYWxsIAorICAgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBkaXJlY3RvcmllcyBpbiB0aGUgYXV0b2NvbmYgc2NyaXB0KS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPciB5b3UgY291bGQgdXNlIHRoZSBDL0MrKyBjb21waWxlciB0byBwZXJmb3JtIHRoZSBwcmVwcm9jZXNzaW5nLiAKKyAgICAgICAgICAgIFRvIGRvIHNvLCBzaW1wbHkgbW9kaWZ5IHlvdXIgbWFrZWZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorLnJjLnJlczoKKwkkKENDKSAkKENDX09QVFMpIC1EUkNfSU5WT0tFRCAtRSAteCBjICQ8IHwgJChXUkMpIC1OICQoV1JDRkxBR1MpICQoV0lORUxJQl9GTEFHUykgLW8gJEAKKworICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPCEtLSBGSVhNRTogZG9lcyB0aGlzIHN0aWxsIGNhdXNlIHByb2JsZW1zIGZvciB0aGUgbGluZSBudW1iZXJzPyAtLT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHRoZSBoZWFkZXJzIG1heSBjb250YWluIGNvbnN0cnVjdHMgdGhhdCAKKyAgICAgICAgV1JDIGZhaWxzIHRvIHVuZGVyc3RhbmQuIEEgdHlwaWNhbCBleGFtcGxlIGlzIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJuIAorICAgICAgICBhICdjb25zdCcgdHlwZS4gV1JDIGV4cGVjdHMgYSBmdW5jdGlvbiB0byBiZSB0d28gaWRlbnRpZmllcnMgZm9sbG93ZWQgCisgICAgICAgIGJ5IGFuIG9wZW5pbmcgcGFyZW50aGVzaXMuIFdpdGggdGhlIGNvbnN0IHRoaXMgaXMgdGhyZWUgaWRlbnRpZmllcnMgCisgICAgICAgIGZvbGxvd2VkIGJ5IGEgcGFyZW50aGVzaXMgYW5kIHRodXMgV1JDIGlzIGNvbmZ1c2VkIChub3RlOiBXUkMgc2hvdWxkIAorICAgICAgICBpbiBmYWN0IGlnbm9yZSBhbGwgdGhpcyBsaWtlIHRoZSB3aW5kb3dzIHJlc291cmNlIGNvbXBpbGVyIGRvZXMpLiAKKyAgICAgICAgVGhlIGN1cnJlbnQgd29yay1hcm91bmQgaXMgdG8gZW5jbG9zZSBvZmZlbmRpbmcgc3RhdGVtZW50KHMpIGluIGFuIAorICAgICAgICA8bGl0ZXJhbD4jaWZuZGVmIFJDX0lOVk9LRUQ8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJ3bWMiPgorICAgICAgPHRpdGxlIGlkPSJ3bWMudGl0bGUiPkNvbXBpbGluZyBtZXNzYWdlIGZpbGVzOiBXTUM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIGhvdyBkb2VzIG9uZSB1c2UgaXQ/Pz8KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ic3BlYy1maWxlIj4KKyAgICAgIDx0aXRsZSBpZD0ic3BlYy1maWxlLnRpdGxlIj5UaGUgU3BlYyBmaWxlPC90aXRsZT4KKyAgICAgIDxzZWN0MiBpZD0ic3BlYy1pbnRybyI+CisgICAgICAgIDx0aXRsZSBpZD0ic3BlYy1pbnRyby50aXRsZSI+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gV2luZG93cyB0aGUgcHJvZ3JhbSdzIGxpZmUgc3RhcnRzIGVpdGhlciB3aGVuIGl0cyAKKyAgICAgICAgICA8ZnVuY3Rpb24+bWFpbjwvZnVuY3Rpb24+IGlzIGNhbGxlZCwgIGZvciBjb25zb2xlIGFwcGxpY2F0aW9ucywgb3IgCisgICAgICAgICAgd2hlbiBpdHMgPGZ1bmN0aW9uPldpbk1haW48L2Z1bmN0aW9uPiBpcyBjYWxsZWQsIGZvciB3aW5kb3dzIAorICAgICAgICAgIGFwcGxpY2F0aW9ucyBpbiB0aGUgJ3dpbmRvd3MnIHN1YnN5c3RlbS4gT24gVW5peCBpdCBpcyBhbHdheXMgCisgICAgICAgICAgPGZ1bmN0aW9uPm1haW48L2Z1bmN0aW9uPiB0aGF0IGlzIGNhbGxlZC4gRnVydGhlcm1vcmUgaW4gV2luZWxpYiBpdCAKKyAgICAgICAgICBoYXMgc29tZSBzcGVjaWFsIHRhc2tzIHRvIGFjY29tcGxpc2gsIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIFdpbmVsaWIsIAorICAgICAgICAgIHRoYXQgYSBub3JtYWwgPGZ1bmN0aW9uPm1haW48L2Z1bmN0aW9uPiBkb2VzIG5vdCBoYXZlIHRvIGRvLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZ1cnRoZXJtb3JlIHdpbmRvd3MgYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMgY29udGFpbiBzb21lIAorICAgICAgICAgIGluZm9ybWF0aW9uIHdoaWNoIGFyZSBuZWNlc3NhcnkgdG8gbWFrZSBBUElzIHN1Y2ggYXMgCisgICAgICAgICAgPGZ1bmN0aW9uPkdldFByb2NBZGRyZXNzPC9mdW5jdGlvbj4gd29yay4gU28gaXQgaXMgbmVjZXNzYXJ5IHRvIAorICAgICAgICAgIGR1cGxpY2F0ZSB0aGVzZSBkYXRhIHN0cnVjdHVyZXMgaW4gdGhlIFVuaXggd29ybGQgdG8gbWFrZSB0aGVzZSAKKyAgICAgICAgICBzYW1lIEFQSXMgd29yayB3aXRoIFdpbmVsaWIgYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIHNwZWMgZmlsZSBpcyB0aGVyZSB0byBzb2x2ZSB0aGUgc2VtYW50aWMgZ2FwIGRlc2NyaWJlZCBhYm92ZS4gCisgICAgICAgICAgSXQgcHJvdmlkZXMgdGhlIDxmdW5jdGlvbj5tYWluPC9mdW5jdGlvbj4gZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyAKKyAgICAgICAgICBXaW5lbGliIGFuZCBjYWxscyB0aGUgbW9kdWxlJ3MgPGZ1bmN0aW9uPldpbk1haW48L2Z1bmN0aW9uPiAvIAorICAgICAgICAgIDxmdW5jdGlvbj5EbGxNYWluPC9mdW5jdGlvbj4sIGFuZCBpdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCAKKyAgICAgICAgICBlYWNoIEFQSSBleHBvcnRlZCBmcm9tIGEgRGxsIHNvIHRoYXQgdGhlIGFwcHJvcHJpYXRlIHRhYmxlcyBjYW4gYmUgCisgICAgICAgICAgZ2VuZXJhdGVkLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEEgdHlwaWNhbCBzcGVjIGZpbGUgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNjcmVlbj4KK25hbWUgICAgaGVsbG8KK3R5cGUgICAgd2luMzIKK21vZGUgICAgZ3VpZXhlCitpbml0ICAgIFdpbk1haW4KK3JzcmMgICAgcmVzb3VyY2UucmVzCisKK2ltcG9ydCAgd2lubW0uZGxsCisgICAgICAgIDwvc2NyZWVuPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBbmQgaGVyZSBhcmUgdGhlIGVudHJpZXMgeW91IHdpbGwgcHJvYmFibHkgd2FudCB0byBjaGFuZ2U6IAorICAgICAgICA8L3BhcmE+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPm5hbWU8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIFdpbjMyIG1vZHVsZS4gVXN1YWxseSB0aGlzIGlzIHRoZSAKKyAgICAgICAgICAgICAgICBzYW1lIGFzIHRoYXQgb2YgdGhlIGFwcGxpY2F0aW9uIG9yIGxpYnJhcnkgKGJ1dCB3aXRob3V0IHRoZSAKKyAgICAgICAgICAgICAgICAnbGliJyBhbmQgdGhlICcuc28nKS4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+bW9kZTwvdGVybT4KKyAgICAgICAgICAgIDx0ZXJtPmluaXQ8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxsaXRlcmFsPm1vZGU8L2xpdGVyYWw+IGRlZmluZXMgd2hldGhlciB3aGF0IHlvdSBhcmUgCisgICAgICAgICAgICAgICAgYnVpbGRpbmcgaXMgYSBsaWJyYXJ5LCA8bGl0ZXJhbD5kbGw8L2xpdGVyYWw+LCBhIGNvbnNvbGUgCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb24sIDxsaXRlcmFsPmN1aWV4ZTwvbGl0ZXJhbD4gb3IgYSByZWd1bGFyIAorICAgICAgICAgICAgICAgIGdyYXBoaWNhbCBhcHBsaWNhdGlvbiA8bGl0ZXJhbD5ndWlleGU8L2xpdGVyYWw+LiBUaGVuIAorICAgICAgICAgICAgICAgIDxsaXRlcmFsPmluaXQ8L2xpdGVyYWw+IGRlZmluZXMgd2hhdCBpcyB0aGUgZW50cnkgcG9pbnQgb2YgCisgICAgICAgICAgICAgICAgdGhhdCBtb2R1bGUuIEZvciBhIGxpYnJhcnkgdGhpcyBpcyBjdXN0b21hcmlseSBzZXQgdG8gCisgICAgICAgICAgICAgICAgPGxpdGVyYWw+RGxsTWFpbjwvbGl0ZXJhbD4sIGZvciBhIGNvbnNvbGUgYXBwbGljYXRpb24gdGhpcyAKKyAgICAgICAgICAgICAgICBpcyA8bGl0ZXJhbD5tYWluPC9saXRlcmFsPiBhbmQgZm9yIGEgZ3JhcGhpY2FsIGFwcGxpY2F0aW9uIAorICAgICAgICAgICAgICAgIHRoaXMgaXMgPGxpdGVyYWw+V2luTWFpbjwvbGl0ZXJhbD4uCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPmltcG9ydDwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWRkIGFuICdpbXBvcnQnIHN0YXRlbWVudCBmb3IgZWFjaCBsaWJyYXJ5IHRoYXQgdGhpcyAKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGRlcGVuZHMgb24uIElmIHlvdSBkb24ndCwgdGhlc2UgbGlicmFyaWVzIHdpbGwgCisgICAgICAgICAgICAgICAgbm90IGdldCBpbml0aWFsaXplZCBpbiB3aGljaCBjYXNlIHRoZXkgbWF5IHZlcnkgd2VsbCBub3QgCisgICAgICAgICAgICAgICAgd29yayAoZS5nLiB3aW5tbSkuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPnJzcmM8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgaXRlbSBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGNvbXBpbGVkIHJlc291cmNlIGZpbGUgCisgICAgICAgICAgICAgICAgdG8gbGluayB3aXRoIHlvdXIgbW9kdWxlLiBJZiB5b3VyIHJlc291cmNlIGZpbGUgaXMgY2FsbGVkIAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oZWxsby5yYzwvZmlsZW5hbWU+IHRoZW4gdGhlIHdyYyBjb21waWxhdGlvbiBzdGVwCisgICAgICAgICAgICAgICAgKHNlZSA8eHJlZiBsaW5rZW5kPSJ3cmMiIGVuZHRlcm09IndyYy50aXRsZSI+KSB3aWxsIGdlbmVyYXRlIAorICAgICAgICAgICAgICAgIGEgZmlsZSBjYWxsZWQgPGZpbGVuYW1lPmhlbGxvLnJlczwvZmlsZW5hbWU+LiBUaGlzIGlzIHRoZSAKKyAgICAgICAgICAgICAgICBuYW1lIHlvdSBtdXN0IHByb3ZpZGUgaGVyZS4gTm90ZSB0aGF0IGJlY2F1c2Ugb2YgdGhpcyB5b3UgCisgICAgICAgICAgICAgICAgY2Fubm90IGNvbXBpbGUgdGhlIHNwZWMgZmlsZSBiZWZvcmUgeW91IGhhdmUgY29tcGlsZWQgdGhlIAorICAgICAgICAgICAgICAgIHJlc291cmNlIGZpbGUuIFNvIHlvdSBzaG91bGQgcHV0IGEgcnVsZSBsaWtlIHRoZSBmb2xsb3dpbmcgCisgICAgICAgICAgICAgICAgaW4geW91ciBtYWtlZmlsZToKKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitoZWxsby5zcGVjLmM6IGhlbGxvLnJlcworICAgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIHByb2plY3QgZG9lcyBub3QgaGF2ZSBhIHJlc291cmNlIGZpbGUgdGhlbiB5b3UgbXVzdCAKKyAgICAgICAgICAgICAgICBvbWl0IHRoaXMgZW50cnkgYWx0b2dldGhlci4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+QDwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBlbnRyeSBpcyBub3Qgc2hvd24gYWJvdmUgYmVjYXVzZSBpdCBpcyBub3QgYWx3YXlzIAorICAgICAgICAgICAgICAgIG5lY2Vzc2FyeS4gSW4gZmFjdCBpdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBleHBvcnQgZnVuY3Rpb25zIAorICAgICAgICAgICAgICAgIHdoZW4geW91IHBsYW4gdG8gZHluYW1pY2FsbHkgbG9hZCB0aGUgbGlicmFyeSB3aXRoIAorICAgICAgICAgICAgICAgIDxmdW5jdGlvbj5Mb2FkTGlicmFyeTwvZnVuY3Rpb24+IGFuZCB0aGVuIGRvIGEgCisgICAgICAgICAgICAgICAgPGZ1bmN0aW9uPkdldFByb2NBZGRyZXNzPC9mdW5jdGlvbj4gb24gdGhlc2UgZnVuY3Rpb25zLiAKKyAgICAgICAgICAgICAgICBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgaWYgeW91IGp1c3QgcGxhbiBvbiBsaW5raW5nIHdpdGggdGhlIAorICAgICAgICAgICAgICAgIGxpYnJhcnkgYW5kIGNhbGxpbmcgdGhlIGZ1bmN0aW9ucyBub3JtYWxseS4gRm9yIG1vcmUgZGV0YWlscyAKKyAgICAgICAgICAgICAgICBhYm91dCB0aGlzIHNlZTogPHhyZWYgbGlua2VuZD0ic3BlYy1yZWZlcmVuY2UiIAorICAgICAgICAgICAgICAgIGVuZHRlcm09InNwZWMtcmVmZXJlbmNlLnRpdGxlIj4uCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic3BlYy1jb21waWxpbmciPgorICAgICAgICA8dGl0bGUgaWQ9InNwZWMtY29tcGlsaW5nLnRpdGxlIj5Db21waWxpbmcgaXQ8L3RpdGxlPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29tcGlsaW5nIGEgc3BlYyBmaWxlIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gSXQgaXMgZmlyc3QgCisgICAgICAgICAgICBjb252ZXJ0ZWQgaW50byBhIEMgZmlsZSBieSB3aW5lYnVpbGQsIGFuZCB0aGVuIGNvbXBpbGVkIGludG8gYW4gCisgICAgICAgICAgICBvYmplY3QgZmlsZSB1c2luZyB5b3VyIHJlZ3VsYXIgQyBjb21waWxlci4gVGhpcyBpcyBhbGwgdGFrZW4gCisgICAgICAgICAgICBjYXJlIG9mIGJ5IHRoZSB3aW5lbWFrZXIgZ2VuZXJhdGVkIG1ha2VmaWxlcyBvZiBjb3Vyc2UuIEJ1dCAKKyAgICAgICAgICAgIGhlcmUncyB3aGF0IGl0IHdvdWxkIGxpa2UgaWYgeW91IGhhZCB0byBkbyBpdCBieSBoYW5kOgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8c2NyZWVuPgorV0lORUJVSUxEPSQoV0lORV9ESVIpL3Rvb2xzL3dpbmVidWlsZAorCisuU1VGRklYRVM6IC5zcGVjIC5zcGVjLmMgLnNwZWMubworCisuc3BlYy5zcGVjLmM6CisJJChXSU5FQlVJTEQpIC1mUElDIC1vICRAIC1zcGVjICQ8CisKKy5zcGVjLmMuc3BlYy5vOgorCSQoQ0MpIC1jIC1vICQqLnNwZWMubyAkPAorICAgICAgICAgIDwvc2NyZWVuPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTm90aGluZyByZWFsbHkgY29tcGxleCB0aGVyZS4gSnVzdCBkb24ndCBmb3JnZXQgdGhlIAorICAgICAgICAgICAgPGxpdGVyYWw+LlNVRkZJWEVTPC9saXRlcmFsPiBzdGF0ZW1lbnQsIGFuZCBiZXdhcmUgb2YgdGhlIHRhYiBpZiAKKyAgICAgICAgICAgIHlvdSBjb3B5IHRoaXMgc3RyYWlnaHQgdG8geW91ciBNYWtlZmlsZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyIGlkPSJzcGVjLXJlZmVyZW5jZSI+CisgICAgICAgIDx0aXRsZSBpZD0ic3BlYy1yZWZlcmVuY2UudGl0bGUiPk1vcmUgZGV0YWlsczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIChFeHRyYWN0ZWQgZnJvbSB0b29scy93aW5lYnVpbGQvUkVBRE1FKQorICAgICAgICAgIDwhLS0gRklYTUU6IHRoaXMgc2VlbXMgdG8gYmUgcmF0aGVyIG91dGRhdGVkIGFuZCBzb21ldGltZXMgZXZlbiBpbmNvcnJlY3QsIGNoZWNrIHdpdGggdGhlIHNvdXJjZSEgLS0+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBIZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgc3BlYyBmaWxlJ3MgZm9ybWF0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorIyBjb21tZW50IHRleHQKKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQW55dGhpbmcgYWZ0ZXIgYSAnIycgd2lsbCBiZSBpZ25vcmVkIGFzIGNvbW1lbnRzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorbmFtZSAgICBOQU1FCit0eXBlICAgIHdpbjE2fHdpbjMyICZsdDstLS0gdGhlIHwncyBtZWFuIGl0J3Mgb25lIG9yIHRoZSBvdGhlcgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIHR3byBmaWVsZHMgYXJlIG1hbmRhdG9yeS4gPGxpdGVyYWw+bmFtZTwvbGl0ZXJhbD4gCisgICAgICAgICAgICBkZWZpbmVzIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlIGFuZCA8bGl0ZXJhbD50eXBlPC9saXRlcmFsPiAKKyAgICAgICAgICAgIHdoZXRoZXIgaXQgaXMgYSBXaW4xNiBvciBXaW4zMiBtb2R1bGUuIE5vdGUgdGhhdCBmb3IgV2luZWxpYiAKKyAgICAgICAgICAgIHlvdSBzaG91bGQgb25seSBiZSB1c2luZyBXaW4zMiBtb2R1bGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorZmlsZSAgICBXSU5GSUxFTkFNRQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGlzIG9wdGlvbmFsLiBJdCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgV2luZG93cyBmaWxlIHRoYXQgCisgICAgICAgICAgaXMgcmVwbGFjZWQgYnkgdGhlIGJ1aWx0aW4uIDxsaXRlcmFsPiZsdDtuYW1lJmd0Oy5ETEw8L2xpdGVyYWw+IAorICAgICAgICAgIGlzIGFzc3VtZWQgaWYgbm9uZSBpcyBnaXZlbi4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGtlcm5lbCwgd2hpY2ggCisgICAgICAgICAgbGl2ZXMgaW4gdGhlIFdpbmRvd3MgZmlsZSA8ZmlsZW5hbWU+S1JOTDM4Ni5FWEU8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KK2hlYXAgICAgU0laRQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGlzIG9wdGlvbmFsIGFuZCBzcGVjaWZpYyB0byBXaW4xNiBtb2R1bGVzLiBJdCBkZWZpbmVzIAorICAgICAgICAgIHRoZSBzaXplIG9mIHRoZSBtb2R1bGUgbG9jYWwgaGVhcC4gVGhlIGRlZmF1bHQgaXMgbm8gbG9jYWwgaGVhcC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KK21vZGUgICAgZGxsfGN1aWV4ZXxndWlleGUKKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBmaWVsZCBpcyBvcHRpb25hbC4gSXQgc3BlY2lmaWVzIHNwZWNpZmllcyB3aGV0aGVyIGl0IGlzIHRoZSAKKyAgICAgICAgICBzcGVjIGZpbGUgZm9yIGEgZGxsIG9yIHRoZSBtYWluIGV4ZS4gVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBXaW4zMiAKKyAgICAgICAgICBzcGVjIGZpbGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgoraW5pdCAgICBGVU5DVElPTgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGlzIG9wdGlvbmFsIGFuZCBzcGVjaWZpYyB0byBXaW4zMiBtb2R1bGVzLiBJdCAKKyAgICAgICAgICBzcGVjaWZpZXMgYSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBkbGwgaXMgbG9hZGVkIAorICAgICAgICAgIG9yIHRoZSBleGVjdXRhYmxlIHN0YXJ0ZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitpbXBvcnQgIERMTAorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGNhbiBiZSBwcmVzZW50IHplcm8gb3IgbW9yZSB0aW1lcy4KKyAgICAgICAgICBFYWNoIGluc3RhbmNlIG5hbWVzIGEgZGxsIHRoYXQgdGhpcyBtb2R1bGUgZGVwZW5kcyBvbiAob25seSBmb3IgCisgICAgICAgICAgV2luMzIgbW9kdWxlcyBhdCB0aGUgcHJlc2VudCkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cityc3JjICAgIFJFU19GSUxFCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZmllbGQgaXMgb3B0aW9uYWwuIElmIHByZXNlbnQgaXQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSAKKyAgICAgICAgICAucmVzIGZpbGUgY29udGFpbmluZyB0aGUgY29tcGlsZWQgcmVzb3VyY2VzLiBTZWUgPHhyZWYgCisgICAgICAgICAgbGlua2VuZD0id3JjIiBlbmR0ZXJtPSJ3cmMudGl0bGUiPiBmb3IgZGV0YWlscyBvbiBjb21waWxpbmcgYSAKKyAgICAgICAgICByZXNvdXJjZSBmaWxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorT1JESU5BTCBWQVJUWVBFIEVYUE9SVE5BTUUgKERBVEEgW0RBVEEgW0RBVEEgWy4uLl1dXSkKKzIgYnl0ZSBWYXJpYWJsZSgtMSAweGZmIDAgMCkKKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBmaWVsZCBjYW4gYmUgcHJlc2VudCB6ZXJvIG9yIG1vcmUgdGltZXMuCisgICAgICAgICAgRWFjaCBpbnN0YW5jZSBkZWZpbmVzIGRhdGEgc3RvcmFnZSBhdCB0aGUgb3JkaW5hbCBzcGVjaWZpZWQuIFlvdSAKKyAgICAgICAgICBtYXkgc3RvcmUgaXRlbXMgYXMgYnl0ZXMsIDE2LWJpdCB3b3Jkcywgb3IgMzItYml0IHdvcmRzLgorICAgICAgICAgIDxsaXRlcmFsPk9SRElOQUw8L2xpdGVyYWw+IGlzIHJlcGxhY2VkIGJ5IHRoZSBvcmRpbmFsIG51bWJlciAKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB2YXJpYWJsZS4gPGxpdGVyYWw+VkFSVFlQRTwvbGl0ZXJhbD4gc2hvdWxkIAorICAgICAgICAgIGJlIDxsaXRlcmFsPmJ5dGU8L2xpdGVyYWw+LCA8bGl0ZXJhbD53b3JkPC9saXRlcmFsPiBvciAKKyAgICAgICAgICA8bGl0ZXJhbD5sb25nPC9saXRlcmFsPiBmb3IgOCwgMTYsIG9yIDMyIGJpdHMgcmVzcGVjdGl2ZWx5LiAKKyAgICAgICAgICA8bGl0ZXJhbD5FWFBPUlROQU1FPC9saXRlcmFsPiB3aWxsIGJlIHRoZSBuYW1lIGF2YWlsYWJsZSBmb3IKKyAgICAgICAgICBkeW5hbWljIGxpbmtpbmcuIDxsaXRlcmFsPkRBVEE8L2xpdGVyYWw+IGNhbiBiZSBhIGRlY2ltYWwgbnVtYmVyIAorICAgICAgICAgIG9yIGEgaGV4IG51bWJlciBwcmVjZWVkZWQgYnkgIjB4Ii4gVGhlIGV4YW1wbGUgZGVmaW5lcyB0aGUgCisgICAgICAgICAgdmFyaWFibGUgPGxpdGVyYWw+VmFyaWFibGU8L2xpdGVyYWw+IGF0IG9yZGluYWwgMiBhbmQgY29udGFpbmluZyAKKyAgICAgICAgICA0IGJ5dGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorT1JESU5BTCBlcXVhdGUgRVhQT1JUTkFNRSBEQVRBCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZmllbGQgY2FuIGJlIHByZXNlbnQgemVybyBvciBtb3JlIHRpbWVzLgorICAgICAgICAgIEVhY2ggaW5zdGFuY2UgZGVmaW5lcyBhbiBvcmRpbmFsIGFzIGFuIGFic29sdXRlIHZhbHVlLgorICAgICAgICAgIDxsaXRlcmFsPk9SRElOQUw8L2xpdGVyYWw+IGlzIHJlcGxhY2VkIGJ5IHRoZSBvcmRpbmFsIG51bWJlciAKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB2YXJpYWJsZS4gPGxpdGVyYWw+RVhQT1JUTkFNRTwvbGl0ZXJhbD4gd2lsbCAKKyAgICAgICAgICBiZSB0aGUgbmFtZSBhdmFpbGFibGUgZm9yIGR5bmFtaWMgbGlua2luZy4gCisgICAgICAgICAgPGxpdGVyYWw+REFUQTwvbGl0ZXJhbD4gY2FuIGJlIGEgZGVjaW1hbCBudW1iZXIgb3IgYSBoZXggbnVtYmVyIAorICAgICAgICAgIHByZWNlZWRlZCBieSAiMHgiLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorT1JESU5BTCBGVU5DVFlQRSBFWFBPUlROQU1FKFtBUkdUWVBFIFtBUkdUWVBFIFsuLi5dXV0pIEhBTkRMRVJOQU1FCisxMDAgcGFzY2FsIENyZWF0ZVdpbmRvdyhwdHIgcHRyIGxvbmcgc193b3JkIHNfd29yZCBzX3dvcmQgc193b3JkCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JkIHdvcmQgd29yZCBwdHIpCisgICAgICAgICAgIFdJTl9DcmVhdGVXaW5kb3cKKzEwMSBwYXNjYWwgR2V0Rm9jdXMoKSBXSU5fR2V0Rm9jdXMoKQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGNhbiBiZSBwcmVzZW50IHplcm8gb3IgbW9yZSB0aW1lcy4KKyAgICAgICAgICBFYWNoIGluc3RhbmNlIGRlZmluZXMgYSBmdW5jdGlvbiBlbnRyeSBwb2ludC4gVGhlIHByb3RvdHlwZSAKKyAgICAgICAgICBkZWZpbmVkIGJ5IDxsaXRlcmFsPkVYUE9SVE5BTUUgKFtBUkdUWVBFIFtBUkdUWVBFIFsuLi5dXV0pPC9saXRlcmFsPiAKKyAgICAgICAgICBzcGVjaWZpZXMgdGhlIG5hbWUgYXZhaWxhYmxlIGZvciBkeW5hbWljIGxpbmtpbmcgYW5kIHRoZSBmb3JtYXQgCisgICAgICAgICAgb2YgdGhlIGFyZ3VtZW50cy4gPGxpdGVyYWw+Ik9SRElOQUw8L2xpdGVyYWw+IiBpcyByZXBsYWNlZAorICAgICAgICAgIGJ5IHRoZSBvcmRpbmFsIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBmdW5jdGlvbiwgb3IgCisgICAgICAgICAgPGxpdGVyYWw+QDwvbGl0ZXJhbD4gZm9yIGF1dG9tYXRpYyBvcmRpbmFsIGFsbG9jYXRpb24gKFdpbjMyIG9ubHkpLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPkZVTkNUWVBFPC9saXRlcmFsPiBzaG91bGQgYmUgb25lIG9mOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPnBhc2NhbDE2PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmZvciBhIFdpbjE2IGZ1bmN0aW9uIHJldHVybmluZyBhIDE2LWJpdCB2YWx1ZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5wYXNjYWw8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Zm9yIGEgV2luMTYgZnVuY3Rpb24gcmV0dXJuaW5nIGEgMzItYml0IHZhbHVlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPnJlZ2lzdGVyPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmZvciBhIGZ1bmN0aW9uIHVzaW5nIENQVSByZWdpc3RlciB0byBwYXNzIGFyZ3VtZW50czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5pbnRlcnJ1cHQ8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Zm9yIGEgV2luMTYgaW50ZXJydXB0IGhhbmRsZXIgcm91dGluZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5zdGRjYWxsPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmZvciBhIG5vcm1hbCBXaW4zMiBmdW5jdGlvbjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5jZGVjbDwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5mb3IgYSBXaW4zMiBmdW5jdGlvbiB1c2luZyB0aGUgQyBjYWxsaW5nIGNvbnZlbnRpb248L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+dmFyYXJnczwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5mb3IgYSBXaW4zMiBmdW5jdGlvbiB0YWtpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPkFSR1RZUEU8L2xpdGVyYWw+IHNob3VsZCBiZSBvbmUgb2Y6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+d29yZDwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5mb3IgYSAxNiBiaXQgd29yZDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5sb25nPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmEgMzIgYml0IHZhbHVlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPnB0cjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5mb3IgYSBsaW5lYXIgcG9pbnRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5zdHI8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Zm9yIGEgbGluZWFyIHBvaW50ZXIgdG8gYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPnNfd29yZDwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5mb3IgYSAxNiBiaXQgc2lnbmVkIHdvcmQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+c2VncHRyPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmZvciBhIHNlZ21lbnRlZCBwb2ludGVyPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPnNlZ3N0cjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5mb3IgYSBzZWdtZW50ZWQgcG9pbnRlciB0byBhIG51bGwtdGVybWluYXRlZCBzdHJpbmc8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgT25seSA8bGl0ZXJhbD5wdHI8L2xpdGVyYWw+LCA8bGl0ZXJhbD5zdHI8L2xpdGVyYWw+IGFuZCAKKyAgICAgICAgICA8bGl0ZXJhbD5sb25nPC9saXRlcmFsPiBhcmUgdmFsaWQgZm9yIFdpbjMyIGZ1bmN0aW9ucy4KKyAgICAgICAgICA8bGl0ZXJhbD5IQU5ETEVSTkFNRTwvbGl0ZXJhbD4gaXMgdGhlIG5hbWUgb2YgdGhlIGFjdHVhbCBXaW5lIAorICAgICAgICAgIGZ1bmN0aW9uIHRoYXQgd2lsbCBwcm9jZXNzIHRoZSByZXF1ZXN0IGluIDMyLWJpdCBtb2RlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSB0d28gZXhhbXBsZXMgZGVmaW5lIGFuIGVudHJ5IHBvaW50IGZvciB0aGUgCisgICAgICAgICAgPGZ1bmN0aW9uPkNyZWF0ZVdpbmRvdzwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+R2V0Rm9jdXM8L2Z1bmN0aW9uPiAKKyAgICAgICAgICBjYWxscyByZXNwZWN0aXZlbHkuIFRoZSBvcmRpbmFscyB1c2VkIGFyZSBqdXN0IGV4YW1wbGVzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRvIGRlY2xhcmUgYSBmdW5jdGlvbiB1c2luZyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gCisgICAgICAgICAgV2luMTYsIHNwZWNpZnkgdGhlIGZ1bmN0aW9uIGFzIHRha2luZyBubyBhcmd1bWVudHMuIFRoZSBhcmd1bWVudHMgCisgICAgICAgICAgYXJlIHRoZW4gYXZhaWxhYmxlIHdpdGggQ1VSUkVOVF9TVEFDSzE2LT5hcmdzLiBJbiBXaW4zMiwgc3BlY2lmeSAKKyAgICAgICAgICB0aGUgZnVuY3Rpb24gYXMgPGxpdGVyYWw+dmFyYXJnczwvbGl0ZXJhbD4gYW5kIGRlY2xhcmUgaXQgd2l0aCBhIAorICAgICAgICAgICcuLi4nIHBhcmFtZXRlciBpbiB0aGUgQyBmaWxlLiAgU2VlIHRoZSB3c3ByaW50ZiogZnVuY3Rpb25zIGluIAorICAgICAgICAgIDxmaWxlbmFtZT51c2VyLnNwZWM8L2ZpbGVuYW1lPiBhbmQgCisgICAgICAgICAgPGZpbGVuYW1lPnVzZXIzMi5zcGVjPC9maWxlbmFtZT4gZm9yIGFuIGV4YW1wbGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitPUkRJTkFMIHN0dWIgRVhQT1JUTkFNRQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGNhbiBiZSBwcmVzZW50IHplcm8gb3IgbW9yZSB0aW1lcy4KKyAgICAgICAgICBFYWNoIGluc3RhbmNlIGRlZmluZXMgYSBzdHViIGZ1bmN0aW9uLiBJdCBtYWtlcyB0aGUgb3JkaW5hbCAKKyAgICAgICAgICBhdmFpbGFibGUgZm9yIGR5bmFtaWMgbGlua2luZywgYnV0IHdpbGwgdGVybWluYXRlIGV4ZWN1dGlvbiB3aXRoIAorICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGZ1bmN0aW9uIGlzIGV2ZXIgY2FsbGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorT1JESU5BTCBleHRlcm4gRVhQT1JUTkFNRSBTWU1CT0xOQU1FCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZmllbGQgY2FuIGJlIHByZXNlbnQgemVybyBvciBtb3JlIHRpbWVzLgorICAgICAgICAgIEVhY2ggaW5zdGFuY2UgZGVmaW5lcyBhbiBlbnRyeSB0aGF0IHNpbXBseSBtYXBzIHRvIGEgV2luZSBzeW1ib2wKKyAgICAgICAgICAodmFyaWFibGUgb3IgZnVuY3Rpb24pOyA8bGl0ZXJhbD5FWFBPUlROQU1FPC9saXRlcmFsPiB3aWxsIHBvaW50IAorICAgICAgICAgIHRvIHRoZSBzeW1ib2wgPGxpdGVyYWw+U1lNQk9MTkFNRTwvbGl0ZXJhbD4gdGhhdCBtdXN0IGJlIGRlZmluZWQgCisgICAgICAgICAgaW4gQyBjb2RlLiBUaGlzIHR5cGUgb25seSB3b3JrcyB3aXRoIFdpbjMyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorT1JESU5BTCBmb3J3YXJkIEVYUE9SVE5BTUUgU1lNQk9MTkFNRQorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGZpZWxkIGNhbiBiZSBwcmVzZW50IHplcm8gb3IgbW9yZSB0aW1lcy4KKyAgICAgICAgICBFYWNoIGluc3RhbmNlIGRlZmluZXMgYW4gZW50cnkgdGhhdCBpcyBmb3J3YXJkZWQgdG8gYW5vdGhlciBlbnRyeQorICAgICAgICAgIHBvaW50IChraW5kIG9mIGEgc3ltYm9saWMgbGluaykuIDxsaXRlcmFsPkVYUE9SVE5BTUU8L2xpdGVyYWw+CisgICAgICAgICAgd2lsbCBmb3J3YXJkIHRvIHRoZSBlbnRyeSBwb2ludCA8bGl0ZXJhbD5TWU1CT0xOQU1FPC9saXRlcmFsPiAKKyAgICAgICAgICB0aGF0IG11c3QgYmUgb2YgdGhlIGZvcm0gPGxpdGVyYWw+RExMLkZ1bmN0aW9uPC9saXRlcmFsPi4gVGhpcyAKKyAgICAgICAgICB0eXBlIG9ubHkgd29ya3Mgd2l0aCBXaW4zMi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ibGlua2luZyI+CisgICAgICA8dGl0bGUgaWQ9ImxpbmtpbmcudGl0bGUiPkxpbmtpbmcgaXQgYWxsIHRvZ2V0aGVyPC90aXRsZT4KKyAgICAgIDwhLS0gRklYTUU6IFRoaXMgaXMgb3V0ZGF0ZWQgLS0+CisgICAgICA8cGFyYT4KKyAgICAgICAgVG8gbGluayBhbiBleGVjdXRhYmxlIHlvdSBuZWVkIHRvIGxpbmsgdG9nZXRoZXI6IHlvdXIgb2JqZWN0IGZpbGVzLCAKKyAgICAgICAgdGhlIHNwZWMgZmlsZSwgYW55IFdpbmRvd3MgbGlicmFyaWVzIHRoYXQgeW91ciBhcHBsaWNhdGlvbiBkZXBlbmRzCisgICAgICAgIG9uLCBnZGkzMiBmb3IgaW5zdGFuY2UsIGFuZCBhbnkgYWRkaXRpb25hbCBsaWJyYXJ5IHRoYXQgeW91IHVzZS4gQWxsIAorICAgICAgICB0aGUgbGlicmFyaWVzIHlvdSBsaW5rIHdpdGggc2hvdWxkIGJlIGF2YWlsYWJsZSBhcyAnLnNvJyBsaWJyYXJpZXMuIAorICAgICAgICBJZiBvbmUgb2YgdGhlbSBpcyBhdmFpbGFibGUgb25seSBpbiAnLmRsbCcgZm9ybSB0aGVuIGNvbnN1bHQgCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9ImJpbmRsbHMiIGVuZHRlcm09ImJpbmRsbHMudGl0bGUiPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJdCBpcyBhbHNvIHdoZW4gYXR0ZW1wdGluZyB0byBsaW5rIHlvdXIgZXhlY3V0YWJsZSB0aGF0IHlvdSB3aWxsIAorICAgICAgICBkaXNjb3ZlciB3aGV0aGVyIHlvdSBoYXZlIG1pc3Npbmcgc3ltYm9scyBvciBub3QgaW4geW91ciBjdXN0b20gCisgICAgICAgIGxpYnJhcmllcy4gT24gV2luZG93cyB3aGVuIHlvdSBidWlsZCBhIGxpYnJhcnksIHRoZSBsaW5rZXIgd2lsbCAKKyAgICAgICAgaW1tZWRpYXRlbHkgdGVsbCB5b3UgaWYgYSBzeW1ib2wgaXQgaXMgc3VwcG9zZWQgdG8gZXhwb3J0IGlzIAorICAgICAgICB1bmRlZmluZWQuIEluIFVuaXgsIGFuZCBpbiBXaW5lbGliLCB0aGlzIGlzIG5vdCB0aGUgY2FzZS4gVGhlIHN5bWJvbCAKKyAgICAgICAgd2lsbCBzaWxlbnRseSBiZSBtYXJrZWQgYXMgdW5kZWZpbmVkIGFuZCBpdCBpcyBvbmx5IHdoZW4geW91IHRyeSB0byAKKyAgICAgICAgcHJvZHVjZSBhbiBleGVjdXRhYmxlIHRoYXQgdGhlIGxpbmtlciB3aWxsIHZlcmlmeSBhbGwgdGhlIHN5bWJvbHMgYXJlIAorICAgICAgICBhY2NvdW50ZWQgZm9yLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFNvIGJlZm9yZSBkZWNsYXJpbmcgdmljdG9yeSB3aGVuIGZpcnN0IGNvbnZlcnRpbmcgYSBsaWJyYXJ5IHRvIAorICAgICAgICBXaW5lbGliLCB5b3Ugc2hvdWxkIGZpcnN0IHRyeSB0byBsaW5rIGl0IHRvIGFuIGV4ZWN1dGFibGUgKGJ1dCB5b3UgCisgICAgICAgIHdvdWxkIGhhdmUgZG9uZSB0aGF0IHRvIHRlc3QgaXQgYW55d2F5LCByaWdodD8pLiBBdCB0aGlzIHBvaW50IHlvdSAKKyAgICAgICAgbWF5IGRpc2NvdmVyIHNvbWUgdW5kZWZpbmVkIHN5bWJvbHMgdGhhdCB5b3UgdGhvdWdodCB3ZXJlIGltcGxlbWVudGVkIAorICAgICAgICBieSB0aGUgbGlicmFyeS4gVGhlbiwgeW91IHRvIHRoZSBsaWJyYXJ5IHNvdXJjZXMgYW5kIGZpeCBpdC4gQnV0IHlvdSAKKyAgICAgICAgbWF5IGFsc28gZGlzY292ZXIgdGhhdCB0aGUgbWlzc2luZyBzeW1ib2xzIGFyZSBkZWZpbmVkIGluLCBzYXksIAorICAgICAgICBnZGkzMi4gVGhpcyBpcyBiZWNhdXNlIHlvdSBkaWQgbm90IGxpbmsgdGhlIHNhaWQgbGlicmFyeSB3aXRoIGdkaTMyLiAKKyAgICAgICAgT25lIHdheSB0byBmaXggaXQgaXMgdG8gbGluayB0aGlzIGV4ZWN1dGFibGUsIGFuZCBhbnkgb3RoZXIgdGhhdCBhbHNvIAorICAgICAgICB1c2VzIHlvdXIgbGlicmFyeSwgd2l0aCBnZGkzMi4gQnV0IGl0IGlzIGJldHRlciB0byBnbyBiYWNrIHRvIHlvdXIgCisgICAgICAgIGxpYnJhcnkncyBtYWtlZmlsZSBhbmQgZXhwbGljaXRseSBsaW5rIGl0IHdpdGggZ2RpMzIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgQXMgeW91IHdpbGwgcXVpY2tseSBub3RpY2UsIHRoaXMgaGFzIHVuZm9ydHVuYXRlbHkgbm90IGJlZW4gCisgICAgICAgIChjb21wbGV0ZWx5KSBkb25lIGZvciBXaW5lbGliJ3Mgb3duIGxpYnJhcmllcy4gU28gaWYgYW4gYXBwbGljYXRpb24gCisgICAgICAgIG11c3QgbGluayB3aXRoIG9sZTMyLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gbGluayB3aXRoIGFkdmFwaTMyLCAKKyAgICAgICAgcnBjcnQ0IGFuZCBvdGhlcnMgZXZlbiBpZiB5b3UgZG9uJ3QgdXNlIHRoZW0gZGlyZWN0bHkuIFRoaXMgY2FuIGJlIAorICAgICAgICBhbm5veWluZyBhbmQgaG9wZWZ1bGx5IHdpbGwgYmUgZml4ZWQgc29vbiAoZmVlbCBmcmVlIHRvIHN1Ym1pdCBhIAorICAgICAgICBwYXRjaCkuCisgICAgICA8L3BhcmE+CisgICAgICA8IS0tIEZJWE1FOiB0cnkgdG8gZ2l2ZSBzb21lIHNvcnQgb2YgY29uY3JldGUgZXhhbXBsZSAtLT4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9Im1mYyI+CisgICAgPHRpdGxlIGlkPSJtZmMudGl0bGUiPkRlYWxpbmcgd2l0aCB0aGUgTUZDPC90aXRsZT4KKyAgICA8c2VjdDEgaWQ9Im1mYy1pbnRyb2R1Y3Rpb24iPgorICAgICAgPHRpdGxlIGlkPSJtZmMtaW50cm9kdWN0aW9uLnRpdGxlIj5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRvIHVzZSB0aGUgTUZDIGluIGEgV2luZWxpYiBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBmaXJzdCBoYXZlIHRvIAorICAgICAgICByZWNvbXBpbGUgdGhlIE1GQyB3aXRoIFdpbmVsaWIuIEluIHRoZW9yeSBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gCisgICAgICAgIHdyaXRlIGEgd3JhcHBlciBmb3IgdGhlIFdpbmRvd3MgTUZDIGFzIGRlc2NyaWJlZCBpbiAKKyAgICAgICAgPHhyZWYgbGlua2VuZD0iYmluZGxscyIgZW5kdGVybT0iYmluZGxscy50aXRsZSI+LiBCdXQgaW4gcHJhY3RpY2UgCisgICAgICAgIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSByZWFsaXN0aWMgYXBwcm9hY2ggZm9yIHRoZSBNRkM6IAorICAgICAgPC9wYXJhPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgdGhlIGh1Z2UgbnVtYmVyIG9mIEFQSXMgbWFrZXMgd3JpdGluZyB0aGUgd3JhcHBlciBhIGJpZyB0YXNrIGluIAorICAgICAgICAgICAgaXRzZWxmLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgZnVydGhlcm1vcmUgdGhlIE1GQyBjb250YWluIGEgaHVnZSBudW1iZXIgb2YgQVBJcyB3aGljaCBhcmUgdHJpY2t5IAorICAgICAgICAgICAgdG8gZGVhbCB3aXRoIHdoZW4gbWFraW5nIGEgd3JhcHBlci4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGV2ZW4gb25jZSB5b3UgaGF2ZSB3cml0dGVuIHRoZSB3cmFwcGVyIHlvdSB3aWxsIG5lZWQgdG8gbW9kaWZ5IAorICAgICAgICAgICAgdGhlIE1GQyBoZWFkZXJzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGNob2tlIG9uIHRoZW0uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBhIGJpZyBwYXJ0IG9mIHRoZSBNRkMgY29kZSBpcyBhY3R1YWxseSBpbiB5b3VyIGFwcGxpY2F0aW9uIGluIAorICAgICAgICAgICAgdGhlIGZvcm0gb2YgbWFjcm9zLiBUaGlzIG1lYW5zIGV2ZW4gbW9yZSBvZiB0aGUgTUZDIGhlYWRlcnMgaGF2ZSAKKyAgICAgICAgICAgIHRvIGFjdHVhbGx5IHdvcmsgdG8gaW4gb3JkZXIgZm9yIHlvdSB0byBiZSBhYmxlIHRvIGNvbXBpbGUgYW4gCisgICAgICAgICAgICBNRkMgYmFzZWQgYXBwbGljYXRpb24uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpcyB3aHkgdGhpcyBndWlkZSBpbmNsdWRlcyBhIHNlY3Rpb24gZGVkaWNhdGVkIHRvIGhlbHBpbmcgeW91IAorICAgICAgICBjb21waWxlIHRoZSBNRkMgd2l0aCBXaW5lbGliLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJtZmMtbGVnYWwtaXNzdWVzIj4KKyAgICAgIDx0aXRsZSBpZD0ibWZjLWxlZ2FsLWlzc3Vlcy50aXRsZSI+TGVnYWwgaXNzdWVzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICAoRXh0cmFjdGVkIGZyb20gdGhlIEhPV1RPLVdpbmVsaWIgd3JpdHRlbiBieSBXaWxidXIgRGFsZSAKKyAgICAgICAgJmx0O3dpbGJ1ci5kYWxlQGx1bWluLm5sJmd0OykKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gaXMgdG8gbWFrZSB5b3UgYXdhcmUgb2YgcG90ZW50aWFsIGxlZ2FsIAorICAgICAgICBwcm9ibGVtcy4gQmUgc3VyZSB0byByZWFkIHlvdXIgbGljZW5zZXMgYW5kIHRvIGNvbnN1bHQgeW91ciBsYXd5ZXJzLiAKKyAgICAgICAgSW4gYW55IGNhc2UgeW91IHNob3VsZCBub3QgY29uc2lkZXIgdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gdG8gCisgICAgICAgIGJlIGF1dGhvcml0YXRpdmUgc2luY2UgaXQgaGFzIG5vdCBiZWVuIHdyaXR0ZW4gYnkgYSBsYXd5ZXIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgV2VsbCwgbGV0J3MgdHJ5IHRvIGhhdmUgYSBsb29rIGF0IHRoZSBzaXR1YXRpb24gYW55d2F5LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIER1cmluZyB0aGUgY29tcGlsYXRpb24gb2YgeW91ciBwcm9ncmFtLCB5b3Ugd2lsbCBiZSBjb21iaW5pbmcgY29kZSAKKyAgICAgICAgZnJvbSBzZXZlcmFsIHNvdXJjZXM6IHlvdXIgY29kZSwgV2luZWxpYiBjb2RlLCBNaWNyb3NvZnQgTUZDIGNvZGUsIAorICAgICAgICBhbmQgcG9zc2libHkgY29kZSBmcm9tIG90aGVyIHZlbmRvciBzb3VyY2VzLiBBcyBhIHJlc3VsdCwgeW91IG11c3QgCisgICAgICAgIGVuc3VyZSB0aGF0IHRoZSBsaWNlbnNlcyBvZiBhbGwgY29kZSBzb3VyY2VzIGFyZSBvYmV5ZWQuIFdoYXQgeW91IGFyZSAKKyAgICAgICAgYWxsb3dlZCBhbmQgbm90IGFsbG93ZWQgdG8gZG8gY2FuIHZhcnkgZGVwZW5kaW5nIG9uIGhvdyB5b3UgY29tcGlsZSAKKyAgICAgICAgeW91ciBwcm9ncmFtIGFuZCBpZiB5b3Ugd2lsbCBiZSBkaXN0cmlidXRpbmcgaXQuIEZvciBleGFtcGxlLCBpZiB5b3UgCisgICAgICAgIGFyZSByZWxlYXNpbmcgeW91ciBjb2RlIHVuZGVyIHRoZSBHUEwsIHlvdSBjYW5ub3QgbGluayB5b3VyIGNvZGUgdG8gCisgICAgICAgIE1GQyBjb2RlIGJlY2F1c2UgdGhlIEdQTCByZXF1aXJlcyB0aGF0IHlvdSBwcm92aWRlIEFMTCBzb3VyY2VzIHRvIHlvdXIgCisgICAgICAgIHVzZXJzLiBUaGUgTUZDIGxpY2Vuc2UgZm9yYmlkcyB5b3UgZnJvbSBkaXN0cmlidXRpbmcgdGhlIE1GQyBzb3VyY2Ugc28gCisgICAgICAgIHlvdSBjYW5ub3QgYm90aCBkaXN0cmlidXRlIHlvdXIgcHJvZ3JhbSBhbmQgY29tcGx5IHdpdGggdGhlIEdQTCAKKyAgICAgICAgbGljZW5zZS4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHlvdXIgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgTEdQTCwgCisgICAgICAgIHlvdSBjYW5ub3Qgc3RhdGljYWxseSBsaW5rIHlvdXIgcHJvZ3JhbSB0byB0aGUgTUZDIGFuZCBkaXN0cmlidXRlIGl0LCAKKyAgICAgICAgYnV0IHlvdSBjYW4gZHluYW1pY2FsbHkgbGluayB5b3VyIExHUEwgY29kZSBhbmQgdGhlIE1GQyBsaWJyYXJ5IGFuZCAKKyAgICAgICAgZGlzdHJpYnV0ZSBpdC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXaW5lL1dpbmVsaWIgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgYW4gWDExLWxpa2UgbGljZW5zZS4gSXQgcGxhY2VzIGZldyAKKyAgICAgICAgcmVzdHJpY3Rpb25zIG9uIHRoZSB1c2UgYW5kIGRpc3RyaWJ1dGlvbiBvZiBXaW5lL1dpbmVsaWIgY29kZS4gSSBkb3VidCAKKyAgICAgICAgdGhlIFdpbmUgbGljZW5zZSB3aWxsIGNhdXNlIHlvdSBhbnkgcHJvYmxlbXMuIE9uIHRoZSBvdGhlciBoYW5kLCBNRkMgCisgICAgICAgIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIGEgdmVyeSByZXN0cmljdGl2ZSBsaWNlbnNlIGFuZCB0aGUgcmVzdHJpY3Rpb25zIAorICAgICAgICB2YXJ5IGZyb20gdmVyc2lvbiB0byB2ZXJzaW9uIGFuZCBiZXR3ZWVuIHNlcnZpY2UgcGFja3MuIFRoZXJlIGFyZSAKKyAgICAgICAgYmFzaWNhbGx5IHRocmVlIGFzcGVjdHMgeW91IG11c3QgYmUgYXdhcmUgb2Ygd2hlbiB1c2luZyB0aGUgTUZDLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEZpcnN0IHlvdSBtdXN0IGxlZ2FsbHkgZ2V0IE1GQyBzb3VyY2UgY29kZSBvbiB5b3VyIGNvbXB1dGVyLiBUaGUgTUZDIAorICAgICAgICBzb3VyY2UgY29kZSBjb21lcyBhcyBhIHBhcnQgb2YgVmlzdWFsIFN0dWRpby4gVGhlIGxpY2Vuc2UgZm9yIAorICAgICAgICBWaXN1YWwgU3R1ZGlvIGltcGxpZXMgaXQgaXMgYSBzaW5nbGUgcHJvZHVjdCB0aGF0IGNhbiBub3QKKyAgICAgICAgYmUgYnJva2VuIHVwIGludG8gaXRzIGNvbXBvbmVudHMuIFNvIHRoZSBjbGVhbmVzdCB3YXkgdG8gZ2V0IE1GQyBvbiAKKyAgICAgICAgeW91ciBzeXN0ZW0gaXMgdG8gYnV5IFZpc3VhbCBTdHVkaW8gYW5kIGluc3RhbGwgaXQgb24gYSBkdWFsIGJvb3QgCisgICAgICAgIExpbnV4IGJveC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGVuIHlvdSBtdXN0IGNoZWNrIHRoYXQgeW91IGFyZSBhbGxvd2VkIHRvIHJlY29tcGlsZSBNRkMgb24gYQorICAgICAgICBub24tTWljcm9zb2Z0IG9wZXJhdGluZyBzeXN0ZW0hIFRoaXMgdmFyaWVzIHdpdGggdGhlIHZlcnNpb24gb2YgTUZDLiAKKyAgICAgICAgVGhlIE1GQyBsaWNlbnNlIGZyb20gVmlzdWFsIFN0dWRpbyA2LjAgcmVhZHMgaW4gcGFydDoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAxLjEgR2VuZXJhbCBMaWNlbnNlIEdyYW50LiBNaWNyb3NvZnQgZ3JhbnRzIHRvIHlvdSBhcyBhbgorICAgICAgICAgIGluZGl2aWR1YWwsIGEgcGVyc29uYWwsIG5vbmV4Y2x1c2l2ZSBsaWNlbnNlIHRvIG1ha2UgYW5kIHVzZQorICAgICAgICAgIGNvcGllcyBvZiB0aGUgU09GVFdBUkUgUFJPRFVDVCBmb3IgdGhlIHNvbGUgcHVycG9zZXMgb2YgZGVzaWduaW5nLAorICAgICAgICAgIGRldmVsb3BpbmcsIGFuZCB0ZXN0aW5nIHlvdXIgc29mdHdhcmUgcHJvZHVjdChzKSB0aGF0IGFyZSBkZXNpZ25lZAorICAgICAgICAgIHRvIG9wZXJhdGUgaW4gY29uanVuY3Rpb24gd2l0aCBhbnkgTWljcm9zb2Z0IG9wZXJhdGluZyBzeXN0ZW0KKyAgICAgICAgICBwcm9kdWN0LiBbT3RoZXIgdW5yZWxhdGVkIHN0dWZmIGRlbGV0ZWQuXQorICAgICAgICA8L3BhcmE+CisgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgU28gaXQgYXBwZWFycyB5b3UgY2Fubm90IGV2ZW4gY29tcGlsZSBNRkMgZm9yIFdpbmVsaWIgdXNpbmcgdGhpcworICAgICAgICBsaWNlbnNlLiBGb3J0dW5hdGVseSB0aGUgVmlzdWFsIFN0dWRpbyA2LjAgc2VydmljZSBwYWNrIDMgbGljZW5zZSAKKyAgICAgICAgcmVhZHMgKHRoZSBWaXN1YWwgU3R1ZGlvIDUuMCBsaWNlbnNlIGlzIHNpbWlsYXIpOgorICAgICAgPC9wYXJhPgorICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDEuMSBHZW5lcmFsIExpY2Vuc2UgR3JhbnQuIE1pY3Jvc29mdCBncmFudHMgdG8geW91IGFzIGFuCisgICAgICAgICAgaW5kaXZpZHVhbCwgYSBwZXJzb25hbCwgbm9uZXhjbHVzaXZlIGxpY2Vuc2UgdG8gbWFrZSBhbmQgdXNlCisgICAgICAgICAgY29waWVzIG9mIHRoZSBTT0ZUV0FSRSBQUk9EVUNUIGZvciB0aGUgcHVycG9zZSBvZiBkZXNpZ25pbmcsCisgICAgICAgICAgZGV2ZWxvcGluZywgYW5kIHRlc3RpbmcgeW91ciBzb2Z0d2FyZSBwcm9kdWN0KHMpLiBbT3RoZXIgdW5yZWxhdGVkCisgICAgICAgICAgc3R1ZmYgZGVsZXRlZF0KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPHBhcmE+CisgICAgICAgIFNvIHVuZGVyIHRoaXMgbGljZW5zZSBpdCBhcHBlYXJzIHlvdSBjYW4gY29tcGlsZSBNRkMgZm9yIFdpbmVsaWIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgRmluYWxseSB5b3UgbXVzdCBjaGVjayB3aGV0aGVyIHlvdSBoYXZlIHRoZSByaWdodCB0byBkaXN0cmlidXRlIGFuIAorICAgICAgICBNRkMgbGlicmFyeS4gQ2hlY2sgdGhlIHJlbGV2YW50IHNlY3Rpb24gb2YgdGhlIGxpY2Vuc2Ugb24gCisgICAgICAgIDxxdW90ZT5yZWRpc3RyaWJ1dGFibGVzIGFuZCB5b3VyIHJlZGlzdHJpYnV0aW9uIHJpZ2h0czwvcXVvdGU+LiBUaGUgCisgICAgICAgIGxpY2Vuc2Ugc2VlbXMgdG8gc3BlY2lmeSB0aGF0IHlvdSBvbmx5IGhhdmUgdGhlIHJpZ2h0IHRvIGRpc3RyaWJ1dGUgCisgICAgICAgIGJpbmFyaWVzIG9mIHRoZSBNRkMgbGlicmFyeSBpZiBpdCBoYXMgbm8gZGVidWcgaW5mb3JtYXRpb24gYW5kIGlmIAorICAgICAgICB5b3UgZGlzdHJpYnV0ZSBpdCB3aXRoIGFuIGFwcGxpY2F0aW9uIHRoYXQgcHJvdmlkZXMgc2lnbmlmaWNhbnQgCisgICAgICAgIGFkZGVkIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIE1GQyBsaWJyYXJ5LgorICAgICAgICA8IS0tIEZJWE1FOiBxdW90ZSByZWxldmFudCBzZWN0aW9ucyBvZiBFVUxBIGluIGFib3ZlIHBhcmFncmFwaC4gLS0+CisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9Im1mYy1jb21waWxpbmciPgorICAgICAgPHRpdGxlIGlkPSJtZmMtY29tcGlsaW5nLnRpdGxlIj5Db21waWxpbmcgdGhlIE1GQzwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpbmdzIHRvIGRpc2FibGUsIAorICAgICAgICB3aHkgd2UgaGF2ZSB0byBkaXNhYmxlIHRoZW0gKGxhY2sgb2YgV2luZSBzdXBwb3J0KSwgCisgICAgICAgIHdoZXJlIHRoaW5ncyBkb24ndCBjb21waWxlLCAKKyAgICAgICAgd2h5LCAKKyAgICAgICAgaG93IHRvIHNvbHZlIGl0LCAKKyAgICAgICAgd2hhdCB0byBwdXQgaW4gdGhlIE1ha2VmaWxlLCAKKyAgICAgICAgbWF5YmUgdHJ5IHRvIHBvaW50IHRvIGEgcGxhY2Ugd2l0aCBhIHJlYWR5LW1hZGUgbWFrZWZpbGUuLi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ibWZjLXVzaW5nIj4KKyAgICAgIDx0aXRsZSBpZD0ibWZjLXVzaW5nLnRpdGxlIj5Vc2luZyB0aGUgTUZDPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNpZmljIHdpbmVtYWtlciBvcHRpb25zLCAKKyAgICAgICAgdGhlIGNvbmZpZ3VyZSBvcHRpb25zLCAKKyAgICAgICAgdGhlIGluaXRpYWxpemF0aW9uIHByb2JsZW0uLi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJpbmRsbHMiPgorICAgIDx0aXRsZSBpZD0iYmluZGxscy50aXRsZSI+RGVhbGluZyB3aXRoIGJpbmFyeSBvbmx5IGRsbHM8L3RpdGxlPgorICAgIDxzZWN0MSBpZD0iYmluZGxscy1pbnRybyI+CisgICAgICA8dGl0bGUgaWQ9ImJpbmFyeS1kbGxzLWludHJvLnRpdGxlIj5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIGRlc2NyaWJlIHRoZSBwcm9ibGVtLCAKKyAgICAgICAgdXNlIGFuIGV4YW1wbGUgYW5kIHJldXNlIGl0IGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuLi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0iYmluZGxscy1zcGVjIj4KKyAgICAgIDx0aXRsZSBpZD0iYmluZGxscy1zcGVjLnRpdGxlIj5Xcml0aW5nIHRoZSBzcGVjIGZpbGU8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIGdpdmUgYW4gZXhhbXBsZS4uLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJiaW5kbGxzLWN4eC1hcGlzIj4KKyAgICAgIDx0aXRsZSBpZD0iYmluZGxscy1jeHgtYXBpcy50aXRsZSI+SG93IHRvIGRlYWwgd2l0aCBDKysgQVBJczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgbmFtZXMgYXJlIG1hbmdsZWQsIGhvdyB0byBkZW1hbmdsZSB0aGVtLCBob3cgdG8gY2FsbCB0aGVtCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9ImJpbmRsbHMtd3JhcHBlciI+CisgICAgICA8dGl0bGUgaWQ9ImJpbmRsbHMtd3JhcHBlci50aXRsZSI+V3JpdGluZyB0aGUgd3JhcHBlcjwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgZ2l2ZSBhbiBleGFtcGxlCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwYWNrYWdpbmciPgorICAgIDx0aXRsZSBpZD0icGFja2FnaW5nLnRpdGxlIj5QYWNrYWdpbmcgeW91ciBXaW5lbGliIGFwcGxpY2F0aW9uPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFNlbGVjdGluZyB3aGljaCBsaWJyYXJpZXMgdG8gZGVsaXZlciwKKyAgICAgIGhvdyB0byBhdm9pZCBpbnRlcmZlcmVuY2Ugd2l0aCBvdGhlciBXaW5lbGliIGFwcGxpY2F0aW9ucywgCisgICAgICBob3cgdG8gcGxheSBuaWNlIHdpdGggb3RoZXIgV2luZWxpYiBhcHBsaWNhdGlvbnMKKyAgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworPC9ib29rPgorCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHNnbWwKK3NnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kb2Muc2dtbCIgInNldCIgImJvb2siICIiKQorRW5kOgorLS0+Cg==