PGh0bWw+CjxoZWFkPgo8IS0tIENvcHlyaWdodCAyMDA3IEFhcm9uIFdpbmRzb3IKICAgICAKICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCiAgICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKICAgIAogIC0tPgo8dGl0bGU+QWRkRWRnZVZpc2l0b3IgQ29uY2VwdDwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgYWxpbms9IiNmZjAwMDAiIAogICAgICBiZ2NvbG9yPSIjZmZmZmZmIiAKICAgICAgbGluaz0iIzAwMDBlZSIgCiAgICAgIHRleHQ9IiMwMDAwMDAiIAogICAgICB2bGluaz0iIzU1MWE4YiI+IAoKPGltZyBzcmM9Ii4uLy4uLy4uL2Jvb3N0LnBuZyIgYWx0PSJDKysgQm9vc3QiIGhlaWdodD0iODYiIHdpZHRoPSIyNzciPiAKCjxiciBjbGVhcj0iIj4KCjxoMT5BZGRFZGdlVmlzaXRvciBDb25jZXB0PC9oMT4KClRoZSBBZGRFZGdlVmlzaXRvciBjb25jZXB0IGV4aXN0cyB0byBhbGxvdyBmb3Igc29tZSBpbmRpcmVjdGlvbiBpbiBhbGdvcml0aG1zCnRoYXQgbW9kaWZ5IGdyYXBocyBieSBhZGRpbmcgZWRnZXMuIEluIHN1Y2ggYWxnb3JpdGhtcywgaXQgbWF5IGJlIGNvbnZlbmllbnQKdG8gcGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgKHN1Y2ggYXMgdXBkYXRpbmcgYW4gZWRnZSBpbmRleCBtYXApIGF0IApwb2ludHMgaW4gdGhlIGFsZ29yaXRobSB3aGVyZSBhbiBlZGdlIGFkZGl0aW9uIG9jY3Vycy4gUmVwbGFjaW5nIGNhbGxzIHRvCnRvIDx0dD5hZGRfZWRnZTwvdHQ+IHdpdGggY2FsbHMgdG8gPHR0PkFkZEVkZ2VWaXNpdG9yOjp2aXNpdF92ZXJ0ZXhfcGFpcjwvdHQ+CmFsbG93cyBmb3Igc3VjaCBvcGVyYXRpb25zIHRvIGJlIGRlZmluZWQgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBhbGdvcml0aG0uCgo8aDM+Tm90YXRpb248L2gzPgoKPHRhYmxlPgo8dGJvZHk+Cgo8dHI+Cjx0ZD4gPHR0PlZpc2l0b3I8L3R0PiA8L3RkPgo8dGQ+IGlzIGEgdHlwZSB0aGF0IG1vZGVscyB0aGUgQWRkRWRnZVZpc2l0b3IgY29uY2VwdCA8L3RkPgo8L3RyPgoKPHRyPiAKPHRkPiA8dHQ+dmlzPC90dD4gPC90ZD4gIAo8dGQ+IGlzIGFuIG9iamVjdCBvZiB0eXBlIFZpc2l0b3IgPC90ZD4KPC90cj4KCjx0cj4KPHRkPiA8dHQ+R3JhcGg8L3R0PiA8L3RkPgo8dGQ+IGlzIHRoZSB0eXBlIG9mIGEgZ3JhcGggPC90ZD4KPC90cj4KCjx0cj4gCjx0ZD4gPHR0PnUsdjwvdHQ+IDwvdGQ+ICAKPHRkPiBhcmUgb2JqZWN0cyBvZiB0eXBlIDx0dD5ncmFwaF90cmFpdHMmbHQ7R3JhcGgmZ3Q7Ojp2ZXJ0ZXhfZGVzY3JpcHRvcjwvdHQ+CjwvdGQ+CjwvdHI+Cgo8dHI+IAo8dGQ+IDx0dD5lPC90dD4gPC90ZD4gIAo8dGQ+IGlzIGFuIG9iamVjdCBvZiB0eXBlIDx0dD5ncmFwaF90cmFpdHMmbHQ7R3JhcGgmZ3Q7OjplZGdlX2Rlc2NyaXB0b3I8L3R0PiAKPC90ZD4KPC90cj4KCjx0cj4KPHRkPiA8dHQ+djwvdHQ+IDwvdGQ+Cjx0ZD4gaXMgYW4gb2JqZWN0IG9mIHR5cGUgPHR0PmdyYXBoX3RyYWl0cyZsdDtHcmFwaCZndDs6OnZlcnRleF9kZXNjcmlwdG9yPC90dD4KPC90ZD4KCjwvdHI+PHRyPgo8dGQ+IAoKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4KCgo8aDM+QXNzb2NpYXRlZCBUeXBlczwvaDM+CgpOb25lCgo8aDM+VmFsaWQgRXhwcmVzc2lvbnM8L2gzPgoKPHA+Cgo8dGFibGUgYm9yZGVyPSIxIj4KCjx0Ym9keT48dHI+PHRoPk5hbWU8L3RoPjx0aD5FeHByZXNzaW9uPC90aD48dGg+UmV0dXJuIFR5cGU8L3RoPgo8dGg+RGVzY3JpcHRpb248L3RoPgoKPC90cj48dHI+IAo8dGQ+IEFkZCBhbiBFZGdlIDwvdGQ+Cjx0ZD4gPHR0PnZpcy52aXNpdF92ZXJ0ZXhfcGFpcih1LCB2LCBnKTwvdHQ+ICA8L3RkPgo8dGQ+IDx0dD52b2lkPC90dD48L3RkPgo8dGQ+IEludm9rZWQgZXZlcnkgdGltZSBhbiBlZGdlIGJldHdlZW4gdmVydGljZXMgPHR0PnU8L3R0PiBhbmQgPHR0PnY8L3R0PgogICAgIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZ3JhcGggPHR0Pmc8L3R0Pi4KPC90ZD48L3RyPgoKPC90Ym9keT48L3RhYmxlPgoKPC9wPjxoMz5Nb2RlbHM8L2gzPgoKVHdvIG1vZGVscyBvZiB0aGlzIGNvbmNlcHQgYXJlIGRlZmluZWQgaW4gdGhlIGZpbGUgCjxhIGhyZWY9Ii4uLy4uLy4uL2Jvb3N0L2dyYXBoL3BsYW5hcl9kZXRhaWwvYWRkX2VkZ2VfdmlzaXRvcnMuaHBwIj4KPHR0PmFkZF9lZGdlX3Zpc2l0b3JzLmhwcDwvdHQ+PC9hPjoKCjx1bD4KPGxpPjx0dD5kZWZhdWx0X2FkZF9lZGdlX3Zpc2l0b3I8L3R0PjogVGhlIGNvbnN0cnVjdG9yIG9mIHRoaXMgY2xhc3MgdGFrZXMKbm8gYXJndW1lbnRzLjx0dD52aXNpdF92ZXJ0ZXhfcGFpcih1LCB2LCBnKTwvdHQ+IGlzIGp1c3QgYSBkaXNwYXRjaCB0bwo8dHQ+YWRkX2VkZ2UodSwgdiwgZyk8L3R0Pi4gCjxsaT48dHQ+ZWRnZV9pbmRleF91cGRhdGVfdmlzaXRvcjwvdHQ+OiBUaGUgY29uc3RydWN0b3Igb2YgdGhpcyBjbGFzcyB0YWtlcwp0d28gYXJndW1lbnRzOiB0aGUgZmlyc3QsIGFuIEVkZ2VJbmRleE1hcCwKaXMgYSA8YSBocmVmPSIuLi8uLi9wcm9wZXJ0eV9tYXAvZG9jL1JlYWRXcml0ZVByb3BlcnR5TWFwLmh0bWwiPgpSZWFkV3JpdGVQcm9wZXJ0eU1hcDwvYT4gdGhhdCBtYXBzIGVhY2ggZWRnZSBpbiB0aGUgYXNzb2NpYXRlZCBncmFwaCAKPHR0Pmc8L3R0PiB0byBhIGRpc3RpbmN0IGludGVnZXIgaW4gdGhlIHJhbmdlIDx0dD5bMCwgbnVtX2VkZ2VzKGcpKTwvdHQ+LiAKVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgbnVtYmVyIG9mIGVkZ2VzIGluIHRoZSB1bmRlcmx5aW5nIGdyYXBoLCB3aGljaCAKc2VydmVzIGFzIHRoZSAibmV4dCBhdmFpbGFibGUgaW5kZXgiIGNvdW50ZXIgd2l0aGluIHRoZSB2aXNpdG9yLgpGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2UgdGhlIGdyYXBoIHVzZWQgaGFzIGFuIGluaXRpYWxpemVkIGludGVyaW9yIAplZGdlIGluZGV4LCB0aGUgPHR0PmVkZ2VfaW5kZXhfdXBkYXRlX3Zpc2l0b3I8L3R0PiBjb25zdHJ1Y3RvciBzaG91bGQgYmUgCmNhbGxlZCB3aXRoIDx0dD5nZXQoZWRnZV9pbmRleCwgZyk8L3R0PiBhcyB0aGUgZWRnZSBpbmRleCBhbmQgCjx0dD5udW1fZWRnZXMoZyk8L3R0PiBhcyB0aGUgbmV4dCBhdmFpbGFibGUgaW5kZXguIFdoZW4gCjx0dD52aXNpdF92ZXJ0ZXhfcGFpcih1LCB2LCBnKTwvdHQ+IGlzIGNhbGxlZCwgdGhlIAo8dHQ+ZWRnZV9pbmRleF91cGRhdGVfdmlzaXRvcjwvdHQ+IHdpbGwgYWRkIHRoZSBlZGdlIDxpPih1LHYpPC9pPiB0byB0aGUgZ3JhcGgKYW5kIHVwZGF0ZSB0aGUgZWRnZSBpbmRleCBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgZWRnZS4KPC91bD4KCjxwPgoKPGJyPgo8L3A+PGhyPgpDb3B5cmlnaHQgqSAyMDA3IEFhcm9uIFdpbmRzb3IgKDxhIGhyZWY9Im1haWx0bzphYXJvbi53aW5kc29yQGdtYWlsLmNvbSI+CmFhcm9uLndpbmRzb3JAZ21haWwuY29tPC9hPikgCgo8L2JvZHk+PC9odG1sPgo=