PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPmJ6aXAyIGFuZCBsaWJiemlwMiwgdmVyc2lvbiAxLjAuNTwvdGl0bGU+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNjkuMSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+LyogQ29sb3VyczoKIzc0MjQwZiAgZGFyayBicm93biAgICAgIGgxLCBoMiwgaDMsIGg0CiMzMzY2OTkgIG1lZGl1bSBibHVlICAgICBsaW5rcwojMzM5OTk5ICB0dXJxdW9pc2UgICAgICAgbGluayBob3ZlciBjb2xvdXIKIzIwMjAyMCAgYWxtb3N0IGJsYWNrICAgIGdlbmVyYWwgdGV4dAojNzYxNTk2ICBwdXJwbGUgICAgICAgICAgbWQ1c3VtIHRleHQKIzYyNjI2MiAgZGFyayBncmF5ICAgICAgIHByZSBib3JkZXIKI2VlZWVlZSAgdmVyeSBsaWdodCBncmF5IHByZSBiYWNrZ3JvdW5kCiNmMmYyZjkgIHZlcnkgbGlnaHQgYmx1ZSBuYXYgdGFibGUgYmFja2dyb3VuZAojMzM2NmNjICBtZWRpdW0gYmx1ZSAgICAgbmF2IHRhYmxlIGJvcmRlcgoqLwoKYSwgYTpsaW5rLCBhOnZpc2l0ZWQsIGE6YWN0aXZlIHsgY29sb3I6ICMzMzY2OTk7IH0KYTpob3ZlciB7IGNvbG9yOiAjMzM5OTk5OyB9Cgpib2R5IHsgZm9udDogODAlLzEyNiUgc2Fucy1zZXJpZjsgfQpoMSwgaDIsIGgzLCBoNCB7IGNvbG9yOiAjNzQyNDBmOyB9CgpkdCB7IGNvbG9yOiAjMzM2Njk5OyBmb250LXdlaWdodDogYm9sZCB9CmRkIHsgCiBtYXJnaW4tbGVmdDogMS41ZW07IAogcGFkZGluZy1ib3R0b206IDAuOGVtOwp9CgovKiAtLSBydWxlciAtLSAqLwpkaXYuaHJfYmx1ZSB7IAogIGhlaWdodDogIDNweDsgCiAgYmFja2dyb3VuZDojZmZmZmZmIHVybCgiL2ltYWdlcy9ocl9ibHVlLnBuZyIpIHJlcGVhdC14OyB9CmRpdi5ocl9ibHVlIGhyIHsgZGlzcGxheTpub25lOyB9CgovKiByZWxlYXNlIHN0eWxlcyAqLwojcmVsZWFzZSBwIHsgbWFyZ2luLXRvcDogMC40ZW07IH0KI3JlbGVhc2UgLm1kNXN1bSB7IGNvbG9yOiAjNzYxNTk2OyB9CgoKLyogLS0tLS0tIHN0eWxlcyBmb3IgZG9jc3xtYW51YWxzfGhvd3RvIC0tLS0tLSAqLwovKiAtLSBsaXN0cyAtLSAqLwp1bCAgeyAKIG1hcmdpbjogICAgIDBweCA0cHggMTZweCAxNnB4OwogcGFkZGluZzogICAgMHB4OwogbGlzdC1zdHlsZTogdXJsKCIvaW1hZ2VzL2xpLWJsdWUucG5nIik7IAp9CnVsIGxpIHsgCiBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CnVsIHVsICAgeyAKIGxpc3Qtc3R5bGUtdHlwZTogIG5vbmU7IAogbGlzdC1zdHlsZS1pbWFnZTogbm9uZTsgCiBtYXJnaW4tbGVmdDogICAgICAwcHg7IAp9CgovKiBoZWFkZXIgLyBmb290ZXIgbmF2IHRhYmxlcyAqLwp0YWJsZS5uYXYgewogYm9yZGVyOiAgICAgc29saWQgMXB4ICMzMzY2Y2M7CiBiYWNrZ3JvdW5kOiAjZjJmMmY5OwogYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmOTsKIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9Ci8qIGRvbid0IGhhdmUgdW5kZXJsaW5lZCBsaW5rcyBpbiBjaHVua2VkIG5hdiBtZW51cyAqLwp0YWJsZS5uYXYgYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQp0YWJsZS5uYXYgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CnRhYmxlLm5hdiB0ZCB7IGZvbnQtc2l6ZTogODUlOyB9Cgpjb2RlLCB0dCwgcHJlIHsgZm9udC1zaXplOiAxMjAlOyB9CmNvZGUsIHR0IHsgY29sb3I6ICM3NjE1OTY7IH0KCmRpdi5saXRlcmFsbGF5b3V0LCBwcmUucHJvZ3JhbWxpc3RpbmcsIHByZS5zY3JlZW4gewogY29sb3I6ICAgICAgIzAwMDAwMDsKIHBhZGRpbmc6ICAgIDAuNWVtOwogYmFja2dyb3VuZDogI2VlZWVlZTsKIGJvcmRlcjogICAgIDFweCBzb2xpZCAjNjI2MjYyOwogYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKIG1hcmdpbjogNHB4IDBweCA0cHggMHB4OyAKfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj48ZGl2IGNsYXNzPSJib29rIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CjxkaXY+CjxkaXY+PGgxIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InVzZXJtYW4iPjwvYT5iemlwMiBhbmQgbGliYnppcDIsIHZlcnNpb24gMS4wLjU8L2gxPjwvZGl2Pgo8ZGl2PjxoMiBjbGFzcz0ic3VidGl0bGUiPkEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IgZGF0YSBjb21wcmVzc2lvbjwvaDI+PC9kaXY+CjxkaXY+PGRpdiBjbGFzcz0iYXV0aG9yZ3JvdXAiPjxkaXYgY2xhc3M9ImF1dGhvciI+CjxoMyBjbGFzcz0iYXV0aG9yIj4KPHNwYW4gY2xhc3M9ImZpcnN0bmFtZSI+SnVsaWFuPC9zcGFuPiA8c3BhbiBjbGFzcz0ic3VybmFtZSI+U2V3YXJkPC9zcGFuPgo8L2gzPgo8ZGl2IGNsYXNzPSJhZmZpbGlhdGlvbiI+PHNwYW4gY2xhc3M9Im9yZ25hbWUiPmh0dHA6Ly93d3cuYnppcC5vcmc8YnI+PC9zcGFuPjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdj48cCBjbGFzcz0icmVsZWFzZWluZm8iPlZlcnNpb24gMS4wLjUgb2YgMTAgRGVjZW1iZXIgMjAwNzwvcD48L2Rpdj4KPGRpdj48cCBjbGFzcz0iY29weXJpZ2h0Ij5Db3B5cmlnaHQgqSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZDwvcD48L2Rpdj4KPGRpdj48ZGl2IGNsYXNzPSJsZWdhbG5vdGljZSI+CjxhIG5hbWU9ImlkMjQ5OTgzMyI+PC9hPjxwPlRoaXMgcHJvZ3JhbSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4sIHRoZQogIGFzc29jaWF0ZWQgbGlicmFyeSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiwgYW5kCiAgYWxsIGRvY3VtZW50YXRpb24sIGFyZSBjb3B5cmlnaHQgqSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZC4KICBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KPHA+UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aAogIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCiAgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5SZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlCiAgIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKICAgZm9sbG93aW5nIGRpc2NsYWltZXIuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUKICAgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwKICAgc29mdHdhcmUuICBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbgogICBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCiAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5BbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkCiAgIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwKICAgc29mdHdhcmUuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0bwogICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAogICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPlRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiAiQVMgSVMiIEFORCBBTlkKICBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKICBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKICBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCiAgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcKICBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS48L3A+CjxwPlBBVEVOVFM6IFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwKIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGFuZAogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4gZG8gbm90IHVzZSBhbnkgcGF0ZW50ZWQKIGFsZ29yaXRobXMuICBIb3dldmVyLCBJIGRvIG5vdCBoYXZlIHRoZSByZXNvdXJjZXMgdG8gY2FycnkKIG91dCBhIHBhdGVudCBzZWFyY2guICBUaGVyZWZvcmUgSSBjYW5ub3QgZ2l2ZSBhbnkgZ3VhcmFudGVlIG9mCiB0aGUgYWJvdmUgc3RhdGVtZW50LgogPC9wPgo8L2Rpdj48L2Rpdj4KPC9kaXY+Cjxocj4KPC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsPgo8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiNpbnRybyI+MS4gSW50cm9kdWN0aW9uPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiN1c2luZyI+Mi4gSG93IHRvIHVzZSBiemlwMjwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI25hbWUiPjIuMS4gTkFNRTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N5bm9wc2lzIj4yLjIuIFNZTk9QU0lTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjZGVzY3JpcHRpb24iPjIuMy4gREVTQ1JJUFRJT048L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNvcHRpb25zIj4yLjQuIE9QVElPTlM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNtZW1vcnktbWFuYWdlbWVudCI+Mi41LiBNRU1PUlkgTUFOQUdFTUVOVDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3JlY292ZXJpbmciPjIuNi4gUkVDT1ZFUklORyBEQVRBIEZST00gREFNQUdFRCBGSUxFUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BlcmZvcm1hbmNlIj4yLjcuIFBFUkZPUk1BTkNFIE5PVEVTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjY2F2ZWF0cyI+Mi44LiBDQVZFQVRTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjYXV0aG9yIj4yLjkuIEFVVEhPUjwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiNsaWJwcm9nIj4zLiAKUHJvZ3JhbW1pbmcgd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPgo8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN0b3AtbGV2ZWwiPjMuMS4gVG9wLWxldmVsIHN0cnVjdHVyZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2xsLXN1bW1hcnkiPjMuMS4xLiBMb3ctbGV2ZWwgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2hsLXN1bW1hcnkiPjMuMS4yLiBIaWdoLWxldmVsIHN1bW1hcnk8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiN1dGlsLWZucy1zdW1tYXJ5Ij4zLjEuMy4gVXRpbGl0eSBmdW5jdGlvbnMgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjZXJyLWhhbmRsaW5nIj4zLjIuIEVycm9yIGhhbmRsaW5nPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbG93LWxldmVsIj4zLjMuIExvdy1sZXZlbCBpbnRlcmZhY2U8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiemNvbXByZXNzLWluaXQiPjMuMy4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekNvbXByZXNzIj4zLjMuMi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekNvbXByZXNzLWVuZCI+My4zLjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzLWluaXQiPjMuMy40LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcyI+My4zLjUuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MtZW5kIj4zLjMuNi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjaGwtaW50ZXJmYWNlIj4zLjQuIEhpZ2gtbGV2ZWwgaW50ZXJmYWNlPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkb3BlbiI+My40LjEuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkIj4zLjQuMi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZGdldHVudXNlZCI+My40LjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWRjbG9zZSI+My40LjQuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGVvcGVuIj4zLjQuNS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZSI+My40LjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZWNsb3NlIj4zLjQuNy4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2VtYmVkIj4zLjQuOC4gSGFuZGxpbmcgZW1iZWRkZWQgY29tcHJlc3NlZCBkYXRhIHN0cmVhbXM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGQtcmR3ciI+My40LjkuIFN0YW5kYXJkIGZpbGUtcmVhZGluZy93cml0aW5nIGNvZGU8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3V0aWwtZm5zIj4zLjUuIFV0aWxpdHkgZnVuY3Rpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpidWZmdG9idWZmY29tcHJlc3MiPjMuNS4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiemJ1ZmZ0b2J1ZmZkZWNvbXByZXNzIj4zLjUuMi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3psaWItY29tcGF0Ij4zLjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+emxpYjwvY29kZT4gY29tcGF0aWJpbGl0eSBmdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNzdGRpby1mcmVlIj4zLjcuIFVzaW5nIHRoZSBsaWJyYXJ5IGluIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT4tZnJlZSBlbnZpcm9ubWVudDwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3N0ZGlvLWJ5ZSI+My43LjEuIEdldHRpbmcgcmlkIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3RkaW88L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjY3JpdGljYWwtZXJyb3IiPjMuNy4yLiBDcml0aWNhbCBlcnJvciBoYW5kbGluZzwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjd2luLWRsbCI+My44LiBNYWtpbmcgYSBXaW5kb3dzIERMTDwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiNtaXNjIj40LiBNaXNjZWxsYW5lYTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2xpbWl0cyI+NC4xLiBMaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BvcnQtaXNzdWVzIj40LjIuIFBvcnRhYmlsaXR5IGlzc3VlczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2J1Z3MiPjQuMy4gUmVwb3J0aW5nIGJ1Z3M8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNwYWNrYWdlIj40LjQuIERpZCB5b3UgZ2V0IHRoZSByaWdodCBwYWNrYWdlPzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3JlYWRpbmciPjQuNS4gRnVydGhlciBSZWFkaW5nPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJpbnRybyI+PC9hPjEuoEludHJvZHVjdGlvbjwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGNvbXByZXNzZXMgZmlsZXMKdXNpbmcgdGhlIEJ1cnJvd3MtV2hlZWxlciBibG9jay1zb3J0aW5nIHRleHQgY29tcHJlc3Npb24KYWxnb3JpdGhtLCBhbmQgSHVmZm1hbiBjb2RpbmcuICBDb21wcmVzc2lvbiBpcyBnZW5lcmFsbHkKY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIHRoYXQgYWNoaWV2ZWQgYnkgbW9yZSBjb252ZW50aW9uYWwKTFo3Ny9MWjc4LWJhc2VkIGNvbXByZXNzb3JzLCBhbmQgYXBwcm9hY2hlcyB0aGUgcGVyZm9ybWFuY2Ugb2YKdGhlIFBQTSBmYW1pbHkgb2Ygc3RhdGlzdGljYWwgY29tcHJlc3NvcnMuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBpcyBidWlsdCBvbiB0b3Agb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4sIGEgZmxleGlibGUgbGlicmFyeSBmb3IKaGFuZGxpbmcgY29tcHJlc3NlZCBkYXRhIGluIHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQuICBUaGlzIG1hbnVhbApkZXNjcmliZXMgYm90aCBob3cgdG8gdXNlIHRoZSBwcm9ncmFtIGFuZCBob3cgdG8gd29yayB3aXRoIHRoZQpsaWJyYXJ5IGludGVyZmFjZS4gIE1vc3Qgb2YgdGhlIG1hbnVhbCBpcyBkZXZvdGVkIHRvIHRoaXMKbGlicmFyeSwgbm90IHRoZSBwcm9ncmFtLCB3aGljaCBpcyBnb29kIG5ld3MgaWYgeW91ciBpbnRlcmVzdCBpcwpvbmx5IGluIHRoZSBwcm9ncmFtLjwvcD4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxhIGhyZWY9IiN1c2luZyI+SG93IHRvIHVzZSBiemlwMjwvYT4gZGVzY3JpYmVzIGhvdyB0byB1c2UKIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+OyB0aGlzIGlzIHRoZSBvbmx5IHBhcnQKIHlvdSBuZWVkIHRvIHJlYWQgaWYgeW91IGp1c3Qgd2FudCB0byBrbm93IGhvdyB0byBvcGVyYXRlIHRoZQogcHJvZ3JhbS48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxhIGhyZWY9IiNsaWJwcm9nIj5Qcm9ncmFtbWluZyB3aXRoIGxpYmJ6aXAyPC9hPiBkZXNjcmliZXMgdGhlCiBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIGluIGRldGFpbCwgYW5kPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48YSBocmVmPSIjbWlzYyI+TWlzY2VsbGFuZWE8L2E+IHJlY29yZHMgc29tZQogbWlzY2VsbGFuZW91cyBub3RlcyB3aGljaCBJIHRob3VnaHQgb3VnaHQgdG8gYmUgcmVjb3JkZWQKIHNvbWV3aGVyZS48L3A+PC9saT4KPC91bD48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InVzaW5nIj48L2E+Mi6gSG93IHRvIHVzZSBiemlwMjwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbmFtZSI+Mi4xLiBOQU1FPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjc3lub3BzaXMiPjIuMi4gU1lOT1BTSVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNkZXNjcmlwdGlvbiI+Mi4zLiBERVNDUklQVElPTjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI29wdGlvbnMiPjIuNC4gT1BUSU9OUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50Ij4yLjUuIE1FTU9SWSBNQU5BR0VNRU5UPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcmVjb3ZlcmluZyI+Mi42LiBSRUNPVkVSSU5HIERBVEEgRlJPTSBEQU1BR0VEIEZJTEVTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcGVyZm9ybWFuY2UiPjIuNy4gUEVSRk9STUFOQ0UgTk9URVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNjYXZlYXRzIj4yLjguIENBVkVBVFM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNhdXRob3IiPjIuOS4gQVVUSE9SPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPgo8L2Rpdj4KPHA+VGhpcyBjaGFwdGVyIGNvbnRhaW5zIGEgY29weSBvZiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gbWFuIHBhZ2UsIGFuZCBub3RoaW5nCmVsc2UuPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJuYW1lIj48L2E+Mi4xLqBOQU1FPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gLSBhIGJsb2NrLXNvcnRpbmcgZmlsZQogIGNvbXByZXNzb3IsIHYxLjAuNDwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gLQogICBkZWNvbXByZXNzZXMgZmlsZXMgdG8gc3Rkb3V0PC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gLQogICByZWNvdmVycyBkYXRhIGZyb20gZGFtYWdlZCBiemlwMiBmaWxlczwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ic3lub3BzaXMiPjwvYT4yLjIuoFNZTk9QU0lTPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IFsKICAtY2Rma3FzdHZ6VkwxMjM0NTY3ODkgXSBbIGZpbGVuYW1lcyAuLi4gIF08L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gWwogIC1ma3ZzVkwgXSBbIGZpbGVuYW1lcyAuLi4gIF08L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpjYXQ8L2NvZGU+IFsgLXMgXSBbCiAgZmlsZW5hbWVzIC4uLiAgXTwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+CiAgZmlsZW5hbWU8L3A+PC9saT4KPC91bD48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImRlc2NyaXB0aW9uIj48L2E+Mi4zLqBERVNDUklQVElPTjwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGNvbXByZXNzZXMgZmlsZXMKdXNpbmcgdGhlIEJ1cnJvd3MtV2hlZWxlciBibG9jayBzb3J0aW5nIHRleHQgY29tcHJlc3Npb24KYWxnb3JpdGhtLCBhbmQgSHVmZm1hbiBjb2RpbmcuICBDb21wcmVzc2lvbiBpcyBnZW5lcmFsbHkKY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIHRoYXQgYWNoaWV2ZWQgYnkgbW9yZSBjb252ZW50aW9uYWwKTFo3Ny9MWjc4LWJhc2VkIGNvbXByZXNzb3JzLCBhbmQgYXBwcm9hY2hlcyB0aGUgcGVyZm9ybWFuY2Ugb2YKdGhlIFBQTSBmYW1pbHkgb2Ygc3RhdGlzdGljYWwgY29tcHJlc3NvcnMuPC9wPgo8cD5UaGUgY29tbWFuZC1saW5lIG9wdGlvbnMgYXJlIGRlbGliZXJhdGVseSB2ZXJ5IHNpbWlsYXIgdG8KdGhvc2Ugb2YgR05VIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z3ppcDwvY29kZT4sIGJ1dCB0aGV5IGFyZQpub3QgaWRlbnRpY2FsLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZXhwZWN0cyBhIGxpc3Qgb2YKZmlsZSBuYW1lcyB0byBhY2NvbXBhbnkgdGhlIGNvbW1hbmQtbGluZSBmbGFncy4gIEVhY2ggZmlsZSBpcwpyZXBsYWNlZCBieSBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZiBpdHNlbGYsIHdpdGggdGhlIG5hbWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcmlnaW5hbF9uYW1lLmJ6MjwvY29kZT4uICBFYWNoCmNvbXByZXNzZWQgZmlsZSBoYXMgdGhlIHNhbWUgbW9kaWZpY2F0aW9uIGRhdGUsIHBlcm1pc3Npb25zLCBhbmQsCndoZW4gcG9zc2libGUsIG93bmVyc2hpcCBhcyB0aGUgY29ycmVzcG9uZGluZyBvcmlnaW5hbCwgc28gdGhhdAp0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjb3JyZWN0bHkgcmVzdG9yZWQgYXQgZGVjb21wcmVzc2lvbiB0aW1lLgpGaWxlIG5hbWUgaGFuZGxpbmcgaXMgbmFpdmUgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUgaXMgbm8KbWVjaGFuaXNtIGZvciBwcmVzZXJ2aW5nIG9yaWdpbmFsIGZpbGUgbmFtZXMsIHBlcm1pc3Npb25zLApvd25lcnNoaXBzIG9yIGRhdGVzIGluIGZpbGVzeXN0ZW1zIHdoaWNoIGxhY2sgdGhlc2UgY29uY2VwdHMsIG9yCmhhdmUgc2VyaW91cyBmaWxlIG5hbWUgbGVuZ3RoIHJlc3RyaWN0aW9ucywgc3VjaCBhcwpNUy1ET1MuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiB3aWxsIGJ5IGRlZmF1bHQgbm90Cm92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy4gIElmIHlvdSB3YW50IHRoaXMgdG8gaGFwcGVuLCBzcGVjaWZ5CnRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mPC9jb2RlPiBmbGFnLjwvcD4KPHA+SWYgbm8gZmlsZSBuYW1lcyBhcmUgc3BlY2lmaWVkLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZyb20gc3RhbmRhcmQKaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIGRlY2xpbmUgdG8gd3JpdGUKY29tcHJlc3NlZCBvdXRwdXQgdG8gYSB0ZXJtaW5hbCwgYXMgdGhpcyB3b3VsZCBiZSBlbnRpcmVseQppbmNvbXByZWhlbnNpYmxlIGFuZCB0aGVyZWZvcmUgcG9pbnRsZXNzLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiAob3IKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMiAtZDwvY29kZT4pIGRlY29tcHJlc3NlcyBhbGwKc3BlY2lmaWVkIGZpbGVzLiAgRmlsZXMgd2hpY2ggd2VyZSBub3QgY3JlYXRlZCBieQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIGJlIGRldGVjdGVkIGFuZAppZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzc3VlZC4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gYXR0ZW1wdHMgdG8gZ3Vlc3MgdGhlCmZpbGVuYW1lIGZvciB0aGUgZGVjb21wcmVzc2VkIGZpbGUgZnJvbSB0aGF0IG9mIHRoZSBjb21wcmVzc2VkCmZpbGUgYXMgZm9sbG93czo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLmJ6MiA8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWU8L2NvZGU+PC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLmJ6IDwvY29kZT4KICBiZWNvbWVzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZTwvY29kZT48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUudGJ6MjwvY29kZT4KICBiZWNvbWVzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZS50YXI8L2NvZGU+PC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRieiA8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUudGFyPC9jb2RlPjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hbnlvdGhlcm5hbWUgPC9jb2RlPgogIGJlY29tZXMKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmFueW90aGVybmFtZS5vdXQ8L2NvZGU+PC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPklmIHRoZSBmaWxlIGRvZXMgbm90IGVuZCBpbiBvbmUgb2YgdGhlIHJlY29nbmlzZWQgZW5kaW5ncywKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYno8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi50YnoyPC9jb2RlPiBvcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi50Yno8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wbGFpbnMgdGhhdCBpdCBjYW5ub3QKZ3Vlc3MgdGhlIG5hbWUgb2YgdGhlIG9yaWdpbmFsIGZpbGUsIGFuZCB1c2VzIHRoZSBvcmlnaW5hbCBuYW1lCndpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4ub3V0PC9jb2RlPiBhcHBlbmRlZC48L3A+CjxwPkFzIHdpdGggY29tcHJlc3Npb24sIHN1cHBseWluZyBubyBmaWxlbmFtZXMgY2F1c2VzCmRlY29tcHJlc3Npb24gZnJvbSBzdGFuZGFyZCBpbnB1dCB0byBzdGFuZGFyZCBvdXRwdXQuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IHdpbGwgY29ycmVjdGx5CmRlY29tcHJlc3MgYSBmaWxlIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHR3byBvciBtb3JlCmNvbXByZXNzZWQgZmlsZXMuICBUaGUgcmVzdWx0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZQpjb3JyZXNwb25kaW5nIHVuY29tcHJlc3NlZCBmaWxlcy4gIEludGVncml0eSB0ZXN0aW5nCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi10PC9jb2RlPikgb2YgY29uY2F0ZW5hdGVkIGNvbXByZXNzZWQKZmlsZXMgaXMgYWxzbyBzdXBwb3J0ZWQuPC9wPgo8cD5Zb3UgY2FuIGFsc28gY29tcHJlc3Mgb3IgZGVjb21wcmVzcyBmaWxlcyB0byB0aGUgc3RhbmRhcmQKb3V0cHV0IGJ5IGdpdmluZyB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tYzwvY29kZT4gZmxhZy4KTXVsdGlwbGUgZmlsZXMgbWF5IGJlIGNvbXByZXNzZWQgYW5kIGRlY29tcHJlc3NlZCBsaWtlIHRoaXMuICBUaGUKcmVzdWx0aW5nIG91dHB1dHMgYXJlIGZlZCBzZXF1ZW50aWFsbHkgdG8gc3Rkb3V0LiAgQ29tcHJlc3Npb24gb2YKbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBtYW5uZXIgZ2VuZXJhdGVzIGEgc3RyZWFtIGNvbnRhaW5pbmcKbXVsdGlwbGUgY29tcHJlc3NlZCBmaWxlIHJlcHJlc2VudGF0aW9ucy4gIFN1Y2ggYSBzdHJlYW0gY2FuIGJlCmRlY29tcHJlc3NlZCBjb3JyZWN0bHkgb25seSBieQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB2ZXJzaW9uIDAuOS4wIG9yIGxhdGVyLgpFYXJsaWVyIHZlcnNpb25zIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHdpbGwKc3RvcCBhZnRlciBkZWNvbXByZXNzaW5nIHRoZSBmaXJzdCBmaWxlIGluIHRoZSBzdHJlYW0uPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6Y2F0PC9jb2RlPiAob3IKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMiAtZGM8L2NvZGU+KSBkZWNvbXByZXNzZXMgYWxsCnNwZWNpZmllZCBmaWxlcyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCByZWFkIGFyZ3VtZW50cwpmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWklQMjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpJUDwvY29kZT4sIGluIHRoYXQgb3JkZXIsIGFuZCB3aWxsCnByb2Nlc3MgdGhlbSBiZWZvcmUgYW55IGFyZ3VtZW50cyByZWFkIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KVGhpcyBnaXZlcyBhIGNvbnZlbmllbnQgd2F5IHRvIHN1cHBseSBkZWZhdWx0IGFyZ3VtZW50cy48L3A+CjxwPkNvbXByZXNzaW9uIGlzIGFsd2F5cyBwZXJmb3JtZWQsIGV2ZW4gaWYgdGhlIGNvbXByZXNzZWQKZmlsZSBpcyBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwuICBGaWxlcyBvZiBsZXNzIHRoYW4KYWJvdXQgb25lIGh1bmRyZWQgYnl0ZXMgdGVuZCB0byBnZXQgbGFyZ2VyLCBzaW5jZSB0aGUgY29tcHJlc3Npb24KbWVjaGFuaXNtIGhhcyBhIGNvbnN0YW50IG92ZXJoZWFkIGluIHRoZSByZWdpb24gb2YgNTAgYnl0ZXMuClJhbmRvbSBkYXRhIChpbmNsdWRpbmcgdGhlIG91dHB1dCBvZiBtb3N0IGZpbGUgY29tcHJlc3NvcnMpIGlzCmNvZGVkIGF0IGFib3V0IDguMDUgYml0cyBwZXIgYnl0ZSwgZ2l2aW5nIGFuIGV4cGFuc2lvbiBvZiBhcm91bmQKMC41JS48L3A+CjxwPkFzIGEgc2VsZi1jaGVjayBmb3IgeW91ciBwcm90ZWN0aW9uLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB1c2VzIDMyLWJpdCBDUkNzIHRvIG1ha2UKc3VyZSB0aGF0IHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiBhIGZpbGUgaXMgaWRlbnRpY2FsIHRvIHRoZQpvcmlnaW5hbC4gIFRoaXMgZ3VhcmRzIGFnYWluc3QgY29ycnVwdGlvbiBvZiB0aGUgY29tcHJlc3NlZCBkYXRhLAphbmQgYWdhaW5zdCB1bmRldGVjdGVkIGJ1Z3MgaW4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gKGhvcGVmdWxseSB2ZXJ5IHVubGlrZWx5KS4KVGhlIGNoYW5jZXMgb2YgZGF0YSBjb3JydXB0aW9uIGdvaW5nIHVuZGV0ZWN0ZWQgaXMgbWljcm9zY29waWMsCmFib3V0IG9uZSBjaGFuY2UgaW4gZm91ciBiaWxsaW9uIGZvciBlYWNoIGZpbGUgcHJvY2Vzc2VkLiAgQmUKYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgY2hlY2sgb2NjdXJzIHVwb24gZGVjb21wcmVzc2lvbiwgc28gaXQKY2FuIG9ubHkgdGVsbCB5b3UgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmcuICBJdCBjYW4ndCBoZWxwIHlvdQpyZWNvdmVyIHRoZSBvcmlnaW5hbCB1bmNvbXByZXNzZWQgZGF0YS4gIFlvdSBjYW4gdXNlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB0byB0cnkgdG8gcmVjb3ZlcgpkYXRhIGZyb20gZGFtYWdlZCBmaWxlcy48L3A+CjxwPlJldHVybiB2YWx1ZXM6IDAgZm9yIGEgbm9ybWFsIGV4aXQsIDEgZm9yIGVudmlyb25tZW50YWwKcHJvYmxlbXMgKGZpbGUgbm90IGZvdW5kLCBpbnZhbGlkIGZsYWdzLCBJL08gZXJyb3JzLCBldGMuKSwgMgp0byBpbmRpY2F0ZSBhIGNvcnJ1cHQgY29tcHJlc3NlZCBmaWxlLCAzIGZvciBhbiBpbnRlcm5hbApjb25zaXN0ZW5jeSBlcnJvciAoZWcsIGJ1Zykgd2hpY2ggY2F1c2VkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRvIHBhbmljLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9Im9wdGlvbnMiPjwvYT4yLjQuoE9QVElPTlM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1jIC0tc3Rkb3V0PC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+Q29tcHJlc3Mgb3IgZGVjb21wcmVzcyB0byBzdGFuZGFyZAogIG91dHB1dC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1kIC0tZGVjb21wcmVzczwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkZvcmNlIGRlY29tcHJlc3Npb24uCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4sCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiBhbmQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6Y2F0PC9jb2RlPiBhcmUgcmVhbGx5IHRoZSBzYW1lCiAgcHJvZ3JhbSwgYW5kIHRoZSBkZWNpc2lvbiBhYm91dCB3aGF0IGFjdGlvbnMgdG8gdGFrZSBpcyBkb25lIG9uCiAgdGhlIGJhc2lzIG9mIHdoaWNoIG5hbWUgaXMgdXNlZC4gIFRoaXMgZmxhZyBvdmVycmlkZXMgdGhhdAogIG1lY2hhbmlzbSwgYW5kIGZvcmNlcyBiemlwMiB0byBkZWNvbXByZXNzLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXogLS1jb21wcmVzczwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlRoZSBjb21wbGVtZW50IHRvCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZDwvY29kZT46IGZvcmNlcyBjb21wcmVzc2lvbiwKICByZWdhcmRsZXNzIG9mIHRoZSBpbnZva2F0aW9uIG5hbWUuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdCAtLXRlc3Q8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5DaGVjayBpbnRlZ3JpdHkgb2YgdGhlIHNwZWNpZmllZCBmaWxlKHMpLCBidXQKICBkb24ndCBkZWNvbXByZXNzIHRoZW0uICBUaGlzIHJlYWxseSBwZXJmb3JtcyBhIHRyaWFsCiAgZGVjb21wcmVzc2lvbiBhbmQgdGhyb3dzIGF3YXkgdGhlIHJlc3VsdC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mIC0tZm9yY2U8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD4KPHA+Rm9yY2Ugb3ZlcndyaXRlIG9mIG91dHB1dCBmaWxlcy4gIE5vcm1hbGx5LAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHdpbGwgbm90IG92ZXJ3cml0ZQogIGV4aXN0aW5nIG91dHB1dCBmaWxlcy4gIEFsc28gZm9yY2VzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdG8gYnJlYWsgaGFyZCBsaW5rcyB0bwogIGZpbGVzLCB3aGljaCBpdCBvdGhlcndpc2Ugd291bGRuJ3QgZG8uPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBub3JtYWxseSBkZWNsaW5lcwogIHRvIGRlY29tcHJlc3MgZmlsZXMgd2hpY2ggZG9uJ3QgaGF2ZSB0aGUgY29ycmVjdCBtYWdpYyBoZWFkZXIKICBieXRlcy4gSWYgZm9yY2VkICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mPC9jb2RlPiksCiAgaG93ZXZlciwgaXQgd2lsbCBwYXNzIHN1Y2ggZmlsZXMgdGhyb3VnaCB1bm1vZGlmaWVkLiBUaGlzIGlzCiAgaG93IEdOVSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXA8L2NvZGU+IGJlaGF2ZXMuPC9wPgo8L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWsgLS1rZWVwPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+S2VlcCAoZG9uJ3QgZGVsZXRlKSBpbnB1dCBmaWxlcyBkdXJpbmcKICBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXMgLS1zbWFsbDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPgo8cD5SZWR1Y2UgbWVtb3J5IHVzYWdlLCBmb3IgY29tcHJlc3Npb24sCiAgZGVjb21wcmVzc2lvbiBhbmQgdGVzdGluZy4gIEZpbGVzIGFyZSBkZWNvbXByZXNzZWQgYW5kIHRlc3RlZAogIHVzaW5nIGEgbW9kaWZpZWQgYWxnb3JpdGhtIHdoaWNoIG9ubHkgcmVxdWlyZXMgMi41IGJ5dGVzIHBlcgogIGJsb2NrIGJ5dGUuICBUaGlzIG1lYW5zIGFueSBmaWxlIGNhbiBiZSBkZWNvbXByZXNzZWQgaW4gMjMwMGsKICBvZiBtZW1vcnksIGFsYmVpdCBhdCBhYm91dCBoYWxmIHRoZSBub3JtYWwgc3BlZWQuPC9wPgo8cD5EdXJpbmcgY29tcHJlc3Npb24sIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXM8L2NvZGU+CiAgc2VsZWN0cyBhIGJsb2NrIHNpemUgb2YgMjAwaywgd2hpY2ggbGltaXRzIG1lbW9yeSB1c2UgdG8gYXJvdW5kCiAgdGhlIHNhbWUgZmlndXJlLCBhdCB0aGUgZXhwZW5zZSBvZiB5b3VyIGNvbXByZXNzaW9uIHJhdGlvLiAgSW4KICBzaG9ydCwgaWYgeW91ciBtYWNoaW5lIGlzIGxvdyBvbiBtZW1vcnkgKDggbWVnYWJ5dGVzIG9yIGxlc3MpLAogIHVzZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zPC9jb2RlPiBmb3IgZXZlcnl0aGluZy4gIFNlZQogIDxhIGhyZWY9IiNtZW1vcnktbWFuYWdlbWVudCI+TUVNT1JZIE1BTkFHRU1FTlQ8L2E+IGJlbG93LjwvcD4KPC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1xIC0tcXVpZXQ8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5TdXBwcmVzcyBub24tZXNzZW50aWFsIHdhcm5pbmcgbWVzc2FnZXMuCiAgTWVzc2FnZXMgcGVydGFpbmluZyB0byBJL08gZXJyb3JzIGFuZCBvdGhlciBjcml0aWNhbCBldmVudHMKICB3aWxsIG5vdCBiZSBzdXBwcmVzc2VkLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXYgLS12ZXJib3NlPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+VmVyYm9zZSBtb2RlIC0tIHNob3cgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGZvcgogIGVhY2ggZmlsZSBwcm9jZXNzZWQuICBGdXJ0aGVyCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdjwvY29kZT4ncyBpbmNyZWFzZSB0aGUgdmVyYm9zaXR5CiAgbGV2ZWwsIHNwZXdpbmcgb3V0IGxvdHMgb2YgaW5mb3JtYXRpb24gd2hpY2ggaXMgcHJpbWFyaWx5IG9mCiAgaW50ZXJlc3QgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tTCAtLWxpY2Vuc2UgLVYgLS12ZXJzaW9uPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+RGlzcGxheSB0aGUgc29mdHdhcmUgdmVyc2lvbiwgbGljZW5zZSB0ZXJtcyBhbmQKICBjb25kaXRpb25zLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTE8L2NvZGU+IChvcgogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWZhc3Q8L2NvZGU+KSB0bwogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gKG9yCiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1iZXN0PC9jb2RlPik8L3NwYW4+PC9kdD4KPGRkPjxwPlNldCB0aGUgYmxvY2sgc2l6ZSB0byAxMDAgaywgMjAwIGsgLi4uICA5MDAgawogIHdoZW4gY29tcHJlc3NpbmcuICBIYXMgbm8gZWZmZWN0IHdoZW4gZGVjb21wcmVzc2luZy4gIFNlZSA8YSBocmVmPSIjbWVtb3J5LW1hbmFnZW1lbnQiPk1FTU9SWSBNQU5BR0VNRU5UPC9hPiBiZWxvdy4gIFRoZQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1mYXN0PC9jb2RlPiBhbmQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tYmVzdDwvY29kZT4gYWxpYXNlcyBhcmUgcHJpbWFyaWx5CiAgZm9yIEdOVSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXA8L2NvZGU+IGNvbXBhdGliaWxpdHkuCiAgSW4gcGFydGljdWxhciwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWZhc3Q8L2NvZGU+IGRvZXNuJ3QKICBtYWtlIHRoaW5ncyBzaWduaWZpY2FudGx5IGZhc3Rlci4gIEFuZAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1iZXN0PC9jb2RlPiBtZXJlbHkgc2VsZWN0cyB0aGUKICBkZWZhdWx0IGJlaGF2aW91ci48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+VHJlYXRzIGFsbCBzdWJzZXF1ZW50IGFyZ3VtZW50cyBhcyBmaWxlIG5hbWVzLAogIGV2ZW4gaWYgdGhleSBzdGFydCB3aXRoIGEgZGFzaC4gIFRoaXMgaXMgc28geW91IGNhbiBoYW5kbGUKICBmaWxlcyB3aXRoIG5hbWVzIGJlZ2lubmluZyB3aXRoIGEgZGFzaCwgZm9yIGV4YW1wbGU6CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMiAtLQogIC1teWZpbGVuYW1lPC9jb2RlPi48L3A+PC9kZD4KPGR0Pgo8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLXJlcGV0aXRpdmUtZmFzdDwvY29kZT4sIDwvc3Bhbj48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLXJlcGV0aXRpdmUtYmVzdDwvY29kZT48L3NwYW4+CjwvZHQ+CjxkZD48cD5UaGVzZSBmbGFncyBhcmUgcmVkdW5kYW50IGluIHZlcnNpb25zIDAuOS41IGFuZAogIGFib3ZlLiAgVGhleSBwcm92aWRlZCBzb21lIGNvYXJzZSBjb250cm9sIG92ZXIgdGhlIGJlaGF2aW91ciBvZgogIHRoZSBzb3J0aW5nIGFsZ29yaXRobSBpbiBlYXJsaWVyIHZlcnNpb25zLCB3aGljaCB3YXMgc29tZXRpbWVzCiAgdXNlZnVsLiAgMC45LjUgYW5kIGFib3ZlIGhhdmUgYW4gaW1wcm92ZWQgYWxnb3JpdGhtIHdoaWNoCiAgcmVuZGVycyB0aGVzZSBmbGFncyBpcnJlbGV2YW50LjwvcD48L2RkPgo8L2RsPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ibWVtb3J5LW1hbmFnZW1lbnQiPjwvYT4yLjUuoE1FTU9SWSBNQU5BR0VNRU5UPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gY29tcHJlc3NlcyBsYXJnZQpmaWxlcyBpbiBibG9ja3MuICBUaGUgYmxvY2sgc2l6ZSBhZmZlY3RzIGJvdGggdGhlIGNvbXByZXNzaW9uCnJhdGlvIGFjaGlldmVkLCBhbmQgdGhlIGFtb3VudCBvZiBtZW1vcnkgbmVlZGVkIGZvciBjb21wcmVzc2lvbgphbmQgZGVjb21wcmVzc2lvbi4gIFRoZSBmbGFncyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0xPC9jb2RlPgp0aHJvdWdoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTk8L2NvZGU+IHNwZWNpZnkgdGhlIGJsb2NrCnNpemUgdG8gYmUgMTAwLDAwMCBieXRlcyB0aHJvdWdoIDkwMCwwMDAgYnl0ZXMgKHRoZSBkZWZhdWx0KQpyZXNwZWN0aXZlbHkuICBBdCBkZWNvbXByZXNzaW9uIHRpbWUsIHRoZSBibG9jayBzaXplIHVzZWQgZm9yCmNvbXByZXNzaW9uIGlzIHJlYWQgZnJvbSB0aGUgaGVhZGVyIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IHRoZW4gYWxsb2NhdGVzIGl0c2VsZgpqdXN0IGVub3VnaCBtZW1vcnkgdG8gZGVjb21wcmVzcyB0aGUgZmlsZS4gIFNpbmNlIGJsb2NrIHNpemVzIGFyZQpzdG9yZWQgaW4gY29tcHJlc3NlZCBmaWxlcywgaXQgZm9sbG93cyB0aGF0IHRoZSBmbGFncwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0xPC9jb2RlPiB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi05PC9jb2RlPiBhcmUgaXJyZWxldmFudCB0byBhbmQgc28KaWdub3JlZCBkdXJpbmcgZGVjb21wcmVzc2lvbi48L3A+CjxwPkNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJlcXVpcmVtZW50cywgaW4gYnl0ZXMsIGNhbiBiZQplc3RpbWF0ZWQgYXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Q29tcHJlc3Npb246ICAgNDAwayArICggOCB4IGJsb2NrIHNpemUgKQoKRGVjb21wcmVzc2lvbjogMTAwayArICggNCB4IGJsb2NrIHNpemUgKSwgb3IKICAgICAgICAgICAgICAgMTAwayArICggMi41IHggYmxvY2sgc2l6ZSApPC9wcmU+CjxwPkxhcmdlciBibG9jayBzaXplcyBnaXZlIHJhcGlkbHkgZGltaW5pc2hpbmcgbWFyZ2luYWwKcmV0dXJucy4gIE1vc3Qgb2YgdGhlIGNvbXByZXNzaW9uIGNvbWVzIGZyb20gdGhlIGZpcnN0IHR3byBvcgp0aHJlZSBodW5kcmVkIGsgb2YgYmxvY2sgc2l6ZSwgYSBmYWN0IHdvcnRoIGJlYXJpbmcgaW4gbWluZCB3aGVuCnVzaW5nIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IG9uIHNtYWxsIG1hY2hpbmVzLgpJdCBpcyBhbHNvIGltcG9ydGFudCB0byBhcHByZWNpYXRlIHRoYXQgdGhlIGRlY29tcHJlc3Npb24gbWVtb3J5CnJlcXVpcmVtZW50IGlzIHNldCBhdCBjb21wcmVzc2lvbiB0aW1lIGJ5IHRoZSBjaG9pY2Ugb2YgYmxvY2sKc2l6ZS48L3A+CjxwPkZvciBmaWxlcyBjb21wcmVzc2VkIHdpdGggdGhlIGRlZmF1bHQgOTAwayBibG9jayBzaXplLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IHdpbGwgcmVxdWlyZSBhYm91dCAzNzAwCmtieXRlcyB0byBkZWNvbXByZXNzLiAgVG8gc3VwcG9ydCBkZWNvbXByZXNzaW9uIG9mIGFueSBmaWxlIG9uIGEKNCBtZWdhYnl0ZSBtYWNoaW5lLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IGhhcwphbiBvcHRpb24gdG8gZGVjb21wcmVzcyB1c2luZyBhcHByb3hpbWF0ZWx5IGhhbGYgdGhpcyBhbW91bnQgb2YKbWVtb3J5LCBhYm91dCAyMzAwIGtieXRlcy4gIERlY29tcHJlc3Npb24gc3BlZWQgaXMgYWxzbyBoYWx2ZWQsCnNvIHlvdSBzaG91bGQgdXNlIHRoaXMgb3B0aW9uIG9ubHkgd2hlcmUgbmVjZXNzYXJ5LiAgVGhlIHJlbGV2YW50CmZsYWcgaXMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tczwvY29kZT4uPC9wPgo8cD5JbiBnZW5lcmFsLCB0cnkgYW5kIHVzZSB0aGUgbGFyZ2VzdCBibG9jayBzaXplIG1lbW9yeQpjb25zdHJhaW50cyBhbGxvdywgc2luY2UgdGhhdCBtYXhpbWlzZXMgdGhlIGNvbXByZXNzaW9uIGFjaGlldmVkLgpDb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBzcGVlZCBhcmUgdmlydHVhbGx5IHVuYWZmZWN0ZWQgYnkKYmxvY2sgc2l6ZS48L3A+CjxwPkFub3RoZXIgc2lnbmlmaWNhbnQgcG9pbnQgYXBwbGllcyB0byBmaWxlcyB3aGljaCBmaXQgaW4gYQpzaW5nbGUgYmxvY2sgLS0gdGhhdCBtZWFucyBtb3N0IGZpbGVzIHlvdSdkIGVuY291bnRlciB1c2luZyBhCmxhcmdlIGJsb2NrIHNpemUuICBUaGUgYW1vdW50IG9mIHJlYWwgbWVtb3J5IHRvdWNoZWQgaXMKcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgZmlsZSBpcyBzbWFsbGVyCnRoYW4gYSBibG9jay4gIEZvciBleGFtcGxlLCBjb21wcmVzc2luZyBhIGZpbGUgMjAsMDAwIGJ5dGVzIGxvbmcKd2l0aCB0aGUgZmxhZyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi05PC9jb2RlPiB3aWxsIGNhdXNlIHRoZQpjb21wcmVzc29yIHRvIGFsbG9jYXRlIGFyb3VuZCA3NjAwayBvZiBtZW1vcnksIGJ1dCBvbmx5IHRvdWNoCjQwMGsgKyAyMDAwMCAqIDggPSA1NjAga2J5dGVzIG9mIGl0LiAgU2ltaWxhcmx5LCB0aGUgZGVjb21wcmVzc29yCndpbGwgYWxsb2NhdGUgMzcwMGsgYnV0IG9ubHkgdG91Y2ggMTAwayArIDIwMDAwICogNCA9IDE4MAprYnl0ZXMuPC9wPgo8cD5IZXJlIGlzIGEgdGFibGUgd2hpY2ggc3VtbWFyaXNlcyB0aGUgbWF4aW11bSBtZW1vcnkgdXNhZ2UKZm9yIGRpZmZlcmVudCBibG9jayBzaXplcy4gIEFsc28gcmVjb3JkZWQgaXMgdGhlIHRvdGFsIGNvbXByZXNzZWQKc2l6ZSBmb3IgMTQgZmlsZXMgb2YgdGhlIENhbGdhcnkgVGV4dCBDb21wcmVzc2lvbiBDb3JwdXMKdG90YWxsaW5nIDMsMTQxLDYyMiBieXRlcy4gIFRoaXMgY29sdW1uIGdpdmVzIHNvbWUgZmVlbCBmb3IgaG93CmNvbXByZXNzaW9uIHZhcmllcyB3aXRoIGJsb2NrIHNpemUuICBUaGVzZSBmaWd1cmVzIHRlbmQgdG8KdW5kZXJzdGF0ZSB0aGUgYWR2YW50YWdlIG9mIGxhcmdlciBibG9jayBzaXplcyBmb3IgbGFyZ2VyIGZpbGVzLApzaW5jZSB0aGUgQ29ycHVzIGlzIGRvbWluYXRlZCBieSBzbWFsbGVyIGZpbGVzLjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAgICAgICAgQ29tcHJlc3MgICBEZWNvbXByZXNzICAgRGVjb21wcmVzcyAgIENvcnB1cwpGbGFnICAgICB1c2FnZSAgICAgIHVzYWdlICAgICAgIC1zIHVzYWdlICAgICBTaXplCgogLTEgICAgICAxMjAwayAgICAgICA1MDBrICAgICAgICAgMzUwayAgICAgIDkxNDcwNAogLTIgICAgICAyMDAwayAgICAgICA5MDBrICAgICAgICAgNjAwayAgICAgIDg3NzcwMwogLTMgICAgICAyODAwayAgICAgIDEzMDBrICAgICAgICAgODUwayAgICAgIDg2MDMzOAogLTQgICAgICAzNjAwayAgICAgIDE3MDBrICAgICAgICAxMTAwayAgICAgIDg0Njg5OQogLTUgICAgICA0NDAwayAgICAgIDIxMDBrICAgICAgICAxMzUwayAgICAgIDg0NTE2MAogLTYgICAgICA1MjAwayAgICAgIDI1MDBrICAgICAgICAxNjAwayAgICAgIDgzODYyNgogLTcgICAgICA2MTAwayAgICAgIDI5MDBrICAgICAgICAxODUwayAgICAgIDgzNDA5NgogLTggICAgICA2ODAwayAgICAgIDMzMDBrICAgICAgICAyMTAwayAgICAgIDgyODY0MgogLTkgICAgICA3NjAwayAgICAgIDM3MDBrICAgICAgICAyMzUwayAgICAgIDgyODY0MjwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icmVjb3ZlcmluZyI+PC9hPjIuNi6gUkVDT1ZFUklORyBEQVRBIEZST00gREFNQUdFRCBGSUxFUzwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGNvbXByZXNzZXMgZmlsZXMgaW4KYmxvY2tzLCB1c3VhbGx5IDkwMGtieXRlcyBsb25nLiAgRWFjaCBibG9jayBpcyBoYW5kbGVkCmluZGVwZW5kZW50bHkuICBJZiBhIG1lZGlhIG9yIHRyYW5zbWlzc2lvbiBlcnJvciBjYXVzZXMgYQptdWx0aS1ibG9jayA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGUgdG8gYmVjb21lCmRhbWFnZWQsIGl0IG1heSBiZSBwb3NzaWJsZSB0byByZWNvdmVyIGRhdGEgZnJvbSB0aGUgdW5kYW1hZ2VkCmJsb2NrcyBpbiB0aGUgZmlsZS48L3A+CjxwPlRoZSBjb21wcmVzc2VkIHJlcHJlc2VudGF0aW9uIG9mIGVhY2ggYmxvY2sgaXMgZGVsaW1pdGVkIGJ5CmEgNDgtYml0IHBhdHRlcm4sIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGZpbmQgdGhlIGJsb2NrCmJvdW5kYXJpZXMgd2l0aCByZWFzb25hYmxlIGNlcnRhaW50eS4gIEVhY2ggYmxvY2sgYWxzbyBjYXJyaWVzCml0cyBvd24gMzItYml0IENSQywgc28gZGFtYWdlZCBibG9ja3MgY2FuIGJlIGRpc3Rpbmd1aXNoZWQgZnJvbQp1bmRhbWFnZWQgb25lcy48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiBpcyBhIHNpbXBsZQpwcm9ncmFtIHdob3NlIHB1cnBvc2UgaXMgdG8gc2VhcmNoIGZvciBibG9ja3MgaW4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlcywgYW5kIHdyaXRlIGVhY2ggYmxvY2sKb3V0IGludG8gaXRzIG93biA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGUuICBZb3UKY2FuIHRoZW4gdXNlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLXQ8L2NvZGU+IHRvIHRlc3QKdGhlIGludGVncml0eSBvZiB0aGUgcmVzdWx0aW5nIGZpbGVzLCBhbmQgZGVjb21wcmVzcyB0aG9zZSB3aGljaAphcmUgdW5kYW1hZ2VkLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHRha2VzIGEKc2luZ2xlIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgZGFtYWdlZCBmaWxlLCBhbmQgd3JpdGVzIGEKbnVtYmVyIG9mIGZpbGVzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmVjMDAwMWZpbGUuYnoyPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5yZWMwMDAyZmlsZS5iejI8L2NvZGU+LCBldGMsIGNvbnRhaW5pbmcKdGhlIGV4dHJhY3RlZCBibG9ja3MuICBUaGUgb3V0cHV0IGZpbGVuYW1lcyBhcmUgZGVzaWduZWQgc28gdGhhdAp0aGUgdXNlIG9mIHdpbGRjYXJkcyBpbiBzdWJzZXF1ZW50IHByb2Nlc3NpbmcgLS0gZm9yIGV4YW1wbGUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLWRjIHJlYypmaWxlLmJ6MiAmZ3Q7CnJlY292ZXJlZF9kYXRhPC9jb2RlPiAtLSBsaXN0cyB0aGUgZmlsZXMgaW4gdGhlIGNvcnJlY3QKb3JkZXIuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gc2hvdWxkIGJlIG9mCm1vc3QgdXNlIGRlYWxpbmcgd2l0aCBsYXJnZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+CmZpbGVzLCBhcyB0aGVzZSB3aWxsIGNvbnRhaW4gbWFueSBibG9ja3MuICBJdCBpcyBjbGVhcmx5IGZ1dGlsZQp0byB1c2UgaXQgb24gZGFtYWdlZCBzaW5nbGUtYmxvY2sgZmlsZXMsIHNpbmNlIGEgZGFtYWdlZCBibG9jawpjYW5ub3QgYmUgcmVjb3ZlcmVkLiAgSWYgeW91IHdpc2ggdG8gbWluaW1pc2UgYW55IHBvdGVudGlhbCBkYXRhCmxvc3MgdGhyb3VnaCBtZWRpYSBvciB0cmFuc21pc3Npb24gZXJyb3JzLCB5b3UgbWlnaHQgY29uc2lkZXIKY29tcHJlc3Npbmcgd2l0aCBhIHNtYWxsZXIgYmxvY2sgc2l6ZS48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJwZXJmb3JtYW5jZSI+PC9hPjIuNy6gUEVSRk9STUFOQ0UgTk9URVM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGUgc29ydGluZyBwaGFzZSBvZiBjb21wcmVzc2lvbiBnYXRoZXJzIHRvZ2V0aGVyIHNpbWlsYXIKc3RyaW5ncyBpbiB0aGUgZmlsZS4gIEJlY2F1c2Ugb2YgdGhpcywgZmlsZXMgY29udGFpbmluZyB2ZXJ5IGxvbmcKcnVucyBvZiByZXBlYXRlZCBzeW1ib2xzLCBsaWtlICJhYWJhYWJhYWJhYWIgLi4uIiAgKHJlcGVhdGVkCnNldmVyYWwgaHVuZHJlZCB0aW1lcykgbWF5IGNvbXByZXNzIG1vcmUgc2xvd2x5IHRoYW4gbm9ybWFsLgpWZXJzaW9ucyAwLjkuNSBhbmQgYWJvdmUgZmFyZSBtdWNoIGJldHRlciB0aGFuIHByZXZpb3VzIHZlcnNpb25zCmluIHRoaXMgcmVzcGVjdC4gIFRoZSByYXRpbyBiZXR3ZWVuIHdvcnN0LWNhc2UgYW5kIGF2ZXJhZ2UtY2FzZQpjb21wcmVzc2lvbiB0aW1lIGlzIGluIHRoZSByZWdpb24gb2YgMTA6MS4gIEZvciBwcmV2aW91cwp2ZXJzaW9ucywgdGhpcyBmaWd1cmUgd2FzIG1vcmUgbGlrZSAxMDA6MS4gIFlvdSBjYW4gdXNlIHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi12dnZ2PC9jb2RlPiBvcHRpb24gdG8gbW9uaXRvciBwcm9ncmVzcwppbiBncmVhdCBkZXRhaWwsIGlmIHlvdSB3YW50LjwvcD4KPHA+RGVjb21wcmVzc2lvbiBzcGVlZCBpcyB1bmFmZmVjdGVkIGJ5IHRoZXNlCnBoZW5vbWVuYS48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHVzdWFsbHkgYWxsb2NhdGVzCnNldmVyYWwgbWVnYWJ5dGVzIG9mIG1lbW9yeSB0byBvcGVyYXRlIGluLCBhbmQgdGhlbiBjaGFyZ2VzIGFsbApvdmVyIGl0IGluIGEgZmFpcmx5IHJhbmRvbSBmYXNoaW9uLiAgVGhpcyBtZWFucyB0aGF0IHBlcmZvcm1hbmNlLApib3RoIGZvciBjb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZywgaXMgbGFyZ2VseSBkZXRlcm1pbmVkIGJ5CnRoZSBzcGVlZCBhdCB3aGljaCB5b3VyIG1hY2hpbmUgY2FuIHNlcnZpY2UgY2FjaGUgbWlzc2VzLgpCZWNhdXNlIG9mIHRoaXMsIHNtYWxsIGNoYW5nZXMgdG8gdGhlIGNvZGUgdG8gcmVkdWNlIHRoZSBtaXNzCnJhdGUgaGF2ZSBiZWVuIG9ic2VydmVkIHRvIGdpdmUgZGlzcHJvcG9ydGlvbmF0ZWx5IGxhcmdlCnBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gIEkgaW1hZ2luZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIHBlcmZvcm0gYmVzdCBvbgptYWNoaW5lcyB3aXRoIHZlcnkgbGFyZ2UgY2FjaGVzLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImNhdmVhdHMiPjwvYT4yLjguoENBVkVBVFM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5JL08gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCBhcyBoZWxwZnVsIGFzIHRoZXkgY291bGQgYmUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRyaWVzIGhhcmQgdG8gZGV0ZWN0IEkvTwplcnJvcnMgYW5kIGV4aXQgY2xlYW5seSwgYnV0IHRoZSBkZXRhaWxzIG9mIHdoYXQgdGhlIHByb2JsZW0gaXMKc29tZXRpbWVzIHNlZW0gcmF0aGVyIG1pc2xlYWRpbmcuPC9wPgo8cD5UaGlzIG1hbnVhbCBwYWdlIHBlcnRhaW5zIHRvIHZlcnNpb24gMS4wLjUgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4uICBDb21wcmVzc2VkIGRhdGEgY3JlYXRlZCBieQp0aGlzIHZlcnNpb24gaXMgZW50aXJlbHkgZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggdGhlCnByZXZpb3VzIHB1YmxpYyByZWxlYXNlcywgdmVyc2lvbnMgMC4xcGwyLCAwLjkuMCBhbmQgMC45LjUsIDEuMC4wLAoxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCBidXQgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjogMC45LjAgYW5kCmFib3ZlIGNhbiBjb3JyZWN0bHkgZGVjb21wcmVzcyBtdWx0aXBsZSBjb25jYXRlbmF0ZWQgY29tcHJlc3NlZCBmaWxlcy4KMC4xcGwyIGNhbm5vdCBkbyB0aGlzOyBpdCB3aWxsIHN0b3AgYWZ0ZXIgZGVjb21wcmVzc2luZyBqdXN0IHRoZSBmaXJzdApmaWxlIGluIHRoZSBzdHJlYW0uPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gdmVyc2lvbnMKcHJpb3IgdG8gMS4wLjIgdXNlZCAzMi1iaXQgaW50ZWdlcnMgdG8gcmVwcmVzZW50IGJpdCBwb3NpdGlvbnMgaW4KY29tcHJlc3NlZCBmaWxlcywgc28gaXQgY291bGQgbm90IGhhbmRsZSBjb21wcmVzc2VkIGZpbGVzIG1vcmUKdGhhbiA1MTIgbWVnYWJ5dGVzIGxvbmcuICBWZXJzaW9ucyAxLjAuMiBhbmQgYWJvdmUgdXNlIDY0LWJpdCBpbnRzCm9uIHNvbWUgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhlbSAoR05VIHN1cHBvcnRlZCB0YXJnZXRzLCBhbmQKV2luZG93cykuIFRvIGVzdGFibGlzaCB3aGV0aGVyIG9yIG5vdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gd2FzIGJ1aWx0IHdpdGggc3VjaAphIGxpbWl0YXRpb24sIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4gSW4gYW55IGV2ZW50IHlvdSBjYW4KYnVpbGQgeW91cnNlbGYgYW4gdW5saW1pdGVkIHZlcnNpb24gaWYgeW91IGNhbiByZWNvbXBpbGUgaXQgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk1heWJlVUludDY0PC9jb2RlPiBzZXQgdG8gYmUgYW4KdW5zaWduZWQgNjQtYml0IGludGVnZXIuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iYXV0aG9yIj48L2E+Mi45LqBBVVRIT1I8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5KdWxpYW4gU2V3YXJkLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmpzZXdhcmRAYnppcC5vcmc8L2NvZGU+PC9wPgo8cD5UaGUgaWRlYXMgZW1ib2RpZWQgaW4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gYXJlIGR1ZSB0byAoYXQgbGVhc3QpIHRoZQpmb2xsb3dpbmcgcGVvcGxlOiBNaWNoYWVsIEJ1cnJvd3MgYW5kIERhdmlkIFdoZWVsZXIgKGZvciB0aGUKYmxvY2sgc29ydGluZyB0cmFuc2Zvcm1hdGlvbiksIERhdmlkIFdoZWVsZXIgKGFnYWluLCBmb3IgdGhlCkh1ZmZtYW4gY29kZXIpLCBQZXRlciBGZW53aWNrIChmb3IgdGhlIHN0cnVjdHVyZWQgY29kaW5nIG1vZGVsIGluCnRoZSBvcmlnaW5hbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXA8L2NvZGU+LCBhbmQgbWFueQpyZWZpbmVtZW50cyksIGFuZCBBbGlzdGFpciBNb2ZmYXQsIFJhZGZvcmQgTmVhbCBhbmQgSWFuIFdpdHRlbgooZm9yIHRoZSBhcml0aG1ldGljIGNvZGVyIGluIHRoZSBvcmlnaW5hbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXA8L2NvZGU+KS4gIEkgYW0gbXVjaCBpbmRlYnRlZCBmb3IKdGhlaXIgaGVscCwgc3VwcG9ydCBhbmQgYWR2aWNlLiAgU2VlIHRoZSBtYW51YWwgaW4gdGhlIHNvdXJjZQpkaXN0cmlidXRpb24gZm9yIHBvaW50ZXJzIHRvIHNvdXJjZXMgb2YgZG9jdW1lbnRhdGlvbi4gIENocmlzdGlhbgp2b24gUm9xdWVzIGVuY291cmFnZWQgbWUgdG8gbG9vayBmb3IgZmFzdGVyIHNvcnRpbmcgYWxnb3JpdGhtcywKc28gYXMgdG8gc3BlZWQgdXAgY29tcHJlc3Npb24uICBCZWxhIEx1YmtpbiBlbmNvdXJhZ2VkIG1lIHRvCmltcHJvdmUgdGhlIHdvcnN0LWNhc2UgY29tcHJlc3Npb24gcGVyZm9ybWFuY2UuICAKRG9ubmEgUm9iaW5zb24gWE1MaXNlZCB0aGUgZG9jdW1lbnRhdGlvbi4KTWFueSBwZW9wbGUgc2VudApwYXRjaGVzLCBoZWxwZWQgd2l0aCBwb3J0YWJpbGl0eSBwcm9ibGVtcywgbGVudCBtYWNoaW5lcywgZ2F2ZQphZHZpY2UgYW5kIHdlcmUgZ2VuZXJhbGx5IGhlbHBmdWwuPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImxpYnByb2ciPjwvYT4zLqAKUHJvZ3JhbW1pbmcgd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPgo8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b2MiPgo8cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+CjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3RvcC1sZXZlbCI+My4xLiBUb3AtbGV2ZWwgc3RydWN0dXJlPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjbGwtc3VtbWFyeSI+My4xLjEuIExvdy1sZXZlbCBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjaGwtc3VtbWFyeSI+My4xLjIuIEhpZ2gtbGV2ZWwgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3V0aWwtZm5zLXN1bW1hcnkiPjMuMS4zLiBVdGlsaXR5IGZ1bmN0aW9ucyBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNlcnItaGFuZGxpbmciPjMuMi4gRXJyb3IgaGFuZGxpbmc8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNsb3ctbGV2ZWwiPjMuMy4gTG93LWxldmVsIGludGVyZmFjZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Y29tcHJlc3MtaW5pdCI+My4zLjEuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Q29tcHJlc3MiPjMuMy4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Q29tcHJlc3MtZW5kIj4zLjMuMy4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MtaW5pdCI+My4zLjQuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzIj4zLjMuNS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcy1lbmQiPjMuMy42LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNobC1pbnRlcmZhY2UiPjMuNC4gSGlnaC1sZXZlbCBpbnRlcmZhY2U8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWRvcGVuIj4zLjQuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWQiPjMuNC4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkZ2V0dW51c2VkIj4zLjQuMy4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZGNsb3NlIj4zLjQuNC4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZW9wZW4iPjMuNC41LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiendyaXRlIj4zLjQuNi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiendyaXRlY2xvc2UiPjMuNC43LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlQ2xvc2U8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjZW1iZWQiPjMuNC44LiBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3N0ZC1yZHdyIj4zLjQuOS4gU3RhbmRhcmQgZmlsZS1yZWFkaW5nL3dyaXRpbmcgY29kZTwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdXRpbC1mbnMiPjMuNS4gVXRpbGl0eSBmdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiemJ1ZmZ0b2J1ZmZjb21wcmVzcyI+My41LjEuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmRlY29tcHJlc3MiPjMuNS4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjemxpYi1jb21wYXQiPjMuNi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliPC9jb2RlPiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N0ZGlvLWZyZWUiPjMuNy4gVXNpbmcgdGhlIGxpYnJhcnkgaW4gYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPi1mcmVlIGVudmlyb25tZW50PC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjc3RkaW8tYnllIj4zLjcuMS4gR2V0dGluZyByaWQgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNjcml0aWNhbC1lcnJvciI+My43LjIuIENyaXRpY2FsIGVycm9yIGhhbmRsaW5nPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN3aW4tZGxsIj4zLjguIE1ha2luZyBhIFdpbmRvd3MgRExMPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPgo8L2Rpdj4KPHA+VGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+LjwvcD4KPHA+Rm9yIGdlbmVyYWwgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiwgcGFydGljdWxhcmx5IGFib3V0Cm1lbW9yeSB1c2UgYW5kIHBlcmZvcm1hbmNlIGFzcGVjdHMsIHlvdSdkIGJlIHdlbGwgYWR2aXNlZCB0byByZWFkCjxhIGhyZWY9IiN1c2luZyI+SG93IHRvIHVzZSBiemlwMjwvYT4gYXMgd2VsbC48L3A+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InRvcC1sZXZlbCI+PC9hPjMuMS6gVG9wLWxldmVsIHN0cnVjdHVyZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGlzIGEgZmxleGlibGUKbGlicmFyeSBmb3IgY29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcgZGF0YSBpbiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGF0YSBmb3JtYXQuICBBbHRob3VnaApwYWNrYWdlZCBhcyBhIHNpbmdsZSBlbnRpdHksIGl0IGhlbHBzIHRvIHJlZ2FyZCB0aGUgbGlicmFyeSBhcwp0aHJlZSBzZXBhcmF0ZSBwYXJ0czogdGhlIGxvdyBsZXZlbCBpbnRlcmZhY2UsIGFuZCB0aGUgaGlnaCBsZXZlbAppbnRlcmZhY2UsIGFuZCBzb21lIHV0aWxpdHkgZnVuY3Rpb25zLjwvcD4KPHA+VGhlIHN0cnVjdHVyZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPidzIGludGVyZmFjZXMgaXMgc2ltaWxhcgp0byB0aGF0IG9mIEplYW4tbG91cCBHYWlsbHkncyBhbmQgTWFyayBBZGxlcidzIGV4Y2VsbGVudAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGxpYnJhcnkuPC9wPgo8cD5BbGwgZXh0ZXJuYWxseSB2aXNpYmxlIHN5bWJvbHMgaGF2ZSBuYW1lcyBiZWdpbm5pbmcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfPC9jb2RlPi4gIFRoaXMgaXMgbmV3IGluIHZlcnNpb24KMS4wLiAgVGhlIGludGVudGlvbiBpcyB0byBtaW5pbWlzZSBwb2xsdXRpb24gb2YgdGhlIG5hbWVzcGFjZXMgb2YKbGlicmFyeSBjbGllbnRzLjwvcD4KPHA+VG8gdXNlIGFueSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCB5b3UgbmVlZCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPiNpbmNsdWRlICZsdDtiemxpYi5oJmd0OzwvY29kZT4KaW50byB5b3VyIHNvdXJjZXMuPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ibGwtc3VtbWFyeSI+PC9hPjMuMS4xLqBMb3ctbGV2ZWwgc3VtbWFyeTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIHNlcnZpY2VzIGZvciBjb21wcmVzc2luZyBhbmQKZGVjb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeS4gIFRoZXJlJ3Mgbm8gcHJvdmlzaW9uIGZvciBkZWFsaW5nCndpdGggZmlsZXMsIHN0cmVhbXMgb3IgYW55IG90aGVyIEkvTyBtZWNoYW5pc21zLCBqdXN0IHN0cmFpZ2h0Cm1lbW9yeS10by1tZW1vcnkgd29yay4gIEluIGZhY3QsIHRoaXMgcGFydCBvZiB0aGUgbGlicmFyeSBjYW4gYmUKY29tcGlsZWQgd2l0aG91dCBpbmNsdXNpb24gb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpby5oPC9jb2RlPiwgd2hpY2ggbWF5IGJlIGhlbHBmdWwKZm9yIGVtYmVkZGVkIGFwcGxpY2F0aW9ucy48L3A+CjxwPlRoZSBsb3ctbGV2ZWwgcGFydCBvZiB0aGUgbGlicmFyeSBoYXMgbm8gZ2xvYmFsIHZhcmlhYmxlcwphbmQgaXMgdGhlcmVmb3JlIHRocmVhZC1zYWZlLjwvcD4KPHA+U2l4IHJvdXRpbmVzIG1ha2UgdXAgdGhlIGxvdyBsZXZlbCBpbnRlcmZhY2U6Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4sIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiBmb3IKY29tcHJlc3Npb24sIGFuZCBhIGNvcnJlc3BvbmRpbmcgdHJpbwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPiBmb3IKZGVjb21wcmVzc2lvbi4gIFRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipJbml0PC9jb2RlPgpmdW5jdGlvbnMgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGFuZCBkbwpvdGhlciBpbml0aWFsaXNhdGlvbnMsIHdoaWxzdCB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qRW5kPC9jb2RlPiBmdW5jdGlvbnMgY2xvc2UgZG93bgpvcGVyYXRpb25zIGFuZCByZWxlYXNlIG1lbW9yeS48L3A+CjxwPlRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPi4gIFRoZXNlCmNvbXByZXNzIGFuZCBkZWNvbXByZXNzIGRhdGEgZnJvbSBhIHVzZXItc3VwcGxpZWQgaW5wdXQgYnVmZmVyIHRvCmEgdXNlci1zdXBwbGllZCBvdXRwdXQgYnVmZmVyLiAgVGhlc2UgYnVmZmVycyBjYW4gYmUgYW55IHNpemU7CmFyYml0cmFyeSBxdWFudGl0aWVzIG9mIGRhdGEgYXJlIGhhbmRsZWQgYnkgbWFraW5nIHJlcGVhdGVkIGNhbGxzCnRvIHRoZXNlIGZ1bmN0aW9ucy4gIFRoaXMgaXMgYSBmbGV4aWJsZSBtZWNoYW5pc20gYWxsb3dpbmcgYQpjb25zdW1lci1wdWxsIHN0eWxlIG9mIGFjdGl2aXR5LCBvciBwcm9kdWNlci1wdXNoLCBvciBhIG1peHR1cmUKb2YgYm90aC48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iaGwtc3VtbWFyeSI+PC9hPjMuMS4yLqBIaWdoLWxldmVsIHN1bW1hcnk8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGlzIGludGVyZmFjZSBwcm92aWRlcyBzb21lIGhhbmR5IHdyYXBwZXJzIGFyb3VuZCB0aGUKbG93LWxldmVsIGludGVyZmFjZSB0byBmYWNpbGl0YXRlIHJlYWRpbmcgYW5kIHdyaXRpbmcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGZpbGVzCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGVzKS4gIFRoZSByb3V0aW5lcwpwcm92aWRlIGhvb2tzIHRvIGZhY2lsaXRhdGUgcmVhZGluZyBmaWxlcyBpbiB3aGljaCB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGF0YSBzdHJlYW0gaXMgZW1iZWRkZWQKd2l0aGluIHNvbWUgbGFyZ2VyLXNjYWxlIGZpbGUgc3RydWN0dXJlLCBvciB3aGVyZSB0aGVyZSBhcmUKbXVsdGlwbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGF0YSBzdHJlYW1zCmNvbmNhdGVuYXRlZCBlbmQtdG8tZW5kLjwvcD4KPHA+Rm9yIHJlYWRpbmcgZmlsZXMsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4gYW5kIAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+IGFyZQpzdXBwbGllZC4gIEZvciB3cml0aW5nIGZpbGVzLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlRmluaXNoPC9jb2RlPiBhcmUKYXZhaWxhYmxlLjwvcD4KPHA+QXMgd2l0aCB0aGUgbG93LWxldmVsIGxpYnJhcnksIG5vIGdsb2JhbCB2YXJpYWJsZXMgYXJlIHVzZWQKc28gdGhlIGxpYnJhcnkgaXMgcGVyIHNlIHRocmVhZC1zYWZlLiAgSG93ZXZlciwgaWYgSS9PIGVycm9ycwpvY2N1ciB3aGlsc3QgcmVhZGluZyBvciB3cml0aW5nIHRoZSB1bmRlcmx5aW5nIGNvbXByZXNzZWQgZmlsZXMsCnlvdSBtYXkgaGF2ZSB0byBjb25zdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+IHRvCmRldGVybWluZSB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yLiAgSW4gdGhhdCBjYXNlLCB5b3UnZCBuZWVkIGEgQwpsaWJyYXJ5IHdoaWNoIGNvcnJlY3RseSBzdXBwb3J0cwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPiBpbiBhIG11bHRpdGhyZWFkZWQKZW52aXJvbm1lbnQuPC9wPgo8cD5UbyBtYWtlIHRoZSBsaWJyYXJ5IGEgbGl0dGxlIHNpbXBsZXIgYW5kIG1vcmUgcG9ydGFibGUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gcmVxdWlyZSB5b3UgdG8KcGFzcyB0aGVtIGZpbGUgaGFuZGxlcyAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5GSUxFKjwvY29kZT5zKQp3aGljaCBoYXZlIHByZXZpb3VzbHkgYmVlbiBvcGVuZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZwpyZXNwZWN0aXZlbHkuICBUaGF0IGF2b2lkcyBwb3J0YWJpbGl0eSBwcm9ibGVtcyBhc3NvY2lhdGVkIHdpdGgKZmlsZSBvcGVyYXRpb25zIGFuZCBmaWxlIGF0dHJpYnV0ZXMsIHdoaWxzdCBub3QgYmVpbmcgbXVjaCBvZiBhbgppbXBvc2l0aW9uIG9uIHRoZSBwcm9ncmFtbWVyLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGlsLWZucy1zdW1tYXJ5Ij48L2E+My4xLjMuoFV0aWxpdHkgZnVuY3Rpb25zIHN1bW1hcnk8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5Gb3IgdmVyeSBzaW1wbGUgbmVlZHMsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT4gYXJlCnByb3ZpZGVkLiAgVGhlc2UgY29tcHJlc3MgZGF0YSBpbiBtZW1vcnkgZnJvbSBvbmUgYnVmZmVyIHRvCmFub3RoZXIgYnVmZmVyIGluIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuICBZb3Ugc2hvdWxkIGFzc2Vzcwp3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBmdWxmaWxsIHlvdXIgbWVtb3J5LXRvLW1lbW9yeQpjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIHJlcXVpcmVtZW50cyBiZWZvcmUgaW52ZXN0aW5nIGVmZm9ydCBpbgp1bmRlcnN0YW5kaW5nIHRoZSBtb3JlIGdlbmVyYWwgYnV0IG1vcmUgY29tcGxleCBsb3ctbGV2ZWwKaW50ZXJmYWNlLjwvcD4KPHA+WW9zaGlva2EgVHN1bmVvCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRzdW5lb0Byci5paWo0dS5vci5qcDwvY29kZT4pIGhhcwpjb250cmlidXRlZCBzb21lIGZ1bmN0aW9ucyB0byBnaXZlIGJldHRlcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkuICBUaGVzZQpmdW5jdGlvbnMgYXJlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6b3BlbjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6cmVhZDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6d3JpdGU8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemZsdXNoPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpjbG9zZTwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6ZXJyb3I8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemxpYlZlcnNpb248L2NvZGU+LiAgWW91IG1heSBmaW5kCnRoZXNlIGZ1bmN0aW9ucyBtb3JlIGNvbnZlbmllbnQgZm9yIHNpbXBsZSBmaWxlIHJlYWRpbmcgYW5kCndyaXRpbmcsIHRoYW4gdGhvc2UgaW4gdGhlIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlLiAgVGhlc2UgZnVuY3Rpb25zCmFyZSBub3QgKHlldCkgb2ZmaWNpYWxseSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCBhbmQgYXJlIG1pbmltYWxseQpkb2N1bWVudGVkIGhlcmUuICBJZiB0aGV5IGJyZWFrLCB5b3UgZ2V0IHRvIGtlZXAgYWxsIHRoZSBwaWVjZXMuCkkgaG9wZSB0byBkb2N1bWVudCB0aGVtIHByb3Blcmx5IHdoZW4gdGltZSBwZXJtaXRzLjwvcD4KPHA+WW9zaGlva2EgYWxzbyBjb250cmlidXRlZCBtb2RpZmljYXRpb25zIHRvIGFsbG93IHRoZQpsaWJyYXJ5IHRvIGJlIGJ1aWx0IGFzIGEgV2luZG93cyBETEwuPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImVyci1oYW5kbGluZyI+PC9hPjMuMi6gRXJyb3IgaGFuZGxpbmc8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGUgbGlicmFyeSBpcyBkZXNpZ25lZCB0byByZWNvdmVyIGNsZWFubHkgaW4gYWxsCnNpdHVhdGlvbnMsIGluY2x1ZGluZyB0aGUgd29yc3QtY2FzZSBzaXR1YXRpb24gb2YgZGVjb21wcmVzc2luZwpyYW5kb20gZGF0YS4gIEknbSBub3QgMTAwJSBzdXJlIHRoYXQgaXQgY2FuIGFsd2F5cyBkbyB0aGlzLCBzbwp5b3UgbWlnaHQgd2FudCB0byBhZGQgYSBzaWduYWwgaGFuZGxlciB0byBjYXRjaCBzZWdtZW50YXRpb24KdmlvbGF0aW9ucyBkdXJpbmcgZGVjb21wcmVzc2lvbiBpZiB5b3UgYXJlIGZlZWxpbmcgZXNwZWNpYWxseQpwYXJhbm9pZC4gIEkgd291bGQgYmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIG1vcmUgYWJvdXQgdGhlCnJvYnVzdG5lc3Mgb2YgdGhlIGxpYnJhcnkgdG8gY29ycnVwdGVkIGNvbXByZXNzZWQgZGF0YS48L3A+CjxwPlZlcnNpb24gMS4wLjMgbW9yZSByb2J1c3QgaW4gdGhpcyByZXNwZWN0IHRoYW4gYW55CnByZXZpb3VzIHZlcnNpb24uICBJbnZlc3RpZ2F0aW9ucyB3aXRoIFZhbGdyaW5kIChhIHRvb2wgZm9yIGRldGVjdGluZwpwcm9ibGVtcyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50KSBpbmRpY2F0ZQp0aGF0LCBhdCBsZWFzdCBmb3IgdGhlIGZldyBmaWxlcyBJIHRlc3RlZCwgYWxsIHNpbmdsZS1iaXQgZXJyb3JzCmluIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBhcmUgY2F1Z2h0IHByb3Blcmx5LCB3aXRoIG5vCnNlZ21lbnRhdGlvbiBmYXVsdHMsIG5vIHVzZXMgb2YgdW5pbml0aWFsaXNlZCBkYXRhLCBubyBvdXQgb2YKcmFuZ2UgcmVhZHMgb3Igd3JpdGVzLCBhbmQgbm8gaW5maW5pdGUgbG9vcGluZyBpbiB0aGUgZGVjb21wcmVzc29yLgpTbyBpdCdzIGNlcnRhaW5seSBwcmV0dHkgcm9idXN0LCBhbHRob3VnaApJIHdvdWxkbid0IGNsYWltIGl0IHRvIGJlIHRvdGFsbHkgYm9tYnByb29mLjwvcD4KPHA+VGhlIGZpbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYi5oPC9jb2RlPiBjb250YWlucwphbGwgZGVmaW5pdGlvbnMgbmVlZGVkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEluIHBhcnRpY3VsYXIsIHlvdQpzaG91bGQgZGVmaW5pdGVseSBub3QgaW5jbHVkZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliX3ByaXZhdGUuaDwvY29kZT4uPC9wPgo8cD5JbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliLmg8L2NvZGU+LCB0aGUgdmFyaW91cwpyZXR1cm4gdmFsdWVzIGFyZSBkZWZpbmVkLiAgVGhlIGZvbGxvd2luZyBsaXN0IGlzIG5vdCBpbnRlbmRlZCBhcwphbiBleGhhdXN0aXZlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaXJjdW1zdGFuY2VzIGluIHdoaWNoIGEgZ2l2ZW4KdmFsdWUgbWF5IGJlIHJldHVybmVkIC0tIHRob3NlIGRlc2NyaXB0aW9ucyBhcmUgZ2l2ZW4gbGF0ZXIuClJhdGhlciwgaXQgaXMgaW50ZW5kZWQgdG8gY29udmV5IHRoZSByb3VnaCBtZWFuaW5nIG9mIGVhY2ggcmV0dXJuCnZhbHVlLiAgVGhlIGZpcnN0IGZpdmUgYWN0aW9ucyBhcmUgbm9ybWFsIGFuZCBub3QgaW50ZW5kZWQgdG8KZGVub3RlIGFuIGVycm9yIHNpdHVhdGlvbi48L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5UaGUgcmVxdWVzdGVkIGFjdGlvbiB3YXMgY29tcGxldGVkCiAgIHN1Y2Nlc3NmdWxseS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1JVTl9PSywgQlpfRkxVU0hfT0ssCiAgICBCWl9GSU5JU0hfT0s8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5JbiAKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4sIHRoZSByZXF1ZXN0ZWQKICAgZmx1c2gvZmluaXNoL25vdGhpbmctc3BlY2lhbCBhY3Rpb24gd2FzIGNvbXBsZXRlZAogICBzdWNjZXNzZnVsbHkuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+Q29tcHJlc3Npb24gb2YgZGF0YSB3YXMgY29tcGxldGVkLCBvciB0aGUKICAgbG9naWNhbCBzdHJlYW0gZW5kIHdhcyBkZXRlY3RlZCBkdXJpbmcKICAgZGVjb21wcmVzc2lvbi48L3A+PC9kZD4KPC9kbD48L2Rpdj4KPHA+VGhlIGZvbGxvd2luZyByZXR1cm4gdmFsdWVzIGluZGljYXRlIGFuIGVycm9yIG9mIHNvbWUKa2luZC48L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfQ09ORklHX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+SW5kaWNhdGVzIHRoYXQgdGhlIGxpYnJhcnkgaGFzIGJlZW4gaW1wcm9wZXJseQogICBjb21waWxlZCBvbiB5b3VyIHBsYXRmb3JtIC0tIGEgbWFqb3IgY29uZmlndXJhdGlvbiBlcnJvci4KICAgU3BlY2lmaWNhbGx5LCBpdCBtZWFucyB0aGF0CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGNoYXIpPC9jb2RlPiwKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2Yoc2hvcnQpPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YoaW50KTwvY29kZT4gYXJlIG5vdCAxLCAyIGFuZAogICA0IHJlc3BlY3RpdmVseSwgYXMgdGhleSBzaG91bGQgYmUuICBOb3RlIHRoYXQgdGhlIGxpYnJhcnkKICAgc2hvdWxkIHN0aWxsIHdvcmsgcHJvcGVybHkgb24gNjQtYml0IHBsYXRmb3JtcyB3aGljaCBmb2xsb3cKICAgdGhlIExQNjQgcHJvZ3JhbW1pbmcgbW9kZWwgLS0gdGhhdCBpcywgd2hlcmUKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YobG9uZyk8L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNpemVvZih2b2lkKik8L2NvZGU+IGFyZSA4LiAgVW5kZXIKICAgTFA2NCwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YoaW50KTwvY29kZT4gaXMgc3RpbGwgNCwKICAgc28gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4sIHdoaWNoIGRvZXNuJ3QKICAgdXNlIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxvbmc8L2NvZGU+IHR5cGUsIGlzCiAgIE9LLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRVJST1I8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5XaGVuIHVzaW5nIHRoZSBsaWJyYXJ5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2FsbAogICB0aGUgZnVuY3Rpb25zIGluIHRoZSBjb3JyZWN0IHNlcXVlbmNlIGFuZCB3aXRoIGRhdGEgc3RydWN0dXJlcwogICAoYnVmZmVycyBldGMpIGluIHRoZSBjb3JyZWN0IHN0YXRlcy4KICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4gY2hlY2tzIGFzIG11Y2ggYXMgaXQKICAgY2FuIHRvIGVuc3VyZSB0aGlzIGlzIGhhcHBlbmluZywgYW5kIHJldHVybnMKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4gaWYgbm90LgogICBDb2RlIHdoaWNoIGNvbXBsaWVzIHByZWNpc2VseSB3aXRoIHRoZSBmdW5jdGlvbiBzZW1hbnRpY3MsIGFzCiAgIGRldGFpbGVkIGJlbG93LCBzaG91bGQgbmV2ZXIgcmVjZWl2ZSB0aGlzIHZhbHVlOyBzdWNoIGFuIGV2ZW50CiAgIGRlbm90ZXMgYnVnZ3kgY29kZSB3aGljaCB5b3Ugc2hvdWxkCiAgIGludmVzdGlnYXRlLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUEFSQU1fRVJST1I8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5SZXR1cm5lZCB3aGVuIGEgcGFyYW1ldGVyIHRvIGEgZnVuY3Rpb24gY2FsbCBpcwogICBvdXQgb2YgcmFuZ2Ugb3Igb3RoZXJ3aXNlIG1hbmlmZXN0bHkgaW5jb3JyZWN0LiAgQXMgd2l0aAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiwgdGhpcwogICBkZW5vdGVzIGEgYnVnIGluIHRoZSBjbGllbnQgY29kZS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUEFSQU1fRVJST1I8L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiBpcyBhIGJpdAogICBoYXp5LCBidXQgc3RpbGwgd29ydGggbWFraW5nLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgd2hlbiBhIHJlcXVlc3QgdG8gYWxsb2NhdGUgbWVtb3J5CiAgIGZhaWxlZC4gIE5vdGUgdGhhdCB0aGUgcXVhbnRpdHkgb2YgbWVtb3J5IG5lZWRlZCB0byBkZWNvbXByZXNzCiAgIGEgc3RyZWFtIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIHRoZSBzdHJlYW0ncyBoZWFkZXIgaGFzCiAgIGJlZW4gcmVhZC4gIFNvCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4gYW5kCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gbWF5IHJldHVybgogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gZXZlbiB0aG91Z2ggc29tZQogICBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGhhcyBiZWVuIHJlYWQuICBUaGUgc2FtZSBpcyBub3QgdHJ1ZQogICBmb3IgY29tcHJlc3Npb247IG9uY2UKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+IG9yCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiBoYXZlCiAgIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQsCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPiBjYW5ub3QKICAgb2NjdXIuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgd2hlbiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIGlzCiAgIGRldGVjdGVkIGR1cmluZyBkZWNvbXByZXNzaW9uLiAgTW9zdCBpbXBvcnRhbnRseSwgdGhpcyBtZWFucwogICB3aGVuIHN0b3JlZCBhbmQgY29tcHV0ZWQgQ1JDcyBmb3IgdGhlIGRhdGEgZG8gbm90IG1hdGNoLiAgVGhpcwogICB2YWx1ZSBpcyBhbHNvIHJldHVybmVkIHVwb24gZGV0ZWN0aW9uIG9mIGFueSBvdGhlciBhbm9tYWx5IGluCiAgIHRoZSBjb21wcmVzc2VkIGRhdGEuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SX01BR0lDPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+QXMgYSBzcGVjaWFsIGNhc2Ugb2YKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SPC9jb2RlPiwgaXQgaXMKICAgc29tZXRpbWVzIHVzZWZ1bCB0byBrbm93IHdoZW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGRvZXMgbm90CiAgIHN0YXJ0IHdpdGggdGhlIGNvcnJlY3QgbWFnaWMgYnl0ZXMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+J0InICdaJwogICAnaCc8L2NvZGU+KS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0lPX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgYnkKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gd2hlbiB0aGVyZSBpcyBhbgogICBlcnJvciByZWFkaW5nIG9yIHdyaXRpbmcgaW4gdGhlIGNvbXByZXNzZWQgZmlsZSwgYW5kIGJ5CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gZm9yIGF0dGVtcHRzCiAgIHRvIHVzZSBhIGZpbGUgZm9yIHdoaWNoIHRoZSBlcnJvciBpbmRpY2F0b3IgKHZpeiwKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZXJyb3IoZik8L2NvZGU+KSBpcyBzZXQuICBPbgogICByZWNlaXB0IG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfSU9fRVJST1I8L2NvZGU+LCB0aGUKICAgY2FsbGVyIHNob3VsZCBjb25zdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+CiAgIGFuZC9vciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnBlcnJvcjwvY29kZT4gdG8gYWNxdWlyZQogICBvcGVyYXRpbmctc3lzdGVtIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZQogICBwcm9ibGVtLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfVU5FWFBFQ1RFRF9FT0Y8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5SZXR1cm5lZCBieQogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IHdoZW4gdGhlCiAgIGNvbXByZXNzZWQgZmlsZSBmaW5pc2hlcyBiZWZvcmUgdGhlIGxvZ2ljYWwgZW5kIG9mIHN0cmVhbSBpcwogICBkZXRlY3RlZC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09VVEJVRkZfRlVMTDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlJldHVybmVkIGJ5CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT4gdG8KICAgaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGRhdGEgd2lsbCBub3QgZml0IGludG8gdGhlIG91dHB1dAogICBidWZmZXIgcHJvdmlkZWQuPC9wPjwvZGQ+CjwvZGw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJsb3ctbGV2ZWwiPjwvYT4zLjMuoExvdy1sZXZlbCBpbnRlcmZhY2U8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpjb21wcmVzcy1pbml0Ij48L2E+My4zLjEuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CiAgY2hhciAqbmV4dF9pbjsKICB1bnNpZ25lZCBpbnQgYXZhaWxfaW47CiAgdW5zaWduZWQgaW50IHRvdGFsX2luX2xvMzI7CiAgdW5zaWduZWQgaW50IHRvdGFsX2luX2hpMzI7CgogIGNoYXIgKm5leHRfb3V0OwogIHVuc2lnbmVkIGludCBhdmFpbF9vdXQ7CiAgdW5zaWduZWQgaW50IHRvdGFsX291dF9sbzMyOwogIHVuc2lnbmVkIGludCB0b3RhbF9vdXRfaGkzMjsKCiAgdm9pZCAqc3RhdGU7CgogIHZvaWQgKigqYnphbGxvYykodm9pZCAqLGludCxpbnQpOwogIHZvaWQgKCpiemZyZWUpKHZvaWQgKix2b2lkICopOwogIHZvaWQgKm9wYXF1ZTsKfSBiel9zdHJlYW07CgppbnQgQloyX2J6Q29tcHJlc3NJbml0ICggYnpfc3RyZWFtICpzdHJtLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1NpemUxMDBrLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd29ya0ZhY3RvciApOzwvcHJlPgo8cD5QcmVwYXJlcyBmb3IgY29tcHJlc3Npb24uICBUaGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IHN0cnVjdHVyZSBob2xkcyBhbGwKZGF0YSBwZXJ0YWluaW5nIHRvIHRoZSBjb21wcmVzc2lvbiBhY3Rpdml0eS4gIEEKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IHN0cnVjdHVyZSBzaG91bGQgYmUKYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCBwcmlvciB0byB0aGUgY2FsbC4gIFRoZSBmaWVsZHMgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IGNvbXByaXNlIHRoZSBlbnRpcmV0eQpvZiB0aGUgdXNlci12aXNpYmxlIGRhdGEuICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0YXRlPC9jb2RlPgppcyBhIHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmVzIHJlcXVpcmVkIGZvcgpjb21wcmVzc2lvbi48L3A+CjxwPkN1c3RvbSBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgc3VwcG9ydGVkLCB2aWEgZmllbGRzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3BhcXVlPC9jb2RlPi4gIFRoZSB2YWx1ZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4gaXMgcGFzc2VkIHRvIGFzIHRoZSBmaXJzdAphcmd1bWVudCB0byBhbGwgY2FsbHMgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPgphbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+LCBidXQgaXMgb3RoZXJ3aXNlCmlnbm9yZWQgYnkgdGhlIGxpYnJhcnkuICBUaGUgY2FsbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6YWxsb2MgKApvcGFxdWUsIG4sIG0gKTwvY29kZT4gaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgcG9pbnRlcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnA8L2NvZGU+IHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+biAqCm08L2NvZGU+IGJ5dGVzIG9mIG1lbW9yeSwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlICgKb3BhcXVlLCBwICk8L2NvZGU+IHNob3VsZCBmcmVlIHRoYXQgbWVtb3J5LjwvcD4KPHA+SWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIGEgY3VzdG9tIG1lbW9yeSBhbGxvY2F0b3IsIHNldAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6YWxsb2M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZnJlZTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3BhcXVlPC9jb2RlPiB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk5VTEw8L2NvZGU+LCBhbmQgdGhlIGxpYnJhcnkgd2lsbCB0aGVuCnVzZSB0aGUgc3RhbmRhcmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tYWxsb2M8L2NvZGU+IC8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVlPC9jb2RlPiByb3V0aW5lcy48L3A+CjxwPkJlZm9yZSBjYWxsaW5nCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiwgZmllbGRzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcGFxdWU8L2NvZGU+IHNob3VsZCBiZSBmaWxsZWQKYXBwcm9wcmlhdGVseSwgYXMganVzdCBkZXNjcmliZWQuICBVcG9uIHJldHVybiwgdGhlIGludGVybmFsCnN0YXRlIHdpbGwgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGlzZWQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luX2xvMzI8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luX2hpMzI8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX291dF9sbzMyPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXRfaGkzMjwvY29kZT4gd2lsbCBoYXZlIGJlZW4Kc2V0IHRvIHplcm8uICBUaGVzZSBmb3VyIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgbGlicmFyeSB0byBpbmZvcm0KdGhlIGNhbGxlciBvZiB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgcGFzc2VkIGludG8gYW5kIG91dCBvZiB0aGUKbGlicmFyeSwgcmVzcGVjdGl2ZWx5LiAgWW91IHNob3VsZCBub3QgdHJ5IHRvIGNoYW5nZSB0aGVtLiAgQXMgb2YKdmVyc2lvbiAxLjAsIDY0LWJpdCBjb3VudHMgYXJlIG1haW50YWluZWQsIGV2ZW4gb24gMzItYml0CnBsYXRmb3JtcywgdXNpbmcgdGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+X2hpMzI8L2NvZGU+CmZpZWxkcyB0byBzdG9yZSB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgY291bnQuICBTbywgZm9yIGV4YW1wbGUsCnRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSBpbiBpcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPih0b3RhbF9pbl9oaTMyCiZsdDsmbHQ7IDMyKSArIHRvdGFsX2luX2xvMzI8L2NvZGU+LjwvcD4KPHA+UGFyYW1ldGVyIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YmxvY2tTaXplMTAwazwvY29kZT4Kc3BlY2lmaWVzIHRoZSBibG9jayBzaXplIHRvIGJlIHVzZWQgZm9yIGNvbXByZXNzaW9uLiAgSXQgc2hvdWxkCmJlIGEgdmFsdWUgYmV0d2VlbiAxIGFuZCA5IGluY2x1c2l2ZSwgYW5kIHRoZSBhY3R1YWwgYmxvY2sgc2l6ZQp1c2VkIGlzIDEwMDAwMCB4IHRoaXMgZmlndXJlLiAgOSBnaXZlcyB0aGUgYmVzdCBjb21wcmVzc2lvbiBidXQKdGFrZXMgbW9zdCBtZW1vcnkuPC9wPgo8cD5QYXJhbWV0ZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+IHNob3VsZApiZSBzZXQgdG8gYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA0IGluY2x1c2l2ZS4gIDAgaXMgc2lsZW50LCBhbmQKZ3JlYXRlciBudW1iZXJzIGdpdmUgaW5jcmVhc2luZ2x5IHZlcmJvc2UgbW9uaXRvcmluZy9kZWJ1Z2dpbmcKb3V0cHV0LiAgSWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gY29tcGlsZWQgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1EQlpfTk9fU1RESU88L2NvZGU+LCBubyBzdWNoIG91dHB1dAp3aWxsIGFwcGVhciBmb3IgYW55IHZlcmJvc2l0eSBzZXR0aW5nLjwvcD4KPHA+UGFyYW1ldGVyIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+d29ya0ZhY3RvcjwvY29kZT4KY29udHJvbHMgaG93IHRoZSBjb21wcmVzc2lvbiBwaGFzZSBiZWhhdmVzIHdoZW4gcHJlc2VudGVkIHdpdGgKd29yc3QgY2FzZSwgaGlnaGx5IHJlcGV0aXRpdmUsIGlucHV0IGRhdGEuICBJZiBjb21wcmVzc2lvbiBydW5zCmludG8gZGlmZmljdWx0aWVzIGNhdXNlZCBieSByZXBldGl0aXZlIGRhdGEsIHRoZSBsaWJyYXJ5IHN3aXRjaGVzCmZyb20gdGhlIHN0YW5kYXJkIHNvcnRpbmcgYWxnb3JpdGhtIHRvIGEgZmFsbGJhY2sgYWxnb3JpdGhtLiAgVGhlCmZhbGxiYWNrIGlzIHNsb3dlciB0aGFuIHRoZSBzdGFuZGFyZCBhbGdvcml0aG0gYnkgcGVyaGFwcyBhCmZhY3RvciBvZiB0aHJlZSwgYnV0IGFsd2F5cyBiZWhhdmVzIHJlYXNvbmFibHksIG5vIG1hdHRlciBob3cgYmFkCnRoZSBpbnB1dC48L3A+CjxwPkxvd2VyIHZhbHVlcyBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPndvcmtGYWN0b3I8L2NvZGU+CnJlZHVjZSB0aGUgYW1vdW50IG9mIGVmZm9ydCB0aGUgc3RhbmRhcmQgYWxnb3JpdGhtIHdpbGwgZXhwZW5kCmJlZm9yZSByZXNvcnRpbmcgdG8gdGhlIGZhbGxiYWNrLiAgWW91IHNob3VsZCBzZXQgdGhpcyBwYXJhbWV0ZXIKY2FyZWZ1bGx5OyB0b28gbG93LCBhbmQgbWFueSBpbnB1dHMgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZQpmYWxsYmFjayBhbGdvcml0aG0gYW5kIHNvIGNvbXByZXNzIHJhdGhlciBzbG93bHksIHRvbyBoaWdoLCBhbmQKeW91ciBhdmVyYWdlLXRvLXdvcnN0IGNhc2UgY29tcHJlc3Npb24gdGltZXMgY2FuIGJlY29tZSB2ZXJ5CmxhcmdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgMzAgZ2l2ZXMgcmVhc29uYWJsZSBiZWhhdmlvdXIgb3ZlciBhCndpZGUgcmFuZ2Ugb2YgY2lyY3Vtc3RhbmNlcy48L3A+CjxwPkFsbG93YWJsZSB2YWx1ZXMgcmFuZ2UgZnJvbSAwIHRvIDI1MCBpbmNsdXNpdmUuICAwIGlzIGEKc3BlY2lhbCBjYXNlLCBlcXVpdmFsZW50IHRvIHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlIG9mIDMwLjwvcD4KPHA+Tm90ZSB0aGF0IHRoZSBjb21wcmVzc2VkIG91dHB1dCBnZW5lcmF0ZWQgaXMgdGhlIHNhbWUKcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgZmFsbGJhY2sgYWxnb3JpdGhtIGlzCnVzZWQuPC9wPgo8cD5CZSBhd2FyZSBhbHNvIHRoYXQgdGhpcyBwYXJhbWV0ZXIgbWF5IGRpc2FwcGVhciBlbnRpcmVseSBpbgpmdXR1cmUgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkuICBJbiBwcmluY2lwbGUgaXQgc2hvdWxkIGJlCnBvc3NpYmxlIHRvIGRldmlzZSBhIGdvb2Qgd2F5IHRvIGF1dG9tYXRpY2FsbHkgY2hvb3NlIHdoaWNoCmFsZ29yaXRobSB0byB1c2UuICBTdWNoIGEgbWVjaGFuaXNtIHdvdWxkIHJlbmRlciB0aGUgcGFyYW1ldGVyCm9ic29sZXRlLjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKQlpfUEFSQU1fRVJST1IKICBpZiBzdHJtIGlzIE5VTEwgCiAgb3IgYmxvY2tTaXplICZsdDsgMSBvciBibG9ja1NpemUgJmd0OyA5CiAgb3IgdmVyYm9zaXR5ICZsdDsgMCBvciB2ZXJib3NpdHkgJmd0OyA0CiAgb3Igd29ya0ZhY3RvciAmbHQ7IDAgb3Igd29ya0ZhY3RvciAmZ3Q7IDI1MApCWl9NRU1fRVJST1IgCiAgaWYgbm90IGVub3VnaCBtZW1vcnkgaXMgYXZhaWxhYmxlCkJaX09LIAogIG90aGVyd2lzZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9iekNvbXByZXNzCiAgaWYgQlpfT0sgaXMgcmV0dXJuZWQKICBubyBzcGVjaWZpYyBhY3Rpb24gbmVlZGVkIGluIGNhc2Ugb2YgZXJyb3I8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiekNvbXByZXNzIj48L2E+My4zLjIuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpDb21wcmVzcyAoIGJ6X3N0cmVhbSAqc3RybSwgaW50IGFjdGlvbiApOzwvcHJlPgo8cD5Qcm92aWRlcyBtb3JlIGlucHV0IGFuZC9vciBvdXRwdXQgYnVmZmVyIHNwYWNlIGZvciB0aGUKbGlicmFyeS4gIFRoZSBjYWxsZXIgbWFpbnRhaW5zIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycywgYW5kCmNhbGxzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHRvIHRyYW5zZmVyCmRhdGEgYmV0d2VlbiB0aGVtLjwvcD4KPHA+QmVmb3JlIGVhY2ggY2FsbCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiBzaG91bGQgcG9pbnQgYXQgdGhlIGRhdGEKdG8gYmUgY29tcHJlc3NlZCwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfaW48L2NvZGU+CnNob3VsZCBpbmRpY2F0ZSBob3cgbWFueSBieXRlcyB0aGUgbGlicmFyeSBtYXkgcmVhZC4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gdXBkYXRlcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW48L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9pbjwvY29kZT4gdG8gcmVmbGVjdCB0aGUgbnVtYmVyCm9mIGJ5dGVzIGl0IGhhcyByZWFkLjwvcD4KPHA+U2ltaWxhcmx5LCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfb3V0PC9jb2RlPiBzaG91bGQKcG9pbnQgdG8gYSBidWZmZXIgaW4gd2hpY2ggdGhlIGNvbXByZXNzZWQgZGF0YSBpcyB0byBiZSBwbGFjZWQsCndpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9vdXQ8L2NvZGU+IGluZGljYXRpbmcgaG93Cm11Y2ggb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZS4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gdXBkYXRlcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfb3V0PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9vdXQ8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX291dDwvY29kZT4gdG8gcmVmbGVjdCB0aGUgbnVtYmVyCm9mIGJ5dGVzIG91dHB1dC48L3A+CjxwPllvdSBtYXkgcHJvdmlkZSBhbmQgcmVtb3ZlIGFzIGxpdHRsZSBvciBhcyBtdWNoIGRhdGEgYXMgeW91Cmxpa2Ugb24gZWFjaCBjYWxsIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LiAgSW4gdGhlIGxpbWl0LAppdCBpcyBhY2NlcHRhYmxlIHRvIHN1cHBseSBhbmQgcmVtb3ZlIGRhdGEgb25lIGJ5dGUgYXQgYSB0aW1lLAphbHRob3VnaCB0aGlzIHdvdWxkIGJlIHRlcnJpYmx5IGluZWZmaWNpZW50LiAgWW91IHNob3VsZCBhbHdheXMKZW5zdXJlIHRoYXQgYXQgbGVhc3Qgb25lIGJ5dGUgb2Ygb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZSBhdAplYWNoIGNhbGwuPC9wPgo8cD5BIHNlY29uZCBwdXJwb3NlIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IGlzIHRvIHJlcXVlc3QgYQpjaGFuZ2Ugb2YgbW9kZSBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uPC9wPgo8cD5Db25jZXB0dWFsbHksIGEgY29tcHJlc3NlZCBzdHJlYW0gY2FuIGJlIGluIG9uZSBvZiBmb3VyCnN0YXRlczogSURMRSwgUlVOTklORywgRkxVU0hJTkcgYW5kIEZJTklTSElORy4gIEJlZm9yZQppbml0aWFsaXNhdGlvbgooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+KSBhbmQgYWZ0ZXIKdGVybWluYXRpb24gKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+KSwKYSBzdHJlYW0gaXMgcmVnYXJkZWQgYXMgSURMRS48L3A+CjxwPlVwb24gaW5pdGlhbGlzYXRpb24KKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiksIHRoZSBzdHJlYW0KaXMgcGxhY2VkIGluIHRoZSBSVU5OSU5HIHN0YXRlLiAgU3Vic2VxdWVudCBjYWxscyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiBzaG91bGQgcGFzcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1JVTjwvY29kZT4gYXMgdGhlIHJlcXVlc3RlZCBhY3Rpb247Cm90aGVyIGFjdGlvbnMgYXJlIGlsbGVnYWwgYW5kIHdpbGwgcmVzdWx0IGluCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRVJST1I8L2NvZGU+LjwvcD4KPHA+QXQgc29tZSBwb2ludCwgdGhlIGNhbGxpbmcgcHJvZ3JhbSB3aWxsIGhhdmUgcHJvdmlkZWQgYWxsCnRoZSBpbnB1dCBkYXRhIGl0IHdhbnRzIHRvLiAgSXQgd2lsbCB0aGVuIHdhbnQgdG8gZmluaXNoIHVwIC0tIGluCmVmZmVjdCwgYXNraW5nIHRoZSBsaWJyYXJ5IHRvIHByb2Nlc3MgYW55IGRhdGEgaXQgbWlnaHQgaGF2ZQpidWZmZXJlZCBpbnRlcm5hbGx5LiAgSW4gdGhpcyBzdGF0ZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2lsbCBubyBsb25nZXIKYXR0ZW1wdCB0byByZWFkIGRhdGEgZnJvbQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW48L2NvZGU+LCBidXQgaXQgd2lsbCB3YW50IHRvCndyaXRlIGRhdGEgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4uICBCZWNhdXNlCnRoZSBvdXRwdXQgYnVmZmVyIHN1cHBsaWVkIGJ5IHRoZSB1c2VyIGNhbiBiZSBhcmJpdHJhcmlseSBzbWFsbCwKdGhlIGZpbmlzaGluZy11cCBvcGVyYXRpb24gY2Fubm90IG5lY2Vzc2FyaWx5IGJlIGRvbmUgd2l0aCBhCnNpbmdsZSBjYWxsIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LjwvcD4KPHA+SW5zdGVhZCwgdGhlIGNhbGxpbmcgcHJvZ3JhbSBwYXNzZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9GSU5JU0g8L2NvZGU+IGFzIGFuIGFjdGlvbiB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi4gIFRoaXMgY2hhbmdlcwp0aGUgc3RyZWFtJ3Mgc3RhdGUgdG8gRklOSVNISU5HLiAgQW55IHJlbWFpbmluZyBpbnB1dCAoaWUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pblswIC4uIGF2YWlsX2luLTFdPC9jb2RlPikgaXMKY29tcHJlc3NlZCBhbmQgdHJhbnNmZXJyZWQgdG8gdGhlIG91dHB1dCBidWZmZXIuICBUbyBkbyB0aGlzLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiBtdXN0IGJlIGNhbGxlZApyZXBlYXRlZGx5IHVudGlsIGFsbCB0aGUgb3V0cHV0IGhhcyBiZWVuIGNvbnN1bWVkLiAgQXQgdGhhdApwb2ludCwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gcmV0dXJucwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+LCBhbmQgdGhlIHN0cmVhbSdzCnN0YXRlIGlzIHNldCBiYWNrIHRvIElETEUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+IHNob3VsZCB0aGVuIGJlCmNhbGxlZC48L3A+CjxwPkp1c3QgdG8gbWFrZSBzdXJlIHRoZSBjYWxsaW5nIHByb2dyYW0gZG9lcyBub3QgY2hlYXQsIHRoZQpsaWJyYXJ5IG1ha2VzIGEgbm90ZSBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPgphdCB0aGUgdGltZSBvZiB0aGUgZmlyc3QgY2FsbCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB3aGljaCBoYXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9GSU5JU0g8L2NvZGU+IGFzIGFuIGFjdGlvbiAoaWUsIGF0CnRoZSB0aW1lIHRoZSBwcm9ncmFtIGhhcyBhbm5vdW5jZWQgaXRzIGludGVudGlvbiB0byBub3Qgc3VwcGx5CmFueSBtb3JlIGlucHV0KS4gIEJ5IGNvbXBhcmluZyB0aGlzIHZhbHVlIHdpdGggdGhhdCBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPiBvdmVyIHN1YnNlcXVlbnQgY2FsbHMKdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4sIHRoZSBsaWJyYXJ5CmNhbiBkZXRlY3QgYW55IGF0dGVtcHRzIHRvIHNsaXAgaW4gbW9yZSBkYXRhIHRvIGNvbXByZXNzLiAgQW55CmNhbGxzIGZvciB3aGljaCB0aGlzIGlzIGRldGVjdGVkIHdpbGwgcmV0dXJuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRVJST1I8L2NvZGU+LiAgVGhpcwppbmRpY2F0ZXMgYSBwcm9ncmFtbWluZyBtaXN0YWtlIHdoaWNoIHNob3VsZCBiZSBjb3JyZWN0ZWQuPC9wPgo8cD5JbnN0ZWFkIG9mIGFza2luZyB0byBmaW5pc2gsIHRoZSBjYWxsaW5nIHByb2dyYW0gbWF5IGFzawo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB0byB0YWtlIGFsbCB0aGUKcmVtYWluaW5nIGlucHV0LCBjb21wcmVzcyBpdCBhbmQgdGVybWluYXRlIHRoZSBjdXJyZW50CihCdXJyb3dzLVdoZWVsZXIpIGNvbXByZXNzaW9uIGJsb2NrLiAgVGhpcyBjb3VsZCBiZSB1c2VmdWwgZm9yCmVycm9yIGNvbnRyb2wgcHVycG9zZXMuICBUaGUgbWVjaGFuaXNtIGlzIGFuYWxvZ291cyB0byB0aGF0IGZvcgpmaW5pc2hpbmc6IGNhbGwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4Kd2l0aCBhbiBhY3Rpb24gb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9GTFVTSDwvY29kZT4sCnJlbW92ZSBvdXRwdXQgZGF0YSwgYW5kIHBlcnNpc3Qgd2l0aCB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9GTFVTSDwvY29kZT4gYWN0aW9uIHVudGlsIHRoZSB2YWx1ZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1JVTjwvY29kZT4gaXMgcmV0dXJuZWQuICBBcyB3aXRoCmZpbmlzaGluZywgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4KZGV0ZWN0cyBhbnkgYXR0ZW1wdCB0byBwcm92aWRlIG1vcmUgaW5wdXQgZGF0YSBvbmNlIHRoZSBmbHVzaCBoYXMKYmVndW4uPC9wPgo8cD5PbmNlIHRoZSBmbHVzaCBpcyBjb21wbGV0ZSwgdGhlIHN0cmVhbSByZXR1cm5zIHRvIHRoZQpub3JtYWwgUlVOTklORyBzdGF0ZS48L3A+CjxwPlRoaXMgYWxsIHNvdW5kcyBwcmV0dHkgY29tcGxleCwgYnV0IGlzbid0IHJlYWxseS4gIEhlcmUncyBhCnRhYmxlIHdoaWNoIHNob3dzIHdoaWNoIGFjdGlvbnMgYXJlIGFsbG93YWJsZSBpbiBlYWNoIHN0YXRlLCB3aGF0CmFjdGlvbiB3aWxsIGJlIHRha2VuLCB3aGF0IHRoZSBuZXh0IHN0YXRlIGlzLCBhbmQgd2hhdCB0aGUKbm9uLWVycm9yIHJldHVybiB2YWx1ZXMgYXJlLiAgTm90ZSB0aGF0IHlvdSBjYW4ndCBleHBsaWNpdGx5IGFzawp3aGF0IHN0YXRlIHRoZSBzdHJlYW0gaXMgaW4sIGJ1dCBub3IgZG8geW91IG5lZWQgdG8gLS0gaXQgY2FuIGJlCmluZmVycmVkIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi48L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5JRExFL2FueQogIElsbGVnYWwuICBJRExFIHN0YXRlIG9ubHkgZXhpc3RzIGFmdGVyIEJaMl9iekNvbXByZXNzRW5kIG9yCiAgYmVmb3JlIEJaMl9iekNvbXByZXNzSW5pdC4KICBSZXR1cm4gdmFsdWUgPSBCWl9TRVFVRU5DRV9FUlJPUgoKUlVOTklORy9CWl9SVU4KICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZS4KICBOZXh0IHN0YXRlID0gUlVOTklORwogIFJldHVybiB2YWx1ZSA9IEJaX1JVTl9PSwoKUlVOTklORy9CWl9GTFVTSAogIFJlbWVtYmVyIGN1cnJlbnQgdmFsdWUgb2YgbmV4dF9pbi4gQ29tcHJlc3MgZnJvbSBuZXh0X2luCiAgdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgYnV0IGRvIG5vdCBhY2NlcHQgYW55IG1vcmUgaW5wdXQuCiAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HCiAgUmV0dXJuIHZhbHVlID0gQlpfRkxVU0hfT0sKClJVTk5JTkcvQlpfRklOSVNICiAgUmVtZW1iZXIgY3VycmVudCB2YWx1ZSBvZiBuZXh0X2luLiBDb21wcmVzcyBmcm9tIG5leHRfaW4KICB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLCBidXQgZG8gbm90IGFjY2VwdCBhbnkgbW9yZSBpbnB1dC4KICBOZXh0IHN0YXRlID0gRklOSVNISU5HCiAgUmV0dXJuIHZhbHVlID0gQlpfRklOSVNIX09LCgpGTFVTSElORy9CWl9GTFVTSAogIENvbXByZXNzIGZyb20gbmV4dF9pbiB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLCAKICBidXQgZG8gbm90IGFjY2VwdCBhbnkgbW9yZSBpbnB1dC4KICBJZiBhbGwgdGhlIGV4aXN0aW5nIGlucHV0IGhhcyBiZWVuIHVzZWQgdXAgYW5kIGFsbCBjb21wcmVzc2VkCiAgb3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQKICAgIE5leHQgc3RhdGUgPSBSVU5OSU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9SVU5fT0sKICBlbHNlCiAgICBOZXh0IHN0YXRlID0gRkxVU0hJTkc7IFJldHVybiB2YWx1ZSA9IEJaX0ZMVVNIX09LCgpGTFVTSElORy9vdGhlciAgICAgCiAgSWxsZWdhbC4KICBSZXR1cm4gdmFsdWUgPSBCWl9TRVFVRU5DRV9FUlJPUgoKRklOSVNISU5HL0JaX0ZJTklTSAogIENvbXByZXNzIGZyb20gbmV4dF9pbiB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLAogIGJ1dCB0byBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LiAgCiAgSWYgYWxsIHRoZSBleGlzdGluZyBpbnB1dCBoYXMgYmVlbiB1c2VkIHVwIGFuZCBhbGwgY29tcHJlc3NlZAogIG91dHB1dCBoYXMgYmVlbiByZW1vdmVkCiAgICBOZXh0IHN0YXRlID0gSURMRTsgUmV0dXJuIHZhbHVlID0gQlpfU1RSRUFNX0VORAogIGVsc2UKICAgIE5leHQgc3RhdGUgPSBGSU5JU0hJTkc7IFJldHVybiB2YWx1ZSA9IEJaX0ZJTklTSF9PSwoKRklOSVNISU5HL290aGVyCiAgSWxsZWdhbC4KICBSZXR1cm4gdmFsdWUgPSBCWl9TRVFVRU5DRV9FUlJPUjwvcHJlPgo8cD5UaGF0IHN0aWxsIGxvb2tzIGNvbXBsaWNhdGVkPyAgV2VsbCwgZmFpciBlbm91Z2guICBUaGUKdXN1YWwgc2VxdWVuY2Ugb2YgY2FsbHMgZm9yIGNvbXByZXNzaW5nIGEgbG9hZCBvZiBkYXRhIGlzOjwvcD4KPGRpdiBjbGFzcz0ib3JkZXJlZGxpc3QiPjxvbCB0eXBlPSIxIj4KPGxpPjxwPkdldCBzdGFydGVkIHdpdGgKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uPC9wPjwvbGk+CjxsaT48cD5TaG92ZWwgZGF0YSBpbiBhbmQgc2hsdXJwIG91dCBpdHMgY29tcHJlc3NlZCBmb3JtCiAgdXNpbmcgemVybyBvciBtb3JlIGNhbGxzIG9mCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2l0aCBhY3Rpb24gPQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUlVOPC9jb2RlPi48L3A+PC9saT4KPGxpPjxwPkZpbmlzaCB1cC4gUmVwZWF0ZWRseSBjYWxsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2l0aCBhY3Rpb24gPQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiwgY29weWluZyBvdXQgdGhlCiAgY29tcHJlc3NlZCBvdXRwdXQsIHVudGlsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiBpcwogIHJldHVybmVkLjwvcD48L2xpPgo8bGk+PHA+Q2xvc2UgdXAgYW5kIGdvIGhvbWUuICBDYWxsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT4uPC9wPjwvbGk+Cjwvb2w+PC9kaXY+CjxwPklmIHRoZSBkYXRhIHlvdSB3YW50IHRvIGNvbXByZXNzIGZpdHMgaW50byB5b3VyIGlucHV0CmJ1ZmZlciBhbGwgYXQgb25jZSwgeW91IGNhbiBza2lwIHRoZSBjYWxscyBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzICggLi4uLCBCWl9SVU4gKTwvY29kZT4KYW5kIGp1c3QgZG8gdGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3MgKCAuLi4sIEJaX0ZJTklTSAopPC9jb2RlPiBjYWxscy48L3A+CjxwPkFsbCByZXF1aXJlZCBtZW1vcnkgaXMgYWxsb2NhdGVkIGJ5Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi4gIFRoZQpjb21wcmVzc2lvbiBsaWJyYXJ5IGNhbiBhY2NlcHQgYW55IGRhdGEgYXQgYWxsIChvYnZpb3VzbHkpLiAgU28KeW91IHNob3VsZG4ndCBnZXQgYW55IGVycm9yIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gY2FsbHMuICBJZiB5b3UKZG8sIHRoZXkgd2lsbCBiZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiwgYW5kIGluZGljYXRlCmEgYnVnIGluIHlvdXIgcHJvZ3JhbW1pbmcuPC9wPgo8cD5Ucml2aWFsIG90aGVyIHBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBzdHJtIGlzIE5VTEwsIG9yIHN0cm0tJmd0O3MgaXMgTlVMTDwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6Q29tcHJlc3MtZW5kIj48L2E+My4zLjMuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpDb21wcmVzc0VuZCAoIGJ6X3N0cmVhbSAqc3RybSApOzwvcHJlPgo8cD5SZWxlYXNlcyBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGNvbXByZXNzaW9uCnN0cmVhbS48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IgIGlmIHN0cm0gaXMgTlVMTCBvciBzdHJtLSZndDtzIGlzIE5VTEwKQlpfT0sgICAgICAgICAgIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6RGVjb21wcmVzcy1pbml0Ij48L2E+My4zLjQuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpEZWNvbXByZXNzSW5pdCAoIGJ6X3N0cmVhbSAqc3RybSwgaW50IHZlcmJvc2l0eSwgaW50IHNtYWxsICk7PC9wcmU+CjxwPlByZXBhcmVzIGZvciBkZWNvbXByZXNzaW9uLiAgQXMgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sIGEKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IHJlY29yZCBzaG91bGQgYmUKYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCBiZWZvcmUgdGhlIGNhbGwuICBGaWVsZHMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4gc2hvdWxkIGJlIHNldCBpZiBhIGN1c3RvbQptZW1vcnkgYWxsb2NhdG9yIGlzIHJlcXVpcmVkLCBvciBtYWRlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TlVMTDwvY29kZT4gZm9yIHRoZSBub3JtYWwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tYWxsb2M8L2NvZGU+IC8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVlPC9jb2RlPiByb3V0aW5lcy4gIFVwb24gcmV0dXJuLCB0aGUKaW50ZXJuYWwgc3RhdGUgd2lsbCBoYXZlIGJlZW4gaW5pdGlhbGlzZWQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXQ8L2NvZGU+IHdpbGwgYmUgemVyby48L3A+CjxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXIKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KPHA+SWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zbWFsbDwvY29kZT4gaXMgbm9uemVybywgdGhlCmxpYnJhcnkgd2lsbCB1c2UgYW4gYWx0ZXJuYXRpdmUgZGVjb21wcmVzc2lvbiBhbGdvcml0aG0gd2hpY2gKdXNlcyBsZXNzIG1lbW9yeSBidXQgYXQgdGhlIGNvc3Qgb2YgZGVjb21wcmVzc2luZyBtb3JlIHNsb3dseQoocm91Z2hseSBzcGVha2luZywgaGFsZiB0aGUgc3BlZWQsIGJ1dCB0aGUgbWF4aW11bSBtZW1vcnkKcmVxdWlyZW1lbnQgZHJvcHMgdG8gYXJvdW5kIDIzMDBrKS4gIFNlZSA8YSBocmVmPSIjdXNpbmciPkhvdyB0byB1c2UgYnppcDI8L2E+CmZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1lbW9yeSBtYW5hZ2VtZW50LjwvcD4KPHA+Tm90ZSB0aGF0IHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBkZWNvbXByZXNzIGEKc3RyZWFtIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIHRoZSBzdHJlYW0ncyBoZWFkZXIgaGFzIGJlZW4KcmVhZCwgc28gZXZlbiBpZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPiBzdWNjZWVkcywgYQpzdWJzZXF1ZW50IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4KY291bGQgZmFpbCB3aXRoCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPi48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgKCBzbWFsbCAhPSAwICZhbXA7JmFtcDsgc21hbGwgIT0gMSApCiAgb3IgKHZlcmJvc2l0eSAmbHQ7OyAwIHx8IHZlcmJvc2l0eSAmZ3Q7IDQpCkJaX01FTV9FUlJPUgogIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6RGVjb21wcmVzcwogIGlmIEJaX09LIHdhcyByZXR1cm5lZAogIG5vIHNwZWNpZmljIGFjdGlvbiByZXF1aXJlZCBpbiBjYXNlIG9mIGVycm9yPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpEZWNvbXByZXNzIj48L2E+My4zLjUuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekRlY29tcHJlc3MgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KPHA+UHJvdmlkZXMgbW9yZSBpbnB1dCBhbmQvb3V0IG91dHB1dCBidWZmZXIgc3BhY2UgZm9yIHRoZQpsaWJyYXJ5LiAgVGhlIGNhbGxlciBtYWludGFpbnMgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLCBhbmQgdXNlcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHRvIHRyYW5zZmVyCmRhdGEgYmV0d2VlbiB0aGVtLjwvcD4KPHA+QmVmb3JlIGVhY2ggY2FsbCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW48L2NvZGU+IHNob3VsZCBwb2ludCBhdCB0aGUKY29tcHJlc3NlZCBkYXRhLCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4Kc2hvdWxkIGluZGljYXRlIGhvdyBtYW55IGJ5dGVzIHRoZSBsaWJyYXJ5IG1heSByZWFkLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW48L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgpvZiBieXRlcyBpdCBoYXMgcmVhZC48L3A+CjxwPlNpbWlsYXJseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4gc2hvdWxkCnBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSB1bmNvbXByZXNzZWQgb3V0cHV0IGlzIHRvIGJlCnBsYWNlZCwgd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX291dDwvY29kZT4KaW5kaWNhdGluZyBob3cgbXVjaCBvdXRwdXQgc3BhY2UgaXMgYXZhaWxhYmxlLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB1cGRhdGVzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9vdXQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX291dDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfb3V0PC9jb2RlPiB0byByZWZsZWN0IHRoZSBudW1iZXIKb2YgYnl0ZXMgb3V0cHV0LjwvcD4KPHA+WW91IG1heSBwcm92aWRlIGFuZCByZW1vdmUgYXMgbGl0dGxlIG9yIGFzIG11Y2ggZGF0YSBhcyB5b3UKbGlrZSBvbiBlYWNoIGNhbGwgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPi4gIEluIHRoZSBsaW1pdCwKaXQgaXMgYWNjZXB0YWJsZSB0byBzdXBwbHkgYW5kIHJlbW92ZSBkYXRhIG9uZSBieXRlIGF0IGEgdGltZSwKYWx0aG91Z2ggdGhpcyB3b3VsZCBiZSB0ZXJyaWJseSBpbmVmZmljaWVudC4gIFlvdSBzaG91bGQgYWx3YXlzCmVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBieXRlIG9mIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUgYXQKZWFjaCBjYWxsLjwvcD4KPHA+VXNlIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4gaXMKc2ltcGxlciB0aGFuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LjwvcD4KPHA+WW91IHNob3VsZCBwcm92aWRlIGlucHV0IGFuZCByZW1vdmUgb3V0cHV0IGFzIGRlc2NyaWJlZAphYm92ZSwgYW5kIHJlcGVhdGVkbHkgY2FsbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHVudGlsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gaXMgcmV0dXJuZWQuCkFwcGVhcmFuY2Ugb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPgpkZW5vdGVzIHRoYXQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPgpoYXMgZGV0ZWN0ZWQgdGhlIGxvZ2ljYWwgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiB3aWxsIG5vdApwcm9kdWNlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gdW50aWwgYWxsCm91dHB1dCBkYXRhIGhhcyBiZWVuIHBsYWNlZCBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLCBzbyBvbmNlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gYXBwZWFycywgeW91IGFyZQpndWFyYW50ZWVkIHRvIGhhdmUgYXZhaWxhYmxlIGFsbCB0aGUgZGVjb21wcmVzc2VkIG91dHB1dCwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4gY2FuIHNhZmVseQpiZSBjYWxsZWQuPC9wPgo8cD5JZiBjYXNlIG9mIGFuIGVycm9yIHJldHVybiB2YWx1ZSwgeW91IHNob3VsZCBjYWxsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4gdG8gY2xlYW4gdXAKYW5kIHJlbGVhc2UgbWVtb3J5LjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9QQVJBTV9FUlJPUgogIGlmIHN0cm0gaXMgTlVMTCBvciBzdHJtLSZndDtzIGlzIE5VTEwKICBvciBzdHJtLSZndDthdmFpbF9vdXQgJmx0OyAxCkJaX0RBVEFfRVJST1IKICBpZiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIGlzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIHN0cmVhbQpCWl9EQVRBX0VSUk9SX01BR0lDCiAgaWYgdGhlIGNvbXByZXNzZWQgc3RyZWFtIGRvZXNuJ3QgYmVnaW4gd2l0aCB0aGUgcmlnaHQgbWFnaWMgYnl0ZXMKQlpfTUVNX0VSUk9SCiAgaWYgdGhlcmUgd2Fzbid0IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlCkJaX1NUUkVBTV9FTkQKICBpZiB0aGUgbG9naWNhbCBlbmQgb2YgdGhlIGRhdGEgc3RyZWFtIHdhcyBkZXRlY3RlZCBhbmQgYWxsCiAgb3V0cHV0IGluIGhhcyBiZWVuIGNvbnN1bWVkLCBlZyBzLS0mZ3Q7YXZhaWxfb3V0ICZndDsgMApCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9iekRlY29tcHJlc3MKICBpZiBCWl9PSyB3YXMgcmV0dXJuZWQKQloyX2J6RGVjb21wcmVzc0VuZAogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6RGVjb21wcmVzcy1lbmQiPjwvYT4zLjMuNi6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6RGVjb21wcmVzc0VuZCAoIGJ6X3N0cmVhbSAqc3RybSApOzwvcHJlPgo8cD5SZWxlYXNlcyBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGRlY29tcHJlc3Npb24Kc3RyZWFtLjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9QQVJBTV9FUlJPUgogIGlmIHN0cm0gaXMgTlVMTCBvciBzdHJtLSZndDtzIGlzIE5VTEwKQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIE5vbmUuPC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iaGwtaW50ZXJmYWNlIj48L2E+My40LqBIaWdoLWxldmVsIGludGVyZmFjZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQgZmlsZXMuICBGaXJzdCwgc29tZQpnZW5lcmFsIHBvaW50cy48L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5BbGwgb2YgdGhlIGZ1bmN0aW9ucyB0YWtlIGFuCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5pbnQqPC9jb2RlPiBmaXJzdCBhcmd1bWVudCwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+LiAgQWZ0ZXIgZWFjaCBjYWxsLAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gc2hvdWxkIGJlIGNvbnN1bHRlZAogIGZpcnN0IHRvIGRldGVybWluZSB0aGUgb3V0Y29tZSBvZiB0aGUgY2FsbC4gIElmCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+LCB0aGUgY2FsbCBjb21wbGV0ZWQKICBzdWNjZXNzZnVsbHksIGFuZCBvbmx5IHRoZW4gc2hvdWxkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCiAgZnVuY3Rpb24gKGlmIGFueSkgYmUgY29uc3VsdGVkLiAgSWYKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGlzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9JT19FUlJPUjwvY29kZT4sIHRoZXJlIHdhcyBhbgogIGVycm9yIHJlYWRpbmcvd3JpdGluZyB0aGUgdW5kZXJseWluZyBjb21wcmVzc2VkIGZpbGUsIGFuZCB5b3UKICBzaG91bGQgdGhlbiBjb25zdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+IC8KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnBlcnJvcjwvY29kZT4gdG8gZGV0ZXJtaW5lIHRoZSBjYXVzZQogIG9mIHRoZSBkaWZmaWN1bHR5LiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPgogIG1heSBhbHNvIGJlIHNldCB0byB2YXJpb3VzIG90aGVyIHZhbHVlczsgcHJlY2lzZSBkZXRhaWxzIGFyZQogIGdpdmVuIG9uIGEgcGVyLWZ1bmN0aW9uIGJhc2lzIGJlbG93LjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+SWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpbmRpY2F0ZXMKICBhbiBlcnJvciAoaWUsIGFueXRoaW5nIGV4Y2VwdAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+IGFuZAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4pLCB5b3Ugc2hvdWxkCiAgaW1tZWRpYXRlbHkgY2FsbAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPiAob3IKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlQ2xvc2U8L2NvZGU+LCBkZXBlbmRpbmcgb24KICB3aGV0aGVyIHlvdSBhcmUgYXR0ZW1wdGluZyB0byByZWFkIG9yIHRvIHdyaXRlKSB0byBmcmVlIHVwIGFsbAogIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHN0cmVhbS4gIE9uY2UgYW4gZXJyb3IgaGFzIGJlZW4KICBpbmRpY2F0ZWQsIGJlaGF2aW91ciBvZiBhbGwgY2FsbHMgZXhjZXB0CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+CiAgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4pIGlzCiAgdW5kZWZpbmVkLiAgVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgKDEpCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBzaG91bGQgYmUgY2hlY2tlZAogIGFmdGVyIGVhY2ggY2FsbCwgYW5kICgyKSBpZgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gaW5kaWNhdGVzIGFuIGVycm9yLAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPgogICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlQ2xvc2U8L2NvZGU+KSBzaG91bGQgdGhlbgogIGJlIGNhbGxlZCB0byBjbGVhbiB1cC48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkZJTEUqPC9jb2RlPiBhcmd1bWVudHMKICBwYXNzZWQgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4gLwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiBzaG91bGQgYmUgc2V0CiAgdG8gYmluYXJ5IG1vZGUuICBNb3N0IFVuaXggc3lzdGVtcyB3aWxsIGRvIHRoaXMgYnkgZGVmYXVsdCwgYnV0CiAgb3RoZXIgcGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cyBhbmQgTWFjLCB3aWxsIG5vdC4gIElmIHlvdQogIG9taXQgdGhpcywgeW91IG1heSBlbmNvdW50ZXIgcHJvYmxlbXMgd2hlbiBtb3ZpbmcgY29kZSB0byBuZXcKICBwbGF0Zm9ybXMuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5NZW1vcnkgYWxsb2NhdGlvbiByZXF1ZXN0cyBhcmUgaGFuZGxlZCBieQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFsbG9jPC9jb2RlPiAvCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVlPC9jb2RlPi4gIEF0IHByZXNlbnQgdGhlcmUgaXMgbm8KICBmYWNpbGl0eSBmb3IgdXNlci1kZWZpbmVkIG1lbW9yeSBhbGxvY2F0b3JzIGluIHRoZSBmaWxlIEkvTwogIGZ1bmN0aW9ucyAoY291bGQgZWFzaWx5IGJlIGFkZGVkLCB0aG91Z2gpLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpyZWFkb3BlbiI+PC9hPjMuNC4xLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHZvaWQgQlpGSUxFOwoKQlpGSUxFICpCWjJfYnpSZWFkT3BlbiggaW50ICpiemVycm9yLCBGSUxFICpmLCAKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcmJvc2l0eSwgaW50IHNtYWxsLAogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1bnVzZWQsIGludCBuVW51c2VkICk7PC9wcmU+CjxwPlByZXBhcmUgdG8gcmVhZCBjb21wcmVzc2VkIGRhdGEgZnJvbSBmaWxlIGhhbmRsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmY8L2NvZGU+Lgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmY8L2NvZGU+IHNob3VsZCByZWZlciB0byBhIGZpbGUgd2hpY2gKaGFzIGJlZW4gb3BlbmVkIGZvciByZWFkaW5nLCBhbmQgZm9yIHdoaWNoIHRoZSBlcnJvciBpbmRpY2F0b3IKKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmVycm9yKGYpPC9jb2RlPilpcyBub3Qgc2V0LiAgSWYKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zbWFsbDwvY29kZT4gaXMgMSwgdGhlIGxpYnJhcnkgd2lsbCB0cnkKdG8gZGVjb21wcmVzcyB1c2luZyBsZXNzIG1lbW9yeSwgYXQgdGhlIGV4cGVuc2Ugb2Ygc3BlZWQuPC9wPgo8cD5Gb3IgcmVhc29ucyBleHBsYWluZWQgYmVsb3csCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gd2lsbCBkZWNvbXByZXNzIHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5VbnVzZWQ8L2NvZGU+IGJ5dGVzIHN0YXJ0aW5nIGF0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dW51c2VkPC9jb2RlPiwgYmVmb3JlIHN0YXJ0aW5nIHRvIHJlYWQKZnJvbSB0aGUgZmlsZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmY8L2NvZGU+LiAgQXQgbW9zdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01BWF9VTlVTRUQ8L2NvZGU+IGJ5dGVzIG1heSBiZQpzdXBwbGllZCBsaWtlIHRoaXMuICBJZiB0aGlzIGZhY2lsaXR5IGlzIG5vdCByZXF1aXJlZCwgeW91IHNob3VsZApwYXNzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TlVMTDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+MDwvY29kZT4gZm9yCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dW51c2VkPC9jb2RlPiBhbmQKbjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+VW51c2VkPC9jb2RlPiByZXNwZWN0aXZlbHkuPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNtYWxsPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgo8cD5UaGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgdG8gZGVjb21wcmVzcyBhIGZpbGUgY2Fubm90IGJlCmRldGVybWluZWQgdW50aWwgdGhlIGZpbGUncyBoZWFkZXIgaGFzIGJlZW4gcmVhZC4gIFNvIGl0IGlzCnBvc3NpYmxlIHRoYXQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4KcmV0dXJucyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPiBidXQgYSBzdWJzZXF1ZW50CmNhbGwgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aWxsIHJldHVybgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4uPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX0NPTkZJR19FUlJPUgogIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIG1pcy1jb21waWxlZApCWl9QQVJBTV9FUlJPUgogIGlmIGYgaXMgTlVMTAogIG9yIHNtYWxsIGlzIG5laXRoZXIgMCBub3IgMQogIG9yICggdW51c2VkID09IE5VTEwgJmFtcDsmYW1wOyBuVW51c2VkICE9IDAgKQogIG9yICggdW51c2VkICE9IE5VTEwgJmFtcDsmYW1wOyAhKDAgJmx0Oz0gblVudXNlZCAmbHQ7PSBCWl9NQVhfVU5VU0VEKSApCkJaX0lPX0VSUk9SCiAgaWYgZmVycm9yKGYpIGlzIG5vbnplcm8KQlpfTUVNX0VSUk9SCiAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUKQlpfT0sKICBvdGhlcndpc2UuPC9wcmU+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+UG9pbnRlciB0byBhbiBhYnN0cmFjdCBCWkZJTEUKICBpZiBiemVycm9yIGlzIEJaX09LCk5VTEwKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpSZWFkCiAgaWYgYnplcnJvciBpcyBCWl9PSwpCWjJfYnpDbG9zZQogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6cmVhZCI+PC9hPjMuNC4yLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpSZWFkICggaW50ICpiemVycm9yLCBCWkZJTEUgKmIsIHZvaWQgKmJ1ZiwgaW50IGxlbiApOzwvcHJlPgo8cD5SZWFkcyB1cCB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxlbjwvY29kZT4KKHVuY29tcHJlc3NlZCkgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YjwvY29kZT4gaW50byB0aGUgYnVmZmVyCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVmPC9jb2RlPi4gIElmIHRoZSByZWFkIHdhcwpzdWNjZXNzZnVsLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGlzIHNldCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPiBhbmQgdGhlIG51bWJlciBvZiBieXRlcwpyZWFkIGlzIHJldHVybmVkLiAgSWYgdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gd2lsbCBiZSBzZXQgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiwgYW5kIHRoZSBudW1iZXIgb2YKYnl0ZXMgcmVhZCBpcyByZXR1cm5lZC4gIEFsbCBvdGhlcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHZhbHVlcyBkZW5vdGUgYW4KZXJyb3IuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IHdpbGwgc3VwcGx5Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGVuPC9jb2RlPiBieXRlcywgdW5sZXNzIHRoZSBsb2dpY2FsCnN0cmVhbSBlbmQgaXMgZGV0ZWN0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLiAgQmVjYXVzZSBvZiB0aGlzLCBpdAppcyBwb3NzaWJsZSB0byBkZXRlY3QgdGhlIHN0cmVhbSBlbmQgYnkgb2JzZXJ2aW5nIHdoZW4gdGhlIG51bWJlcgpvZiBieXRlcyByZXR1cm5lZCBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciByZXF1ZXN0ZWQuCk5ldmVydGhlbGVzcywgdGhpcyBpcyByZWdhcmRlZCBhcyBpbmFkdmlzYWJsZTsgeW91IHNob3VsZCBpbnN0ZWFkCmNoZWNrIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gYWZ0ZXIgZXZlcnkgY2FsbAphbmQgd2F0Y2ggb3V0IGZvcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+LjwvcD4KPHA+SW50ZXJuYWxseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPgpjb3BpZXMgZGF0YSBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgaW4gY2h1bmtzIG9mIHNpemUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBieXRlcyBiZWZvcmUKZGVjb21wcmVzc2luZyBpdC4gIElmIHRoZSBmaWxlIGNvbnRhaW5zIG1vcmUgYnl0ZXMgdGhhbiBzdHJpY3RseQpuZWVkZWQgdG8gcmVhY2ggdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aWxsIGFsbW9zdCBjZXJ0YWlubHkKcmVhZCBzb21lIG9mIHRoZSB0cmFpbGluZyBkYXRhIGJlZm9yZSBzaWduYWxsaW5nCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRU5EPC9jb2RlPi4gIFRvIGNvbGxlY3QgdGhlCnJlYWQgYnV0IHVudXNlZCBkYXRhIG9uY2UKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FTkQ8L2NvZGU+IGhhcyBhcHBlYXJlZCwKY2FsbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+CmltbWVkaWF0ZWx5IGJlZm9yZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4uPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SCiAgaWYgYiBpcyBOVUxMIG9yIGJ1ZiBpcyBOVUxMIG9yIGxlbiAmbHQ7IDAKQlpfU0VRVUVOQ0VfRVJST1IKICBpZiBiIHdhcyBvcGVuZWQgd2l0aCBCWjJfYnpXcml0ZU9wZW4KQlpfSU9fRVJST1IKICBpZiB0aGVyZSBpcyBhbiBlcnJvciByZWFkaW5nIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZQpCWl9VTkVYUEVDVEVEX0VPRgogIGlmIHRoZSBjb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIAogIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkCkJaX0RBVEFfRVJST1IKICBpZiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIHdhcyBkZXRlY3RlZCBpbiB0aGUgY29tcHJlc3NlZCBzdHJlYW0KQlpfREFUQV9FUlJPUl9NQUdJQwogIGlmIHRoZSBzdHJlYW0gZG9lcyBub3QgYmVnaW4gd2l0aCB0aGUgcmVxdWlzaXRlIGhlYWRlciBieXRlcyAKICAoaWUsIGlzIG5vdCBhIGJ6aXAyIGRhdGEgZmlsZSkuICBUaGlzIGlzIHJlYWxseSAKICBhIHNwZWNpYWwgY2FzZSBvZiBCWl9EQVRBX0VSUk9SLgpCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IHdhcyBhdmFpbGFibGUKQlpfU1RSRUFNX0VORAogIGlmIHRoZSBsb2dpY2FsIGVuZCBvZiBzdHJlYW0gd2FzIGRldGVjdGVkLgpCWl9PSwogIG90aGVyd2lzZS48L3ByZT4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5udW1iZXIgb2YgYnl0ZXMgcmVhZAogIGlmIGJ6ZXJyb3IgaXMgQlpfT0sgb3IgQlpfU1RSRUFNX0VORAp1bmRlZmluZWQKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb2xsZWN0IGRhdGEgZnJvbSBidWYsIHRoZW4gQloyX2J6UmVhZCBvciBCWjJfYnpSZWFkQ2xvc2UKICBpZiBiemVycm9yIGlzIEJaX09LCmNvbGxlY3QgZGF0YSBmcm9tIGJ1ZiwgdGhlbiBCWjJfYnpSZWFkQ2xvc2Ugb3IgQloyX2J6UmVhZEdldFVudXNlZAogIGlmIGJ6ZXJyb3IgaXMgQlpfU0VRVUVOQ0VfRU5ECkJaMl9ielJlYWRDbG9zZQogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6cmVhZGdldHVudXNlZCI+PC9hPjMuNC4zLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6UmVhZEdldFVudXNlZCggaW50KiBiemVycm9yLCBCWkZJTEUgKmIsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiB1bnVzZWQsIGludCogblVudXNlZCApOzwvcHJlPgo8cD5SZXR1cm5zIGRhdGEgd2hpY2ggd2FzIHJlYWQgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIGJ1dAp3YXMgbm90IG5lZWRlZCB0byBnZXQgdG8gdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbS4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qdW51c2VkPC9jb2RlPiBpcyBzZXQgdG8gdGhlIGFkZHJlc3Mgb2YKdGhlIGRhdGEsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipuVW51c2VkPC9jb2RlPiB0byB0aGUKbnVtYmVyIG9mIGJ5dGVzLiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qblVudXNlZDwvY29kZT4gd2lsbApiZSBzZXQgdG8gYSB2YWx1ZSBiZXR3ZWVuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+MDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUFYX1VOVVNFRDwvY29kZT4gaW5jbHVzaXZlLjwvcD4KPHA+VGhpcyBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgb25jZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IGhhcyBzaWduYWxsZWQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiBidXQgYmVmb3JlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPi48L3A+CjxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBiIGlzIE5VTEwKICBvciB1bnVzZWQgaXMgTlVMTCBvciBuVW51c2VkIGlzIE5VTEwKQlpfU0VRVUVOQ0VfRVJST1IKICBpZiBCWl9TVFJFQU1fRU5EIGhhcyBub3QgYmVlbiBzaWduYWxsZWQKICBvciBpZiBiIHdhcyBvcGVuZWQgd2l0aCBCWjJfYnpXcml0ZU9wZW4KQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpSZWFkQ2xvc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJienJlYWRjbG9zZSI+PC9hPjMuNC40LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dm9pZCBCWjJfYnpSZWFkQ2xvc2UgKCBpbnQgKmJ6ZXJyb3IsIEJaRklMRSAqYiApOzwvcHJlPgo8cD5SZWxlYXNlcyBhbGwgbWVtb3J5IHBlcnRhaW5pbmcgdG8gdGhlIGNvbXByZXNzZWQgZmlsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmI8L2NvZGU+Lgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4gZG9lcyBub3QgY2FsbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4gb24gdGhlIHVuZGVybHlpbmcgZmlsZQpoYW5kbGUsIHNvIHlvdSBzaG91bGQgZG8gdGhhdCB5b3Vyc2VsZiBpZiBhcHByb3ByaWF0ZS4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+IHNob3VsZCBiZSBjYWxsZWQKdG8gY2xlYW4gdXAgYWZ0ZXIgYWxsIGVycm9yIHNpdHVhdGlvbnMuPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1NFUVVFTkNFX0VSUk9SCiAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6T3BlbldyaXRlCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+bm9uZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6d3JpdGVvcGVuIj48L2E+My40LjUuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWkZJTEUgKkJaMl9ieldyaXRlT3BlbiggaW50ICpiemVycm9yLCBGSUxFICpmLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1NpemUxMDBrLCBpbnQgdmVyYm9zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdvcmtGYWN0b3IgKTs8L3ByZT4KPHA+UHJlcGFyZSB0byB3cml0ZSBjb21wcmVzc2VkIGRhdGEgdG8gZmlsZSBoYW5kbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mPC9jb2RlPiBzaG91bGQgcmVmZXIgdG8gYSBmaWxlIHdoaWNoCmhhcyBiZWVuIG9wZW5lZCBmb3Igd3JpdGluZywgYW5kIGZvciB3aGljaCB0aGUgZXJyb3IgaW5kaWNhdG9yCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZlcnJvcihmKTwvY29kZT4paXMgbm90IHNldC48L3A+CjxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YmxvY2tTaXplMTAwazwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyYm9zaXR5PC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPiwgc2VlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi48L3A+CjxwPkFsbCByZXF1aXJlZCBtZW1vcnkgaXMgYWxsb2NhdGVkIGF0IHRoaXMgc3RhZ2UsIHNvIGlmIHRoZQpjYWxsIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPiBjYW5ub3QgYmUgc2lnbmFsbGVkCmJ5IGEgc3Vic2VxdWVudCBjYWxsIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+LjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKQlpfUEFSQU1fRVJST1IKICBpZiBmIGlzIE5VTEwKICBvciBibG9ja1NpemUxMDBrICZsdDsgMSBvciBibG9ja1NpemUxMDBrICZndDsgOQpCWl9JT19FUlJPUgogIGlmIGZlcnJvcihmKSBpcyBub256ZXJvCkJaX01FTV9FUlJPUgogIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+UG9pbnRlciB0byBhbiBhYnN0cmFjdCBCWkZJTEUKICBpZiBiemVycm9yIGlzIEJaX09LCk5VTEwKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpXcml0ZQogIGlmIGJ6ZXJyb3IgaXMgQlpfT0sKICAoeW91IGNvdWxkIGdvIGRpcmVjdGx5IHRvIEJaMl9ieldyaXRlQ2xvc2UsIGJ1dCB0aGlzIHdvdWxkIGJlIHByZXR0eSBwb2ludGxlc3MpCkJaMl9ieldyaXRlQ2xvc2UKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiendyaXRlIj48L2E+My40LjYuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6V3JpdGUgKCBpbnQgKmJ6ZXJyb3IsIEJaRklMRSAqYiwgdm9pZCAqYnVmLCBpbnQgbGVuICk7PC9wcmU+CjxwPkFic29yYnMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5sZW48L2NvZGU+IGJ5dGVzIGZyb20gdGhlCmJ1ZmZlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1ZjwvY29kZT4sIGV2ZW50dWFsbHkgdG8gYmUKY29tcHJlc3NlZCBhbmQgd3JpdHRlbiB0byB0aGUgZmlsZS48L3A+CjxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBiIGlzIE5VTEwgb3IgYnVmIGlzIE5VTEwgb3IgbGVuICZsdDsgMApCWl9TRVFVRU5DRV9FUlJPUgogIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ielJlYWRPcGVuCkJaX0lPX0VSUk9SCiAgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd3JpdGluZyB0aGUgY29tcHJlc3NlZCBmaWxlLgpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6d3JpdGVjbG9zZSI+PC9hPjMuNC43LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlQ2xvc2U8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6V3JpdGVDbG9zZSggaW50ICpiemVycm9yLCBCWkZJTEUqIGYsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IGFiYW5kb24sCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfaW4sCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfb3V0ICk7Cgp2b2lkIEJaMl9ieldyaXRlQ2xvc2U2NCggaW50ICpiemVycm9yLCBCWkZJTEUqIGYsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWJhbmRvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luX2xvMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19pbl9oaTMyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfb3V0X2xvMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXRfaGkzMiApOzwvcHJlPgo8cD5Db21wcmVzc2VzIGFuZCBmbHVzaGVzIHRvIHRoZSBjb21wcmVzc2VkIGZpbGUgYWxsIGRhdGEgc28KZmFyIHN1cHBsaWVkIGJ5IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+LgpUaGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIG1hcmtlcnMgYXJlIGFsc28gd3JpdHRlbiwgc28gc3Vic2VxdWVudApjYWxscyB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPiBhcmUKaWxsZWdhbC4gIEFsbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21wcmVzc2VkIGZpbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPiBpcyByZWxlYXNlZC4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZmx1c2g8L2NvZGU+IGlzIGNhbGxlZCBvbiB0aGUKY29tcHJlc3NlZCBmaWxlLCBidXQgaXQgaXMgbm90Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmNsb3NlPC9jb2RlPidkLjwvcD4KPHA+SWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPiBpcwpjYWxsZWQgdG8gY2xlYW4gdXAgYWZ0ZXIgYW4gZXJyb3IsIHRoZSBvbmx5IGFjdGlvbiBpcyB0byByZWxlYXNlCnRoZSBtZW1vcnkuICBUaGUgbGlicmFyeSByZWNvcmRzIHRoZSBlcnJvciBjb2RlcyBpc3N1ZWQgYnkKcHJldmlvdXMgY2FsbHMsIHNvIHRoaXMgc2l0dWF0aW9uIHdpbGwgYmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseS4KVGhlcmUgaXMgbm8gYXR0ZW1wdCB0byBjb21wbGV0ZSB0aGUgY29tcHJlc3Npb24gb3BlcmF0aW9uLCBub3IgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZmx1c2g8L2NvZGU+IHRoZSBjb21wcmVzc2VkIGZpbGUuICBZb3UKY2FuIGZvcmNlIHRoaXMgYmVoYXZpb3VyIHRvIGhhcHBlbiBldmVuIGluIHRoZSBjYXNlIG9mIG5vIGVycm9yLApieSBwYXNzaW5nIGEgbm9uemVybyB2YWx1ZSB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmFiYW5kb248L2NvZGU+LjwvcD4KPHA+SWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uYnl0ZXNfaW48L2NvZGU+IGlzIG5vbi1udWxsLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipuYnl0ZXNfaW48L2NvZGU+IHdpbGwgYmUgc2V0IHRvIGJlIHRoZQp0b3RhbCB2b2x1bWUgb2YgdW5jb21wcmVzc2VkIGRhdGEgaGFuZGxlZC4gIFNpbWlsYXJseSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uYnl0ZXNfb3V0PC9jb2RlPiB3aWxsIGJlIHNldCB0byB0aGUKdG90YWwgdm9sdW1lIG9mIGNvbXByZXNzZWQgZGF0YSB3cml0dGVuLiAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aApvbGRlciB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPiBvbmx5IHlpZWxkcyB0aGUKbG93ZXIgMzIgYml0cyBvZiB0aGVzZSBjb3VudHMuICBVc2UKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlNjQ8L2NvZGU+IGlmIHlvdSB3YW50CnRoZSBmdWxsIDY0IGJpdCBjb3VudHMuICBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdGhlcndpc2UKYWJzb2x1dGVseSBpZGVudGljYWwuPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1NFUVVFTkNFX0VSUk9SCiAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6UmVhZE9wZW4KQlpfSU9fRVJST1IKICBpZiB0aGVyZSBpcyBhbiBlcnJvciB3cml0aW5nIHRoZSBjb21wcmVzc2VkIGZpbGUKQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJlbWJlZCI+PC9hPjMuNC44LqBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoZSBoaWdoLWxldmVsIGxpYnJhcnkgZmFjaWxpdGF0ZXMgdXNlIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRhdGEgc3RyZWFtcyB3aGljaCBmb3JtCnNvbWUgcGFydCBvZiBhIHN1cnJvdW5kaW5nLCBsYXJnZXIgZGF0YSBzdHJlYW0uPC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+Rm9yIHdyaXRpbmcsIHRoZSBsaWJyYXJ5IHRha2VzIGFuIG9wZW4gZmlsZSBoYW5kbGUsCiAgd3JpdGVzIGNvbXByZXNzZWQgZGF0YSB0byBpdCwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZmbHVzaDwvY29kZT5lcyBpdCBidXQgZG9lcyBub3QKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4gaXQuICBUaGUgY2FsbGluZwogIGFwcGxpY2F0aW9uIGNhbiB3cml0ZSBpdHMgb3duIGRhdGEgYmVmb3JlIGFuZCBhZnRlciB0aGUKICBjb21wcmVzc2VkIGRhdGEgc3RyZWFtLCB1c2luZyB0aGF0IHNhbWUgZmlsZSBoYW5kbGUuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5SZWFkaW5nIGlzIG1vcmUgY29tcGxleCwgYW5kIHRoZSBmYWNpbGl0aWVzIGFyZSBub3QgYXMKICBnZW5lcmFsIGFzIHRoZXkgY291bGQgYmUgc2luY2UgZ2VuZXJhbGl0eSBpcyBoYXJkIHRvIHJlY29uY2lsZQogIHdpdGggZWZmaWNpZW5jeS4gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4KICByZWFkcyBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgaW4gYmxvY2tzIG9mIHNpemUKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01BWF9VTlVTRUQ8L2NvZGU+IGJ5dGVzLCBhbmQgaW4KICBkb2luZyBzbyBwcm9iYWJseSB3aWxsIG92ZXJzaG9vdCB0aGUgbG9naWNhbCBlbmQgb2YgY29tcHJlc3NlZAogIHN0cmVhbS4gIFRvIHJlY292ZXIgdGhpcyBkYXRhIG9uY2UgZGVjb21wcmVzc2lvbiBoYXMgZW5kZWQsCiAgY2FsbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+IGFmdGVyCiAgdGhlIGxhc3QgY2FsbCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+CiAgKHRoZSBvbmUgcmV0dXJuaW5nCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPikgYnV0IGJlZm9yZQogIGNhbGxpbmcKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4uPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPlRoaXMgbWVjaGFuaXNtIG1ha2VzIGl0IGVhc3kgdG8gZGVjb21wcmVzcyBtdWx0aXBsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBzdHJlYW1zIHBsYWNlZCBlbmQtdG8tZW5kLgpBcyB0aGUgZW5kIG9mIG9uZSBzdHJlYW0sIHdoZW4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiByZXR1cm5zCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4sIGNhbGwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPiB0byBjb2xsZWN0CnRoZSB1bnVzZWQgZGF0YSAoY29weSBpdCBpbnRvIHlvdXIgb3duIGJ1ZmZlciBzb21ld2hlcmUpLiAgVGhhdApkYXRhIGZvcm1zIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBjb21wcmVzc2VkIHN0cmVhbS4gIFRvIHN0YXJ0CnVuY29tcHJlc3NpbmcgdGhhdCBuZXh0IHN0cmVhbSwgY2FsbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPiBhZ2FpbiwgZmVlZGluZyBpbgp0aGUgdW51c2VkIGRhdGEgdmlhIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnVudXNlZDwvY29kZT4gLwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5VbnVzZWQ8L2NvZGU+IHBhcmFtZXRlcnMuICBLZWVwIGRvaW5nCnRoaXMgdW50aWwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiByZXR1cm4KY29pbmNpZGVzIHdpdGggdGhlIHBoeXNpY2FsIGVuZCBvZiBmaWxlCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZlb2YoZik8L2NvZGU+KS4gIEluIHRoaXMgc2l0dWF0aW9uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT4gd2lsbCBvZgpjb3Vyc2UgcmV0dXJuIG5vIGRhdGEuPC9wPgo8cD5UaGlzIHNob3VsZCBnaXZlIHNvbWUgZmVlbCBmb3IgaG93IHRoZSBoaWdoLWxldmVsIGludGVyZmFjZQpjYW4gYmUgdXNlZC4gIElmIHlvdSByZXF1aXJlIGV4dHJhIGZsZXhpYmlsaXR5LCB5b3UnbGwgaGF2ZSB0bwpiaXRlIHRoZSBidWxsZXQgYW5kIGdldCB0byBncmlwcyB3aXRoIHRoZSBsb3ctbGV2ZWwKaW50ZXJmYWNlLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJzdGQtcmR3ciI+PC9hPjMuNC45LqBTdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SGVyZSdzIGhvdyB5b3UnZCB3cml0ZSBkYXRhIHRvIGEgY29tcHJlc3NlZCBmaWxlOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkZJTEUqICAgZjsKQlpGSUxFKiBiOwppbnQgICAgIG5CdWY7CmNoYXIgICAgYnVmWyAvKiB3aGF0ZXZlciBzaXplIHlvdSBsaWtlICovIF07CmludCAgICAgYnplcnJvcjsKaW50ICAgICBuV3JpdHRlbjsKCmYgPSBmb3BlbiAoICJteWZpbGUuYnoyIiwgInciICk7CmlmICggIWYgKSB7CiAvKiBoYW5kbGUgZXJyb3IgKi8KfQpiID0gQloyX2J6V3JpdGVPcGVuKCAmYW1wO2J6ZXJyb3IsIGYsIDkgKTsKaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKIEJaMl9ieldyaXRlQ2xvc2UgKCBiICk7CiAvKiBoYW5kbGUgZXJyb3IgKi8KfQoKd2hpbGUgKCAvKiBjb25kaXRpb24gKi8gKSB7CiAvKiBnZXQgZGF0YSB0byB3cml0ZSBpbnRvIGJ1ZiwgYW5kIHNldCBuQnVmIGFwcHJvcHJpYXRlbHkgKi8KIG5Xcml0dGVuID0gQloyX2J6V3JpdGUgKCAmYW1wO2J6ZXJyb3IsIGIsIGJ1ZiwgbkJ1ZiApOwogaWYgKGJ6ZXJyb3IgPT0gQlpfSU9fRVJST1IpIHsgCiAgIEJaMl9ieldyaXRlQ2xvc2UgKCAmYW1wO2J6ZXJyb3IsIGIgKTsKICAgLyogaGFuZGxlIGVycm9yICovCiB9Cn0KCkJaMl9ieldyaXRlQ2xvc2UoICZhbXA7YnplcnJvciwgYiApOwppZiAoYnplcnJvciA9PSBCWl9JT19FUlJPUikgewogLyogaGFuZGxlIGVycm9yICovCn08L3ByZT4KPHA+QW5kIHRvIHJlYWQgZnJvbSBhIGNvbXByZXNzZWQgZmlsZTo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5GSUxFKiAgIGY7CkJaRklMRSogYjsKaW50ICAgICBuQnVmOwpjaGFyICAgIGJ1ZlsgLyogd2hhdGV2ZXIgc2l6ZSB5b3UgbGlrZSAqLyBdOwppbnQgICAgIGJ6ZXJyb3I7CmludCAgICAgbldyaXR0ZW47CgpmID0gZm9wZW4gKCAibXlmaWxlLmJ6MiIsICJyIiApOwppZiAoICFmICkgewogIC8qIGhhbmRsZSBlcnJvciAqLwp9CmIgPSBCWjJfYnpSZWFkT3BlbiAoICZhbXA7YnplcnJvciwgZiwgMCwgTlVMTCwgMCApOwppZiAoIGJ6ZXJyb3IgIT0gQlpfT0sgKSB7CiAgQloyX2J6UmVhZENsb3NlICggJmFtcDtiemVycm9yLCBiICk7CiAgLyogaGFuZGxlIGVycm9yICovCn0KCmJ6ZXJyb3IgPSBCWl9PSzsKd2hpbGUgKCBiemVycm9yID09IEJaX09LICZhbXA7JmFtcDsgLyogYXJiaXRyYXJ5IG90aGVyIGNvbmRpdGlvbnMgKi8pIHsKICBuQnVmID0gQloyX2J6UmVhZCAoICZhbXA7YnplcnJvciwgYiwgYnVmLCAvKiBzaXplIG9mIGJ1ZiAqLyApOwogIGlmICggYnplcnJvciA9PSBCWl9PSyApIHsKICAgIC8qIGRvIHNvbWV0aGluZyB3aXRoIGJ1ZlswIC4uIG5CdWYtMV0gKi8KICB9Cn0KaWYgKCBiemVycm9yICE9IEJaX1NUUkVBTV9FTkQgKSB7CiAgIEJaMl9ielJlYWRDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwogICAvKiBoYW5kbGUgZXJyb3IgKi8KfSBlbHNlIHsKICAgQloyX2J6UmVhZENsb3NlICggJmFtcDtiemVycm9yLCBiICk7Cn08L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJ1dGlsLWZucyI+PC9hPjMuNS6gVXRpbGl0eSBmdW5jdGlvbnM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpidWZmdG9idWZmY29tcHJlc3MiPjwvYT4zLjUuMS6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3MoIGNoYXIqICAgICAgICAgZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBkZXN0TGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICAgIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICBzb3VyY2VMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgYmxvY2tTaXplMTAwaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB2ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgd29ya0ZhY3RvciApOzwvcHJlPgo8cD5BdHRlbXB0cyB0byBjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZVswCi4uIHNvdXJjZUxlbi0xXTwvY29kZT4gaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlc3RbMCAuLiAqZGVzdExlbi0xXTwvY29kZT4uICBJZiB0aGUKZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmRlc3RMZW48L2NvZGU+IGlzIHNldCB0byB0aGUgc2l6ZSBvZgp0aGUgY29tcHJlc3NlZCBkYXRhLCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT4KaXMgcmV0dXJuZWQuICBJZiB0aGUgY29tcHJlc3NlZCBkYXRhIHdvbid0IGZpdCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qZGVzdExlbjwvY29kZT4gaXMgdW5jaGFuZ2VkLCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PVVRCVUZGX0ZVTEw8L2NvZGU+IGlzCnJldHVybmVkLjwvcD4KPHA+Q29tcHJlc3Npb24gaW4gdGhpcyBtYW5uZXIgaXMgYSBvbmUtc2hvdCBldmVudCwgZG9uZSB3aXRoIGEKc2luZ2xlIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4gIFRoZSByZXN1bHRpbmcgY29tcHJlc3NlZCBkYXRhIGlzIGEKY29tcGxldGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGRhdGEKc3RyZWFtLiAgVGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciBtYWtpbmcgYWRkaXRpb25hbCBjYWxscyB0bwpwcm92aWRlIGV4dHJhIGlucHV0IGRhdGEuICBJZiB5b3Ugd2FudCB0aGF0IGtpbmQgb2YgbWVjaGFuaXNtLAp1c2UgdGhlIGxvdy1sZXZlbCBpbnRlcmZhY2UuPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2NrU2l6ZTEwMGs8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+d29ya0ZhY3RvcjwvY29kZT4sIHNlZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgo8cD5UbyBndWFyYW50ZWUgdGhhdCB0aGUgY29tcHJlc3NlZCBkYXRhIHdpbGwgZml0IGluIGl0cwpidWZmZXIsIGFsbG9jYXRlIGFuIG91dHB1dCBidWZmZXIgb2Ygc2l6ZSAxJSBsYXJnZXIgdGhhbiB0aGUKdW5jb21wcmVzc2VkIGRhdGEsIHBsdXMgc2l4IGh1bmRyZWQgZXh0cmEgYnl0ZXMuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPgp3aWxsIG5vdCB3cml0ZSBkYXRhIGF0IG9yIGJleW9uZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlc3RbKmRlc3RMZW5dPC9jb2RlPiwgZXZlbiBpbiBjYXNlIG9mCmJ1ZmZlciBvdmVyZmxvdy48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgZGVzdCBpcyBOVUxMIG9yIGRlc3RMZW4gaXMgTlVMTAogIG9yIGJsb2NrU2l6ZTEwMGsgJmx0OyAxIG9yIGJsb2NrU2l6ZTEwMGsgJmd0OyA5CiAgb3IgdmVyYm9zaXR5ICZsdDsgMCBvciB2ZXJib3NpdHkgJmd0OyA0CiAgb3Igd29ya0ZhY3RvciAmbHQ7IDAgb3Igd29ya0ZhY3RvciAmZ3Q7IDI1MApCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZSAKQlpfT1VUQlVGRl9GVUxMCiAgaWYgdGhlIHNpemUgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBleGNlZWRzICpkZXN0TGVuCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpidWZmdG9idWZmZGVjb21wcmVzcyI+PC9hPjMuNS4yLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3MoIGNoYXIqICAgICAgICAgZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGRlc3RMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICBzb3VyY2VMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICBzbWFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHZlcmJvc2l0eSApOzwvcHJlPgo8cD5BdHRlbXB0cyB0byBkZWNvbXByZXNzIHRoZSBkYXRhIGluIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c291cmNlWzAKLi4gc291cmNlTGVuLTFdPC9jb2RlPiBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFswIC4uICpkZXN0TGVuLTFdPC9jb2RlPi4gIElmIHRoZQpkZXN0aW5hdGlvbiBidWZmZXIgaXMgYmlnIGVub3VnaCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qZGVzdExlbjwvY29kZT4gaXMgc2V0IHRvIHRoZSBzaXplIG9mCnRoZSB1bmNvbXByZXNzZWQgZGF0YSwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+CmlzIHJldHVybmVkLiAgSWYgdGhlIGNvbXByZXNzZWQgZGF0YSB3b24ndCBmaXQsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmRlc3RMZW48L2NvZGU+IGlzIHVuY2hhbmdlZCwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT1VUQlVGRl9GVUxMPC9jb2RlPiBpcwpyZXR1cm5lZC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c291cmNlPC9jb2RlPiBpcyBhc3N1bWVkIHRvIGhvbGQKYSBjb21wbGV0ZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQgZGF0YQpzdHJlYW0uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+IHRyaWVzCnRvIGRlY29tcHJlc3MgdGhlIGVudGlyZXR5IG9mIHRoZSBzdHJlYW0gaW50byB0aGUgb3V0cHV0CmJ1ZmZlci48L3A+CjxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4sIHNlZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPi48L3A+CjxwPkJlY2F1c2UgdGhlIGNvbXByZXNzaW9uIHJhdGlvIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgY2Fubm90CmJlIGtub3duIGluIGFkdmFuY2UsIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGd1YXJhbnRlZSB0aGF0IHRoZQpvdXRwdXQgYnVmZmVyIHdpbGwgYmUgYmlnIGVub3VnaC4gIFlvdSBtYXkgb2YgY291cnNlIG1ha2UKYXJyYW5nZW1lbnRzIGluIHlvdXIgY29kZSB0byByZWNvcmQgdGhlIHNpemUgb2YgdGhlIHVuY29tcHJlc3NlZApkYXRhLCBidXQgc3VjaCBhIG1lY2hhbmlzbSBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKbGlicmFyeS48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+CndpbGwgbm90IHdyaXRlIGRhdGEgYXQgb3IgYmV5b25kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFsqZGVzdExlbl08L2NvZGU+LCBldmVuIGluIGNhc2Ugb2YKYnVmZmVyIG92ZXJmbG93LjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKQlpfUEFSQU1fRVJST1IKICBpZiBkZXN0IGlzIE5VTEwgb3IgZGVzdExlbiBpcyBOVUxMCiAgb3Igc21hbGwgIT0gMCAmYW1wOyZhbXA7IHNtYWxsICE9IDEKICBvciB2ZXJib3NpdHkgJmx0OyAwIG9yIHZlcmJvc2l0eSAmZ3Q7IDQKQlpfTUVNX0VSUk9SCiAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUgCkJaX09VVEJVRkZfRlVMTAogIGlmIHRoZSBzaXplIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgZXhjZWVkcyAqZGVzdExlbgpCWl9EQVRBX0VSUk9SCiAgaWYgYSBkYXRhIGludGVncml0eSBlcnJvciB3YXMgZGV0ZWN0ZWQgaW4gdGhlIGNvbXByZXNzZWQgZGF0YQpCWl9EQVRBX0VSUk9SX01BR0lDCiAgaWYgdGhlIGNvbXByZXNzZWQgZGF0YSBkb2Vzbid0IGJlZ2luIHdpdGggdGhlIHJpZ2h0IG1hZ2ljIGJ5dGVzCkJaX1VORVhQRUNURURfRU9GCiAgaWYgdGhlIGNvbXByZXNzZWQgZGF0YSBlbmRzIHVuZXhwZWN0ZWRseQpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InpsaWItY29tcGF0Ij48L2E+My42LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+WW9zaGlva2EgVHN1bmVvIGhhcyBjb250cmlidXRlZCBzb21lIGZ1bmN0aW9ucyB0byBnaXZlCmJldHRlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkuClRoZXNlIGZ1bmN0aW9ucyBhcmUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpvcGVuPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpyZWFkPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnp3cml0ZTwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Zmx1c2g8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemNsb3NlPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnplcnJvcjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6bGliVmVyc2lvbjwvY29kZT4uICBUaGVzZQpmdW5jdGlvbnMgYXJlIG5vdCAoeWV0KSBvZmZpY2lhbGx5IHBhcnQgb2YgdGhlIGxpYnJhcnkuICBJZiB0aGV5CmJyZWFrLCB5b3UgZ2V0IHRvIGtlZXAgYWxsIHRoZSBwaWVjZXMuICBOZXZlcnRoZWxlc3MsIEkgdGhpbmsKdGhleSB3b3JrIG9rLjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgdm9pZCBCWkZJTEU7Cgpjb25zdCBjaGFyICogQloyX2J6bGliVmVyc2lvbiAoIHZvaWQgKTs8L3ByZT4KPHA+UmV0dXJucyBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBsaWJyYXJ5IHZlcnNpb24uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpGSUxFICogQloyX2J6b3BlbiAgKCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlICk7CkJaRklMRSAqIEJaMl9iemRvcGVuICggaW50ICAgICAgICBmZCwgICAgY29uc3QgY2hhciAqbW9kZSApOzwvcHJlPgo8cD5PcGVucyBhIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4gZmlsZSBmb3IKcmVhZGluZyBvciB3cml0aW5nLCB1c2luZyBlaXRoZXIgaXRzIG5hbWUgb3IgYSBwcmUtZXhpc3RpbmcgZmlsZQpkZXNjcmlwdG9yLiAgQW5hbG9nb3VzIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Zm9wZW48L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZkb3BlbjwvY29kZT4uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9ienJlYWQgICggQlpGSUxFKiBiLCB2b2lkKiBidWYsIGludCBsZW4gKTsKaW50IEJaMl9iendyaXRlICggQlpGSUxFKiBiLCB2b2lkKiBidWYsIGludCBsZW4gKTs8L3ByZT4KPHA+UmVhZHMvd3JpdGVzIGRhdGEgZnJvbS90byBhIHByZXZpb3VzbHkgb3BlbmVkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpGSUxFPC9jb2RlPi4gIEFuYWxvZ291cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZyZWFkPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5md3JpdGU8L2NvZGU+LjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCAgQloyX2J6Zmx1c2ggKCBCWkZJTEUqIGIgKTsKdm9pZCBCWjJfYnpjbG9zZSAoIEJaRklMRSogYiApOzwvcHJlPgo8cD5GbHVzaGVzL2Nsb3NlcyBhIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpGSUxFPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpmbHVzaDwvY29kZT4gZG9lc24ndCBhY3R1YWxseSBkbwphbnl0aGluZy4gIEFuYWxvZ291cyB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZmbHVzaDwvY29kZT4KYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmNsb3NlPC9jb2RlPi48L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCBjaGFyICogQloyX2J6ZXJyb3IgKCBCWkZJTEUgKmIsIGludCAqZXJybnVtICk8L3ByZT4KPHA+UmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBtb3JlIHJlY2VudCBlcnJvciBzdGF0dXMgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPiwgYW5kIGFsc28gc2V0cwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPiplcnJudW08L2NvZGU+IHRvIGl0cyBudW1lcmljYWwKdmFsdWUuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ic3RkaW8tZnJlZSI+PC9hPjMuNy6gVXNpbmcgdGhlIGxpYnJhcnkgaW4gYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPi1mcmVlIGVudmlyb25tZW50PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InN0ZGlvLWJ5ZSI+PC9hPjMuNy4xLqBHZXR0aW5nIHJpZCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkluIGEgZGVlcGx5IGVtYmVkZGVkIGFwcGxpY2F0aW9uLCB5b3UgbWlnaHQgd2FudCB0byB1c2UKanVzdCB0aGUgbWVtb3J5LXRvLW1lbW9yeSBmdW5jdGlvbnMuICBZb3UgY2FuIGRvIHRoaXMKY29udmVuaWVudGx5IGJ5IGNvbXBpbGluZyB0aGUgbGlicmFyeSB3aXRoIHByZXByb2Nlc3NvciBzeW1ib2wKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9OT19TVERJTzwvY29kZT4gZGVmaW5lZC4gIERvaW5nIHRoaXMKZ2l2ZXMgeW91IGEgbGlicmFyeSBjb250YWluaW5nIG9ubHkgdGhlIGZvbGxvd2luZyBlaWdodApmdW5jdGlvbnM6PC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+PC9wPgo8cD5XaGVuIGNvbXBpbGVkIGxpa2UgdGhpcywgYWxsIGZ1bmN0aW9ucyB3aWxsIGlnbm9yZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gc2V0dGluZ3MuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNyaXRpY2FsLWVycm9yIj48L2E+My43LjIuoENyaXRpY2FsIGVycm9yIGhhbmRsaW5nPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4gY29udGFpbnMgYSBudW1iZXIKb2YgaW50ZXJuYWwgYXNzZXJ0aW9uIGNoZWNrcyB3aGljaCBzaG91bGQsIG5lZWRsZXNzIHRvIHNheSwgbmV2ZXIKYmUgYWN0aXZhdGVkLiAgTmV2ZXJ0aGVsZXNzLCBpZiBhbiBhc3NlcnRpb24gc2hvdWxkIGZhaWwsCmJlaGF2aW91ciBkZXBlbmRzIG9uIHdoZXRoZXIgb3Igbm90IHRoZSBsaWJyYXJ5IHdhcyBjb21waWxlZCB3aXRoCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTk9fU1RESU88L2NvZGU+IHNldC48L3A+CjxwPkZvciBhIG5vcm1hbCBjb21waWxlLCBhbiBhc3NlcnRpb24gZmFpbHVyZSB5aWVsZHMgdGhlCm1lc3NhZ2U6PC9wPgo8ZGl2IGNsYXNzPSJibG9ja3F1b3RlIj48YmxvY2txdW90ZSBjbGFzcz0iYmxvY2txdW90ZSI+CjxwPmJ6aXAyL2xpYmJ6aXAyOiBpbnRlcm5hbCBlcnJvciBudW1iZXIgTi48L3A+CjxwPlRoaXMgaXMgYSBidWcgaW4gYnppcDIvbGliYnppcDIsIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcuClBsZWFzZSByZXBvcnQgaXQgdG8gbWUgYXQ6IGpzZXdhcmRAYnppcC5vcmcuICBJZiB0aGlzIGhhcHBlbmVkCndoZW4geW91IHdlcmUgdXNpbmcgc29tZSBwcm9ncmFtIHdoaWNoIHVzZXMgbGliYnppcDIgYXMgYQpjb21wb25lbnQsIHlvdSBzaG91bGQgYWxzbyByZXBvcnQgdGhpcyBidWcgdG8gdGhlIGF1dGhvcihzKQpvZiB0aGF0IHByb2dyYW0uICBQbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcmVwb3J0IHRoaXMgYnVnOwp0aW1lbHkgYW5kIGFjY3VyYXRlIGJ1ZyByZXBvcnRzIGV2ZW50dWFsbHkgbGVhZCB0byBoaWdoZXIKcXVhbGl0eSBzb2Z0d2FyZS4gIFRoYW5rcy4gIEp1bGlhbiBTZXdhcmQsIDEwIERlY2VtYmVyIDIwMDcuCjwvcD4KPC9ibG9ja3F1b3RlPjwvZGl2Pgo8cD53aGVyZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk48L2NvZGU+IGlzIHNvbWUgZXJyb3IgY29kZQpudW1iZXIuICBJZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk4gPT0gMTAwNzwvY29kZT4sIGl0IGFsc28KcHJpbnRzIHNvbWUgZXh0cmEgdGV4dCBhZHZpc2luZyB0aGUgcmVhZGVyIHRoYXQgdW5yZWxpYWJsZSBtZW1vcnkKaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIGludGVybmFsIGVycm9yIDEwMDcuIChUaGlzIGlzIGEKZnJlcXVlbnRseS1vYnNlcnZlZC1waGVub21lbm9uIHdpdGggdmVyc2lvbnMgMS4wLjAvMS4wLjEpLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5leGl0KDMpPC9jb2RlPiBpcyB0aGVuCmNhbGxlZC48L3A+CjxwPkZvciBhIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3RkaW88L2NvZGU+LWZyZWUgbGlicmFyeSwKYXNzZXJ0aW9uIGZhaWx1cmVzIHJlc3VsdCBpbiBhIGNhbGwgdG8gYSBmdW5jdGlvbiBkZWNsYXJlZAphczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5leHRlcm4gdm9pZCBiel9pbnRlcm5hbF9lcnJvciAoIGludCBlcnJjb2RlICk7PC9wcmU+CjxwPlRoZSByZWxldmFudCBjb2RlIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlci4gIFlvdSBzaG91bGQKc3VwcGx5IHN1Y2ggYSBmdW5jdGlvbi48L3A+CjxwPkluIGVpdGhlciBjYXNlLCBvbmNlIGFuIGFzc2VydGlvbiBmYWlsdXJlIGhhcyBvY2N1cnJlZCwgYW55Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiByZWNvcmRzIGludm9sdmVkIGNhbgpiZSByZWdhcmRlZCBhcyBpbnZhbGlkLiAgWW91IHNob3VsZCBub3QgYXR0ZW1wdCB0byByZXN1bWUgbm9ybWFsCm9wZXJhdGlvbiB3aXRoIHRoZW0uPC9wPgo8cD5Zb3UgbWF5LCBvZiBjb3Vyc2UsIGNoYW5nZSBjcml0aWNhbCBlcnJvciBoYW5kbGluZyB0byBzdWl0CnlvdXIgbmVlZHMuICBBcyBJIHNhaWQgYWJvdmUsIGNyaXRpY2FsIGVycm9ycyBpbmRpY2F0ZSBidWdzIGluCnRoZSBsaWJyYXJ5IGFuZCBzaG91bGQgbm90IG9jY3VyLiAgQWxsICJub3JtYWwiIGVycm9yIHNpdHVhdGlvbnMKYXJlIGluZGljYXRlZCB2aWEgZXJyb3IgcmV0dXJuIGNvZGVzIGZyb20gZnVuY3Rpb25zLCBhbmQgY2FuIGJlCnJlY292ZXJlZCBmcm9tLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJ3aW4tZGxsIj48L2E+My44LqBNYWtpbmcgYSBXaW5kb3dzIERMTDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBXaW5kb3dzIGhhcyBiZWVuIGNvbnRyaWJ1dGVkIGJ5Cllvc2hpb2thIFRzdW5lbwooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50c3VuZW9AcnIuaWlqNHUub3IuanA8L2NvZGU+KSwgc28KeW91IHNob3VsZCBzZW5kIHlvdXIgcXVlcmllcyB0byBoaW0gKGJ1dCBwZXJoYXBzIENjOiBtZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5qc2V3YXJkQGJ6aXAub3JnPC9jb2RlPikuPC9wPgo8cD5NeSB2YWd1ZSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdG8gZG8gaXM6IHVzaW5nIFZpc3VhbCBDKysKNS4wLCBvcGVuIHRoZSBwcm9qZWN0IGZpbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiejIuZHNwPC9jb2RlPiwgYW5kIGJ1aWxkLiAgVGhhdCdzCmFsbC48L3A+CjxwPklmIHlvdSBjYW4ndCBvcGVuIHRoZSBwcm9qZWN0IGZpbGUgZm9yIHNvbWUgcmVhc29uLCBtYWtlIGEKbmV3IG9uZSwgbmFtaW5nIHRoZXNlIGZpbGVzOgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2Nrc29ydC5jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYi5jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jb21wcmVzcy5jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jcmN0YWJsZS5jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kZWNvbXByZXNzLmM8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmh1ZmZtYW4uYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmFuZHRhYmxlLmM8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6Mi5kZWY8L2NvZGU+LiAgWW91IHdpbGwgYWxzbyBuZWVkCnRvIG5hbWUgdGhlIGhlYWRlciBmaWxlcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliLmg8L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliX3ByaXZhdGUuaDwvY29kZT4uPC9wPgo8cD5JZiB5b3UgZG9uJ3QgdXNlIFZDKyssIHlvdSBtYXkgbmVlZCB0byBkZWZpbmUgdGhlCnByb3Byb2Nlc3NvciBzeW1ib2wKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5fV0lOMzI8L2NvZGU+LjwvcD4KPHA+RmluYWxseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kbGx0ZXN0LmM8L2NvZGU+IGlzIGEKc2FtcGxlIHByb2dyYW0gdXNpbmcgdGhlIERMTC4gIEl0IGhhcyBhIHByb2plY3QgZmlsZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kbGx0ZXN0LmRzcDwvY29kZT4uPC9wPgo8cD5JZiB5b3UganVzdCB3YW50IGEgbWFrZWZpbGUgZm9yIFZpc3VhbCBDLCBoYXZlIGEgbG9vayBhdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm1ha2VmaWxlLm1zYzwvY29kZT4uPC9wPgo8cD5CZSBhd2FyZSB0aGF0IGlmIHlvdSBjb21waWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGl0c2VsZiBvbiBXaW4zMiwgeW91IG11c3QKc2V0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfVU5JWDwvY29kZT4gdG8gMCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9MQ0NXSU4zMjwvY29kZT4gdG8gMSwgaW4gdGhlIGZpbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMi5jPC9jb2RlPiwgYmVmb3JlIGNvbXBpbGluZy4KT3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYmluYXJ5IHdvbid0IHdvcmsgY29ycmVjdGx5LjwvcD4KPHA+SSBoYXZlbid0IHRyaWVkIGFueSBvZiB0aGlzIHN0dWZmIG15c2VsZiwgYnV0IGl0IGFsbCBsb29rcwpwbGF1c2libGUuPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9Im1pc2MiPjwvYT40LqBNaXNjZWxsYW5lYTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbGltaXRzIj40LjEuIExpbWl0YXRpb25zIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcG9ydC1pc3N1ZXMiPjQuMi4gUG9ydGFiaWxpdHkgaXNzdWVzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjYnVncyI+NC4zLiBSZXBvcnRpbmcgYnVnczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BhY2thZ2UiPjQuNC4gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcmVhZGluZyI+NC41LiBGdXJ0aGVyIFJlYWRpbmc8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+CjwvZGl2Pgo8cD5UaGVzZSBhcmUganVzdCBzb21lIHJhbmRvbSB0aG91Z2h0cyBvZiBtaW5lLiAgWW91ciBtaWxlYWdlCm1heSB2YXJ5LjwvcD4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ibGltaXRzIj48L2E+NC4xLqBMaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMS4wLlg8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjAuOS41PC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4wLjkuMDwvY29kZT4gdXNlIGV4YWN0bHkgdGhlIHNhbWUgZmlsZQpmb3JtYXQgYXMgdGhlIG9yaWdpbmFsIHZlcnNpb24sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMC4xPC9jb2RlPi4gIFRoaXMgZGVjaXNpb24gd2FzCm1hZGUgaW4gdGhlIGludGVyZXN0cyBvZiBzdGFiaWxpdHkuICBDcmVhdGluZyB5ZXQgYW5vdGhlcgppbmNvbXBhdGlibGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdCB3b3VsZCBjcmVhdGUgZnVydGhlcgpjb25mdXNpb24gYW5kIGRpc3J1cHRpb24gZm9yIHVzZXJzLjwvcD4KPHA+TmV2ZXJ0aGVsZXNzLCB0aGlzIGlzIG5vdCBhIHBhaW5sZXNzIGRlY2lzaW9uLiAgRGV2ZWxvcG1lbnQKd29yayBzaW5jZSB0aGUgcmVsZWFzZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuMTwvY29kZT4gaW4gQXVndXN0IDE5OTcgaGFzCnNob3duIGNvbXBsZXhpdGllcyBpbiB0aGUgZmlsZSBmb3JtYXQgd2hpY2ggc2xvdyBkb3duCmRlY29tcHJlc3Npb24gYW5kLCBpbiByZXRyb3NwZWN0LCBhcmUgdW5uZWNlc3NhcnkuICBUaGVzZQphcmU6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhlIHJ1bi1sZW5ndGggZW5jb2Rlciwgd2hpY2ggaXMgdGhlIGZpcnN0IG9mIHRoZQogICBjb21wcmVzc2lvbiB0cmFuc2Zvcm1hdGlvbnMsIGlzIGVudGlyZWx5IGlycmVsZXZhbnQuICBUaGUKICAgb3JpZ2luYWwgcHVycG9zZSB3YXMgdG8gcHJvdGVjdCB0aGUgc29ydGluZyBhbGdvcml0aG0gZnJvbSB0aGUKICAgdmVyeSB3b3JzdCBjYXNlIGlucHV0OiBhIHN0cmluZyBvZiByZXBlYXRlZCBzeW1ib2xzLiAgQnV0CiAgIGFsZ29yaXRobSBzdGVwcyBRNmEgYW5kIFE2YiBpbiB0aGUgb3JpZ2luYWwgQnVycm93cy1XaGVlbGVyCiAgIHRlY2huaWNhbCByZXBvcnQgKFNSQy0xMjQpIHNob3cgaG93IHJlcGVhdHMgY2FuIGJlIGhhbmRsZWQKICAgd2l0aG91dCBkaWZmaWN1bHR5IGluIGJsb2NrIHNvcnRpbmcuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj4KPHA+VGhlIHJhbmRvbWlzYXRpb24gbWVjaGFuaXNtIGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8gYmUKICAgdGhlcmUuICBVZGkgTWFuYmVyIGFuZCBHZW5lIE15ZXJzIHB1Ymxpc2hlZCBhIHN1ZmZpeCBhcnJheQogICBjb25zdHJ1Y3Rpb24gYWxnb3JpdGhtIGEgZmV3IHllYXJzIGJhY2ssIHdoaWNoIGNhbiBiZSBlbXBsb3llZAogICB0byBzb3J0IGFueSBibG9jaywgbm8gbWF0dGVyIGhvdyByZXBldGl0aXZlLCBpbiBPKE4gbG9nIE4pCiAgIHRpbWUuICBTdWJzZXF1ZW50IHdvcmsgYnkgS3VuaWhpa28gU2FkYWthbmUgaGFzIHByb2R1Y2VkIGEKICAgZGVyaXZhdGl2ZSBPKE4gKGxvZyBOKV4yKSBhbGdvcml0aG0gd2hpY2ggdXN1YWxseSBvdXRwZXJmb3JtcwogICB0aGUgTWFuYmVyLU15ZXJzIGFsZ29yaXRobS48L3A+CjxwPkkgY291bGQgaGF2ZSBjaGFuZ2VkIHRvIFNhZGFrYW5lJ3MgYWxnb3JpdGhtLCBidXQgSSBmaW5kCiAgIGl0IHRvIGJlIHNsb3dlciB0aGFuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+J3MKICAgZXhpc3RpbmcgYWxnb3JpdGhtIGZvciBtb3N0IGlucHV0cywgYW5kIHRoZSByYW5kb21pc2F0aW9uCiAgIG1lY2hhbmlzbSBwcm90ZWN0cyBhZGVxdWF0ZWx5IGFnYWluc3QgYmFkIGNhc2VzLiAgSSBkaWRuJ3QKICAgdGhpbmsgaXQgd2FzIGEgZ29vZCB0cmFkZW9mZiB0byBtYWtlLiAgUGFydGx5IHRoaXMgaXMgZHVlIHRvCiAgIHRoZSBmYWN0IHRoYXQgSSB3YXMgbm90IGZsb29kZWQgd2l0aCBlbWFpbCBjb21wbGFpbnRzIGFib3V0CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMC4xPC9jb2RlPidzIHBlcmZvcm1hbmNlIG9uCiAgIHJlcGV0aXRpdmUgZGF0YSwgc28gcGVyaGFwcyBpdCBpc24ndCBhIHByb2JsZW0gZm9yIHJlYWwKICAgaW5wdXRzLjwvcD4KPHA+UHJvYmFibHkgdGhlIGJlc3QgbG9uZy10ZXJtIHNvbHV0aW9uLCBhbmQgdGhlIG9uZSBJIGhhdmUKICAgaW5jb3Jwb3JhdGVkIGludG8gMC45LjUgYW5kIGFib3ZlLCBpcyB0byB1c2UgdGhlIGV4aXN0aW5nCiAgIHNvcnRpbmcgYWxnb3JpdGhtIGluaXRpYWxseSwgYW5kIGZhbGwgYmFjayB0byBhIE8oTiAobG9nIE4pXjIpCiAgIGFsZ29yaXRobSBpZiB0aGUgc3RhbmRhcmQgYWxnb3JpdGhtIGdldHMgaW50bwogICBkaWZmaWN1bHRpZXMuPC9wPgo8L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhlIGNvbXByZXNzZWQgZmlsZSBmb3JtYXQgd2FzIG5ldmVyIGRlc2lnbmVkIHRvIGJlCiAgIGhhbmRsZWQgYnkgYSBsaWJyYXJ5LCBhbmQgSSBoYXZlIGhhZCB0byBqdW1wIHRob3VnaCBzb21lIGhvb3BzCiAgIHRvIHByb2R1Y2UgYW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIGRlY29tcHJlc3Npb24uICBJdCdzCiAgIGEgYml0IGhhaXJ5LiAgVHJ5IHBhc3NpbmcKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kZWNvbXByZXNzLmM8L2NvZGU+IHRocm91Z2ggdGhlIEMKICAgcHJlcHJvY2Vzc29yIGFuZCB5b3UnbGwgc2VlIHdoYXQgSSBtZWFuLiAgTXVjaCBvZiB0aGlzCiAgIGNvbXBsZXhpdHkgY291bGQgaGF2ZSBiZWVuIGF2b2lkZWQgaWYgdGhlIGNvbXByZXNzZWQgc2l6ZSBvZgogICBlYWNoIGJsb2NrIG9mIGRhdGEgd2FzIHJlY29yZGVkIGluIHRoZSBkYXRhIHN0cmVhbS48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPkFuIEFkbGVyLTMyIGNoZWNrc3VtLCByYXRoZXIgdGhhbiBhIENSQzMyIGNoZWNrc3VtLAogICB3b3VsZCBiZSBmYXN0ZXIgdG8gY29tcHV0ZS48L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+SXQgd291bGQgYmUgZmFpciB0byBzYXkgdGhhdCB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IHdhcyBmcm96ZW4gYmVmb3JlIEkKcHJvcGVybHkgYW5kIGZ1bGx5IHVuZGVyc3Rvb2QgdGhlIHBlcmZvcm1hbmNlIGNvbnNlcXVlbmNlcyBvZgpkb2luZyBzby48L3A+CjxwPkltcHJvdmVtZW50cyB3aGljaCBJIHdhcyBhYmxlIHRvIGluY29ycG9yYXRlIGludG8gMC45LjAsCmRlc3BpdGUgdXNpbmcgdGhlIHNhbWUgZmlsZSBmb3JtYXQsIGFyZTo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5TaW5nbGUgYXJyYXkgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludmVyc2UgQldULiAgVGhpcwogIHNpZ25pZmljYW50bHkgc3BlZWRzIHVwIGRlY29tcHJlc3Npb24sIHByZXN1bWFibHkgYmVjYXVzZSBpdAogIHJlZHVjZXMgdGhlIG51bWJlciBvZiBjYWNoZSBtaXNzZXMuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5GYXN0ZXIgaW52ZXJzZSBNVEYgdHJhbnNmb3JtIGZvciBsYXJnZSBNVEYgdmFsdWVzLgogIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIG5vdGlvbiBvZiBzbGlkaW5nIGJsb2NrcwogIG9mIHZhbHVlcy48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMC45LjA8L2NvZGU+IG5vdyByZWFkcwogIGFuZCB3cml0ZXMgZmlsZXMgd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZyZWFkPC9jb2RlPgogIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZ3cml0ZTwvY29kZT47IHZlcnNpb24gMC4xIHVzZWQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnB1dGM8L2NvZGU+IGFuZAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z2V0YzwvY29kZT4uICBEdWghICBXZWxsLCB5b3UgbGl2ZQogIGFuZCBsZWFybi48L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+RnVydGhlciBhaGVhZCwgaXQgd291bGQgYmUgbmljZSB0byBiZSBhYmxlIHRvIGRvIHJhbmRvbQphY2Nlc3MgaW50byBmaWxlcy4gIFRoaXMgd2lsbCByZXF1aXJlIHNvbWUgY2FyZWZ1bCBkZXNpZ24gb2YKY29tcHJlc3NlZCBmaWxlIGZvcm1hdHMuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icG9ydC1pc3N1ZXMiPjwvYT40LjIuoFBvcnRhYmlsaXR5IGlzc3VlczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkFmdGVyIHNvbWUgY29uc2lkZXJhdGlvbiwgSSBoYXZlIGRlY2lkZWQgbm90IHRvIHVzZSBHTlUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdXRvY29uZjwvY29kZT4gdG8gY29uZmlndXJlIDAuOS41IG9yCjEuMC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXV0b2NvbmY8L2NvZGU+LCBhZG1pcmFibGUgYW5kCndvbmRlcmZ1bCB0aG91Z2ggaXQgaXMsIG1haW5seSBhc3Npc3RzIHdpdGggcG9ydGFiaWxpdHkgcHJvYmxlbXMKYmV0d2VlbiBVbml4LWxpa2UgcGxhdGZvcm1zLiAgQnV0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRvZXNuJ3QgaGF2ZSBtdWNoIGluIHRoZQp3YXkgb2YgcG9ydGFiaWxpdHkgcHJvYmxlbXMgb24gVW5peDsgbW9zdCBvZiB0aGUgZGlmZmljdWx0aWVzCmFwcGVhciB3aGVuIHBvcnRpbmcgdG8gdGhlIE1hYywgb3IgdG8gTWljcm9zb2Z0J3Mgb3BlcmF0aW5nCnN5c3RlbXMuICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF1dG9jb25mPC9jb2RlPiBkb2Vzbid0IGhlbHAKaW4gdGhvc2UgY2FzZXMsIGFuZCBicmluZ3MgaW4gYSB3aG9sZSBsb2FkIG9mIG5ldwpjb21wbGV4aXR5LjwvcD4KPHA+TW9zdCBwZW9wbGUgc2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSB0aGUgbGlicmFyeSBhbmQKcHJvZ3JhbSB1bmRlciBVbml4IHN0cmFpZ2h0IG91dC1vZi10aGUtYm94LCBzbyB0byBzcGVhaywKZXNwZWNpYWxseSBpZiB5b3UgaGF2ZSBhIHZlcnNpb24gb2YgR05VIEMgYXZhaWxhYmxlLjwvcD4KPHA+VGhlcmUgYXJlIGEgY291cGxlIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+X19pbmxpbmVfXzwvY29kZT4gZGlyZWN0aXZlcyBpbiB0aGUKY29kZS4gIEdOVSBDICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmdjYzwvY29kZT4pIHNob3VsZCBiZQphYmxlIHRvIGhhbmRsZSB0aGVtLiAgSWYgeW91J3JlIG5vdCB1c2luZyBHTlUgQywgeW91ciBDIGNvbXBpbGVyCnNob3VsZG4ndCBzZWUgdGhlbSBhdCBhbGwuICBJZiB5b3VyIGNvbXBpbGVyIGRvZXMsIGZvciBzb21lCnJlYXNvbiwgc2VlIHRoZW0gYW5kIGRvZXNuJ3QgbGlrZSB0aGVtLCBqdXN0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+I2RlZmluZTwvY29kZT4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5fX2lubGluZV9fPC9jb2RlPiB0byBiZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi8qICovPC9jb2RlPi4gIE9uZSBlYXN5IHdheSB0byBkbyB0aGlzCmlzIHRvIGNvbXBpbGUgd2l0aCB0aGUgZmxhZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1EX19pbmxpbmVfXz08L2NvZGU+LCB3aGljaCBzaG91bGQgYmUKdW5kZXJzdG9vZCBieSBtb3N0IFVuaXggY29tcGlsZXJzLjwvcD4KPHA+SWYgeW91IHN0aWxsIGhhdmUgZGlmZmljdWx0aWVzLCB0cnkgY29tcGlsaW5nIHdpdGggdGhlCm1hY3JvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSSUNUX0FOU0k8L2NvZGU+IGRlZmluZWQuClRoaXMgc2hvdWxkIGVuYWJsZSB5b3UgdG8gYnVpbGQgdGhlIGxpYnJhcnkgaW4gYSBzdHJpY3RseSBBTlNJCmNvbXBsaWFudCBlbnZpcm9ubWVudC4gIEJ1aWxkaW5nIHRoZSBwcm9ncmFtIGl0c2VsZiBsaWtlIHRoaXMgaXMKZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLCBzaW5jZSB5b3UgcmVtb3ZlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+J3MgY2hlY2tzIGFnYWluc3QKY29tcHJlc3NpbmcgZGlyZWN0b3JpZXMsIHN5bWJvbGljIGxpbmtzLCBkZXZpY2VzLCBhbmQgb3RoZXIKbm90LXJlYWxseS1hLWZpbGUgZW50aXRpZXMuICBUaGlzIGNvdWxkIGNhdXNlIGZpbGVzeXN0ZW0KY29ycnVwdGlvbiE8L3A+CjxwPk9uZSBvdGhlciB0aGluZzogaWYgeW91IGNyZWF0ZSBhCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGJpbmFyeSBmb3IgcHVibGljIGRpc3RyaWJ1dGlvbiwKcGxlYXNlIGNvbnNpZGVyIGxpbmtpbmcgaXQgc3RhdGljYWxseSAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nY2MKLXN0YXRpYzwvY29kZT4pLiAgVGhpcyBhdm9pZHMgYWxsIHNvcnRzIG9mIGxpYnJhcnktdmVyc2lvbgppc3N1ZXMgdGhhdCBvdGhlcnMgbWF5IGVuY291bnRlciBsYXRlciBvbi48L3A+CjxwPklmIHlvdSBidWlsZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBvbgpXaW4zMiwgeW91IG11c3Qgc2V0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfVU5JWDwvY29kZT4gdG8gMAphbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9MQ0NXSU4zMjwvY29kZT4gdG8gMSwgaW4gdGhlCmZpbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMi5jPC9jb2RlPiwgYmVmb3JlIGNvbXBpbGluZy4KT3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYmluYXJ5IHdvbid0IHdvcmsgY29ycmVjdGx5LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImJ1Z3MiPjwvYT40LjMuoFJlcG9ydGluZyBidWdzPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SSB0cmllZCBwcmV0dHkgaGFyZCB0byBtYWtlIHN1cmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYnVnIGZyZWUsIGJvdGggYnkKZGVzaWduIGFuZCBieSB0ZXN0aW5nLiAgSG9wZWZ1bGx5IHlvdSdsbCBuZXZlciBuZWVkIHRvIHJlYWQgdGhpcwpzZWN0aW9uIGZvciByZWFsLjwvcD4KPHA+TmV2ZXJ0aGVsZXNzLCBpZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkaWVzCndpdGggYSBzZWdtZW50YXRpb24gZmF1bHQsIGEgYnVzIGVycm9yIG9yIGFuIGludGVybmFsIGFzc2VydGlvbgpmYWlsdXJlLCBpdCB3aWxsIGFzayB5b3UgdG8gZW1haWwgbWUgYSBidWcgcmVwb3J0LiAgRXhwZXJpZW5jZSBmcm9tCnllYXJzIG9mIGZlZWRiYWNrIG9mIGJ6aXAyIHVzZXJzIGluZGljYXRlcyB0aGF0IGFsbW9zdCBhbGwgdGhlc2UKcHJvYmxlbXMgY2FuIGJlIHRyYWNlZCB0byBlaXRoZXIgY29tcGlsZXIgYnVncyBvciBoYXJkd2FyZQpwcm9ibGVtcy48L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj4KPHA+UmVjb21waWxlIHRoZSBwcm9ncmFtIHdpdGggbm8gb3B0aW1pc2F0aW9uLCBhbmQKICBzZWUgaWYgaXQgd29ya3MuICBBbmQvb3IgdHJ5IGEgZGlmZmVyZW50IGNvbXBpbGVyLiAgSSBoZWFyZCBhbGwKICBzb3J0cyBvZiBzdG9yaWVzIGFib3V0IHZhcmlvdXMgZmxhdm91cnMgb2YgR05VIEMgKGFuZCBvdGhlcgogIGNvbXBpbGVycykgZ2VuZXJhdGluZyBiYWQgY29kZSBmb3IKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiwgYW5kIEkndmUgcnVuIGFjcm9zcyB0d28KICBzdWNoIGV4YW1wbGVzIG15c2VsZi48L3A+CjxwPjIuNy5YIHZlcnNpb25zIG9mIEdOVSBDIGFyZSBrbm93biB0byBnZW5lcmF0ZSBiYWQgY29kZQogIGZyb20gdGltZSB0byB0aW1lLCBhdCBoaWdoIG9wdGltaXNhdGlvbiBsZXZlbHMuICBJZiB5b3UgZ2V0CiAgcHJvYmxlbXMsIHRyeSB1c2luZyB0aGUgZmxhZ3MKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1PMjwvY29kZT4KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mb21pdC1mcmFtZS1wb2ludGVyPC9jb2RlPgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWZuby1zdHJlbmd0aC1yZWR1Y2U8L2NvZGU+LiAgWW91CiAgc2hvdWxkIHNwZWNpZmljYWxseSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5ub3Q8L2VtPjwvc3Bhbj4gdXNlCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZnVucm9sbC1sb29wczwvY29kZT4uPC9wPgo8cD5Zb3UgbWF5IG5vdGljZSB0aGF0IHRoZSBNYWtlZmlsZSBydW5zIHNpeCB0ZXN0cyBhcyBwYXJ0CiAgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuICBJZiB0aGUgcHJvZ3JhbSBwYXNzZXMgYWxsIG9mIHRoZXNlLCBpdCdzCiAgYSBwcmV0dHkgZ29vZCAoYnV0IG5vdCAxMDAlKSBpbmRpY2F0aW9uIHRoYXQgdGhlIGNvbXBpbGVyIGhhcwogIGRvbmUgaXRzIGpvYiBjb3JyZWN0bHkuPC9wPgo8L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+CiAgY3Jhc2hlcyByYW5kb21seSwgYW5kIHRoZSBjcmFzaGVzIGFyZSBub3QgcmVwZWF0YWJsZSwgeW91IG1heQogIGhhdmUgYSBmbGFreSBtZW1vcnkgc3Vic3lzdGVtLgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHJlYWxseSBoYW1tZXJzIHlvdXIKICBtZW1vcnkgaGllcmFyY2h5LCBhbmQgaWYgaXQncyBhIGJpdCBtYXJnaW5hbCwgeW91IG1heSBnZXQgdGhlc2UKICBwcm9ibGVtcy4gIERpdHRvIGlmIHlvdXIgZGlzayBvciBJL08gc3Vic3lzdGVtIGlzIHNsb3dseQogIGZhaWxpbmcuICBZdXAsIHRoaXMgcmVhbGx5IGRvZXMgaGFwcGVuLjwvcD4KPHA+VHJ5IHVzaW5nIGEgZGlmZmVyZW50IG1hY2hpbmUgb2YgdGhlIHNhbWUgdHlwZSwgYW5kIHNlZQogIGlmIHlvdSBjYW4gcmVwZWF0IHRoZSBwcm9ibGVtLjwvcD4KPC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoaXMgaXNuJ3QgcmVhbGx5IGEgYnVnLCBidXQgLi4uIElmCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdGVsbHMgeW91IHlvdXIgZmlsZSBpcwogIGNvcnJ1cHRlZCBvbiBkZWNvbXByZXNzaW9uLCBhbmQgeW91IG9idGFpbmVkIHRoZSBmaWxlIHZpYSBGVFAsCiAgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHlvdSBmb3Jnb3QgdG8gdGVsbCBGVFAgdG8gZG8gYQogIGJpbmFyeSBtb2RlIHRyYW5zZmVyLiAgVGhhdCBhYnNvbHV0ZWx5IHdpbGwgY2F1c2UgdGhlIGZpbGUgdG8KICBiZSBub24tZGVjb21wcmVzc2libGUuICBZb3UnbGwgaGF2ZSB0byB0cmFuc2ZlciBpdAogIGFnYWluLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5JZiB5b3UndmUgaW5jb3Jwb3JhdGVkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGludG8geW91ciBvd24gcHJvZ3JhbQphbmQgYXJlIGdldHRpbmcgcHJvYmxlbXMsIHBsZWFzZSwgcGxlYXNlLCBwbGVhc2UsIGNoZWNrIHRoYXQgdGhlCnBhcmFtZXRlcnMgeW91IGFyZSBwYXNzaW5nIGluIGNhbGxzIHRvIHRoZSBsaWJyYXJ5LCBhcmUgY29ycmVjdCwKYW5kIGluIGFjY29yZGFuY2Ugd2l0aCB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgaXMgYWxsb3dhYmxlLgpJIGhhdmUgdHJpZWQgdG8gbWFrZSB0aGUgbGlicmFyeSByb2J1c3QgYWdhaW5zdCBzdWNoIHByb2JsZW1zLApidXQgSSdtIHN1cmUgSSBoYXZlbid0IHN1Y2NlZWRlZC48L3A+CjxwPkZpbmFsbHksIGlmIHRoZSBhYm92ZSBjb21tZW50cyBkb24ndCBoZWxwLCB5b3UnbGwgaGF2ZSB0bwpzZW5kIG1lIGEgYnVnIHJlcG9ydC4gIE5vdywgaXQncyBqdXN0IGFtYXppbmcgaG93IG1hbnkgcGVvcGxlCndpbGwgc2VuZCBtZSBhIGJ1ZyByZXBvcnQgc2F5aW5nIHNvbWV0aGluZyBsaWtlOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmJ6aXAyIGNyYXNoZWQgd2l0aCBzZWdtZW50YXRpb24gZmF1bHQgb24gbXkgbWFjaGluZTwvcHJlPgo8cD5hbmQgYWJzb2x1dGVseSBub3RoaW5nIGVsc2UuICBOZWVkbGVzcyB0byBzYXksIGEgc3VjaCBhCnJlcG9ydCBpcyA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT50b3RhbGx5LCB1dHRlcmx5LCBjb21wbGV0ZWx5IGFuZApjb21wcmVoZW5zaXZlbHkgMTAwJSB1c2VsZXNzOyBhIHdhc3RlIG9mIHlvdXIgdGltZSwgbXkgdGltZSwgYW5kCm5ldCBiYW5kd2lkdGg8L2VtPjwvc3Bhbj4uICBXaXRoIG5vIGRldGFpbHMgYXQgYWxsLCB0aGVyZSdzIG5vIHdheQpJIGNhbiBwb3NzaWJseSBiZWdpbiB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHByb2JsZW0gaXMuPC9wPgo8cD5UaGUgcnVsZXMgb2YgdGhlIGdhbWUgYXJlOiBmYWN0cywgZmFjdHMsIGZhY3RzLiAgRG9uJ3Qgb21pdAp0aGVtIGJlY2F1c2UgIm9oLCB0aGV5IHdvbid0IGJlIHJlbGV2YW50Ii4gIEF0IHRoZSBiYXJlCm1pbmltdW06PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+TWFjaGluZSB0eXBlLiAgT3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uLiAgCkV4YWN0IHZlcnNpb24gb2YgYnppcDIgKGRvIGJ6aXAyIC1WKS4gIApFeGFjdCB2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB1c2VkLiAgCkZsYWdzIHBhc3NlZCB0byB0aGUgY29tcGlsZXIuPC9wcmU+CjxwPkhvd2V2ZXIsIHRoZSBtb3N0IGltcG9ydGFudCBzaW5nbGUgdGhpbmcgdGhhdCB3aWxsIGhlbHAgbWUKaXMgdGhlIGZpbGUgdGhhdCB5b3Ugd2VyZSB0cnlpbmcgdG8gY29tcHJlc3Mgb3IgZGVjb21wcmVzcyBhdCB0aGUKdGltZSB0aGUgcHJvYmxlbSBoYXBwZW5lZC4gIFdpdGhvdXQgdGhhdCwgbXkgYWJpbGl0eSB0byBkbwphbnl0aGluZyBtb3JlIHRoYW4gc3BlY3VsYXRlIGFib3V0IHRoZSBjYXVzZSwgaXMgbGltaXRlZC48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJwYWNrYWdlIj48L2E+NC40LqBEaWQgeW91IGdldCB0aGUgcmlnaHQgcGFja2FnZT88L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBpcyBhIHJlc291cmNlIGhvZy4KSXQgc29ha3MgdXAgbGFyZ2UgYW1vdW50cyBvZiBDUFUgY3ljbGVzIGFuZCBtZW1vcnkuICBBbHNvLCBpdApnaXZlcyB2ZXJ5IGxhcmdlIGxhdGVuY2llcy4gIEluIHRoZSB3b3JzdCBjYXNlLCB5b3UgY2FuIGZlZWQgbWFueQptZWdhYnl0ZXMgb2YgdW5jb21wcmVzc2VkIGRhdGEgaW50byB0aGUgbGlicmFyeSBiZWZvcmUgZ2V0dGluZwphbnkgY29tcHJlc3NlZCBvdXRwdXQsIHNvIHRoaXMgcHJvYmFibHkgcnVsZXMgb3V0IGFwcGxpY2F0aW9ucwpyZXF1aXJpbmcgaW50ZXJhY3RpdmUgYmVoYXZpb3VyLjwvcD4KPHA+VGhlc2UgYXJlbid0IGZhdWx0cyBvZiBteSBpbXBsZW1lbnRhdGlvbiwgSSBob3BlLCBidXQgbW9yZQphbiBpbnRyaW5zaWMgcHJvcGVydHkgb2YgdGhlIEJ1cnJvd3MtV2hlZWxlciB0cmFuc2Zvcm0KKHVuZm9ydHVuYXRlbHkpLiAgTWF5YmUgdGhpcyBpc24ndCB3aGF0IHlvdSB3YW50LjwvcD4KPHA+SWYgeW91IHdhbnQgYSBjb21wcmVzc29yIGFuZC9vciBsaWJyYXJ5IHdoaWNoIGlzIGZhc3RlciwKdXNlcyBsZXNzIG1lbW9yeSBidXQgZ2V0cyBwcmV0dHkgZ29vZCBjb21wcmVzc2lvbiwgYW5kIGhhcwptaW5pbWFsIGxhdGVuY3ksIGNvbnNpZGVyIEplYW4tbG91cCBHYWlsbHkncyBhbmQgTWFyayBBZGxlcidzCndvcmssIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+emxpYi0xLjIuMTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z3ppcC0xLjIuNDwvY29kZT4uICBMb29rIGZvciB0aGVtIGF0IAo8YSBocmVmPSJodHRwOi8vd3d3LnpsaWIub3JnIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly93d3cuemxpYi5vcmc8L2E+IGFuZCAKPGEgaHJlZj0iaHR0cDovL3d3dy5nemlwLm9yZyIgdGFyZ2V0PSJfdG9wIj5odHRwOi8vd3d3Lmd6aXAub3JnPC9hPgpyZXNwZWN0aXZlbHkuPC9wPgo8cD5Gb3Igc29tZXRoaW5nIGZhc3RlciBhbmQgbGlnaHRlciBzdGlsbCwgeW91IG1pZ2h0IHRyeSBNYXJrdXMgRgpYIEogT2Jlcmh1bWVyJ3MgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5MWk88L2NvZGU+IHJlYWwtdGltZQpjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnksIGF0IAo8YSBocmVmPSJodHRwOi8vd3d3Lm9iZXJodW1lci5jb20vb3BlbnNvdXJjZSIgdGFyZ2V0PSJfdG9wIj5odHRwOi8vd3d3Lm9iZXJodW1lci5jb20vb3BlbnNvdXJjZTwvYT4uPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icmVhZGluZyI+PC9hPjQuNS6gRnVydGhlciBSZWFkaW5nPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgbm90IHJlc2VhcmNoCndvcmssIGluIHRoZSBzZW5zZSB0aGF0IGl0IGRvZXNuJ3QgcHJlc2VudCBhbnkgbmV3IGlkZWFzLgpSYXRoZXIsIGl0J3MgYW4gZW5naW5lZXJpbmcgZXhlcmNpc2UgYmFzZWQgb24gZXhpc3RpbmcKaWRlYXMuPC9wPgo8cD5Gb3VyIGRvY3VtZW50cyBkZXNjcmliZSBlc3NlbnRpYWxseSBhbGwgdGhlIGlkZWFzIGJlaGluZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPjo8L3A+CjxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPk1pY2hhZWygQnVycm93c6BhbmSgRC6gSi6gV2hlZWxlcjo8YnI+CqCgIkGgYmxvY2stc29ydGluZ6Bsb3NzbGVzc6BkYXRhoGNvbXByZXNzaW9uoGFsZ29yaXRobSI8YnI+CqCgoDEwdGigTWF5oDE5OTQuoDxicj4KoKCgRGlnaXRhbKBTUkOgUmVzZWFyY2igUmVwb3J0oDEyNC48YnI+CqCgoGZ0cDovL2Z0cC5kaWdpdGFsLmNvbS9wdWIvREVDL1NSQy9yZXNlYXJjaC1yZXBvcnRzL1NSQy0xMjQucHMuZ3o8YnI+CqCgoElmoHlvdaBoYXZloHRyb3VibGWgZmluZGluZ6BpdCygdHJ5oHNlYXJjaGluZ6BhdKB0aGU8YnI+CqCgoE5ld6BaZWFsYW5koERpZ2l0YWygTGlicmFyeSygaHR0cDovL3d3dy5uemRsLm9yZy48YnI+Cjxicj4KRGFuaWVsoFMuoEhpcnNjaGJlcmegYW5koERlYnJhoEEuoExlTGV3ZXI8YnI+CqCgIkVmZmljaWVudKBEZWNvZGluZ6BvZqBQcmVmaXigQ29kZXMiPGJyPgqgoKBDb21tdW5pY2F0aW9uc6BvZqB0aGWgQUNNLKBBcHJpbKAxOTkwLKBWb2ygMzMsoE51bWJlcqA0Ljxicj4KoKCgWW91oG1pZ2h0oGJloGFibGWgdG+gZ2V0oGFuoGVsZWN0cm9uaWOgY29weaBvZqB0aGlzPGJyPgqgoKBmcm9toHRoZaBBQ02gRGlnaXRhbKBMaWJyYXJ5Ljxicj4KPGJyPgpEYXZpZKBKLqBXaGVlbGVyPGJyPgqgoKBQcm9ncmFtoGJyZWQzLmOgYW5koGFjY29tcGFueWluZ6Bkb2N1bWVudKBicmVkMy5wcy48YnI+CqCgoFRoaXOgY29udGFpbnOgdGhloGlkZWGgYmVoaW5koHRoZaBtdWx0aS10YWJsZaBIdWZmbWFuoGNvZGluZ6BzY2hlbWUuPGJyPgqgoKBmdHA6Ly9mdHAuY2wuY2FtLmFjLnVrL3VzZXJzL2RqdzMvPGJyPgo8YnI+CkpvbqBMLqBCZW50bGV5oGFuZKBSb2JlcnSgU2VkZ2V3aWNrPGJyPgqgoCJGYXN0oEFsZ29yaXRobXOgZm9yoFNvcnRpbmegYW5koFNlYXJjaGluZ6BTdHJpbmdzIjxicj4KoKCgQXZhaWxhYmxloGZyb22gU2VkZ2V3aWNrJ3Ogd2VioHBhZ2UsPGJyPgqgoKB3d3cuY3MucHJpbmNldG9uLmVkdS9+cnM8YnI+CjwvcD48L2Rpdj4KPHA+VGhlIGZvbGxvd2luZyBwYXBlciBnaXZlcyB2YWx1YWJsZSBhZGRpdGlvbmFsIGluc2lnaHRzIGludG8KdGhlIGFsZ29yaXRobSwgYnV0IGlzIG5vdCBpbW1lZGlhdGVseSB0aGUgYmFzaXMgb2YgYW55IGNvZGUgdXNlZAppbiBiemlwMi48L3A+CjxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPlBldGVyoEZlbndpY2s6PGJyPgqgoKBCbG9ja6BTb3J0aW5noFRleHSgQ29tcHJlc3Npb248YnI+CqCgoFByb2NlZWRpbmdzoG9moHRoZaAxOXRooEF1c3RyYWxhc2lhbqBDb21wdXRlcqBTY2llbmNloENvbmZlcmVuY2UsPGJyPgqgoKCgoE1lbGJvdXJuZSygQXVzdHJhbGlhLqCgSmFuoDMxoC2gRmVioDIsoDE5OTYuPGJyPgqgoKBmdHA6Ly9mdHAuY3MuYXVja2xhbmQuYWMubnovcHViL3BldGVyLWYvQUNTQzk2cGFwZXIucHM8L3A+PC9kaXY+CjxwPkt1bmloaWtvIFNhZGFrYW5lJ3Mgc29ydGluZyBhbGdvcml0aG0sIG1lbnRpb25lZCBhYm92ZSwgaXMKYXZhaWxhYmxlIGZyb206PC9wPgo8ZGl2IGNsYXNzPSJsaXRlcmFsbGF5b3V0Ij48cD5odHRwOi8vbmFvbWkuaXMucy51LXRva3lvLmFjLmpwL35zYWRhL3BhcGVycy9TYWRhOThiLnBzLmd6PGJyPgo8L3A+PC9kaXY+CjxwPlRoZSBNYW5iZXItTXllcnMgc3VmZml4IGFycmF5IGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gaXMKZGVzY3JpYmVkIGluIGEgcGFwZXIgYXZhaWxhYmxlIGZyb206PC9wPgo8ZGl2IGNsYXNzPSJsaXRlcmFsbGF5b3V0Ij48cD5odHRwOi8vd3d3LmNzLmFyaXpvbmEuZWR1L3Blb3BsZS9nZW5lL1BBUEVSUy9zdWZmaXgucHM8YnI+CjwvcD48L2Rpdj4KPHA+RmluYWxseSwgdGhlIGZvbGxvd2luZyBwYXBlcnMgZG9jdW1lbnQgc29tZQppbnZlc3RpZ2F0aW9ucyBJIG1hZGUgaW50byB0aGUgcGVyZm9ybWFuY2Ugb2Ygc29ydGluZwphbmQgZGVjb21wcmVzc2lvbiBhbGdvcml0aG1zOjwvcD4KPGRpdiBjbGFzcz0ibGl0ZXJhbGxheW91dCI+PHA+SnVsaWFuoFNld2FyZDxicj4KoKCgT26gdGhloFBlcmZvcm1hbmNloG9moEJXVKBTb3J0aW5noEFsZ29yaXRobXM8YnI+CqCgoFByb2NlZWRpbmdzoG9moHRoZaBJRUVFoERhdGGgQ29tcHJlc3Npb26gQ29uZmVyZW5jZaAyMDAwPGJyPgqgoKCgoFNub3diaXJkLKBVdGFoLqCgMjgtMzCgTWFyY2igMjAwMC48YnI+Cjxicj4KSnVsaWFuoFNld2FyZDxicj4KoKCgU3BhY2UtdGltZaBUcmFkZW9mZnOgaW6gdGhloEludmVyc2WgQi1XoFRyYW5zZm9ybTxicj4KoKCgUHJvY2VlZGluZ3Ogb2agdGhloElFRUWgRGF0YaBDb21wcmVzc2lvbqBDb25mZXJlbmNloDIwMDE8YnI+CqCgoKCgU25vd2JpcmQsoFV0YWguoKAyNy0yOaBNYXJjaKAyMDAxLjxicj4KPC9wPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvYm9keT4KPC9odG1sPgo=