PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIj4KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPHRpdGxlPjEuMzQgKEludGVybmF0aW9uYWxpemF0aW9uKSBDaGFuZ2VzPC90aXRsZT4KPC9oZWFkPgoKPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiI+Cgo8aDE+MS4zNCAoSW50ZXJuYXRpb25hbGl6YXRpb24pIENoYW5nZXM8L2gxPgo8aDI+SW50cm9kdWN0aW9uPC9oMj4KPHA+VGhpcyByZWxlYXNlIGlzIGEgbWFqb3IgdXBncmFkZSBmb3IgdGhlIEZpbGVzeXN0ZW0gTGlicmFyeSwgaW4gcHJlcGFyYXRpb24gCmZvciBzdWJtaXNzaW9uIHRvIHRoZSBDKysgU3RhbmRhcmRzIENvbW1pdHRlZS4gRmVhdHVyZXMgb2YgdGhpcyByZWxlYXNlIAppbmNsdWRlOjwvcD4KPHVsPgogIDxsaT48YSBocmVmPSIjSW50ZXJuYXRpb25hbGl6YXRpb24iPkludGVybmF0aW9uYWxpemF0aW9uPC9hPiwgcHJvdmlkZWQgYnkgCiAgY2xhc3MgdGVtcGxhdGVzIDxpPmJhc2ljX3BhdGg8L2k+LCA8aT5iYXNpY19maWxlc3lzdGVtX2Vycm9yPC9pPiwgPGk+CiAgYmFzaWNfZGlyZWN0b3J5X2l0ZXJhdG9yPC9pPiwgYW5kIDxpPmJhc2ljX2RpcmVjdG9yeV9lbnRyeTwvaT4uPGJyPgombmJzcDs8L2xpPgogIDxsaT48YSBocmVmPSIjU2ltcGxpZmljYXRpb24iPlNpbXBsaWZpY2F0aW9uPC9hPiBvZiB0aGUgcGF0aCBpbnRlcmZhY2UsIAogIGluY2x1ZGluZyBlbGltaW5hdGlvbiBvZiBkaXN0aW5jdGlvbiBiZXR3ZWVuIG5hdGl2ZSBhbmQgZ2VuZXJpYyBmb3JtYXRzLCAKICBhbmQgc2VwYXJhdGlvbiBvZiBuYW1lIGNoZWNraW5nIGZ1bmN0aW9uYWxpdHkgZnJvbSBnZW5lcmFsIHBhdGggZnVuY3Rpb25hbGl0eS4gCiAgQWxzbyBzaW1wbGlmaWNhdGlvbiBvZiA8aT5iYXNpY19maWxlc3lzdGVtX2Vycm9yPC9pPi48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPjxhIGhyZWY9IiNSYXRpb25hbGl6YXRpb24iPlJhdGlvbmFsaXphdGlvbjwvYT4gb2YgcHJlZGljYXRlIGZ1bmN0aW9uIAogIGRlc2lnbiwgaW5jbHVkaW5nIHRoZSBhZGRpdGlvbiBvZiBzZXZlcmFsIG5ldyBmdW5jdGlvbnMuPGJyPgombmJzcDs8L2xpPgogIDxsaT5DbGVhcmVyIHNwZWNpZmljYXRpb24gYnkgcmVmZXJlbmNlIHRvIFs8YSBocmVmPSJkZXNpZ24uaHRtI1BPU0lYLTAxIj5QT1NJWC0wMTwvYT5dLCAKICB0aGUgSVNPL0lFRUUgU2luZ2xlIFVuaXggU3RhbmRhcmQsIHdpdGggcHJvdmlzaW9ucyBmb3IgV2luZG93cyBhbmQgb3RoZXIgCiAgb3BlcmF0aW5nIHN5c3RlbXMuPGJyPgombmJzcDs8L2xpPgogIDxsaT48YSBocmVmPSIjUHJlc2VydmF0aW9uIj5QcmVzZXJ2YXRpb248L2E+IG9mIGV4aXN0aW5nIHVzZXIgY29kZSB3aGVuZXZlciAKICBwb3NzaWJsZS48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPjxhIGhyZWY9IiNNb3JlX2VmZmljaWVudCI+TW9yZSBlZmZpY2llbnQgb3BlcmF0aW9uczwvYT4gd2hlbiBpdGVyYXRpbmcgb3ZlciBkaXJlY3Rvcmllcy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPkEgPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciI+cmVjdXJzaXZlIAogIGRpcmVjdG9yeSBpdGVyYXRvcjwvYT4gaXMgbm93IHByb3ZpZGVkLiA8L2xpPgo8L3VsPgo8cD48YSBocmVmPSIjUmF0aW9uYWxlIj5SYXRpb25hbGU8L2E+IGZvciBzb21lIG9mIHRoZSBjaGFuZ2VzIGlzIGFsc28gcHJvdmlkZWQuPC9wPgo8aDI+PGEgbmFtZT0iSW50ZXJuYXRpb25hbGl6YXRpb24iPkludGVybmF0aW9uYWxpemF0aW9uPC9hPjwvaDI+CjxwPkNhc3MgdGVtcGxhdGVzIDxpPmJhc2ljX3BhdGg8L2k+LCA8aT5iYXNpY19maWxlc3lzdGVtX2Vycm9yPC9pPiwgYW5kIDxpPgpiYXNpY19kaXJlY3RvcnlfaXRlcmF0b3I8L2k+IHByb3ZpZGUgdGhlIGJhc2ljIG1lY2hhbmlzbXMgZm9yIAppbnRlcm5hdGlvbmFsaXphdGlvbiwgaW4gd2F5cyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5J3MgPGk+CmJhc2ljX3N0cmluZzwvaT4gYW5kIHNpbWlsYXIgY2xhc3MgdGVtcGxhdGVzLiBUaGUgZm9sbG93aW5nIHR5cGVkZWZzIGFyZSBhbHNvIApwcm92aWRlZDo8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+dHlwZWRlZiBiYXNpY19wYXRoJmx0O3N0ZDo6c3RyaW5nLCAuLi4mZ3Q7IHBhdGg7CnR5cGVkZWYgYmFzaWNfcGF0aCZsdDtzdGQ6OndzdHJpbmcsIC4uLiZndDsgd3BhdGg7Cgp0eXBlZGVmIGJhc2ljX2ZpbGVzeXN0ZW1fZXJyb3ImbHQ7cGF0aCZndDsgZmlsZXN5c3RlbV9lcnJvcjsKdHlwZWRlZiBiYXNpY19maWxlc3lzdGVtX2Vycm9yJmx0O3dwYXRoJmd0OyB3ZmlsZXN5c3RlbV9lcnJvcjsKCnR5cGVkZWYgYmFzaWNfZGlyZWN0b3J5X2l0ZXJhdG9yJmx0O3BhdGgmZ3Q7IGRpcmVjdG9yeV9pdGVyYXRvcjsKdHlwZWRlZiBiYXNpY19kaXJlY3RvcnlfaXRlcmF0b3ImbHQ7d3BhdGgmZ3Q7IHdkaXJlY3RvcnlfaXRlcmF0b3I7PC9wcmU+CjwvYmxvY2txdW90ZT4KPHA+VGhlIHN0cmluZyB0eXBlIHVzZWQgYnkgQm9vc3QuRmlsZXN5c3RlbSA8aT5iYXNpY19wYXRoPC9pPiAoc3RkOjpzdHJpbmcsIApzdGQ6OndzdHJpbmcsIG9yIHdoYXRldmVyKSBpcyBjYWxsZWQgdGhlIDxpPmludGVybmFsPC9pPiBzdHJpbmcgdHlwZS4gVGhlIHN0cmluZyAKdHlwZSB1c2VkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZvciBwYXRocyAob2Z0ZW4gY2hhciosIHNvbWV0aW1lcyB3Y2hhcl90KikgaXMgCmNhbGxlZCB0aGUgPGk+ZXh0ZXJuYWw8L2k+IHN0cmluZyB0eXBlLiBDb252ZXJzaW9uIGJldHdlZW4gaW50ZXJuYWwgYW5kIGV4dGVybmFsIAp0eXBlcyBpcyBwZXJmb3JtZWQgYnkgcGF0aCB0cmFpdHMgY2xhc3Nlcy4gVGhlIHNwZWNpZmljIGNvbnZlcnNpb25zIGZvciA8aT5wYXRoPC9pPiAKYW5kIDxpPndwYXRoPC9pPiBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLCB3aXRoIG5vcm1hdGl2ZSBlbmNvdXJhZ2VtZW50IHRvIHVzZSAKdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBwcmVmZXJyZWQgZmlsZSBzeXN0ZW0gZW5jb2RpbmcuIEZvciBtYW55IG1vZGVybiBQT1NJWC1iYXNlZCAKZmlsZSBzeXN0ZW1zIHRoZSA8aT53cGF0aDwvaT4gZXh0ZXJuYWwgZW5jb2RpbmcgaXMgPGEgaHJlZj0iZGVzaWduLmh0bSNLdWhuIj4KVVRGLTg8L2E+LCB3aGlsZSBmb3IgbW9kZXJuIFdpbmRvd3MgZmlsZSBzeXN0ZW1zIHN1Y2ggYXMgTlRGUyBpdCBpcwo8YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0xNiI+VVRGLTE2PC9hPi48L3A+CjxwPlRoZSA8YSBocmVmPSJyZWZlcmVuY2UuaHRtbCNPcGVyYXRpb25zLWZ1bmN0aW9ucyI+b3BlcmF0aW9uYWwgZnVuY3Rpb25zPC9hPiBpbgo8YSBocmVmPSIuLi8uLi8uLi8uLi9ib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwIj5vcGVyYXRpb25zLmhwcDwvYT4gYXJlIHByb3ZpZGVkIHdpdGggb3ZlcmxvYWRzIGZvcgo8aT5wYXRoPC9pPiwgPGk+d3BhdGg8L2k+LCBhbmQgdXNlci1kZWZpbmVkIDxpPmJhc2ljX3BhdGg8L2k+J3MuIEEKPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjUmVxdWlyZW1lbnRzLW9uLWltcGxlbWVudGF0aW9ucyI+JnF1b3Q7ZG8tdGhlLXJpZ2h0LXRoaW5nJnF1b3Q7IHJ1bGU8L2E+IAphcHBsaWVzIHRvIGltcGxlbWVudGF0aW9ucywgZW5zdXJpbmcgdGhhdCB0aGUgY29ycmVjdCBvdmVybG9hZCB3aWxsIGJlIGNob3Nlbi48L3A+CjxoMj48YSBuYW1lPSJTaW1wbGlmaWNhdGlvbiI+U2ltcGxpZmljYXRpb248L2E+IG9mIHBhdGggaW50ZXJmYWNlPC9oMj4KPHA+UHJpb3IgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgcmVxdWlyZWQgdXNlcnMgb2YgY2xhc3MgPGk+cGF0aDwvaT4gdG8gaWRlbnRpZnkgCnRoZSBmb3JtYXQgKG5hdGl2ZSBvciBnZW5lcmljKSBhbmQgbmFtZSBlcnJvci1jaGVja2luZyBwb2xpY3ksIGVpdGhlciB2aWEgYSAKc2Vjb25kIGNvbnN0cnVjdG9yIGFyZ3VtZW50IG9yIHZpYSBhIGRlZmF1bHQgbWVjaGFuaXNtLiBUaGF0IGFwcHJvYWNoIGNhdXNlZCAKY29tcGxhaW50cywgcGFydGljdWxhcmx5IGZyb20gdXNlcnMgbm90IG5lZWRpbmcgdGhlIG5hbWUgY2hlY2tpbmcgZmVhdHVyZXMuIFRoZSAKaW50ZXJmYWNlIGhhcyBub3cgYmVlbiBzaW1wbGlmaWVkOjwvcD4KPHVsPgogIDxsaT5UaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBuYXRpdmUgYW5kIGdlbmVyaWMgZm9ybWF0cyBoYXMgYmVlbiBlbGltaW5hdGVkLiAKICBTZWUgPGEgaHJlZj0iI2Rpc3RpbmN0aW9uIj5yYXRpb25hbGU8L2E+LiBUd28gYXJndW1lbnQgZm9ybXMgb2YgcGF0aCAKICBjb25zdHJ1Y3RvcnMgYXJlIG5vdyBkZXByZWNhdGVkLCB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgaGF2aW5nIG5vIGVmZmVjdC4gCiAgVGhlc2UgY29uc3RydWN0b3JzIGFyZSBvbmx5IHByb3ZpZGVkIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gb2YgZXhpc3RpbmcgY29kZS48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlBhdGggbmFtZSBjaGVja2luZyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG1vdmVkIG91dCBvZiBjbGFzcyBwYXRoIGFuZCBpbnRvIAogIHNlcGFyYXRlIGZyZWUtZnVuY3Rpb25zLiBUaGlzIHN0aWxsIHByb3ZpZGVzIG5hbWUgY2hlY2tpbmcgZm9yIHRob3NlIHdobyBuZWVkIAogIGl0LCBidXQgd2l0aCBtdWNoIGxlc3MgaW1wYWN0IG9uIHRob3NlIHdobyBkb24ndCBuZWVkIGl0LjwvbGk+CjwvdWw+CjxwPkFkZGl0aW9uYWxseSwKPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjQ2xhc3MtdGVtcGxhdGUtYmFzaWNfZmlsZXN5c3RlbV9lcnJvciI+YmFzaWNfZmlsZXN5c3RlbV9lcnJvcjwvYT4gaGFzIGJlZW4gcHV0IApvbiBhIGRpZXQgYW5kIGdlbmVyYWxseSBzaW1wbGlmaWVkLjwvcD4KPHA+RXJyb3IgY29kZXMgaGF2ZSBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgbGlicmFyeSwKPGEgaHJlZj0iLi4vLi4vLi4vc3lzdGVtL2RvYy9pbmRleC5odG1sIj5Cb29zdC5TeXN0ZW08L2E+LjwvcD4KPHA+PGNvZGU+JnF1b3Q7Ly86JnF1b3Q7PC9jb2RlPiBoYXMgYmVlbiBpbnRyb2R1Y2VkIGFzIGEgcGF0aCBlc2NhcGUgcHJlZml4IHRvIGlkZW50aWZ5IApuYXRpdmUgcGF0aHMuIFJhdGlvbmFsZTogc2ltcGxpZmllcyBiYXNpY19wYXRoIGNvbnN0cnVjdG9yIGludGVyZmFjZXMsIGVhc2llciAKdXNlIGZvciBwbGF0Zm9ybXMgbmVlZGluZyBleHBsaWNpdCBuYXRpdmUgZm9ybWF0IGlkZW50aWZpY2F0aW9uLjwvcD4KPGgyPjxhIG5hbWU9IlJhdGlvbmFsaXphdGlvbiI+UmF0aW9uYWxpemF0aW9uPC9hPiBvZiBwcmVkaWNhdGUgZnVuY3Rpb25zPC9oMj4KPHA+SW4gZGlzY3Vzc2lvbnMgYW5kIGJ1ZyByZXBvcnRzIG9uIHRoZSBCb29zdCBkZXZlbG9wZXJzIG1haWxpbmcgbGlzdCwgaXQgCmJlY2FtZSBvYnZpb3VzIHRoYXQgQm9vc3QuRmlsZXN5c3RlbSdzIGV4aXN0cygpLCBzeW1ib2xpY19saW5rX2V4aXN0cygpLCBhbmQgCmlzX2RpcmVjdG9yeSgpIHByZWRpY2F0ZSBmdW5jdGlvbnMgd2VyZSBwb29ybHkgc3BlY2lmaWVkLiBUaGVyZSB3ZXJlIHN1Z2dlc3Rpb25zIAp0byBhZGQgYW4gaXNfYWNjZXNzaWJsZSgpIGZ1bmN0aW9uLCBidXQgUGV0ZXIgRGltb3YgYXJndWVkIHRoYXQgdGhpcyBhbW91bnRlZCB0byAKcGFwZXJpbmcgb3ZlciB0aGUgbGFjayBvZiBhIGNsZWFyIHNwZWNpZmljYXRpb24gYW5kIHdvdWxkIGxpa2VseSBsZWFkIHRvIGZ1dHVyZSAKcHJvYmxlbXMuPC9wPgo8cD5QZXRlciBzdWdnZXN0ZWQgdGhhdCBhbiBpbnRlcmVzdGluZyB3YXkgdG8gYW5hbHl6ZSB0aGUgcHJvYmxlbSB3YXMgdG8gYXNrIAp3aGF0IHRoZSBleHBlY3RhdGlvbnMgd2VyZSBmb3IgdHJ1ZSBhbmQgZmFsc2UgdmFsdWVzIG9mIHRoZSB2YXJpb3VzIHByZWRpY2F0ZXMuIApTZWUgdGhlIDxhIGhyZWY9IiN0YWJsZSI+dGFibGU8L2E+IGJlbG93LjwvcD4KPGgzPnN0YXR1cygpPC9oMz4KPHA+QXMgcGFydCBvZiB0aGUgcHJlZGljYXRlIGRpc2N1c3Npb25zLCBwYXJ0aWN1bGFybHkgd2l0aCBSb2IgU3Rld2FydCwgaXQgCmJlY2FtZSBvYnZpb3VzIHRoYXQgc29tZXRpbWVzIGFwcGxpY2F0aW9ucyBuZWVkIGFjY2VzcyB0byByYXcgc3RhdHVzIGluZm9ybWF0aW9uIAp3aXRob3V0IGFueSBwb3NzaWJpbGl0eSBvZiBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duLiBUaGUKPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjU3RhdHVzLWZ1bmN0aW9ucyI+c3RhdHVzKCk8L2E+IGZ1bmN0aW9uIHdhcyBhZGRlZCB0byBtZWV0IHRoaXMgCm5lZWQuIEl0IGFsc28gcHJvdmVkIGNsZWFyZXIgdG8gc3BlY2lmeSB0aGUgc2VtYW50aWNzIG9mIHByZWRpY2F0ZSBmdW5jdGlvbnMgaW4gCnRlcm1zIG9mIHN0YXR1cygpLjwvcD4KPGgzPjxhIG5hbWU9ImlzX2ZpbGUiPmlzX2ZpbGU8L2E+KCk8L2gzPgo8cD5BYm91dCB0aGUgc2FtZSB0aW1lLCBKZWZmIEdhcmxhbmQgc3VnZ2VzdGVkIHRoYXQgYW4KPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjUHJlZGljYXRlLWZ1bmN0aW9ucyI+aXNfZmlsZSgpPC9hPiBwcmVkaWNhdGUgd291bGQgCmNvbXBsaW1lbnQgPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjUHJlZGljYXRlLWZ1bmN0aW9ucyI+aXNfZGlyZWN0b3J5KCk8L2E+LiBJbiB3b3JraW5nIG9uIHRoZSBhbmFseXNpcyBiZWxvdywgaXQgYmVjYW1lIG9idmlvdXMgCnRoYXQgdGhlIGV4cGVjdGF0aW9ucyBmb3IgaXNfZmlsZSgpIHdlcmUgZGlmZmVyZW50IGZyb20gdGhlIGV4cGVjdGF0aW9ucyBmb3IgIWlzX2RpcmVjdG9yeSgpLCAKc28gaXNfZmlsZSgpIHdhcyBhZGRlZC4gPC9wPgo8aDM+PGEgbmFtZT0iaXNfb3RoZXIiPmlzX290aGVyPC9hPigpPC9oMz4KPHA+T24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcywgaXQgaXMgcG9zc2libGUgdG8gaGF2ZSBhIGRpcmVjdG9yeSBlbnRyeSB3aGljaCBpcyAKbm90IGZvciBlaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlLiBUaGUKPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjUHJlZGljYXRlLWZ1bmN0aW9ucyI+aXNfb3RoZXIoKTwvYT4gCmZ1bmN0aW9uIGlkZW50aWZpZXMgc3VjaCBjYXNlcy48L3A+CjxoMz5TaG91bGQgcHJlZGljYXRlcyB0aHJvdyBvbiBlcnJvcnM/PC9oMz4KPHA+U29tZSBjb25kaXRpb25zIHJlcG9ydGVkIGJ5IG9wZXJhdGluZyBzeXN0ZW1zIGFzIGVycm9ycyAoc2VlCjxhIGhyZWY9IiNGb290bm90ZSI+Zm9vdG5vdGU8L2E+KSBjbGVhcmx5IHNpbXBseSBpbmRpY2F0ZSB0aGF0IHRoZSBwcmVkaWNhdGUgaXMgCmZhbHNlLCByYXRoZXIgdGhhbiBpbmRpY2F0aW5nIHNlcmlvdXMgZmFpbHVyZS4gQnV0IG90aGVyIGVycm9ycyByZXByZXNlbnQgCnNlcmlvdXMgaGFyZHdhcmUgb3IgbmV0d29yayBwcm9ibGVtcywgb3IgcGVybWlzc2lvbnMgcHJvYmxlbXMuPC9wPgo8cD5Tb21lIHBlb3BsZSwgcGFydGljdWxhcmx5IFJvYiBTdGV3YXJ0LCBhcmd1ZSB0aGF0IGluIGEgZnVuY3Rpb24gbGlrZQo8YSBocmVmPSJyZWZlcmVuY2UuaHRtbCNQcmVkaWNhdGUtZnVuY3Rpb25zIj5pc19kaXJlY3RvcnkoKTwvYT4sIGFueSBlcnJvciBzaG91bGQgc2ltcGx5IGNhdXNlIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZmFsc2UuIElmIAp0aGVyZSBpcyBhY3R1YWxseSBhbiB1bmRlcmx5aW5nIHByb2JsZW0sIGl0IHdpbGwgYmUgZGV0ZWN0ZWQgaXQgZHVlIGNvdXJzZSB3aGVuIAphIGRpcmVjdG9yeV9pdGVyYXRvciBvciBmc3RyZWFtIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQuPC9wPgo8cD5UaGF0IHZpZXcgaXMgd2FzIHJlamVjdGVkIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBjb25zaWRlcmF0aW9uczo8L3A+Cjx1bD4KICA8bGk+QXMgYSBnZW5lcmFsIHByaW5jaXBsZSwgdGhlIGVhcmxpZXIgZXJyb3JzIGNhbiBiZSByZXBvcnRlZCwgdGhlIGJldHRlci4gCiAgVGhlIHJhdGlvbmFsZSBiZWluZyB0aGF0IGl0IGlzIG9mdGVuIG11Y2ggY2hlYXBlciB0byBmaXggZXJyb3JzIHNvb25lciByYXRoZXIgCiAgdGhhbiBsYXRlci4gSSd2ZSBhbHNvIGhhZCBhIGxvdCBvZiBuZWdhdGl2ZSBleHBlcmllbmNlcyB3aGVyZSBmYWlsdXJlIHRvIAogIGRldGVjdCBlcnJvcnMgZWFybHkgY2F1c2VkIGEgbG90IG9mIHBhaW4gYW5kIHVuaGFwcHkgY3VzdG9tZXJzLiBTb21lIG9mIHRoZXNlIAogIHdlcmUgZGlyZWN0bHkgY2F1c2VkIGJ5IGlnbm9yaW5nIGVycm9yIHJldHVybnMgZnJvbSBmaWxlIHN5c3RlbSBvcGVyYXRpb25zLjxicj4KICAmbmJzcDs8L2xpPgogIDxsaT5BbmFseXNpcyBvZiBleGlzdGluZyBwcm9ncmFtcyBpbmRpY2F0ZWQgdGhhdCBhcyBtdWNoIGFzIDMwJSBvZiB0aGUgdXNlIG9mIAogIGEgcHJlZGljYXRlIHdhcyBub3QgZm9sbG93ZWQgYnkgZGlyZWN0b3J5X2l0ZXJhdG9yIG9yIGZzdHJlYW0gb3BlcmF0aW9ucyBvbiAKICB0aGUgcGF0aCBpbiBxdWVzdGlvbi4gSW5zdGVhZCwgdGhlIGFwcGxpY2F0aW9ucyBwZXJmb3JtZWQgcmVwb3J0aW5nIG9yIAogIGZhbGwtYmFjayBvcGVyYXRpb25zIHRoYXQgd291bGQgbm90IGZhaWwsIGFuZCB0aHVzIHdlcmUgZWl0aGVyIG1pc2xlYWRpbmcgb3IgCiAgY29tcGxldGVseSB3cm9uZyBpZiB0aGUgPGk+ZmFsc2U8L2k+IHJldHVybiB2YWx1ZSB3YXMgaW4gZmFjdCBjYXVzZWQgYnkgCiAgaGFyZHdhcmUgb3IgbmV0d29yayBmYWlsdXJlLCBvciBwZXJtaXNzaW9ucyBwcm9ibGVtcy48L2xpPgo8L3VsPgo8cD5Ib3dldmVyLCB0aGUgZGlzY3Vzc2lvbiBkaWQgaWRlbnRpZnkgdGhhdCB0aGVyZSBhcmUgdmFsaWQgY2FzZXMgd2hlcmUgCm5vbi10aHJvd2luZyBiZWhhdmlvciBpcyBhIHJlcXVpcmVtZW50LCBhbmQgYSBwcm9ncmFtbWVyIG1heSBwcmVmZXIgdG8gZGVhbCB3aXRoIApmaWxlIG9yIGRpcmVjdG9yeSBhdHRyaWJ1dGVzIGFuZCBlcnJvcnMgYXQgYSB2ZXJ5IGxvdywgYml0LW1hc2ssIGxldmVsLiBGdW5jdGlvbiA8YSBocmVmPSIjc3RhdHVzIj5zdGF0dXMoKTwvYT4gCndhcyBwcm9wb3NlZCB0byBtZWV0IHRob3NlIG5lZWRzLjwvcD4KPGgzPjxhIG5hbWU9IkV4cGVjdGF0aW9ucyI+RXhwZWN0YXRpb25zPC9hPiA8YSBuYW1lPSJ0YWJsZSI+dGFibGU8L2E+PC9oMz4KPHA+SW4gdGhlIHRhYmxlIGJlbG93LCA8aT5wPC9pPiBpcyBhIG5vbi1lbXB0eSBwYXRoLjwvcD4KPHA+VW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIGFsbCBmdW5jdGlvbnMgdGhyb3cgb24gaGFyZHdhcmUgb3IgZ2VuZXJhbCAKZmFpbHVyZSBlcnJvcnMsIHBlcm1pc3Npb24gb3IgYWNjZXNzIGVycm9ycywgc3ltYm9saWMgbGluayBsb29wIGVycm9ycywgYW5kIAppbnZhbGlkIHBhdGggZXJyb3JzLiBJZiBhbiBPL1MgZmFpbHMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlcnJvciB0eXBlcywgCnByZWRpY2F0ZSBvcGVyYXRpb25zIHJldHVybiBmYWxzZSBvbiBzdWNoIGFtYmlndW91cyBlcnJvcnMuPC9wPgo8cD48aT48Yj5FeHBlY3RhdGlvbnM8L2I+PC9pPiBpZGVudGlmeSBvcGVyYXRpb25zIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHN1Y2NlZWQgCm9yIGZhaWwsIGFzc3VtaW5nIG5vIGhhcmR3YXJlLCBwZXJtaXNzaW9uLCBvciBhY2Nlc3MgcmlnaHQgZXJyb3JzLCBhbmQgbm8gcmFjZSAKY29uZGl0aW9ucy48L3A+Cjx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMTExMTExIiB3aWR0aD0iMTAwJSI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMiUiIGFsaWduPSJjZW50ZXIiPjxiPjxpPkV4cHJlc3Npb248L2k+PC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ4JSIgYWxpZ249ImNlbnRlciI+PGI+PGk+RXhwZWN0YXRpb25zPC9pPjwvYj48L3RkPgogICAgPHRkIHdpZHRoPSIxMDglIiBhbGlnbj0iY2VudGVyIj48Yj48aT5TZW1hbnRpY3M8L2k+PC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIyJSI+aXNfZGlyZWN0b3J5KHApPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDglIj5SZXR1cm5zIHRydWUgaWYgcCBpcyBmb3VuZCBhbmQgaXMgYSBkaXJlY3RvcnksIGVsc2UgZmFsc2UuPGJyPgogICAgSWYgdHJ1ZSwgdGhlbiBkaXJlY3RvcnlfaXRlcmF0b3IocCkgd291bGQgc3VjY2VlZC48YnI+CiAgICBJZiBmYWxzZSwgdGhlbiBkaXJlY3RvcnlfaXRlcmF0b3IocCkgd291bGQgZmFpbC48L3RkPgogICAgPHRkIHdpZHRoPSIxMDglIj5UaHJvd3M6IGlmIDxhIGhyZWY9IiNzdGF0dXMiPnN0YXR1cygpPC9hPiAmYW1wOyBlcnJvcl9mbGFnPGJyPgogICAgUmV0dXJuczogc3RhdHVzKCkgJmFtcDsgZGlyZWN0b3J5X2ZsYWc8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMiUiPmlzX2ZpbGUocCk8L3RkPgogICAgPHRkIHdpZHRoPSI0OCUiPlJldHVybnMgdHJ1ZSBpZiBwIGlzIGZvdW5kIGFuZCBpcyBub3QgYSBkaXJlY3RvcnksIGVsc2UgCiAgICBmYWxzZS48YnI+CiAgICBJZiB0cnVlLCB0aGVuIGlmc3RyZWFtKHApIHdvdWxkIHN1Y2NlZWQuPGJyPgogICAgRmFsc2UsIGhvd2V2ZXIsIGRvZXMgbm90IGltcGx5IGlmc3RyZWFtKHApIHdvdWxkIGZhaWwgKGJlY2F1c2Ugc29tZSAKICAgIG9wZXJhdGluZyBzeXN0ZW1zIGFsbG93IGRpcmVjdG9yaWVzIHRvIGJlIG9wZW5lZCBhcyBmaWxlcywgYnV0IHN0YXQoKSBkb2VzIAogICAgc2V0IHRoZSAmcXVvdDtyZWd1bGFyIGZpbGUmcXVvdDsgZmxhZy4pPC90ZD4KICAgIDx0ZCB3aWR0aD0iMTA4JSI+VGhyb3dzOiBpZiBzdGF0dXMoKSAmYW1wOyBlcnJvcl9mbGFnPGJyPgogICAgUmV0dXJuczogc3RhdHVzKCkgJmFtcDsgZmlsZV9mbGFnPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMjIlIj5leGlzdHMocCkgPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDglIj5SZXR1cm5zIGlzX2RpcmVjdG9yeShwKSB8fCBpc19maWxlKHApIHx8IGlzX290aGVyKHApPC90ZD4KICAgIDx0ZCB3aWR0aD0iMTA4JSI+VGhyb3dzOiBpZiBzdGF0dXMoKSAmYW1wOyBlcnJvcl9mbGFnPGJyPgogICAgUmV0dXJuczogc3RhdHVzKCkgJmFtcDsmbmJzcDsmbmJzcDsgKGRpcmVjdG9yeV9mbGFnfGZpbGVfZmxhZ3xvdGhlcl9mbGFnKTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIyJSI+aXNfc3ltbGluayhwKTwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ4JSI+UmV0dXJucyB0cnVlIGlmIHAgaXMgZm91bmQgYnkgc2hhbGxvdyAobm9uLXRyYW5zaXRpdmUpIAogICAgc2VhcmNoLCBhbmQgaXMgYSBzeW1ib2xpYyBsaW5rLCBlbHNlIGZhbHNlLjxicj4KICAgIElmIHRydWUsIGFuZCBwIHBvaW50cyB0byBxLCB0aGVuIGZvciBhbnkgZmlsZXN5c3RlbSBmdW5jdGlvbiBmIGV4Y2VwdCB0aG9zZSAKICAgIHNwZWNpZmllZCBhcyB3b3JraW5nIHNoYWxsb3dseSBvbiBzeW1saW5rcyB0aGVtc2VsdmVzLCBmKHApIGNhbGxzIGYocSksIGFuZCAKICAgIHJldHVybnMgYW55IHZhbHVlIHJldHVybmVkIGJ5IGYocSkuPC90ZD4KICAgIDx0ZCB3aWR0aD0iMTA4JSI+VGhyb3dzOiBpZiA8YSBocmVmPSIjc3RhdHVzIj5zeW1saW5rX3N0YXR1czwvYT4oKSAmYW1wOyAKICAgIGVycm9yX2ZsYWc8YnI+CiAgICBSZXR1cm5zOiBzeW1saW5rX3N0YXR1cygpICZhbXA7IHN5bWxpbmtfZmxhZzwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIyJSI+IWV4aXN0cyhwKSAmYW1wOyZhbXA7ICgocC5oYXNfYnJhbmNoX3BhdGgoKSAmYW1wOyZhbXA7IGV4aXN0cyggcC5icmFuY2hfcGF0aCgpKSAKICAgIHx8ICghcC5oYXNfYnJhbmNoX3BhdGgoKSAmYW1wOyZhbXA7ICFwLmhhc19yb290X3BhdGgoKSkpPGJyPgogICAgPGk+SW4gb3RoZXIgd29yZHMsIGlmIHRoZSBwYXRoIGRvZXMgbm90IGV4aXN0LCBhbmQgKHRoZSBicmFuY2ggZG9lcyBleGlzdCwgCiAgICBvciAodGhlcmUgaXMgbm8gYnJhbmNoIGFuZCBubyByb290KSkuPC9pPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ4JSI+SWYgdHJ1ZSwgY3JlYXRlX2RpcmVjdG9yeShwKSB3b3VsZCBzdWNjZWVkLjxicj4KICAgIElmIHRydWUsIG9mc3RyZWFtKHApIHdvdWxkIHN1Y2NlZWQuPGJyPgogICAgJm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iMTA4JSI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMjIlIj5kaXJlY3RvcnlfaXRlcmF0b3IgaXQocCk8L3RkPgogICAgPHRkIHdpZHRoPSI0OCUiPklmIGl0ICE9IGRpcmVjdG9yeV9pdGVyYXRvcigpLCBhc3NlcnQoZXhpc3RzKCppdCl8fGlzX3N5bWxpbmsoKml0KSkuIAogICAgTm90ZTogZXhpc3RzKCppdCkgbWF5IHRocm93LCBhbmQgbGlrZXdpc2Ugc3RhdHVzKCppdCkgbWF5IHJldHVybiBlcnJvcl9mbGFnIAogICAgLSB0aGVyZSBpcyBubyBndWFyYW50ZWUgb2YgYWNjZXNzaWJpbGl0eS48L3RkPgogICAgPHRkIHdpZHRoPSIxMDglIj4mbmJzcDs8L3RkPgogIDwvdHI+CjwvdGFibGU+CjxoMz48YSBuYW1lPSJDb25jbHVzaW9uIj5Db25jbHVzaW9uPC9hPjwvaDM+CjxwPlByZWRpY2F0ZSBvcGVyYXRpb25zIGlzX2RpcmVjdG9yeSgpLCBpc19maWxlKCksIGlzX3N5bWxpbmsoKSwgYW5kIGV4aXN0cygpIAp3aXRoIHRoZSBpbmRpY2F0ZWQgc2VtYW50aWNzIGZvcm0gYSBzZWxmLWNvbnNpc3RlbnQgc2V0IHRoYXQgbWVldHMgZXhwZWN0YXRpb25zLjwvcD4KPGgyPjxhIG5hbWU9IlByZXNlcnZhdGlvbiI+UHJlc2VydmF0aW9uPC9hPiBvZiBleGlzdGluZyB1c2VyIGNvZGU8L2gyPgo8cD5BbHRob3VnaCB0aGUgY2hhbmdlIHRvIGEgdGVtcGxhdGUgYmFzZWQgYXBwcm9hY2ggcmVxdWlyZWQgYSBjb21wbGV0ZSBvdmVyaGF1bCAKb2YgdGhlIGltcGxlbWVudGF0aW9uIGNvZGUsIHRoZSAgaW50ZXJmYWNlIGFzIHVzZWQgYnkgZXhpc3RpbmcgYXBwbGljYXRpb25zIGlzIG1vc3RseSB1bmNoYW5nZWQuIApDb252ZXJzaW9uIHByb2JsZW1zIHdoaWNoIHdvdWxkIApvdGhlcndpc2UgYWZmZWN0IHVzZXIgY29kZSBoYXZlIGJlZW4gcmVkdWNlZCBieSBwcm92aWRpbmcgZGVwcmVjYXRlZCAKZnVuY3Rpb25zIHRvIGVhc2UgdHJhbnNpdGlvbi4gVGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIGFyZTo8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+Ly8gY2xhc3MgYmFzaWNfcGF0aCAtIDJuZCBjb25zdHJ1Y3RvciBhcmd1bWVudCBpZ25vcmVkOgpiYXNpY19wYXRoKCBjb25zdCBzdHJpbmdfdHlwZSAmYW1wOyBzdHIsIG5hbWVfY2hlY2sgKTsKYmFzaWNfcGF0aCggY29uc3QgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnZhbHVlX3R5cGUgKiBzLCBuYW1lX2NoZWNrICk7CgovLyBjbGFzcyBiYXNpY19wYXRoIC0gb2xkIG5hbWVzIHByb3ZpZGVkIGZvciByZW5hbWVkIGZ1bmN0aW9uczoKc3RyaW5nX3R5cGUgbmF0aXZlX2ZpbGVfc3RyaW5nKCkgY29uc3Q7CnN0cmluZ190eXBlIG5hdGl2ZV9kaXJlY3Rvcnlfc3RyaW5nKCkgY29uc3Q7CgovLyBjbGFzcyBiYXNpY19wYXRoIC0gbm93IGRlZmluZWQgc3VjaCB0aGF0IHRoZXNlIG5vIGxvbmdlciBoYXZlIGFueSByZWFsIGVmZmVjdDoKc3RhdGljIGJvb2wgZGVmYXVsdF9uYW1lX2NoZWNrX3dyaXRhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0gCnN0YXRpYyB2b2lkIGRlZmF1bHRfbmFtZV9jaGVjayggbmFtZV9jaGVjayApIHt9CnN0YXRpYyBuYW1lX2NoZWNrIGRlZmF1bHRfbmFtZV9jaGVjaygpIHsgcmV0dXJuIDA7IH0KCi8vIG5vbi1kZWR1Y2libGUgb3BlcmF0aW9ucyBmdW5jdGlvbnMgYXNzdW1lIGNsYXNzIHBhdGgKaW5saW5lIHBhdGggY3VycmVudF9wYXRoKCkKaW5saW5lIGNvbnN0IHBhdGggJmFtcDsgaW5pdGlhbF9wYXRoKCkKCi8vIHRoZSBuZXcgYmFzaWNfZGlyZWN0b3J5X2VudHJ5IHByb3ZpZGVzIGxlYWYoKQovLyB0byBjb3ZlciB0aGUgY29tbW9uIGV4aXN0aW5nIHVzZSBjYXNlIGl0ci0mZ3Q7bGVhZigpCnR5cGVuYW1lIFBhdGg6OnN0cmluZ190eXBlIGxlYWYoKSBjb25zdDs8L3ByZT4KPC9ibG9ja3F1b3RlPgo8cD5JZiB5b3UgZG8gbm90IHdhbnQgIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9ucyB0byBiZSBpbmNsdWRlZCwgZGVmaW5lIHRoZSBtYWNybyBCT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQuPC9wPgo8cD5UaGUgZ3JlYXRlc3QgaW1wYWN0IG9uIGV4aXN0aW5nIGNvZGUgaXMgdGhlIGNoYW5nZSBvZiBkaXJlY3RvcnkgaXRlcmF0b3IgCnZhbHVlIHR5cGUgZnJvbSA8Y29kZT5wYXRoPC9jb2RlPiB0byA8Y29kZT5kaXJlY3RvcnlfZW50cnk8L2NvZGU+LiBUbyBlYXNlIHRoZSAKbW9zdCBjb21tb24gZGlyZWN0b3J5IGl0ZXJhdG9yIHVzZSBjYXNlLCA8Y29kZT5iYXNpY19kaXJlY3RvcnlfZW50cnk8L2NvZGU+IApwcm92aWRlcyBhbiBhdXRvbWF0aWMgY29udmVyc2lvbiB0byA8Y29kZT5iYXNpY19wYXRoPC9jb2RlPiwgYW5kIHRoaXMgYWxzbyAKc2VydmVzIHRvIHByZXZlbnQgYnJlYWthZ2Ugb2YgYSBsb3Qgb2YgZXhpc3RpbmcgY29kZS4gU2VlIHRoZQo8YSBocmVmPSIjTW9yZV9lZmZpY2llbnQiPm5leHQgc2VjdGlvbjwvYT4gZm9yIGRpc2N1c3Npb24gb2YgcmF0aW9uYWxlLjwvcD4KPGJsb2NrcXVvdGU+CiAgPHByZT4vLyB0aGUgbmV3IGJhc2ljX2RpcmVjdG9yeV9lbnRyeSBwcm92aWRlczoKb3BlcmF0b3IgY29uc3QgcGF0aF90eXBlICZhbXA7KCkgY29uc3Q7PC9wcmU+CiAgPC9ibG9ja3F1b3RlPgo8aDI+PGEgbmFtZT0iTW9yZV9lZmZpY2llbnQiPk1vcmUgZWZmaWNpZW50PC9hPiBvcGVyYXRpb25zIHdoZW4gaXRlcmF0aW5nIG92ZXIgCmRpcmVjdG9yaWVzPC9oMj4KPHA+U2V2ZXJhbCBjb21tb24gcmVhbC13b3JsZCBvcGVyYXRpbmcgc3lzdGVtcyAoQlNEIGRlcml2YXRpdmVzLCBMaW51eCwgV2luZG93cykgCnByb3ZpZGUgc3RhdHVzIGluZm9ybWF0aW9uIGR1cmluZyBkaXJlY3RvcnkgaXRlcmF0aW9uLiBDYWNoaW5nIG9mIHRoaXMgc3RhdHVzIAppbmZvcm1hdGlvbiByZXN1bHRzIGluIHRocmVlIHRvIHNpeCB0aW1lcyBmYXN0ZXIgb3BlcmF0aW9uIGZvciB0eXBpY2FsIHByZWRpY2F0ZSAKb3BlcmF0aW9ucy4gKEZvciBhIGRpcmVjdG9yeSBjb250YWluaW5nIDE1LDA0NyBmaWxlcywgaXRlcmF0aW9uIGluIDEgc2Vjb25kIHZzIDYgCnNlY29uZHMgb24gYSBmcmVzaGx5IGJvb3RlZCBzeXN0ZW0sIGFuZCAwLjMgc2Vjb25kcyB2cyAwLjkgc2Vjb25kcyBhZnRlciBwcmlvciB1c2Ugb2YgCnRoZSBkaXJlY3RvcnkuPC9wPgo8cD5UaGUgZWZmaWNpZW5jeSBnYWlucyBmcm9tIGNhY2hpbmcgc3VjaCBzdGF0dXMgaW5mb3JtYXRpb24gd2VyZSBjb25zaWRlcmVkIHRvbyAKc2lnbmlmaWNhbnQgdG8gaWdub3JlLiBCZWNhdXNlIHRoZSBwb3NzaWJpbGl0eSBvZiByYWNlLWNvbmRpdGlvbnMgZGlmZmVycyAKZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpcyB1c2VkIG9yIGFuIGFjdHVhbCBzeXN0ZW0gY2FsbCBpcyAKcGVyZm9ybWVkLCBpdCB3YXMgY29uc2lkZXJlZCBuZWNlc3NhcnkgdG8gcHJvdmlkZSBleHBsaWNpdCBmdW5jdGlvbnMgdXRpbGl6aW5nIAp0aGUgY2FjaGVkIGluZm9ybWF0aW9uLCByYXRoZXIgdGhhbiBpbXBsaWNpdGx5IHVzaW5nIHRoZSBjYWNoZSBiZWhpbmQgdGhlIApzY2VuZXMuPC9wPgo8cD5UaHJlZSBvcHRpb25zIHdlcmUgZXhwbG9yZWQgZm9yIGV4cG9zaW5nIHRoZSBjYWNoZWQgc3RhdHVzIGluZm9ybWF0aW9uLCB3aXRoIApmdWxsIGltcGxlbWVudGF0aW9ucyBvZiBlYWNoLiBBZnRlciBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIG9wdGlvbiAxIGV4cG9zZWQgCnRoZSBwcm9ibGVtcyBub3RlZCBiZWxvdywgb3B0aW9uIDIgd2FzIHRlc3RlZCBhcyBhIHBvc3NpYmxlIGVuZ2luZWVyaW5nIAp0cmFkZW9mZi4gT3B0aW9uIDMgCndhcyBmaW5hbGx5IGNob3NlbiBhcyB0aGUgY2xlYW5lc3QgZGVzaWduLjwvcD4KPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSIxMDAlIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjglIiBhbGlnbj0iY2VudGVyIj48Yj48aT5PcHRpb248L2k+PC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjI1JSIgYWxpZ249ImNlbnRlciI+PGk+PGI+SG93IGNhY2hlIGFjY2Vzc2VkPC9iPjwvaT48L3RkPgogICAgPHRkIHdpZHRoPSI5NCUiIGFsaWduPSJjZW50ZXIiPjxpPjxiPlByb3MgYW5kIENvbnM8L2I+PC9pPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PGk+PGI+MTwvYj48L2k+PC90ZD4KICAgIDx0ZCB3aWR0aD0iMjUlIiB2YWxpZ249InRvcCI+UHJlZGljYXRlIGZ1bmN0aW9uIG92ZXJsb2Fkczxicj4KICAgIChiYXNpY19kaXJlY3RvcnlfaXRlcmF0b3IgdmFsdWVfdHlwZSBpcyBwYXRoKTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk0JSI+CiAgICA8dWw+CiAgICAgIDxsaT5WZXJ5IFF1ZXN0aW9uYWJsZSBkZXNpZ24gKGZyaWVuZHNoaXAgYWJ1c2UsIG92ZXJsb2FkIGFidXNlLCBldGMpPC9saT4KICAgICAgPGxpPlVzZXIgY2Fubm90IHJldXNlIGNhY2hlPC9saT4KICAgICAgPGxpPlJlYWRhYmlsaXR5IHByb2JsZW07IGVhc3kgdG8gbWlzcyBkaWZmZXJlbmNlIGJldHdlZW4gZigqaXQpIGFuZCBmKGl0KTwvbGk+CiAgICAgIDxsaT5Xcml0ZS1hYmlsaXR5IHByb2JsZW0gKGVycm9yIHByb25lPyk8L2xpPgogICAgICA8bGk+TW9zdCBjb21tb24gaXRlcmF0b3IgdXNlIGlzIGJyaWVmOiAqaXQ8L2xpPgogICAgICA8bGk+UHJlc2VydmVzIGV4aXN0aW5nIGNvZGU8L2xpPgogICAgPC91bD4KICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PGI+PGk+MjwvaT48L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iMjUlIiB2YWxpZ249InRvcCI+UHJlZGljYXRlIG1lbWJlciBmdW5jdGlvbnMgb2YgYmFzaWNfZGlyZWN0b3J5XzxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRjAwIj5pdGVyYXRvcjwvc3Bhbj48YnI+CiAgICAoYmFzaWNfZGlyZWN0b3J5X2l0ZXJhdG9yIHZhbHVlX3R5cGUgaXMgcGF0aCk8L3RkPgogICAgPHRkIHdpZHRoPSI5NCUiPgogICAgPHVsPgogICAgICA8bGk+U29tZXdoYXQgY2xlYW5lciBkZXNpZ24gKGFsdGhvdWdoIGFkZGVkIGl0ZXJhdG9yIGZ1bmN0aW9ucyBpcyB1bnVzdWFsKTwvbGk+CiAgICAgIDxsaT5Vc2VyIGNhbm5vdCByZXVzZSBjYWNoZTwvbGk+CiAgICAgIDxsaT5SZWFkYWJpbGl0eSBhbmQgd3JpdGUtYWJpbGl0eSBpcyBPSzogZigqaXQpIGFuZCBpdC5mKCkgc3VmZmljaWVudGx5IAogICAgICBkaWZmZXJlbnQ8L2xpPgogICAgICA8bGk+TW9zdCBjb21tb24gaXRlcmF0b3IgdXNlIGlzIGJyaWVmOiAqaXQ8L2xpPgogICAgICA8bGk+UHJlc2VydmVzIGV4aXN0aW5nIGNvZGU8L2xpPgogICAgPC91bD4KICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PGI+PGk+MzwvaT48L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iMjUlIiB2YWxpZ249InRvcCI+UHJlZGljYXRlIG1lbWJlciBmdW5jdGlvbnMgb2YgYmFzaWNfZGlyZWN0b3J5XzxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRjAwIj5lbnRyeTwvc3Bhbj48YnI+CiAgICAoYmFzaWNfZGlyZWN0b3J5X2l0ZXJhdG9yIHZhbHVlX3R5cGUgaXMgYmFzaWNfZGlyZWN0b3J5X2VudHJ5KTxicj4KJm5ic3A7PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTQlIj4KICAgIDx1bD4KICAgICAgPGxpPkNsZWFuZXN0IGRlc2lnbi48L2xpPgogICAgICA8bGk+VXNlciBjYW4gcmV1c2UgY2FjaGUuPC9saT4KICAgICAgPGxpPlJlYWRhYmlsaXR5IGFuZCB3cml0ZS1hYmlsaXR5IGlzIE9LOiBmKCppdCkgYW5kIGl0LSZndDtmKCkgc3VmZmljaWVudGx5IAogICAgICBkaWZmZXJlbnQuPC9saT4KICAgICAgPGxpPk1vc3QgY29tbW9uIGl0ZXJhdG9yIHVzZSBpcyBsb25nZXI6IGl0LSZndDtwYXRoKCksIGJ1dCBieSBwcm92aWRpbmcgCiAgICAgICZxdW90O29wZXJhdG9yIGNvbnN0IGJhc2ljX3BhdGggJmFtcDsmcXVvdDsgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gd3JpdGUgYSBiYXJlICppdC48L2xpPgogICAgICA8bGk+QnJlYWtzIHNvbWUgZXhpc3RpbmcgY29kZS4gVGhlICZxdW90O29wZXJhdG9yIGNvbnN0IGJhc2ljX3BhdGggJmFtcDsmcXVvdDsgCiAgICAgIGNvbnZlcnNpb24gZWxpbWluYXRlcyBicmVha2FnZSBvZiB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2UsIHdoaWxlIAogICAgICBwcm92aWRpbmcgYSAoZGVwcmVjYXRlZCkgbGVhZigpIHByZXZlbnRzIGJyZWFrYWdlIG9mIHRoZSBzZWNvbmQgbW9zdCAKICAgICAgY29tbW9uIHVzZSBjYXNlLjwvbGk+CiAgICA8L3VsPgogICAgPC90ZD4KICA8L3RyPgogIDwvdGFibGU+CjxoMj48YSBuYW1lPSJSYXRpb25hbGUiPlJhdGlvbmFsZTwvYT48L2gyPgo8aDM+RWxpbWluYXRpb24gb2YgdGhlIG5hdGl2ZSB2ZXJzdXMgZ2VuZXJpYyA8YSBuYW1lPSJkaXN0aW5jdGlvbiI+ZGlzdGluY3Rpb248L2E+PC9oMz4KPHA+RWxpbWluYXRpb24gb2YgdXNlciBjb25mdXNpb24gYW5kIGdlbmVyYWwgZGVzaWduIHNpbXBsaWZpY2F0aW9uIHdhcyB0aGUgCm9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIGVsaW1pbmF0aW9uIG9mIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG5hdGl2ZSBhbmQgCmdlbmVyaWMgcGF0aHMuPC9wPgo8cD5EdXJpbmcgZGVzaWduIHdvcmssIGEgZnVydGhlciB0ZWNobmljYWwgYXJndW1lbnQgd2FzIGRpc2NvdmVyZWQuIENvbnNpZGVyIHRoZSAKcGF0aCA8Y29kZT4mcXVvdDtjOmZvby9iYXImcXVvdDs8L2NvZGU+LiBPbiBtYW55IFBPU0lYIHN5c3RlbXMsIDxjb2RlPiZxdW90O2M6Zm9vJnF1b3Q7PC9jb2RlPiBpcyBhIAp2YWxpZCBkaXJlY3RvcnkgbmFtZSwgc28gd2UgaGF2ZSBhIHR3byBlbGVtZW50IHBhdGggYW5kIHRoZXJlIGlzIG5vIGlzc3VlIG9mIApuYXRpdmUgdmVyc3VzIGdlbmVyaWMgZm9ybWF0LiBPbiBXaW5kb3dzIHN5c3RlbSwgaG93ZXZlciwgPGNvZGU+JnF1b3Q7YzomcXVvdDs8L2NvZGU+IGlzIGEgCmRyaXZlIHNwZWNpZmljYXRpb24sIHNvIHdlIGhhdmUgYSB0aHJlZSBlbGVtZW50IHBhdGguIEFsbCBjYWxscyB0byB0aGUgb3BlcmF0aW5nIApzeXN0ZW0gd2lsbCByZXN1bHQgaW4gPGNvZGU+JnF1b3Q7YzomcXVvdDs8L2NvZGU+IGJlaW5nIGNvbnNpZGVyZWQgYSBkcml2ZSBzcGVjaWZpY2F0aW9uOyAKdGhlcmUgaXMgbm8gd2F5IHRoYXQgZmFjdC1vZi1saWZlIGNhbiBiZSBjaGFuZ2VkIGJ5IGNsYWltaW5nIHRoZSBmb3JtYXQgaXMgCmdlbmVyaWMuIFRoZSBuYXRpdmUgdmVyc3VzIGdlbmVyaWMgZGlzdGluY3Rpb24gaXMgdGh1cyB1c2VsZXNzIGFuZCBtaXNsZWFkaW5nIApmb3IgUE9TSVgsIFdpbmRvd3MsIGFuZCBwcm9iYWJseSBtb3N0IG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLjwvcD4KPHA+SWYgcGF0aHMgZm9yIGEgcGFydGljdWxhciBvcGVyYXRpbmcgc3lzdGVtIGRpZCByZXF1aXJlIGEgZGlzdGluY3Rpb24gYmUgbWFkZSwgCml0IGNvdWxkIGJlIGRvbmUgYnkgcmVxdWlyaW5nIHRoYXQgbmF0aXZlIHBhdGhzIGJlIHByZWZpeGVkIHdpdGggc29tZSB1bmlxdWUgCmltcGxlbWVudGF0aW9uLWRlZmluZWQgaWRlbnRpZmljYXRpb24uIEZvciBleGFtcGxlLCA8Y29kZT4mcXVvdDtuYXRpdmUtcGF0aDomcXVvdDs8L2NvZGU+LiAKVGhpcyB3b3VsZCBvbmx5IGJlIHJlcXVpcmVkIGZvciBvcGVyYXRpbmcgc3lzdGVtcyB3aGVyZSAoMSkgdGhlIGRpc3RpbmN0aW9uIAptYXR0ZXJlZCwgYW5kICgyKSB0aGVyZSB3YXMgbm8gbGV4aWNhbCB3YXkgdG8gZGlzdGluZ3Vpc2ggdGhlIHR3byBmb3Jtcy4gRm9yIApleGFtcGxlLCBhIG5hdGl2ZSBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgdXNlZCB0aGUgc2FtZSBzeW50YXggYXMgdGhlIEZpbGVzeXN0ZW0gCkxpYnJhcnkncyBnZW5lcmljIFBPU0lYLWxpa2UgZm9ybWF0LCBidXQgcHJvY2Vzc2VkIHRoZSBlbGVtZW50cyByaWdodC10by1sZWZ0IAppbnN0ZWFkIG9mIGxlZnQtdG8tcmlnaHQuPC9wPgo8aDM+UHJlc2VydmF0aW9uIG9mIDxhIG5hbWU9ImV4aXN0aW5nLWNvZGUiPmV4aXN0aW5nIGNvZGU8L2E+PC9oMz4KPHA+QWxsb3dpbmcgZXhpc3RpbmcgdXNlciBjb2RlIHRvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCB0aGUgdXBkYXRlZCB2ZXJzaW9uIG9mIAp0aGUgbGlicmFyeSBoYXMgb2J2aW91cyBiZW5lZml0cyBpbiB0ZXJtcyBvZiBwcmVzZXJ2aW5nIHRoZSBlZmZvcnQgdXNlcnMgaGF2ZSAKYXBwbGllZCB0byBib3RoIGxlYXJuaW5nIHRoZSBsaWJyYXJ5IGFuZCB3cml0aW5nIGNvZGUgd2hpY2ggdXNlcyB0aGUgbGlicmFyeS48L3A+CjxwPlRoZXJlIGlzIGFuIGFkZGl0aW9uYWwgbW90aXZhdGlvbjsgb3RoZXIgdGhhbiB0aGUgbmFtZSBjaGVja2luZyBwb3J0aW9uIG9mIApjbGFzcyBwYXRoLCZuYnNwOyB0aGUgZXhpc3RpbmcgaW50ZXJmYWNlIGhhcyBwcm92ZW4gdG8gYmUgdXNlZnVsIGFuZCByb2J1c3QsIHNvIAp0aGVyZSBpcyBubyByZWFzb24gdG8gZmlkZGxlIHdpdGggaXQuPC9wPgo8aDM+PGEgbmFtZT0iU2luZ2xlX3BhdGhfZGVzaWduIj5TaW5nbGUgcGF0aCBkZXNpZ248L2E+PC9oMz4KPHA+RHVyaW5nIHByZWxpbWluYXJ5IGludGVybmF0aW9uYWxpemF0aW9uIGRpc2N1c3Npb24gb24gdGhlIEJvb3N0IGRldmVsb3BlcidzIApsaXN0LCBhIGRlc2lnbiB3YXMgY29uc2lkZXJlZCBmb3IgYSBzaW5nbGUgcGF0aCBjbGFzcyB3aGljaCBjb3VsZCBob2xkIGVpdGhlciAKbmFycm93IG9yIHdpZGUgY2hhcmFjdGVyIGJhc2VkIHBhdGhzLiBUaGF0IGRlc2lnbiB3YXMgcmVqZWN0ZWQgYmVjYXVzZTo8L3A+Cjx1bD4KICA8bGk+VGhlIGRlc2lnbiB3YXMsIGZvciBtYW55IGFwcGxpY2F0aW9ucywgYW4gb3Zlci1nZW5lcmFsaXphdGlvbiB3aXRoIHJ1bnRpbWUgCiAgbWVtb3J5IGFuZCBzcGVlZCBjb3N0cyB3aGljaCB3b3VsZCBoYXZlIHRvIGJlIHBhaWQgZm9yIGV2ZW4gd2hlbiBub3QgbmVlZGVkLjxicj4KJm5ic3A7PC9saT4KICA8bGk+VGhlcmUgd2FzIGNvbmNlcm4gdGhhdCB0aGUgZGVzaWduIHdvdWxkIGJlIGNvbmZ1c2luZyB0byB1c2VycywgZ2l2ZW4gdGhhdCAKICB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbHJlYWR5IHVzZXMgc2luZ2xlLXZhbHVlLXR5cGUgc3RyaW5ncywgcmF0aGVyIHRoYW4gCiAgc3RyaW5ncyB3aGljaCBtb3JwaCB2YWx1ZSB0eXBlcyBhcyBuZWVkZWQuPGJyPgombmJzcDs8L2xpPgogIDxsaT5UaGVyZSB3ZXJlIHRlY2huaWNhbCBpc3N1ZXMgd2l0aCBjb252ZXJzaW9ucyB3aGVuIGEgbmFycm93IHBhdGggd2FzIAogIGFwcGVuZGVkIHRvIGEgd2lkZSBwYXRoLCBhbmQgdmlzYSB2ZXJzYS4gVGhlIGNvbmNlcm4gd2FzIHRoYXQgZG91YmxlIAogIGNvbnZlcnNpb25zIGNvdWxkIGNhdXNlIGluY29ycmVjdCByZXN1bHRzLCB0aGF0IGNvbnZlcnNpb25zIGJlc3QgbGVmdCB0byB0aGUgCiAgb3BlcmF0aW5nIHN5c3RlbSB3b3VsZCBiZSBwZXJmb3JtZWQsIGFuZCB0aGF0IHRoZSB0ZWNobmljYWwgY29tcGxleGl0eSB3YXMgdG9vIAogIGdyZWF0IGluIHJlbGF0aW9uIHRvIHBlcmNlaXZlZCBiZW5lZml0cy4gVXNlci1kZWZpbmVkIHR5cGVzIHdvdWxkIG9ubHkgbWFrZSAKICB0aGUgcHJvYmxlbSB3b3JzZS48YnI+CiZuYnNwOzwvbGk+CjwvdWw+CjxoMz5ObyB2ZXJzaW9ucyBvZiA8YSBocmVmPSJyZWZlcmVuY2UuaHRtbCNTdGF0dXMtZnVuY3Rpb25zIj5zdGF0dXMoKTwvYT4gd2hpY2ggdGhyb3cgZXhjZXB0aW9ucyBvbiAKZXJyb3JzPC9oMz4KPHA+VGhlIHJhdGlvbmFsZSBmb3Igbm90IGluY2x1ZGluZyB2ZXJzaW9ucyBvZiBzdGF0dXMoKSAKd2hpY2ggdGhyb3cgZXhjZXB0aW9ucyBvbiBlcnJvcnMgaXMgdGhhdCAoMSkgdGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIApmdW5jdGlvbiBpcyB0byBwZXJmb3JtIHF1ZXJpZXMgYXQgYSB2ZXJ5IGxvdy1sZXZlbCwgd2hlcmUgZXhjZXB0aW9ucyBhcmUgdXN1YWxseSAKdW53YW50ZWQsIGFuZCAoMikgZXhjZXB0aW9ucyBvbiBlcnJvcnMgYXJlIGFscmVhZHkgcHJvdmlkZWQgYnkgdGhlIHByZWRpY2F0ZSAKZnVuY3Rpb25zLiBUaGVyZSB3b3VsZCBiZSBsaXR0bGUgb3Igbm8gZWZmaWNpZW5jeSBnYWluIGZyb20gcHJvdmlkaW5nIGEgdGhyb3dpbmcgCnZlcnNpb24gb2Ygc3RhdHVzKCkuPC9wPgo8aDM+U3ltbGluayBpZGVudGlmeWluZyB2ZXJzaW9uIG9mIDxhIGhyZWY9InJlZmVyZW5jZS5odG1sI1N0YXR1cy1mdW5jdGlvbnMiPnN0YXR1cygpPC9hPiBmdW5jdGlvbjwvaDM+CjxwPkEgc3ltbGluayBpZGVudGlmeWluZyB2ZXJzaW9uIG9mIHRoZSBzdGF0dXMoKSBmdW5jdGlvbiBpcyBkaXN0aW5ndWlzaGVkIGJ5IGEgCnNlY29uZCBhcmd1bWVudC4gT2Z0ZW4gc2VwYXJhdGVseSBuYW1lZCBmdW5jdGlvbnMgYXJlIG1vcmUgYXBwcm9wcmlhdGUgdGhhbiAKb3ZlcmxvYWRpbmcgd2hlbiBiZWhhdmlvciAKZGlmZmVycywgd2hpY2ggaXMgdGhlIGNhc2UgaGVyZSwgd2hpbGUgb3ZlcmxvYWRzIGFyZSBtb3JlIGFwcHJvcHJpYXRlIHdoZW4gCmJlaGF2aW9yIGlzIHRoZSBzYW1lIGJ1dCBhcmd1bWVudCB0eXBlcyBkaWZmZXIgKElhaW4gSGFuc29uKS4gT3ZlcmxvYWRpbmcgd2FzIApjaG9zZW4gaW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UgYmVjYXVzZSBhIHN1YmplY3RpdmUganVkZ21lbnQgdGhhdCBhIHNpbmdsZSAKZnVuY3Rpb24gbmFtZSB3aXRoIGFuIG9wdGlvbmFsICZxdW90O3N5bWxpbmsmcXVvdDsgc2Vjb25kIGFyZ3VtZW50IHByb2R1Y2VkIG1vcmUgCnVuZGVyc3RhbmRhYmxlIGNvZGUuIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb24gdXNlZCB0aGUgbmFtZSAmcXVvdDtzeW1saW5rX3N0YXR1cyZxdW90OywgCmJ1dCB0aGF0IGp1c3QgZGlkbid0IHJlYWQgcmlnaHQgaW4gcmVhbCBjb2RlLjwvcD4KPGgzPlBPU0lYIHdwYXRoX3RyYWl0cyBkZWZhdWx0cyB0byBsb2NhbGUoJnF1b3Q7JnF1b3Q7KSwgYnV0IGFsbG93cyBpbWJ1aW5nIG9mIGxvY2FsZTwvaDM+CjxwPlZsYWRpbWlyIFBydXMgcG9pbnRlZCBvdXQgdGhhdCBmb3IgTGludXggKGFuZCBwcmVzdW1hYmx5IG90aGVyIFBPU0lYIApvcGVyYXRpbmcgc3lzdGVtcykgdGhhdCBuZWVkIHRvIGNvbnZlcnQgd2lkZSBjaGFyYWN0ZXIgcGF0aHMgdG8gbmFycm93IApjaGFyYWN0ZXJzLCB0aGUgZGVmYXVsdCBjb252ZXJzaW9uIHNob3VsZCBub3QgZGVwZW5kIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtIAphbG9uZSwgYnV0IG9uIHRoZSBzdGQ6OmxvY2FsZSgmcXVvdDsmcXVvdDspIGRlZmF1bHQuIEZvciBleGFtcGxlLCB0aGUgdXN1YWwgZW5jb2RpbmcgCmZvciBSdXNzaWFuIG9uIExpbnV4IChhbmQgUnVzc2lhbiB3ZWIgc2l0ZXMpIGlzIEtPSTgtUiAoUkZDMTQ4OSkuIFRoZSBhYmlsaXR5IHRvIHNhZmVseSBzcGVjaWZ5IGEgZGlmZmVyZW50IGxvY2FsZSAKaXMgYWxzbyBwcm92aWRlZCwgdG8gbWVldCB1bmZvcmVzZWVuIG5lZWRzLjwvcD4KPGhyPgo8cD5SZXZpc2VkCjwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJWQgJUIsICVZIiBzdGFydHNwYW4gLS0+MTggTWFyY2gsIDIwMDg8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBlbmRzcGFuIGktY2hlY2tzdW09IjI5MDA1IiAtLT48L3A+CjxwPqkgQ29weXJpZ2h0IEJlbWFuIERhd2VzLCAyMDA1PC9wPgo8cD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCihTZWUgYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCmNvcHkgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9wPgoKPC9ib2R5PgoKPC9odG1sPg==