PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+CjxoZWFkPgogICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KICAgPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNb3ppbGxhLzQuNzMgW2VuXSAoV2luOTg7IFUpIFtOZXRzY2FwZV0iPgogICA8bWV0YSBuYW1lPSJBdXRob3IiIGNvbnRlbnQ9IkdyZWcgQWRhbXMiPgogICA8dGl0bGU+SGVscCBQYXJ0IDE8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2RlZmF1bHRfc3R5bGUuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgYWxpZ249cmlnaHQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuLCBUaW1lcywgc2VyaWYiPjxmb250IHNpemU9LTE+Q29weXJpZ2h0CiZjb3B5OyAyMDAxIE9iamVjdCBUZWNobm9sb2d5IEludGVybmF0aW9uYWwsIEluYy48L2ZvbnQ+PC9mb250PjwvZGl2Pgo8ZGl2IEFMSUdOPXJpZ2h0Pjx0YWJsZSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTIgV0lEVEg9IjEwMCUiID4KPHRyPgo8dGQgQUxJR049TEVGVCBWQUxJR049VE9QIENPTFNQQU49IjIiIEJHQ09MT1I9IiMwMDgwQzAiPjxiPjxmb250IGZhY2U9IkFyaWFsLEhlbHZldGljYSI+PGZvbnQgY29sb3I9IiNGRkZGRkYiPiZuYnNwO0VjbGlwc2UKQ29ybmVyIEFydGljbGU8L2ZvbnQ+PC9mb250PjwvYj48L3RkPgo8L3RyPgo8L3RhYmxlPjwvZGl2PgoKPGgxPiA8aW1nIFNSQz0iSWRlYS5qcGciIGhlaWdodD04NiB3aWR0aD0xMjA+PC9oMT4KCjxjZW50ZXI+CjxoMT4KSGVscCCWIFBhcnQgMTxicj4KQ29udHJpYnV0aW5nIGEgbGl0dGxlIGhlbHA8L2gxPjwvY2VudGVyPgo8Yj5TdW1tYXJ5PC9iPgo8YnI+VGhlIEVjbGlwc2UgcGxhdGZvcm2ScyBoZWxwIHN5c3RlbSBkZWZpbmVzIHR3byBleHRlbnNpb24gcG9pbnRzICg8dHQ+ImNvbnRyaWJ1dGlvbnMiCjwvdHQ+YW5kPHR0PiJjb250ZXh0cyI8L3R0PikKdGhhdCBhbGxvdyBpbmRpdmlkdWFsIHBsdWctaW5zIHRvIGNvbnRyaWJ1dGUgb25saW5lIGhlbHAgYW5kIGNvbnRleHQtc2Vuc2l0aXZlCmhlbHAgZm9yIHRoZWlyIGNvbXBvbmVudHMuIEluIHRoaXMgYXJ0aWNsZSB3ZSB3aWxsIGludmVzdGlnYXRlIHRoZSCTY29udHJpYnV0aW9uc5QKZXh0ZW5zaW9uIHBvaW50IGFuZCBob3cgeW91IGNhbiB1c2UgaXQgdG8gY29udHJpYnV0ZSBkb2N1bWVudGF0aW9uIGZvcgp5b3VyIHBsdWctaW4uCjxwPjxiPkJ5IEdyZWcgQWRhbXMsIE9USSBhbmQgRG9yaWFuIEJpcnNhbiwgSUJNPC9iPgo8YnI+PGZvbnQgc2l6ZT0tMT5VcGRhdGVkIE1heSAyOCwgMjAwMTwvZm9udD4KPGNlbnRlcj4KPGhyIHNpemU9MiB3aWR0aD0iMTAwJSIgYWxpZ249Y2VudGVyPjwvY2VudGVyPgoKPGgyPgpJbnRyb2R1Y3Rpb248L2gyPgpUaGUgRWNsaXBzZSBwbGF0Zm9ybZJzIGhlbHAgc3lzdGVtIGFsbG93cyB5b3UgdG8gY29udHJpYnV0ZSB5b3VyIHBsdWctaW6ScyBvbmxpbmUgCmhlbHAgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLmhlbHAuY29udHJpYnV0aW9ucyBleHRlbnNpb24gcG9pbnQuIFlvdSBjYW4gZWl0aGVyIApjb250cmlidXRlIHRoZSBvbmxpbmUgaGVscCBhcyBwYXJ0IG9mIHlvdXIgY29kZSBwbHVnLWluIG9yIHByb3ZpZGUgaXQgc2VwYXJhdGVseSAKaW4gaXRzIG93biBkb2N1bWVudGF0aW9uIHBsdWctaW4uIFRoaXMgc2VwYXJhdGlvbiBpcyBiZW5lZmljaWFsIGluIHRob3NlIHNpdHVhdGlvbnMgCndoZXJlIHRoZSBjb2RlIGFuZCBkb2N1bWVudGF0aW9uIHRlYW1zIGFyZSBkaWZmZXJlbnQgZ3JvdXBzIG9yIHdoZXJlIHlvdSB3YW50IAp0byByZWR1Y2UgdGhlIGNvdXBsaW5nL2RlcGVuZGVuY3kgYmV0d2VlbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgY29kZS4gVGhlIHBsYXRmb3JtknMgCmhlbHAgZmFjaWxpdGllcyBwcm92aWRlIHlvdSB3aXRoIHRoZSByYXcgYnVpbGRpbmcgYmxvY2tzIHRvIHN0cnVjdHVyZSBhbmQgY29udHJpYnV0ZSAKeW91ciBoZWxwLiBJdCBkb2VzIG5vdCBkaWN0YXRlIHN0cnVjdHVyZSBvciBncmFudWxhcml0eSBvZiBkb2N1bWVudGF0aW9uLiBUaGUgCnBsYXRmb3JtIGRvZXMgaG93ZXZlciBwcm92aWRlIGFuZCBjb250cm9sIHRoZSBpbnRlZ3JhdGVkIGhlbHAgdmlld2VycyB0aHVzIGVuc3VyaW5nIApzZWFtbGVzcyBpbnRlZ3JhdGlvbiBvZiB5b3VyIGRvY3VtZW50YXRpb24uIAo8cD5UaGUgb3JnLmVjbGlwc2UuaGVscC5jb250cmlidXRpb25zIGV4dGVuc2lvbiBwb2ludCBwcm92aWRlcyBmb3VyIGVsZW1lbnRzCnRocm91Z2ggd2hpY2ggeW91IGNhbiBjb250cmlidXRlIHlvdXIgaGVscCwgdGhleSBhcmU6Cjx1bD4KPGxpPgp0b3BpY3M8L2xpPgoKPGxpPgppbmZvc2V0IChhbHNvIGtub3duIGFzIGEgYm9vayk8L2xpPgoKPGxpPgppbmZvdmlldzwvbGk+Cgo8bGk+CmFjdGlvbnMgKGFsc28ga25vd24gYXMgd2lyaW5nKTwvbGk+CjwvdWw+ClRoZSB0b3BpY3MsIGluZm9zZXQgYW5kIGFjdGlvbnMgY29udHJpYnV0aW9ucyBhbGwgc3BlY2lmeSBhbiBhc3NvY2lhdGVkCnhtbCBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGRldGFpbHMgb2YgdGhlIGNvbnRyaWJ1dGlvbi4gSW4gdGhlIHJlbWFpbmRlcgpvZiB0aGlzIGFydGljbGUgd2Ugd2lsbCBjcmVhdGUgYSBkb2N1bWVudGF0aW9uIHBsdWctaW4gdGhhdCB1c2VzIGFsbCBmb3VyCm9mIHRoZXNlIGVsZW1lbnRzLiBCeSB0aGUgdGltZSB3ZZJyZSBkb25lLCB5b3WSbGwgaGF2ZSB5b3VyIGZpcnN0IG9ubGluZQpoZWxwIHBsdWctaW4uCjxoMj4KTWFraW5nIHRoZSBwbHVnLWluIGFuZCBjb250ZW50PC9oMj4KQSBjb250ZW50IGF1dGhvciBzdXBwbGllcyBvbmUgb3IgbW9yZSBIVE1MIGZpbGVzIGNvbnRhaW5pbmcgdGhlIGFjdHVhbApkb2N1bWVudGF0aW9uLiBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgdGhlIHBsYXRmb3JtIG9uIHRoZQpncmFudWxhcml0eSBvZiB0aGUgSFRNTCBmaWxlcy4gVGhhdCBpcywgdGhlIGRvY3VtZW50YXRpb24gYXV0aG9ycyBjYW4gb3B0CnRvIHVzZSBvbmUgbWFzc2l2ZSBIVE1MIGZpbGUsIG9yIG51bWVyb3VzIHNtYWxsZXIgZ3JhbnVsYXJpdHkgSFRNTCBmaWxlcy4KV2Ugd2lsbCBzdGFydCBieSBhc3N1bWluZyB0aGF0IHlvdSBhbHJlYWR5IGhhdmUgc29tZSBodG1sIGZpbGVzIHRoYXQgeW91CndhbnQgdG8gaW50ZWdyYXRlIGludG8gdGhlIEVjbGlwc2UgcGxhdGZvcm0uIExldJJzIGFzc3VtZSB5b3VyIGNvbnRlbnQKaXMgYXJyYW5nZWQgaW50byB0aGUgZm9sbG93aW5nIGRpcmVjdG9yeSB0cmVlLgo8YmxvY2txdW90ZT48dHQ+ZG9jLzwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7IGNvbmNlcHRzLzwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNvbmNlcHQxLmh0bWw8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjb25jZXB0MV8xLmh0bWw8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjb25jZXB0MV8yLmh0bWw8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyB0YXNrcy88L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0YXNrMS5odG1sPC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdGFzazIuaHRtbDwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHRhc2szXzEuaHRtbDwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHRhc2szXzIuaHRtbDwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7IHJlZi88L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZWYxLmh0bWw8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZWYyLmh0bWw8L3R0PjwvYmxvY2txdW90ZT4KQ3JlYXRlIGEgcGx1Zy1pbiBkaXJlY3RvcnkgY2FsbGVkIG9yZy5lY2xpcHNlLmhlbHBhcnRpY2xlIGFuZCBwbGFjZSB0aGUgYWJvdmUgCjxpPmRvY1wgPC9pPnN1Yi10cmVlIGludG8gaXQ8aT4uIDwvaT5Ob3cgY3JlYXRlIGFuIGluaXRpYWwgcGx1Z2luLnhtbCBmaWxlIHdpdGggCnRoZSBmb2xsb3dpbmcgY29udGVudDogCjxibG9ja3F1b3RlPjx0dD4mbHQ7P3htbCB2ZXJzaW9uPSIxLjAiPz48L3R0Pgo8YnI+PHR0PiZsdDtwbHVnaW48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyBuYW1lID0gIk9ubGluZSBIZWxwIFNhbXBsZSI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyBpZCA9ICJvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZSI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyB2ZXJzaW9uID0gIjAuOSI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyBwcm92aWRlci1uYW1lID0gIk9iamVjdCBUZWNobm9sb2d5IEludGVybmF0aW9uYWwsCkluYy4iPjwvdHQ+Cjxicj48dHQ+Jmx0Oy9wbHVnaW4+PC90dD48L2Jsb2NrcXVvdGU+ClRvIGhlbHAgeW91IGdldCBzdGFydGVkIGhlcmUgaXMgYSB6aXAgZmlsZSBjb250YWluaW5nIHRoZSBhYm92ZSA8YSBocmVmPSJpbml0aWFsc3RydWN0dXJlLnppcCI+aW5pdGlhbCAKcGx1Zy1pbiBzdHJ1Y3R1cmU8L2E+LiBUaGlzIHBsdWctaW4gbWFuaWZlc3QgZmlsZSBkb2Vzbid0IGFjdHVhbGx5IGludGVncmF0ZSBhbnl0aGluZyAKeWV0IGJ1dCBzb29uIHdlIHdpbGwgYWRkIG91ciBjb250cmlidXRpb25zIHRvIGl0LiA8YnI+CiZuYnNwOwo8YnI+Jm5ic3A7CjxoMj4KVG9waWNzICZhbXA7IEhUTUwgQ29udGVudDwvaDI+Ck5vdyB0aGF0IHdlIGhhdmUgb3VyIHNhbXBsZSBjb250ZW50IGZpbGVzIHdlIGFyZSByZWFkeSB0byBjcmVhdGUgb3VyIDxiPnRvcGljcwo8L2I+ZmlsZS4KQSB0b3BpY3MgZmlsZSBkZWZpbmVzIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhlIEhUTUwgY29udGVudCBmaWxlcwpieSBtYXBwaW5nIGEgdG9waWMgaWQgYW5kIGxhYmVsIHRvIGEgcmVmZXJlbmNlIGluIG9uZSBvZiB0aGUgSFRNTCBmaWxlcy4KQSB0b3BpY3MgZmlsZSBhY3RzIGxpa2UgYSB0YWJsZSBvZiBjb250ZW50cyBmb3IgYSBzZXQgb2YgaHRtbCBjb250ZW50LgpUZWFtcyBtaWdyYXRpbmcgb250byB0aGUgRWNsaXBzZSBwbGF0Zm9ybSBjYW4gcXVpY2tseSByZXVzZSBleGlzdGluZyBkb2N1bWVudGF0aW9uCmJ5IGRlZmluaW5nIGVudHJ5IHBvaW50cyBpbnRvIHRoZWlyIGV4aXN0aW5nIGRvY3VtZW50YXRpb24gdmlhIHRoZSB0b3BpY3MKZmlsZS4gQSBwbHVnLWluIGNhbiBoYXZlIG9uZSBvciBtb3JlIHRvcGljcyBmaWxlcy4gVG9waWNzIGZpbGVzIGFyZSBzb21ldGltZXMKcmVmZXJyZWQgdG8gYXMgbmF2aWdhdGlvbiBmaWxlcyBzaW5jZSB0aGV5IGRlc2NyaWJlIGhvdyB0byBuYXZpZ2F0ZSB0aGUKaHRtbCBjb250ZW50LiBXZSBoYXZlIHRocmVlIG1haW4gY29udGVudCBhcmVhcywgY29uY2VwdHMsIHRhc2tzIGFuZCByZWZlcmVuY2UuCk91ciBvYnZpb3VzIGNob2ljZXMgYXJlIG9uZSBiaWcgdG9waWNzIGZpbGUsIG9yIGEgdG9waWNzIGZpbGUgZm9yIGVhY2gKbWFpbiBjb250ZW50IGFyZWEuIEtlZXAgaW4gbWluZCB0aGlzIGRlY2lzaW9uIGlzIG91cnMgdG8gbWFrZSwgYW5kIGlzIG5vdAphIGRlY2lzaW9uIHRoZSBwbGF0Zm9ybSBkaWN0YXRlcyB0byB1cy4gSWYgd2Ugd2VyZSCTcmVhbGx5lCB3cml0aW5nIG91cgpkb2N1bWVudGF0aW9uIHdlIHdvdWxkIGhhdmUgYSBsYXJnZXIgbnVtYmVyIG9mIGZpbGVzIHNvLCB3aXRoIHRoYXQgaW4gbWluZAp3ZSB3aWxsIHRyeSBhbmQga2VlcCB0aGluZ3MgbWFuYWdlYWJsZSBieSBjcmVhdGluZyBhIHRvcGljcyBmaWxlIGZvciBlYWNoCm9mIHRoZSB0aHJlZSBjb250ZW50IGFyZWFzIGFzIGZvbGxvd3M6Cgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj50b3BpY3NfVGFza3MueG1sPC9iPgo8YmxvY2txdW90ZT48dHQ+Jmx0O3RvcGljcyBpZD0idGFza3NBbGwiPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBpZD0icGxhaW5UYXNrcyIgbGFiZWw9IlBsYWluIFN0dWZmIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgbGFiZWw9IlRhc2sxIgpocmVmPSJkb2MvdGFza3MvdGFzazEuaHRtbCIvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBsYWJlbD0iVGFzazIiCmhyZWY9ImRvYy90YXNrcy90YXNrMi5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy90b3BpYz48L3R0PiZuYnNwOzx0dD4mbmJzcDsmbmJzcDsmbmJzcDsKJmx0O3RvcGljIGlkPSJmdW5UYXNrcyIgbGFiZWw9IkZ1biBTdHVmZiIgPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBsYWJlbD0iVGFzazNfMSIKaHJlZj0iZG9jL3Rhc2tzL3Rhc2szXzEuaHRtbCIvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBsYWJlbD0iVGFzazNfMiIKaHJlZj0iZG9jL3Rhc2tzL3Rhc2szXzIuaHRtbCIvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDsvdG9waWM+PC90dD4KPGJyPjx0dD4mbHQ7L3RvcGljcz48L3R0PjwvYmxvY2txdW90ZT4KPGI+dG9waWNzX0NvbmNlcHRzLnhtbDwvYj4KPGJsb2NrcXVvdGU+PHR0PiZsdDt0b3BpY3MgaWQ9ImNvbmNlcHRzQWxsIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgbGFiZWw9IkNvbmNlcHQxIiBocmVmPSJkb2MvY29uY2VwdHMvY29uY2VwdDEuaHRtbCI+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGxhYmVsPSJDb25jZXB0MV8xIgpocmVmPSJkb2MvY29uY2VwdHMvY29uY2VwdDFfMS5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGxhYmVsPSJDb25jZXB0MV8yIgpocmVmPSJkb2MvY29uY2VwdHMvY29uY2VwdDFfMi5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy90b3BpYz48L3R0PiA8dHQ+Jmx0Oy90b3BpY3M+PC90dD48L2Jsb2NrcXVvdGU+CjxiPnRvcGljc19SZWYueG1sPC9iPgo8YmxvY2txdW90ZT48dHQ+Jmx0O3RvcGljcyBpZD0icmVmQWxsIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgbGFiZWw9IlJlZjEiIGhyZWY9ImRvYy9yZWYvcmVmMS5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGxhYmVsPSJSZWYyIiBocmVmPSJkb2MvcmVmL3JlZjIuaHRtbCIvPjwvdHQ+Cjxicj48dHQ+Jmx0Oy90b3BpY3M+PC90dD48L2Jsb2NrcXVvdGU+ClRvcGljcyBhcmUgY29udHJpYnV0ZWQgYXMgcGFydCBvZiB0aGUgPGk+dG9waWNzPC9pPiBjb250YWluZXIgZWxlbWVudC4gQSA8aT50b3BpYzwvaT4gCmNhbiBiZSBhIHNpbXBsZSBsaW5rIHRvIGNvbnRlbnQgKGUuZy4gVGFzazEpIG9yIGEgaGllcmFyY2hpY2FsIGdyb3VwaW5nIG9mIHN1Yi10b3BpY3MgCihlLmcuIEZ1biBTdHVmZiksIG9yIGJvdGggKGUuZy4gQ29uY2VwdDEpLiBXaGVuIHdlIHN0YXJ0IHdpcmluZyB0aGVzZSB0b3BpY3MgaW50byAKdGhlIG92ZXJhbGwgZG9jdW1lbnRhdGlvbiB3ZWIgd2Ugd2lsbCByZWZlciB0byB0aGVtIGJ5IHRoZWlyIGlkLiBXaGVuIHVzZWQgYXMgCmEgbGluaywgdGhlIGFyZ3VtZW50IHRvIGhyZWYgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwbHVnLWluLiAKT25seSB0b3BpY3Mgd2l0aCBhbiBpZCBjYW4gYmUgbWFuaXB1bGF0ZWQuIFdlIGNhbiBhbHNvIHJlZmVyIHRvIHRoZSBpZCBhc3NvY2lhdGVkIAp3aXRoIHRoZSB0b3BpY3MgZWxlbWVudCBpZiB3ZSB3YW50IHRvIHJlZmVyIHRvIGFsbCBvZiBpdHMgZW5jbG9zZWQgdG9waWMgZW50cmllcy4gCkxhdGVyIHdlIHdpbGwgbW9kaWZ5IHRoZSBwbHVnaW4ueG1sIHRvIGFkZCB0aGUgYWN0dWFsIGNvbnRyaWJ1dGlvbnMgcG9pbnRpbmcgdG8gCnRoZXNlIGZpbGVzLiAKPGgyPgpDcmVhdGluZyBhIGJvb2s8L2gyPgpOb3cgdGhhdCB3ZSBoYXZlIG91ciByYXcgY29udGVudCBhbmQgdG9waWMgZmlsZXMgaXSScyB0aW1lIHRvIGNyZWF0ZSBvdXIKaW5mb3NldC4gQW4gaW5mb3JtYXRpb24gc2V0IChpbmZvc2V0KSBpcyBhIGRvY3VtZW50YXRpb24gd2ViIG9yIGJvb2suIFRoZQpFY2xpcHNlIHBsYXRmb3JtIGNhbiBkaXNwbGF5IGFueSBudW1iZXIgb2YgaW5mb3NldHMuIEFuIGluZm9zZXQgY29udGFpbnMKb25lIG9yIG1vcmUgaW5mb3ZpZXdzLiBBbiBpbmZvdmlldyBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgc2VtYW50aWMgZ3JvdXBpbmcKd2l0aGluIHRoZSBpbmZvc2V0LiBJbmZvdmlld3MgY291bGQgYmUgdXNlZCB0byBjcmVhdGUgbXVsdGlwbGUgdmlld3Mgb250bwp0aGUgZG9jdW1lbnQgd2ViLiBGb3IgZXhhbXBsZSB3ZSBjb3VsZCB1c2UgdGhlbSB0byBjcmVhdGUgYW4gaW50ZWdyYXRlZAp2aWV3IG9mIGRvY3VtZW50YXRpb24gc3VwcGxpZWQgYnkgbWFueSBjb21wb25lbnRzLCBvciBhIGNvbXBvbmVudCBiYXNlZAp2aWV3LiBXZSBjb3VsZCBhbHNvIHVzZSB0aGVtIHRvIGNyZWF0ZSBzZXBhcmF0ZSB2aWV3cyBmb3IgZ2V0dGluZyBzdGFydGVkLAp0YXNrcyBhbmQgY29uY2VwdHMsIG9yIGFzIHdlIHdpbGwgc2hvcnRseSBkbywgY3JlYXRlIG9uZSBpbmZvdmlldyB0byBzaG93CnRoZW0gYWxsLiBUaGUgdGVybSBpbmZvdmlldyBpcyB1c2VkIHRvIGF2b2lkIGNvbGxpc2lvbi9jb25mdXNpb24gd2l0aCB0aGUKdGVybSB2aWV3IGluIHRoZSBwbGF0Zm9ybZJzIHVzZXIgaW50ZXJmYWNlLiBFYWNoIGluZm92aWV3IGNvbnRhaW5zIGEgY29sbGVjdGlvbgpvZiB0b3BpY3MuIFNvbWV0aW1lcyBhIGhpZ2hlci1sZXZlbCBjb21wb25lbnQgb3IgcHJvZHVjdCB0ZWFtIGlzIHJlc3BvbnNpYmxlCmZvciB3ZWF2aW5nIHRvZ2V0aGVyIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0b3BpY3Mgc3VwcGxpZWQgYnkgYSBudW1iZXIKb2YgaXRzIGNvbXBvbmVudCB0ZWFtcy4gRm9yIG91ciBwdXJwb3NlcyB3ZZJsbCBhc3N1bWUgdGhhdCBvdXIgcGx1Zy1pbgpzaG91bGQgc3VwcGx5IGJvdGggdGhlIHRvcGljcyBhbmQgdGhlIGJvb2sgdGhhdCBpbnRlZ3JhdGVzIHRoZSB0b3BpY3MuClRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgYXJ0aWNsZSB3ZSB3aWxsIGxvb2sgYXQgaG93IHRvIG1ha2UgeW91ciBkb2N1bWVudGF0aW9uCnBsdWctaW4gbGl2ZSBoYXBwaWx5IGluIGJvdGggYSBjb21wb25lbnQgd29ybGQgYW5kIGEgcHJvZHVjdCB3b3JsZC4KPGJyPiZuYnNwOwo8cD5UaGUgZm9sbG93aW5nIGluZm9zZXQgaGFzIGlkIJNpbmZvc2V0X1NhbXBsZUd1aWRllCBhbmQgZGVjbGFyZXMgb25lCmluZm92aWV3IHdob3NlIGlkIGlzIJN2aWV3X0NvbnRlbnRzlC4gVGhlIGlkIG9mIHRoZSBpbmZvdmlldyB3aWxsIGJlY29tZQppbXBvcnRhbnQgYXMgd2Ugc3RhcnQgd2lyaW5nIGluIHRoZSBoaWdoIGxldmVsIHN0cnVjdHVyZSBmb3IgdGhlIGluZm92aWV3LAphbmQgdWx0aW1hdGVseSB3aXJpbmcgaW4gdGhlIHRvcGljcyB3ZSBkZWZpbmVkIGVhcmxpZXIuCjxwPjxiPmluZm9zZXRfU2FtcGxlR3VpZGUueG1sPC9iPgo8YmxvY2txdW90ZT48dHQ+Jmx0O2luZm9zZXQgaWQ9ImluZm9zZXRfU2FtcGxlR3VpZGUiIGxhYmVsPSJPbmxpbmUgSGVscApTYW1wbGUiIGhyZWY9IjxiPmRvYy9zcGxhc2guaHRtbDwvYj4iPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDs8Yj5pbmZvdmlldzwvYj4gbGFiZWw9IkNvbnRlbnQiIGlkPSJ2aWV3X0NvbnRlbnRzIgovPjwvdHQ+Cjxicj48dHQ+Jmx0Oy9pbmZvc2V0PjwvdHQ+PC9ibG9ja3F1b3RlPgpTZWxlY3RpbmcgdGhlIGJvb2sgY2FsbGVkICJPbmxpbmUgSGVscCBTYW1wbGUiIHNob3dzIG9uZSBwb3NzaWJsZSBpbmZvdmlldwpjYWxsZWQgIkNvbnRlbnQiLiBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyB0aGUgZXZlbnR1YWwgbG9vayBvZiBvdXIgaGVscC4KSWYgbXVsdGlwbGUgaW5mb3ZpZXdzIGhhZCBiZWVuIGRlY2xhcmVkIGJ5IG91ciB4bWwgZmlsZSB0aGV5IHdvdWxkIHNob3cKdXAgYXMgYWRkaXRpb25hbCAiaW5mb3ZpZXcgdGFicyIgYWxvbmdzaWRlIHRoZSAiQ29udGVudCIgdGFiLiBOb3RpY2UgdGhhdApvdXIgc3BsYXNoIHBhZ2UgKGNvbnRhaW5lZCBpbiBzcGxhc2guaHRtbCZuYnNwOyBhbmQgZGVjbGFyZWQgYWJvdmUpIGlzCmFsc28gZGlzcGxheWVkLiZuYnNwOwo8YmxvY2txdW90ZT48aW1nIFNSQz0iZmluYWwuanBnIiBoZWlnaHQ9NDM3IHdpZHRoPTY2OD48L2Jsb2NrcXVvdGU+Cgo8YnI+Jm5ic3A7CjxoMj4KV2lyaW5nIGluIHRoZSB0b3AgbGV2ZWwgc3RydWN0dXJlPC9oMj4KTmV4dCBvbiBvdXIgYWdlbmRhIGlzIHRvIGRlZmluZSB0aGUgdG9wLWxldmVsIHN0cnVjdHVyZSB0aGF0IGEgdXNlciB3aWxsCnNlZSB3aXRoaW4gb3VyIJNDb250ZW50c5QgaW5mb3ZpZXcuIFdlIHN0YXJ0IGJ5IGNyZWF0aW5nIHRoZSBmb2xsb3dpbmcKdG9waWNzIGZpbGUgZm9yIHRoZSB0b3AtbGV2ZWwgdG9waWNzOgo8cD48Yj50b3BpY3Nfdmlld19Db250ZW50cy54bWw8L2I+CjxibG9ja3F1b3RlPjx0dD4mbHQ7dG9waWNzIGlkPSJ0b3BpY3Nfdmlld19Db250ZW50cyI+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGlkPSJjb25jZXB0c1Jvb3QiIGxhYmVsPSJDb25jZXB0cyIKLz48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgaWQ9InRhc2tzUm9vdCIgbGFiZWw9IlRhc2tzIiAvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBpZD0iZnVuUm9vdCIgbGFiZWw9IkZ1biBUaGluZ3MiIC8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGlkPSJyZWZSb290IiBsYWJlbD0iUmVmZXJlbmNlIiAvPjwvdHQ+Cjxicj48dHQ+Jmx0Oy90b3BpY3M+PC90dD48L2Jsb2NrcXVvdGU+Ck5vdyBjb21lcyB0aGUgZnVuIHBhcnQsIHRpbWUgdG8gk3dpcmUgaW6UIHRoZXNlIHRvcGljcyBpbnRvIG91ciCTQ29udGVudHOUCmluZm92aWV3LiBPbmNlIHdlknZlIGRvbmUgdGhhdCB3ZSBjYW4gdGhlbiBwcm9jZWVkIHRvIHdpcmUgaW4gYWxsIG9mIG91cgpvdGhlciB0b3BpY3MgdW5kZXJuZWF0aCB0aGUgYWJvdmUgdG9wLWxldmVsIHRvcGljcy4gV2Ugc3RhcnQgYnkgd2lyaW5nCmluIHRoZSB0b3AtbGV2ZWwgdG9waWNzIHVzaW5nIHRoZSBmb2xsb3dpbmcgPGI+YWN0aW9ucwo8L2I+ZmlsZS4KPHA+PGI+YWN0aW9uc192aWV3X0NvbnRlbnRzLnhtbDwvYj4KPGJsb2NrcXVvdGU+PHR0PiZsdDthY3Rpb25zIGluZm92aWV3PSJvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS52aWV3X0NvbnRlbnRzIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7aW5zZXJ0PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZnJvbT0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUudG9waWNzX3ZpZXdfQ29udGVudHMiPC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdG89Im9yZy5lY2xpcHNlLmhlbHBhcnRpY2xlLnZpZXdfQ29udGVudHMiPC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYXM9ImNoaWxkIi8+PC90dD4KPGJyPjx0dD4mbHQ7L2FjdGlvbnM+PC90dD48L2Jsb2NrcXVvdGU+ClRoZSBmb2xsb3dpbmcgc25hcHNob3Qgc2hvd3Mgd2hhdCBvdXIgaW5mb3NldCAoT3V0bGluZSBIZWxwIFNhbXBsZSkgd2lsbApsb29rIGxpa2UgYXMgYSByZXN1bHQgb2Ygd2lyaW5nIGluIHRoZXNlIHRvcC1sZXZlbCB0b3BpY3MuIFRoZSB0aXRsZSAobGFiZWwpCm9mIHRoZSBpbmZvc2V0IGlzIG9ubHkgZGlzcGxheWVkIGluIHRoZSBjb21ibyBib3ggaWYgdGhlcmUgaXMgbW9yZSB0aGFuCm9uZSBpbmZvc2V0Lgo8YmxvY2txdW90ZT4gCiAgPGRpdiBhbGlnbj0ibGVmdCI+PGltZyBTUkM9InRvcGxldmVsLmpwZyIgaGVpZ2h0PTk5IHdpZHRoPTE5Nz48L2Rpdj4KPC9ibG9ja3F1b3RlPgoKPGgyPgpUYWtpbmcgYSBjbG9zZXIgbG9vayBhdCBhY3Rpb25zPC9oMj4KPGRpdiBhbGlnbj0ibGVmdCI+QmVmb3JlIHdlIGNvbnRpbnVlIGxldJJzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0aW9uIGZpbGUgCiAgYW5kIHRoZSBhY3Rpb24gZWxlbWVudHMgaXQgY29udGFpbnMuIFRoZSBhY3Rpb25zIGZpbGUgY29udGFpbnMgc2NyaXB0aW5nIGFjdGlvbnMgCiAgdG8gYmUgcGVyZm9ybWVkIG9uIHRvcGljcyBhbmQgaW5mb3ZpZXdzLiBDdXJyZW50bHkgdGhlcmUgaXMgb25seSBvbmUga2luZCBvZiAKICBhY3Rpb24sIHRoZSBpbnNlcnQgYWN0aW9uLCB3aGljaCBpcyB1c2VkIHRvIHdpcmUgdG9waWNzIGFuZCB2aWV3cyB0b2dldGhlciBpbnRvIAogIG9uZSBpbnRlZ3JhdGVkIGluZm9ybWF0aW9uIHdlYi4gVGhlIGFjdGlvbnMgYXJlIHN0cnVjdHVyYWwgYWN0aW9ucyAoaW5zZXJ0KSAKICBhbmQsIHRodXMsIGFwcGx5IHRvIGEgY2VydGFpbiBpbmZvdmlldy4gU28sIGFsbCB0aGUgaW5zZXJ0IGFjdGlvbnMgaW4gYW4gYWN0aW9ucyAKICBmaWxlIHdpcmUgdGhlaXIgdG9waWNzIGludG8gb25lIGluZm92aWV3LiBJZiB5b3Ugd2FudCB0byB3aXJlIGludG8gZGlmZmVyZW50IAogIGluZm92aWV3cywgeW91IHdpbGwgbmVlZCBhbiBhY3Rpb25zIGZpbGUgZm9yIGVhY2guIFRoZSBpbnNlcnRpb24gcG9pbnRzIGNhbiAKICBiZSB0b3BpY3Mgb3IgaW5mb3ZpZXdzLiZuYnNwOyBBIHRvcGljIGluZGljYXRlcyBpdHMgd2lsbGluZ25lc3MgdG8gYmUgYW4gaW5zZXJ0aW9uIAogIHBvaW50IGJ5IHByb3ZpZGluZyBhbiBpZC4gSW5mb3ZpZXdzIGFyZSByZXF1aXJlZCB0byBoYXZlIGlkJ3MuJm5ic3A7IE9ubHkgZnVsbHkgCiAgcXVhbGlmaWVkIGlkcyBhcmUgdXNlZCBhcyByZWZlcmVuY2VzLiBGb3IgZXhhbXBsZSwgdGhlIGZ1bGx5IHF1YWxpZmllZCB0b3BpYyAKICBpZCBvZiB0aGUgdG9waWMgJmx0O3RvcGljIGlkPSJjb25jZXB0c1Jvb3QgIiBsYWJlbD0iQ29uY2VwdHMiPiZuYnNwOyBpbiBvdXIgCiAgb3JnLmVjbGlwc2UuaGVscGFydGljbGUgcGx1Zy1pbiBpcyBvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS5jb25jZXB0c1Jvb3QuIEluIAogIHRoZSBhYm92ZSBhY3Rpb25zIGZpbGUgd2UgdG9vayB0aGUgdG9waWNzIGVsZW1lbnQgd2l0aCBmdWxseSBxdWFsaWZpZWQgaWQgIm9yZy5lY2xpcHNlLmhlbHBhcnRpY2xlLnRvcGljc192aWV3Q29udGVudHMiJm5ic3A7IAogIGFuZCB3aXJlZCBpdCBpbnRvIHRoZSBpbmZvdmlldyB3aXRoIGlkICJvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS52aWV3X0NvbnRlbnRzIi4gCjwvZGl2Pgo8cD5TaW5jZSB0aGUgaW5zZXJ0aW9uIHBvaW50cyBhcmUgc29tZXRpbWVzIGxvY2F0ZWQgaW4gb3RoZXIgcGx1Zy1pbnMsCmFuZCB0aGVzZSBwbHVnLWlucyBtYXkgbm90IGJlIGluc3RhbGxlZCwgb25lIGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBpbnNlcnRpb24KcG9pbnQuIEJ5IGRlZmF1bHQsIGlmIG5vbmUgb2YgdGhlIGNob2ljZXMgc3VjY2VlZCwgdGhlIHRvcGljIHN0YXlzIHVuZGVyCml0cyBjb21wb25lbnQgaGllcmFyY2h5LiBUaGUgInRvIiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSB0YXJnZXQgaW5zZXJ0aW9uCnBvaW50LiBUaGUgdG9waWMgc3BlY2lmaWVkIGJ5IHRoZSAiZnJvbSIgYXR0cmlidXRlIGlzIHRoZSB0b3BpYyBiZWluZyBpbnNlcnRlZC4mbmJzcDsKRm9sbG93aW5ncyBhcmUgc29tZSBwb3NzaWJsZSB3YXlzIHRvIGluc2VydCBhIHRvcGljIGFuZCB0aGV5IGFyZSBzcGVjaWZpZWQKdXNpbmcgdGhlICI8Yj5hczwvYj4iIGF0dHJpYnV0ZToKPHVsIHR5cGU9ZGlzYz4KPGxpPgpBcyBhIGNoaWxkIG9mIHRoZSBpbnNlcnRpb24gcG9pbnQsIHdoaWNoIGlzIHRoZSBtb3N0IGNvbW1vbi4gQXR0cmlidXRlOiZuYnNwOwphcyA9ICJjaGlsZCIuPC9saT4KCjxsaT4KQXMgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBpbnNlcnRpb24gcG9pbnQuIEF0dHJpYnV0ZSBhcyA9ICJmaXJzdC1jaGlsZCIuPC9saT4KCjxsaT4KQXMgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIGluc2VydGlvbiBwb2ludC4gQXR0cmlidXRlIGFzID0gImxhc3QtY2hpbGQiLjwvbGk+Cgo8bGk+CkFzIHRoZSBwcmV2aW91cyBzaWJsaW5nIG9mIHRoZSBpbnNlcnRpb24gcG9pbnQgKGkuZS4sIGp1c3QgYmVmb3JlIHRoZSBpbnNlcnRpb24KcG9pbnQgYXQgdGhlIHNhbWUgbGV2ZWwgaW4gdGhlIG5hdmlnYXRpb24gdHJlZSkuIEF0dHJpYnV0ZSBhcyA9ICJwcmV2LXNpYiIuPC9saT4KCjxsaT4KQXMgdGhlIG5leHQgc2libGluZyBvZiB0aGUgaW5zZXJ0aW9uIHBvaW50IChpLmUuLCBqdXN0IGFmdGVyIHRoZSBpbnNlcnRpb24KcG9pbnQgYXQgdGhlIHNhbWUgbGV2ZWwgaW4gdGhlIG5hdmlnYXRpb24gdHJlZSkuIEF0dHJpYnV0ZSBhcyA9ICJuZXh0LXNpYiIuPC9saT4KPC91bD4KQWx0ZXJuYXRpdmUgaW5zZXJ0aW9uIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkLiBUaGUgbmVzdGVkIGluc2VydCBzdWItZWxlbWVudHMgCm9mIHRoZSBpbnNlcnQgZWxlbWVudCBwcm92aWRlIHRoZXNlIGFsdGVybmF0aXZlcy4gVGhpcyBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIAoiZmFsbC1iYWNrIiBtZWNoYW5pc20gd2hlcmUgaWYgYW4gaW5zZXJ0IGFjdGlvbiBmYWlscywgdGhlIG5lc3RlZCBpbnNlcnQgYWN0aW9uIAp3aWxsIGJlIGV4ZWN1dGVkLiBPbmNlIHRoZSBmaXJzdCBjaG9pY2UgaW5zZXJ0aW9uIHBvaW50IGhhcyBiZWVuIHNhdGlzZmllZCwgdGhlIApvdGhlciBhbHRlcm5hdGl2ZSBpbnNlcnRpb24gcG9pbnRzIGFyZSBpZ25vcmVkLiA8YnI+CiZuYnNwOwo8aDI+CkludGVncmF0aW5nIG91ciB0b3BpY3M8L2gyPgpUaGUgdGltZSBoYXMgY29tZSB0byBmaW5hbGx5IGludGVncmF0ZSBvdXIgdG9waWNzIGludG8gdGhlIHRvcC1sZXZlbCB0b3BpY3Mgb2YgCnRoZSCTQ29udGVudHOUIGluZm92aWV3LiBUbyBkbyB0aGlzIHdlIG5lZWQgYW5vdGhlciBhY3Rpb25zIGZpbGUgdGhhdCB3ZSB3aWxsIApjYWxsIGFjdGlvbnNfQWxsLnhtbCAoc2luY2UgaXQgaW50ZWdyYXRlcyBhbGwgb2Ygb3VyIHRvcGljcykuIAo8cD48Yj5hY3Rpb25zX0FsbC54bWw8L2I+CjxibG9ja3F1b3RlPjx0dD4mbHQ7YWN0aW9ucyBpbmZvdmlldz0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUudmlld19Db250ZW50cyI+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O2luc2VydDwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZyb209Im9yZy5lY2xpcHNlLmhlbHBhcnRpY2xlLmNvbmNlcHRzQWxsIjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHRvPSJvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS5jb25jZXB0c1Jvb3QiPC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYXM9ImNoaWxkIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O2luc2VydDwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZyb209Im9yZy5lY2xpcHNlLmhlbHBhcnRpY2xlLnJlZkFsbCI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0bz0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUucmVmUm9vdCI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBhcz0iY2hpbGQiLz48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7aW5zZXJ0PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZnJvbT0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUucGxhaW5UYXNrcyI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0bz0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUudGFza3NSb290IjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGFzPSJjaGlsZCIvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtpbnNlcnQ8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBmcm9tPSJvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS5mdW5UYXNrcyI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0bz0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUuZnVuUm9vdCI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBhcz0iY2hpbGQiLz48L3R0PiA8dHQ+Jmx0Oy9hY3Rpb25zPjwvdHQ+PC9ibG9ja3F1b3RlPgpSZWNhbGwgdGhhdCB3ZSBoYWQgYSBudW1iZXIgb2YgdGFzayByZWxhdGVkIGh0bWwgZmlsZXMsIGFuZCB0aGUgc3RydWN0dXJlL25hdmlnYXRpb24Kb2YgdGhlc2UgZmlsZXMgd2FzIGRlZmluZWQgYnkgdG9waWNzX3Rhc2tzLnhtbCBhcyBmb2xsb3dzOgo8cD48Yj50b3BpY3NfVGFza3MueG1sPC9iPgo8YmxvY2txdW90ZT48dHQ+Jmx0O3RvcGljcyBpZD0idGFza3NBbGwiPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBpZD0icGxhaW5UYXNrcyIgbGFiZWw9IlBsYWluIFN0dWZmIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgbGFiZWw9IlRhc2sxIgpocmVmPSJkb2MvdGFza3MvdGFzazEuaHRtbCIvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpYyBsYWJlbD0iVGFzazIiCmhyZWY9ImRvYy90YXNrcy90YXNrMi5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy90b3BpYz48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgaWQ9ImZ1blRhc2tzIiBsYWJlbD0iRnVuIFN0dWZmIiA+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGxhYmVsPSJUYXNrM18xIgpocmVmPSJkb2MvdGFza3MvdGFzazNfMS5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljIGxhYmVsPSJUYXNrM18yIgpocmVmPSJkb2MvdGFza3MvdGFzazNfMi5odG1sIi8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy90b3BpYz48L3R0Pgo8YnI+PHR0PiZsdDsvdG9waWNzPjwvdHQ+PC9ibG9ja3F1b3RlPgpJbiB0aGUgYWJvdmUgYWN0aW9ucyBmaWxlIHdlIHVzZSB0aGUgaW5zZXJ0IGFzIGNoaWxkIGFjdGlvbiB0byB0YWtlIHRoZSB0b3BpYyAKd2l0aCBpZCBvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS5wbGFpblRhc2tzIGFuZCBpbnNlcnQgaXQgYW5kIGl0cyBzdWItdG9waWNzIHVuZGVyIAp0aGUgdG9waWMgd2l0aCBpZCBvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS50YXNrc1Jvb3QgCjxibG9ja3F1b3RlPjx0dD4mbHQ7aW5zZXJ0PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgZnJvbT0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUucGxhaW5UYXNrcyI8L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyB0bz0ib3JnLmVjbGlwc2UuaGVscGFydGljbGUudGFza3NSb290IjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGFzPSJjaGlsZCIvPjwvdHQ+PC9ibG9ja3F1b3RlPgpUaGUgYWN0aW9ucyBmaWxlIGFsc28gdGFrZXMgc29tZSBvZiBvdXIgbW9yZSBlbnRlcnRhaW5pbmcgdGFza3MgYW5kIGluc2VydHMKdGhlbSBpbnRvIHRoZSCTRnVuIFRoaW5nc5QgYXJlYSBvZiB0aGUgd2ViIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWN0aW9uLgo8YmxvY2txdW90ZT48dHQ+Jmx0O2luc2VydDwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZyb209Im9yZy5lY2xpcHNlLmhlbHBhcnRpY2xlLmZ1blRhc2tzIjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHRvPSJvcmcuZWNsaXBzZS5oZWxwYXJ0aWNsZS5mdW5Sb290IjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGFzPSJjaGlsZCIvPjwvdHQ+PC9ibG9ja3F1b3RlPgoKPGgyPgpGaW5pc2hpbmcgb3VyIHBsdWdpbjwvaDI+CkJlZm9yZSB3ZSBjb250aW51ZSBhIGJyaWVmIHJlY2FwIGlzIGluIG9yZGVyOgo8dWw+CjxsaT4KV2Ugc3RhcnRlZCBieSBjcmVhdGluZyBvdXIgcGx1Zy1pbiBhbmQgZG9jdW1lbnQgZmlsZXMuPC9saT4KCjxsaT4KTmV4dCB3ZSBjcmVhdGVkIHRvcGljIGZpbGVzIHRvIGRlc2NyaWJlIHRoZSBzdHJ1Y3R1cmUvbmF2aWdhdGlvbiBvZiBvdXIKY29udGVudC48L2xpPgoKPGxpPgpXZSB0aGVuIG1vdmVkIHVwIG9uZSBsZXZlbCBhYm92ZSBjb250ZW50LCB0byB0aGUgd2lyaW5nIGFuZCBpbnRlZ3JhdGlvbgpvZiBvdXIgYm9vay4gVG8gZG8gdGhpcyB3ZSBjcmVhdGVkIG91ciBpbmZvc2V0IHdpdGggaXRzIHNpbmdsZSBDb250ZW50cwppbmZvdmlldy48L2xpPgoKPGxpPgpOZXh0IHdlIGNyZWF0ZWQgYW5vdGhlciB0b3BpY3MgZmlsZSAodG9waWNzX3ZpZXdfQ29udGVudHMueG1sKSB0byBkZWZpbmUKdGhlIHRvcC1sZXZlbCB0b3BpY3MuPC9saT4KCjxsaT4KRmluYWxseSB3ZSB3aXJlZCBpdCBhbGwgdG9nZXRoZXIgdXNpbmcgdGhlIGFjdGlvbiBmaWxlcyBhY3Rpb25zX3ZpZXdfQ29udGVudHMueG1sCih0byB3aXJlIGluIHRoZSB0b3AgbGV2ZWwgdG9waWNzKSBhbmQgYWN0aW9uc19BbGwueG1sICh0byB3aXJlIGluIHRoZSBidWxrCm9mIG91ciB0b3BpY3MpLjwvbGk+CjwvdWw+Cgo8cD48YnI+VGhlIG9uZSByZW1haW5pbmcgcGllY2Ugb2Ygd29yayBpcyB0byB1cGRhdGUgb3VyIHBsdWdpbi54bWwgdG8gYWN0dWFsbHkKY29udHJpYnV0ZSB0aGUgYWN0aW9uLCB0b3BpY3MsIGFuZCBpbmZvc2V0IGZpbGVzIHRoYXQgd2UgY3JlYXRlZC4gU3RhcnQKd2l0aCB1cGRhdGluZyB0aGUgcGx1Z2luLnhtbCB0byBjb250cmlidXRlIG91ciBpbmZvc2V0Ogo8YmxvY2txdW90ZT48dHQ+Jmx0O2V4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5jb250cmlidXRpb25zIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7aW5mb3NldCBuYW1lPSJpbmZvc2V0X1NhbXBsZUd1aWRlLnhtbCIvPiZsdDsvZXh0ZW5zaW9uPjwvdHQ+PC9ibG9ja3F1b3RlPgpOZXh0IHdlIGNvbnRyaWJ1dGUgdGhlIHRvcC1sZXZlbCB0b3BpY3MsIGFuZCB0aGUgYWN0aW9ucyBmaWxlIHRoYXQgd2lyZXMKdGhlbSBpbnRvIG91ciBpbmZvc2V0Ogo8YmxvY2txdW90ZT48dHQ+Jmx0O2V4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5jb250cmlidXRpb25zIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWNzIG5hbWU9InRvcGljc192aWV3X0NvbnRlbnRzLnhtbCIvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDthY3Rpb25zIG5hbWU9ImFjdGlvbnNfdmlld19Db250ZW50cy54bWwiCi8+PC90dD4KPGJyPjx0dD4mbHQ7L2V4dGVuc2lvbj48L3R0PjwvYmxvY2txdW90ZT4KTGFzdGx5IHdlIGNvbnRyaWJ1dGUgdGhlIGJ1bGsgb2Ygb3VyIHRvcGljcyBhbmQgd2lyZSB0aGVtIGluOgo8YmxvY2txdW90ZT48dHQ+Jmx0O2V4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5jb250cmlidXRpb25zIj48L3R0Pgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWNzIG5hbWU9InRvcGljc19Db25jZXB0cy54bWwiIC8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3RvcGljcyBuYW1lPSJ0b3BpY3NfVGFza3MueG1sIiAvPjwvdHQ+Cjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt0b3BpY3MgbmFtZT0idG9waWNzX1JlZi54bWwiIC8+PC90dD4KPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O2FjdGlvbnMgbmFtZT0iYWN0aW9uc19BbGwueG1sIiAvPjwvdHQ+Cjxicj48dHQ+Jmx0Oy9leHRlbnNpb24+PC90dD48L2Jsb2NrcXVvdGU+ClRoYXSScyBpdCwgeW91knJlIGRvbmUuIE5vdyB0YWtlIHlvdXIgcGx1Z2luIChjbGljayBoZXJlIGZvciBhIDxhIGhyZWY9ImZpbmFsLnppcCI+emlwIApmaWxlPC9hPiBvZiB0aGUgZmluYWwgcGx1Z2luKSBhbmQgZHJvcCBpdCBpbnRvIHRoZSBwbGF0Zm9ybZJzIDxpPnBsdWdpbnM8L2k+IGRpcmVjdG9yeSwgCnN0YXJ0IGVjbGlwc2UgYW5kIGNob29zZSBIZWxwIC0+IEhlbHAgQ29udGVudHMuIE9uY2UgeW91IGV4cGFuZCB0aGUgdG9waWNzIGluIAp0aGUgk0NvbnRlbnRzlCBpbmZvdmlldyB5b3Ugd2lsbCBzZWUgdGhlIGZvbGxvd2luZy4gPGJyPgombmJzcDsKPHA+PGltZyBTUkM9ImZpbmFsLmpwZyIgaGVpZ2h0PTQzNyB3aWR0aD02Njg+IDxicj4KICAmbmJzcDsKPGJyPiZuYnNwOwo8aDI+Ck5vbi1pbnRlZ3JhdGVkIGNvbXBvbmVudHM8L2gyPgpXaGF0IGlmIHdlIGV4cGVjdCBvdXIgcGx1Zy1pbiB3aWxsIHNvbWV0aW1lcyBiZSBpbnN0YWxsZWQgYnkgaXRzZWxmLCBhbmQgaW4gb3RoZXIgCmNhc2VzIGl0IHdpbGwgYmUgaW5zdGFsbGVkIGFzIHBhcnQgb2YgYSBsYXJnZXIgY29tcG9uZW50IG9yIHByb2R1Y3QuIFdoZW4gZGVwbG95aW5nIAphIGZyZWUgZmxvYXRpbmcgcGx1Zy1pbiB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0IG91ciBpbmZvc2V0IGlzIHZpc2libGUuIFdoZW4gdG9waWNzIApmcm9tIGEgcGx1Zy1pbiBhcmUgaW50ZWdyYXRlZCBpbnRvIGEgbGFyZ2VyIHdlYiBpdCBwcm9iYWJseSBkb2VzbpJ0IG1ha2Ugc2Vuc2UgCmZvciB0aGVpciBzdGFuZGFsb25lIGJvb2sgdG8gc2hvdyB1cCBhbnltb3JlLiBUbyBzdXBwb3J0IHRoaXMgbm9uaW50ZWdyYXRlZCBvciAKbG9vc2VseSBpbnRlZ3JhdGVkIGRvY3VtZW50YXRpb24sIGEgcGx1Zy1pbiBjYW4gZGVmaW5lIGFuIGluZm9zZXQgYW5kIGFzc29jaWF0ZWQgCmFjdGlvbnMgYW5kIHNldCB0aGVpciA8Yj5zdGFuZGFsb25lPC9iPiBhdHRyaWJ1dGUgdG8gdHJ1ZS4gVGhpcyBoYXMgdGhlIGVmZmVjdCAKb2YgZXhlY3V0aW5nIHRoZSBpbnNlcnRzIG9ubHkgd2hlbiB0aG9zZSB0b3BpY3MgaGF2ZSBuZXZlciBiZWVuIGNvbnRyaWJ1dGVkIGFueXdoZXJlIAplbHNlIGFuZCBvbmx5IGRpc3BsYXkgdGhlIGluZm9zZXQgaWYgaXQgaXMgbm90IGVtcHR5LiBJbiBvdGhlciB3b3JkcywgdGhpcyBiZWhhdmVzIAphczogImlmIHRoaXMgaXMgYW4gaW5kZXBlbmRlbnQgcGx1Zy1pbiwgYW5kIHRoZXJlIGFyZSBubyB0b3BpY3MgY29udHJpYnV0ZWQgdG8gCnNvbWUgd2VsbC1rbm93biBpbmZvc2V0LCB0aGVuIGluc2VydCB0aGUgZG9jdW1lbnRhdGlvbiBpbnRvIGEgc3RhbmRhbG9uZSBpbmZvIApzZXQiLiBFbXB0eSBzdGFuZGFsb25lIGluZm9zZXRzIGFyZSBub3Qgc2hvd24uIFRoaXMgcmVhbGx5IHNheXMgdGhhdCBpZiB0aGUgdG9waWNzIApjb250cmlidXRlZCBieSB0aGUgcGx1Zy1pbiBhcmUgaW5zZXJ0ZWQgaW50byB3ZWxsLWtub3duIGluZm9zZXRzLCB0aGVuIHRoZSBzdGFuZGFsb25lIAphY3Rpb25zIGRpZCBub3QgaW5zZXJ0IGFueXRoaW5nIGluIHRoZSBzdGFuZGFsb25lIGluZm9zZXQsIHNvIGp1c3QgaWdub3JlIHRoaXMgCmVtcHR5IGluZm9zZXQuIFNldHRpbmcgc3RhbmRhbG9uZSBhdHRyaWJ1dGVzIG9uIGFjdGlvbnMgYW5kIGluZm9zZXRzIGlzIHVzZWZ1bCAKd2hlbiBwcm92aWRpbmcgYSAiQ2F0Y2ggYWxsIiBzY2VuYXJpbywgd2hlbiBkb2N1bWVudGF0aW9uIGNhbm5vdCBiZSBjb250cmlidXRlZCAKdG8gYSB3ZWxsLWtub3duIGluZm9zZXQgYnV0IHRoZSBwbHVnLWluIGRvY3VtZW50YXRpb24gc2hvdWxkIHN0aWxsIGFwcGVhciBzb21ld2hlcmUuIApUbyBzdXBwb3J0IHN0YW5kYWxvbmUgbW9kZSB3ZSBuZWVkIHRvIG1ha2UgdGhlIGZvbGxvd2luZyBhZGRpdGlvbnMgdG8gb3VyIGluZm9zZXQgCmFuZCBhY3Rpb24geG1sIGZpbGVzLiBUaGUgYWRkaXRpb24gaXMgbWFya2VkIGluIGJvbGQuIAo8cD5pbmZvc2V0X0d1aWRlLnhtbAo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7aW5mb3NldCBpZD0iaW5mb3NldF9HdWlkZSJsYWJlbD0iT25saW5lCkhlbHAgU2FtcGxlIiBocmVmPSJkb2Mvc3BsYXNoLmh0bWwiCjxiPnN0YW5kYWxvbmU9InRydWUiPC9iPj48L3R0Pgo8cD5hY3Rpb25zX0FsbC54bWwKPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgJmx0O2FjdGlvbnMgaW5mb3ZpZXc9Im9yZy5lY2xpcHNlLnBsYXRmb3JtLmRvYy51c2VyLnZpZXdfQ29udGVudHMiCjxiPnN0YW5kYWxvbmU9InRydWUiPC9iPj48L3R0Pgo8cD5hY3Rpb25zX3ZpZXdfQ29udGVudHMueG1sCjxicj48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDthY3Rpb25zIGluZm92aWV3PSJvcmcuZWNsaXBzZS5wbGF0Zm9ybS5kb2MudXNlci52aWV3X0NvbnRlbnRzIgo8Yj5zdGFuZGFsb25lPSJ0cnVlIjwvYj4+PC90dD4KPHA+Tm93IGlmIHNvbWVvbmUgaW5jbHVkZXMgb3VyIHRvcGljcyBvdXIgYWN0aW9ucyB3aWxsIG5vdCBiZSB1c2VkLCBhbmQKY29uc2VxdWVudGx5IG91ciBpbmZvc2V0IHdpbGwgYmUgZW1wdHkgYW5kIG5vdCBzaG93IHVwLgo8YnI+Jm5ic3A7CjxoMj4gRXh0ZXJuYWxpemluZyBTdHJpbmdzIGluIHlvdXIgWE1MIGZpbGVzPC9oMj4KUGx1Z2luLnhtbCBmaWxlcyBleHRlcm5hbGl6ZSB0aGVpciBzdHJpbmdzIGJ5IHJlcGxhY2luZyB0aGUgc3RyaW5nIHdpdGgKYSBrZXkgKGUuZy4gJXBsdWdpbk5hbWUpIGFuZCBjcmVhdGluZyBhbiBlbnRyeSBpbiB0aGUgcGx1Z2luLnByb3BlcnRpZXMKZmlsZSBvZiB0aGUgZm9ybToKPGJyPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgcGx1Z2luTmFtZSA9IJNPbmxpbmUgSGVscCBTYW1wbGUgUGx1Z2lulDwvdHQ+Cjxicj5UaGUgY29udHJpYnV0aW9uIFhNTCBmaWxlcyBhcmUgZXh0ZXJuYWxpemVkIHVzaW5nIGEgc2ltaWxhciBhcHByb2FjaC4KVG8gZXh0ZXJuYWxpemUgJmx0O3RvcGljIGlkPSJwbGFpblRhc2tzIiBsYWJlbD0iUGxhaW4gU3R1ZmYiPiB3ZSByZXBsYWNlCml0cyBsYWJlbCB3aXRoIGEga2V5ICVwbGFpblN0dWZmIC4gT3VyIHRvcGljIG5vdyBsb29rcyBsaWtlOgo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyAmbHQ7dG9waWMgaWQ9InBsYWluVGFza3MiIGxhYmVsPSIlcGxhaW5TdHVmZiI+PC90dD4KPGJyPkNyZWF0ZSBhbiBlbnRyeSBpbiB0aGUgZG9jdW1lbnQucHJvcGVydGllcyBmaWxlIGNvbnRhaW5pbmcgdGhlIGVudHJ5Ogo8YnI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBwbGFpblN0dWZmID0gUGxhaW4gU3R1ZmY8L3R0Pgo8YnI+VGhlIGhlbHAgc3lzdGVtIHdpbGwgdXNlIGRvY3VtZW50LnByb3BlcnRpZXMgd2hlbiBsb29raW5nIHVwIHN0cmluZ3MKZXh0ZXJuYWxpemVkIGJ5IG91ciBvbmxpbmUgaGVscCBjb250cmlidXRpb25zLgo8YnI+Jm5ic3A7CjxoMj4KU2VydmVyIGFuZCB6aXAgZmlsZXM8L2gyPgpUaGUgcGxhdGZvcm0gdXRpbGl6ZXMgaXRzIG93biBkb2N1bWVudGF0aW9uIHNlcnZlciB0byBwcm92aWRlIHRoZSBhY3R1YWwgd2ViIHBhZ2VzIApmcm9tIHdpdGhpbiB0aGUgZG9jdW1lbnQgd2ViLiZuYnNwOyBBIGN1c3RvbSBzZXJ2ZXIgYWxsb3dzIHRoZSBwbGF0Zm9ybSB0byBoYW5kbGUgCnRoZSB3aWRlIHZhcmlldHkgb2Ygd2ViIGJyb3dzZXJzIGluIGEgYnJvd3NlciBpbmRlcGVuZGVudCB3YXkgd2hpbGUgYWxzbyBwcm92aWRpbmcgCnBsdWdpbiBhd2FyZSBzdXBwb3J0LiBUaGUgcGxhdGZvcm0ncyBoZWxwIHNlcnZlciBhbGxvd3MgdGhlIGRvY3VtZW50YXRpb24gdG8gYWxzbyAKYmUgZGVsaXZlciBpbiBhIHppcCBmaWxlIHRodXMgYXZvaWRpbmcgcHJvYmxlbXMgdGhhdCBtYXkgcmVzdWx0IHdoZW4gYSBsYXJnZSBudW1iZXIgCm9mIGZpbGVzIGFyZSBwcmVzZW50LiBJbiBvdXIgZXhhbXBsZSBwbHVnaW4gd2UgY3JlYXRlZCBhIHN1Yi1kaXJlY3RvcnkgY2FsbGVkIAoiZG9jIi4gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZCBoYXZlIHBsYWNlZCBvdXIgaHRtbCBmaWxlcyBpbnRvIGEgemlwIGZpbGUgY2FsbGVkIAoiZG9jLnppcCIuIDxicj4KJm5ic3A7CjxoMj4KQ29uY2x1c2lvbnM8L2gyPgpXZSBoYXZlIHNlZW4gaG93IHdlIGNhbiB1c2UgdGhlIGluZm9zZXQsIGluZm92aWV3IHRvIGRlY2xhcmUgYm9va3MgdGhlCnVzZXIgY2FuIHNlZS4gV2UgdGhlbiB1c2VkIHRoZSBhY3Rpb25zIGNvbnRyaWJ1dGlvbiBhbmQgdGhlIHRvcGljcyBjb250cmlidXRpb24KdG8gZGVjbGFyZSBhbmQgaW50ZWdyYXRlIG91ciB0b3BpY3MuIFRoZSBwbGF0Zm9ybZJzIG1lY2hhbmlzbXMgY2FuIGJlIHVzZWQKdG8gaW50ZWdyYXRlIG5ldyBkb2N1bWVudGF0aW9uLCBvciB0byBxdWlja2x5IHdpcmUgaW4gZXhpc3RpbmcgaHRtbCBiYXNlZApkb2N1bWVudGF0aW9uIHdpdGhvdXQgcmV3cml0aW5nIGl0LiBUaGUgbWVjaGFuaXNtcyBhbGxvdyB5b3UgdG8gY3JlYXRlCm11bHRpcGxlIGRpZmZlcmVudCB2aWV3cyBvbnRvIHlvdXIgZG9jdW1lbnRhdGlvbiB3ZWIuIEluIG91ciBwbHVnLWluIHdlCm9ubHkgY3JlYXRlZCBhIHNpbmdsZSBpbmZvdmlldyBidXQgYWRkaXRpb25hbCBpbmZvdmlld3MgY291bGQgZWFzaWx5IGJlCmNyZWF0ZWQuIENvbXBvbmVudCBkb2N1bWVudGF0aW9uIGNhbiBlaXRoZXIgYmUgd3JpdHRlbiB0byBiZSBhIHN0YW5kYWxvbmUKYm9vaywgb3Igb3B0aW9uYWxseSBtYXJrZWQgc3VjaCB0aGF0IGlmIGl0IGlzIGludGVncmF0ZWQgaW50byBhIGxhcmdlcgpkb2N1bWVudCB3ZWIsIHRoZSBpbmRpdmlkdWFsIGNvbXBvbmVudCBib29rIHdpbGwgYXV0b21hdGljYWxseSBiZSBoaWRkZW4uCkxhc3RseSwgd2Ugb2JzZXJ2ZWQgdGhhdCB0aGUgcGxhdGZvcm0gcHJvdmlkZXMgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IKZG9jIGludGVncmF0aW9uIGJ1dCBkb2VzIG5vdCBzZXQgb3V0IGFueSBzdHlsZSBvciBzdHJ1Y3R1cmluZyBndWlkZWxpbmVzLgo8YnI+Jm5ic3A7Cjxicj4mbmJzcDsKPC9ib2R5Pgo8L2h0bWw+Cg==