<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>4157</bug_id>
          
          <creation_ts>2005-07-26 23:51:05 -0700</creation_ts>
          <short_desc>DrawTest testing tool for SVG</short_desc>
          <delta_ts>2005-07-29 12:36:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>4155</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15237</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-26 23:51:05 -0700</bug_when>
    <thetext>Attached is a simple Cocoa application which allows simple rendering and interaction with svgs as done 
through WebCore+SVG.  This depends on the temporary WebCore+SVG SPI provided in 4155, and will 
have to be re-worked to use a WebView and Obj-C DOM interfaces as those become available following 
further SVG integration into WebCore/WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15311</commentid>
    <comment_count>1</comment_count>
      <attachid>3132</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-27 22:32:20 -0700</bug_when>
    <thetext>Created attachment 3132
Simple Cocoa app for testing SVG rendering, interaction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15409</commentid>
    <comment_count>2</comment_count>
      <attachid>3132</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-07-29 12:27:20 -0700</bug_when>
    <thetext>Comment on attachment 3132
Simple Cocoa app for testing SVG rendering, interaction

We discussed this some on email, and Eric will make a few tweaks (mostly for
clarity) before checking this test app in.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3132</attachid>
            <date>2005-07-27 22:32:20 -0700</date>
            <delta_ts>2005-07-29 12:27:20 -0700</delta_ts>
            <desc>Simple Cocoa app for testing SVG rendering, interaction</desc>
            <filename>drawtest.patch</filename>
            <type>text/plain</type>
            <size>115143</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IEFQUExFX0xJQ0VOU0UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogQVBQTEVfTElDRU5TRQpk
aWZmIC1OIEFQUExFX0xJQ0VOU0UKLS0tIEFQUExFX0xJQ0VOU0UJMSBKYW4gMTk3MCAwMDowMDow
MCAtMDAwMAorKysgQVBQTEVfTElDRU5TRQkyOCBKdWwgMjAwNSAwNToxNDozMiAtMDAwMApAQCAt
MCwwICsxLDM2NyBAQAorQVBQTEUgUFVCTElDIFNPVVJDRSBMSUNFTlNFCitWZXJzaW9uIDIuMCAt
IEF1Z3VzdCA2LCAyMDAzCisKK1BsZWFzZSByZWFkIHRoaXMgTGljZW5zZSBjYXJlZnVsbHkgYmVm
b3JlIGRvd25sb2FkaW5nIHRoaXMgc29mdHdhcmUuCitCeSBkb3dubG9hZGluZyBvciB1c2luZyB0
aGlzIHNvZnR3YXJlLCB5b3UgYXJlIGFncmVlaW5nIHRvIGJlIGJvdW5kIGJ5Cit0aGUgdGVybXMg
b2YgdGhpcyBMaWNlbnNlLiBJZiB5b3UgZG8gbm90IG9yIGNhbm5vdCBhZ3JlZSB0byB0aGUgdGVy
bXMKK29mIHRoaXMgTGljZW5zZSwgcGxlYXNlIGRvIG5vdCBkb3dubG9hZCBvciB1c2UgdGhlIHNv
ZnR3YXJlLgorCisxLiBHZW5lcmFsOyBEZWZpbml0aW9ucy4gVGhpcyBMaWNlbnNlIGFwcGxpZXMg
dG8gYW55IHByb2dyYW0gb3Igb3RoZXIKK3dvcmsgd2hpY2ggQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG1ha2VzIHB1YmxpY2x5IGF2YWlsYWJsZSBhbmQKK3doaWNoIGNvbnRhaW5zIGEg
bm90aWNlIHBsYWNlZCBieSBBcHBsZSBpZGVudGlmeWluZyBzdWNoIHByb2dyYW0gb3IKK3dvcmsg
YXMgIk9yaWdpbmFsIENvZGUiIGFuZCBzdGF0aW5nIHRoYXQgaXQgaXMgc3ViamVjdCB0byB0aGUg
dGVybXMgb2YKK3RoaXMgQXBwbGUgUHVibGljIFNvdXJjZSBMaWNlbnNlIHZlcnNpb24gMi4wICgi
TGljZW5zZSIpLiBBcyB1c2VkIGluCit0aGlzIExpY2Vuc2U6CisKKzEuMSAiQXBwbGljYWJsZSBQ
YXRlbnQgUmlnaHRzIiBtZWFuOiAoYSkgaW4gdGhlIGNhc2Ugd2hlcmUgQXBwbGUgaXMKK3RoZSBn
cmFudG9yIG9mIHJpZ2h0cywgKGkpIGNsYWltcyBvZiBwYXRlbnRzIHRoYXQgYXJlIG5vdyBvciBo
ZXJlYWZ0ZXIKK2FjcXVpcmVkLCBvd25lZCBieSBvciBhc3NpZ25lZCB0byBBcHBsZSBhbmQgKGlp
KSB0aGF0IGNvdmVyIHN1YmplY3QKK21hdHRlciBjb250YWluZWQgaW4gdGhlIE9yaWdpbmFsIENv
ZGUsIGJ1dCBvbmx5IHRvIHRoZSBleHRlbnQKK25lY2Vzc2FyeSB0byB1c2UsIHJlcHJvZHVjZSBh
bmQvb3IgZGlzdHJpYnV0ZSB0aGUgT3JpZ2luYWwgQ29kZQord2l0aG91dCBpbmZyaW5nZW1lbnQ7
IGFuZCAoYikgaW4gdGhlIGNhc2Ugd2hlcmUgWW91IGFyZSB0aGUgZ3JhbnRvciBvZgorcmlnaHRz
LCAoaSkgY2xhaW1zIG9mIHBhdGVudHMgdGhhdCBhcmUgbm93IG9yIGhlcmVhZnRlciBhY3F1aXJl
ZCwKK293bmVkIGJ5IG9yIGFzc2lnbmVkIHRvIFlvdSBhbmQgKGlpKSB0aGF0IGNvdmVyIHN1Ympl
Y3QgbWF0dGVyIGluIFlvdXIKK01vZGlmaWNhdGlvbnMsIHRha2VuIGFsb25lIG9yIGluIGNvbWJp
bmF0aW9uIHdpdGggT3JpZ2luYWwgQ29kZS4KKworMS4yICJDb250cmlidXRvciIgbWVhbnMgYW55
IHBlcnNvbiBvciBlbnRpdHkgdGhhdCBjcmVhdGVzIG9yCitjb250cmlidXRlcyB0byB0aGUgY3Jl
YXRpb24gb2YgTW9kaWZpY2F0aW9ucy4KKworMS4zICJDb3ZlcmVkIENvZGUiIG1lYW5zIHRoZSBP
cmlnaW5hbCBDb2RlLCBNb2RpZmljYXRpb25zLCB0aGUKK2NvbWJpbmF0aW9uIG9mIE9yaWdpbmFs
IENvZGUgYW5kIGFueSBNb2RpZmljYXRpb25zLCBhbmQvb3IgYW55CityZXNwZWN0aXZlIHBvcnRp
b25zIHRoZXJlb2YuCisKKzEuNCAiRXh0ZXJuYWxseSBEZXBsb3kiIG1lYW5zOiAoYSkgdG8gc3Vi
bGljZW5zZSwgZGlzdHJpYnV0ZSBvcgorb3RoZXJ3aXNlIG1ha2UgQ292ZXJlZCBDb2RlIGF2YWls
YWJsZSwgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSwgdG8KK2FueW9uZSBvdGhlciB0aGFuIFlvdTsg
YW5kL29yIChiKSB0byB1c2UgQ292ZXJlZCBDb2RlLCBhbG9uZSBvciBhcworcGFydCBvZiBhIExh
cmdlciBXb3JrLCBpbiBhbnkgd2F5IHRvIHByb3ZpZGUgYSBzZXJ2aWNlLCBpbmNsdWRpbmcgYnV0
Citub3QgbGltaXRlZCB0byBkZWxpdmVyeSBvZiBjb250ZW50LCB0aHJvdWdoIGVsZWN0cm9uaWMg
Y29tbXVuaWNhdGlvbgord2l0aCBhIGNsaWVudCBvdGhlciB0aGFuIFlvdS4KKworMS41ICJMYXJn
ZXIgV29yayIgbWVhbnMgYSB3b3JrIHdoaWNoIGNvbWJpbmVzIENvdmVyZWQgQ29kZSBvciBwb3J0
aW9ucwordGhlcmVvZiB3aXRoIGNvZGUgbm90IGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlz
IExpY2Vuc2UuCisKKzEuNiAiTW9kaWZpY2F0aW9ucyIgbWVhbiBhbnkgYWRkaXRpb24gdG8sIGRl
bGV0aW9uIGZyb20sIGFuZC9vciBjaGFuZ2UKK3RvLCB0aGUgc3Vic3RhbmNlIGFuZC9vciBzdHJ1
Y3R1cmUgb2YgdGhlIE9yaWdpbmFsIENvZGUsIGFueSBwcmV2aW91cworTW9kaWZpY2F0aW9ucywg
dGhlIGNvbWJpbmF0aW9uIG9mIE9yaWdpbmFsIENvZGUgYW5kIGFueSBwcmV2aW91cworTW9kaWZp
Y2F0aW9ucywgYW5kL29yIGFueSByZXNwZWN0aXZlIHBvcnRpb25zIHRoZXJlb2YuIFdoZW4gY29k
ZSBpcworcmVsZWFzZWQgYXMgYSBzZXJpZXMgb2YgZmlsZXMsIGEgTW9kaWZpY2F0aW9uIGlzOiAo
YSkgYW55IGFkZGl0aW9uIHRvCitvciBkZWxldGlvbiBmcm9tIHRoZSBjb250ZW50cyBvZiBhIGZp
bGUgY29udGFpbmluZyBDb3ZlcmVkIENvZGU7CithbmQvb3IgKGIpIGFueSBuZXcgZmlsZSBvciBv
dGhlciByZXByZXNlbnRhdGlvbiBvZiBjb21wdXRlciBwcm9ncmFtCitzdGF0ZW1lbnRzIHRoYXQg
Y29udGFpbnMgYW55IHBhcnQgb2YgQ292ZXJlZCBDb2RlLgorCisxLjcgIk9yaWdpbmFsIENvZGUi
IG1lYW5zIChhKSB0aGUgU291cmNlIENvZGUgb2YgYSBwcm9ncmFtIG9yIG90aGVyCit3b3JrIGFz
IG9yaWdpbmFsbHkgbWFkZSBhdmFpbGFibGUgYnkgQXBwbGUgdW5kZXIgdGhpcyBMaWNlbnNlLAor
aW5jbHVkaW5nIHRoZSBTb3VyY2UgQ29kZSBvZiBhbnkgdXBkYXRlcyBvciB1cGdyYWRlcyB0byBz
dWNoIHByb2dyYW1zCitvciB3b3JrcyBtYWRlIGF2YWlsYWJsZSBieSBBcHBsZSB1bmRlciB0aGlz
IExpY2Vuc2UsIGFuZCB0aGF0IGhhcyBiZWVuCitleHByZXNzbHkgaWRlbnRpZmllZCBieSBBcHBs
ZSBhcyBzdWNoIGluIHRoZSBoZWFkZXIgZmlsZShzKSBvZiBzdWNoCit3b3JrOyBhbmQgKGIpIHRo
ZSBvYmplY3QgY29kZSBjb21waWxlZCBmcm9tIHN1Y2ggU291cmNlIENvZGUgYW5kCitvcmlnaW5h
bGx5IG1hZGUgYXZhaWxhYmxlIGJ5IEFwcGxlIHVuZGVyIHRoaXMgTGljZW5zZS4KKworMS44ICJT
b3VyY2UgQ29kZSIgbWVhbnMgdGhlIGh1bWFuIHJlYWRhYmxlIGZvcm0gb2YgYSBwcm9ncmFtIG9y
IG90aGVyCit3b3JrIHRoYXQgaXMgc3VpdGFibGUgZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRv
IGl0LCBpbmNsdWRpbmcgYWxsCittb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueSBhc3NvY2lh
dGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLAorc2NyaXB0cyB1c2VkIHRvIGNvbnRyb2wg
Y29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiBhbiBleGVjdXRhYmxlCisob2JqZWN0IGNv
ZGUpLgorCisxLjkgIllvdSIgb3IgIllvdXIiIG1lYW5zIGFuIGluZGl2aWR1YWwgb3IgYSBsZWdh
bCBlbnRpdHkgZXhlcmNpc2luZworcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gRm9yIGxlZ2Fs
IGVudGl0aWVzLCAiWW91IiBvciAiWW91ciIKK2luY2x1ZGVzIGFueSBlbnRpdHkgd2hpY2ggY29u
dHJvbHMsIGlzIGNvbnRyb2xsZWQgYnksIG9yIGlzIHVuZGVyCitjb21tb24gY29udHJvbCB3aXRo
LCBZb3UsIHdoZXJlICJjb250cm9sIiBtZWFucyAoYSkgdGhlIHBvd2VyLCBkaXJlY3QKK29yIGlu
ZGlyZWN0LCB0byBjYXVzZSB0aGUgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRp
dHksCit3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yIG90aGVyd2lzZSwgb3IgKGIpIG93bmVyc2hpcCBv
ZiBmaWZ0eSBwZXJjZW50CisoNTAlKSBvciBtb3JlIG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMg
b3IgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2YKK3N1Y2ggZW50aXR5LgorCisyLiBQZXJtaXR0ZWQg
VXNlczsgQ29uZGl0aW9ucyAmIFJlc3RyaWN0aW9ucy4gU3ViamVjdCB0byB0aGUgdGVybXMKK2Fu
ZCBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgQXBwbGUgaGVyZWJ5IGdyYW50cyBZb3UsIGVm
ZmVjdGl2ZSBvbgordGhlIGRhdGUgWW91IGFjY2VwdCB0aGlzIExpY2Vuc2UgYW5kIGRvd25sb2Fk
IHRoZSBPcmlnaW5hbCBDb2RlLCBhCit3b3JsZC13aWRlLCByb3lhbHR5LWZyZWUsIG5vbi1leGNs
dXNpdmUgbGljZW5zZSwgdG8gdGhlIGV4dGVudCBvZgorQXBwbGUncyBBcHBsaWNhYmxlIFBhdGVu
dCBSaWdodHMgYW5kIGNvcHlyaWdodHMgY292ZXJpbmcgdGhlIE9yaWdpbmFsCitDb2RlLCB0byBk
byB0aGUgZm9sbG93aW5nOgorCisyLjEgVW5tb2RpZmllZCBDb2RlLiBZb3UgbWF5IHVzZSwgcmVw
cm9kdWNlLCBkaXNwbGF5LCBwZXJmb3JtLAoraW50ZXJuYWxseSBkaXN0cmlidXRlIHdpdGhpbiBZ
b3VyIG9yZ2FuaXphdGlvbiwgYW5kIEV4dGVybmFsbHkgRGVwbG95Cit2ZXJiYXRpbSwgdW5tb2Rp
ZmllZCBjb3BpZXMgb2YgdGhlIE9yaWdpbmFsIENvZGUsIGZvciBjb21tZXJjaWFsIG9yCitub24t
Y29tbWVyY2lhbCBwdXJwb3NlcywgcHJvdmlkZWQgdGhhdCBpbiBlYWNoIGluc3RhbmNlOgorCiso
YSkgWW91IG11c3QgcmV0YWluIGFuZCByZXByb2R1Y2UgaW4gYWxsIGNvcGllcyBvZiBPcmlnaW5h
bCBDb2RlIHRoZQorY29weXJpZ2h0IGFuZCBvdGhlciBwcm9wcmlldGFyeSBub3RpY2VzIGFuZCBk
aXNjbGFpbWVycyBvZiBBcHBsZSBhcwordGhleSBhcHBlYXIgaW4gdGhlIE9yaWdpbmFsIENvZGUs
IGFuZCBrZWVwIGludGFjdCBhbGwgbm90aWNlcyBpbiB0aGUKK09yaWdpbmFsIENvZGUgdGhhdCBy
ZWZlciB0byB0aGlzIExpY2Vuc2U7IGFuZAorCisoYikgWW91IG11c3QgaW5jbHVkZSBhIGNvcHkg
b2YgdGhpcyBMaWNlbnNlIHdpdGggZXZlcnkgY29weSBvZiBTb3VyY2UKK0NvZGUgb2YgQ292ZXJl
ZCBDb2RlIGFuZCBkb2N1bWVudGF0aW9uIFlvdSBkaXN0cmlidXRlIG9yIEV4dGVybmFsbHkKK0Rl
cGxveSwgYW5kIFlvdSBtYXkgbm90IG9mZmVyIG9yIGltcG9zZSBhbnkgdGVybXMgb24gc3VjaCBT
b3VyY2UgQ29kZQordGhhdCBhbHRlciBvciByZXN0cmljdCB0aGlzIExpY2Vuc2Ugb3IgdGhlIHJl
Y2lwaWVudHMnIHJpZ2h0cworaGVyZXVuZGVyLCBleGNlcHQgYXMgcGVybWl0dGVkIHVuZGVyIFNl
Y3Rpb24gNi4KKworMi4yIE1vZGlmaWVkIENvZGUuIFlvdSBtYXkgbW9kaWZ5IENvdmVyZWQgQ29k
ZSBhbmQgdXNlLCByZXByb2R1Y2UsCitkaXNwbGF5LCBwZXJmb3JtLCBpbnRlcm5hbGx5IGRpc3Ry
aWJ1dGUgd2l0aGluIFlvdXIgb3JnYW5pemF0aW9uLCBhbmQKK0V4dGVybmFsbHkgRGVwbG95IFlv
dXIgTW9kaWZpY2F0aW9ucyBhbmQgQ292ZXJlZCBDb2RlLCBmb3IgY29tbWVyY2lhbAorb3Igbm9u
LWNvbW1lcmNpYWwgcHVycG9zZXMsIHByb3ZpZGVkIHRoYXQgaW4gZWFjaCBpbnN0YW5jZSBZb3Ug
YWxzbworbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworKGEpIFlvdSBtdXN0IHNhdGlz
ZnkgYWxsIHRoZSBjb25kaXRpb25zIG9mIFNlY3Rpb24gMi4xIHdpdGggcmVzcGVjdCB0bwordGhl
IFNvdXJjZSBDb2RlIG9mIHRoZSBDb3ZlcmVkIENvZGU7CisKKyhiKSBZb3UgbXVzdCBkdXBsaWNh
dGUsIHRvIHRoZSBleHRlbnQgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgdGhlCitub3RpY2Ug
aW4gRXhoaWJpdCBBIGluIGVhY2ggZmlsZSBvZiB0aGUgU291cmNlIENvZGUgb2YgYWxsIFlvdXIK
K01vZGlmaWNhdGlvbnMsIGFuZCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJv
bWluZW50IG5vdGljZXMKK3N0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRo
ZSBkYXRlIG9mIGFueSBjaGFuZ2U7IGFuZAorCisoYykgSWYgWW91IEV4dGVybmFsbHkgRGVwbG95
IFlvdXIgTW9kaWZpY2F0aW9ucywgWW91IG11c3QgbWFrZQorU291cmNlIENvZGUgb2YgYWxsIFlv
dXIgRXh0ZXJuYWxseSBEZXBsb3llZCBNb2RpZmljYXRpb25zIGVpdGhlcgorYXZhaWxhYmxlIHRv
IHRob3NlIHRvIHdob20gWW91IGhhdmUgRXh0ZXJuYWxseSBEZXBsb3llZCBZb3VyCitNb2RpZmlj
YXRpb25zLCBvciBwdWJsaWNseSBhdmFpbGFibGUuIFNvdXJjZSBDb2RlIG9mIFlvdXIgRXh0ZXJu
YWxseQorRGVwbG95ZWQgTW9kaWZpY2F0aW9ucyBtdXN0IGJlIHJlbGVhc2VkIHVuZGVyIHRoZSB0
ZXJtcyBzZXQgZm9ydGggaW4KK3RoaXMgTGljZW5zZSwgaW5jbHVkaW5nIHRoZSBsaWNlbnNlIGdy
YW50cyBzZXQgZm9ydGggaW4gU2VjdGlvbiAzCitiZWxvdywgZm9yIGFzIGxvbmcgYXMgeW91IEV4
dGVybmFsbHkgRGVwbG95IHRoZSBDb3ZlcmVkIENvZGUgb3IgdHdlbHZlCisoMTIpIG1vbnRocyBm
cm9tIHRoZSBkYXRlIG9mIGluaXRpYWwgRXh0ZXJuYWwgRGVwbG95bWVudCwgd2hpY2hldmVyIGlz
Citsb25nZXIuIFlvdSBzaG91bGQgcHJlZmVyYWJseSBkaXN0cmlidXRlIHRoZSBTb3VyY2UgQ29k
ZSBvZiBZb3VyCitFeHRlcm5hbGx5IERlcGxveWVkIE1vZGlmaWNhdGlvbnMgZWxlY3Ryb25pY2Fs
bHkgKGUuZy4gZG93bmxvYWQgZnJvbSBhCit3ZWIgc2l0ZSkuCisKKzIuMyBEaXN0cmlidXRpb24g
b2YgRXhlY3V0YWJsZSBWZXJzaW9ucy4gSW4gYWRkaXRpb24sIGlmIFlvdQorRXh0ZXJuYWxseSBE
ZXBsb3kgQ292ZXJlZCBDb2RlIChPcmlnaW5hbCBDb2RlIGFuZC9vciBNb2RpZmljYXRpb25zKSBp
bgorb2JqZWN0IGNvZGUsIGV4ZWN1dGFibGUgZm9ybSBvbmx5LCBZb3UgbXVzdCBpbmNsdWRlIGEg
cHJvbWluZW50Citub3RpY2UsIGluIHRoZSBjb2RlIGl0c2VsZiBhcyB3ZWxsIGFzIGluIHJlbGF0
ZWQgZG9jdW1lbnRhdGlvbiwKK3N0YXRpbmcgdGhhdCBTb3VyY2UgQ29kZSBvZiB0aGUgQ292ZXJl
ZCBDb2RlIGlzIGF2YWlsYWJsZSB1bmRlciB0aGUKK3Rlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRo
IGluZm9ybWF0aW9uIG9uIGhvdyBhbmQgd2hlcmUgdG8gb2J0YWluIHN1Y2gKK1NvdXJjZSBDb2Rl
LgorCisyLjQgVGhpcmQgUGFydHkgUmlnaHRzLiBZb3UgZXhwcmVzc2x5IGFja25vd2xlZGdlIGFu
ZCBhZ3JlZSB0aGF0CithbHRob3VnaCBBcHBsZSBhbmQgZWFjaCBDb250cmlidXRvciBncmFudHMg
dGhlIGxpY2Vuc2VzIHRvIHRoZWlyCityZXNwZWN0aXZlIHBvcnRpb25zIG9mIHRoZSBDb3ZlcmVk
IENvZGUgc2V0IGZvcnRoIGhlcmVpbiwgbm8KK2Fzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IEFw
cGxlIG9yIGFueSBDb250cmlidXRvciB0aGF0IHRoZSBDb3ZlcmVkCitDb2RlIGRvZXMgbm90IGlu
ZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5CityaWdodHMg
b2YgYW55IG90aGVyIGVudGl0eS4gQXBwbGUgYW5kIGVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW0g
YW55CitsaWFiaWxpdHkgdG8gWW91IGZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkgb3RoZXIgZW50
aXR5IGJhc2VkIG9uCitpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBvciBvdGhlcndpc2UuIEFzIGEKK2NvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMg
YW5kIGxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBZb3UKK2hlcmVieSBhc3N1bWUgc29sZSBy
ZXNwb25zaWJpbGl0eSB0byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbAorcHJvcGVydHkg
cmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwgaWYgYSB0aGlyZCBwYXJ0eSBwYXRl
bnQKK2xpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgWW91IHRvIGRpc3RyaWJ1dGUgdGhlIENv
dmVyZWQgQ29kZSwgaXQgaXMKK1lvdXIgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxp
Y2Vuc2UgYmVmb3JlIGRpc3RyaWJ1dGluZyB0aGUKK0NvdmVyZWQgQ29kZS4KKworMy4gWW91ciBH
cmFudHMuIEluIGNvbnNpZGVyYXRpb24gb2YsIGFuZCBhcyBhIGNvbmRpdGlvbiB0bywgdGhlCits
aWNlbnNlcyBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UsIFlvdSBoZXJlYnkgZ3Jh
bnQgdG8gYW55CitwZXJzb24gb3IgZW50aXR5IHJlY2VpdmluZyBvciBkaXN0cmlidXRpbmcgQ292
ZXJlZCBDb2RlIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYSBub24tZXhjbHVzaXZlLCByb3lhbHR5LWZy
ZWUsIHBlcnBldHVhbCwgaXJyZXZvY2FibGUgbGljZW5zZSwKK3VuZGVyIFlvdXIgQXBwbGljYWJs
ZSBQYXRlbnQgUmlnaHRzIGFuZCBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkKK3JpZ2h0cyAo
b3RoZXIgdGhhbiBwYXRlbnQpIG93bmVkIG9yIGNvbnRyb2xsZWQgYnkgWW91LCB0byB1c2UsCity
ZXByb2R1Y2UsIGRpc3BsYXksIHBlcmZvcm0sIG1vZGlmeSwgc3VibGljZW5zZSwgZGlzdHJpYnV0
ZSBhbmQKK0V4dGVybmFsbHkgRGVwbG95IFlvdXIgTW9kaWZpY2F0aW9ucyBvZiB0aGUgc2FtZSBz
Y29wZSBhbmQgZXh0ZW50IGFzCitBcHBsZSdzIGxpY2Vuc2VzIHVuZGVyIFNlY3Rpb25zIDIuMSBh
bmQgMi4yIGFib3ZlLgorCis0LiBMYXJnZXIgV29ya3MuIFlvdSBtYXkgY3JlYXRlIGEgTGFyZ2Vy
IFdvcmsgYnkgY29tYmluaW5nIENvdmVyZWQKK0NvZGUgd2l0aCBvdGhlciBjb2RlIG5vdCBnb3Zl
cm5lZCBieSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIGFuZAorZGlzdHJpYnV0ZSB0aGUgTGFy
Z2VyIFdvcmsgYXMgYSBzaW5nbGUgcHJvZHVjdC4gSW4gZWFjaCBzdWNoIGluc3RhbmNlLAorWW91
IG11c3QgbWFrZSBzdXJlIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlIGFyZSBmdWxm
aWxsZWQgZm9yCit0aGUgQ292ZXJlZCBDb2RlIG9yIGFueSBwb3J0aW9uIHRoZXJlb2YuCisKKzUu
IExpbWl0YXRpb25zIG9uIFBhdGVudCBMaWNlbnNlLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRl
ZCBpbgorU2VjdGlvbiAyLCBubyBvdGhlciBwYXRlbnQgcmlnaHRzLCBleHByZXNzIG9yIGltcGxp
ZWQsIGFyZSBncmFudGVkIGJ5CitBcHBsZSBoZXJlaW4uIE1vZGlmaWNhdGlvbnMgYW5kL29yIExh
cmdlciBXb3JrcyBtYXkgcmVxdWlyZSBhZGRpdGlvbmFsCitwYXRlbnQgbGljZW5zZXMgZnJvbSBB
cHBsZSB3aGljaCBBcHBsZSBtYXkgZ3JhbnQgaW4gaXRzIHNvbGUKK2Rpc2NyZXRpb24uCisKKzYu
IEFkZGl0aW9uYWwgVGVybXMuIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLCBhbmQgdG8gY2hhcmdl
IGEgZmVlIGZvciwKK3dhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IG9i
bGlnYXRpb25zIGFuZC9vciBvdGhlcgorcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGUgc2NvcGUg
b2YgdGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJlaW4KKygiQWRkaXRpb25hbCBUZXJtcyIpIHRvIG9u
ZSBvciBtb3JlIHJlY2lwaWVudHMgb2YgQ292ZXJlZCBDb2RlLgorSG93ZXZlciwgWW91IG1heSBk
byBzbyBvbmx5IG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgYXMgWW91ciBzb2xlCityZXNwb25zaWJp
bGl0eSwgYW5kIG5vdCBvbiBiZWhhbGYgb2YgQXBwbGUgb3IgYW55IENvbnRyaWJ1dG9yLiBZb3UK
K211c3Qgb2J0YWluIHRoZSByZWNpcGllbnQncyBhZ3JlZW1lbnQgdGhhdCBhbnkgc3VjaCBBZGRp
dGlvbmFsIFRlcm1zCithcmUgb2ZmZXJlZCBieSBZb3UgYWxvbmUsIGFuZCBZb3UgaGVyZWJ5IGFn
cmVlIHRvIGluZGVtbmlmeSwgZGVmZW5kCithbmQgaG9sZCBBcHBsZSBhbmQgZXZlcnkgQ29udHJp
YnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKK2luY3VycmVkIGJ5IG9yIGNsYWltcyBh
c3NlcnRlZCBhZ2FpbnN0IEFwcGxlIG9yIHN1Y2ggQ29udHJpYnV0b3IgYnkKK3JlYXNvbiBvZiBh
bnkgc3VjaCBBZGRpdGlvbmFsIFRlcm1zLgorCis3LiBWZXJzaW9ucyBvZiB0aGUgTGljZW5zZS4g
QXBwbGUgbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3Cit2ZXJzaW9ucyBvZiB0aGlzIExp
Y2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuIEVhY2ggdmVyc2lvbiB3aWxsIGJlIGdpdmVuCithIGRp
c3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBPbmNlIE9yaWdpbmFsIENvZGUgaGFzIGJlZW4g
cHVibGlzaGVkCit1bmRlciBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGlzIExpY2Vuc2UsIFlv
dSBtYXkgY29udGludWUgdG8gdXNlIGl0Cit1bmRlciB0aGUgdGVybXMgb2YgdGhhdCB2ZXJzaW9u
LiBZb3UgbWF5IGFsc28gY2hvb3NlIHRvIHVzZSBzdWNoCitPcmlnaW5hbCBDb2RlIHVuZGVyIHRo
ZSB0ZXJtcyBvZiBhbnkgc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoaXMKK0xpY2Vuc2UgcHVibGlz
aGVkIGJ5IEFwcGxlLiBObyBvbmUgb3RoZXIgdGhhbiBBcHBsZSBoYXMgdGhlIHJpZ2h0IHRvCitt
b2RpZnkgdGhlIHRlcm1zIGFwcGxpY2FibGUgdG8gQ292ZXJlZCBDb2RlIGNyZWF0ZWQgdW5kZXIg
dGhpcworTGljZW5zZS4KKworOC4gTk8gV0FSUkFOVFkgT1IgU1VQUE9SVC4gVGhlIENvdmVyZWQg
Q29kZSBtYXkgY29udGFpbiBpbiB3aG9sZSBvciBpbgorcGFydCBwcmUtcmVsZWFzZSwgdW50ZXN0
ZWQsIG9yIG5vdCBmdWxseSB0ZXN0ZWQgd29ya3MuIFRoZSBDb3ZlcmVkCitDb2RlIG1heSBjb250
YWluIGVycm9ycyB0aGF0IGNvdWxkIGNhdXNlIGZhaWx1cmVzIG9yIGxvc3Mgb2YgZGF0YSwgYW5k
CittYXkgYmUgaW5jb21wbGV0ZSBvciBjb250YWluIGluYWNjdXJhY2llcy4gWW91IGV4cHJlc3Ns
eSBhY2tub3dsZWRnZQorYW5kIGFncmVlIHRoYXQgdXNlIG9mIHRoZSBDb3ZlcmVkIENvZGUsIG9y
IGFueSBwb3J0aW9uIHRoZXJlb2YsIGlzIGF0CitZb3VyIHNvbGUgYW5kIGVudGlyZSByaXNrLiBU
SEUgQ09WRVJFRCBDT0RFIElTIFBST1ZJREVEICJBUyBJUyIgQU5ECitXSVRIT1VUIFdBUlJBTlRZ
LCBVUEdSQURFUyBPUiBTVVBQT1JUIE9GIEFOWSBLSU5EIEFORCBBUFBMRSBBTkQKK0FQUExFJ1Mg
TElDRU5TT1IoUykgKENPTExFQ1RJVkVMWSBSRUZFUlJFRCBUTyBBUyAiQVBQTEUiIEZPUiBUSEUK
K1BVUlBPU0VTIE9GIFNFQ1RJT05TIDggQU5EIDkpIEFORCBBTEwgQ09OVFJJQlVUT1JTIEVYUFJF
U1NMWSBESVNDTEFJTQorQUxMIFdBUlJBTlRJRVMgQU5EL09SIENPTkRJVElPTlMsIEVYUFJFU1Mg
T1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQKK05PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIEFORC9PUiBDT05ESVRJT05TIE9GCitNRVJDSEFOVEFCSUxJVFksIE9GIFNBVElT
RkFDVE9SWSBRVUFMSVRZLCBPRiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UsIE9G
IEFDQ1VSQUNZLCBPRiBRVUlFVCBFTkpPWU1FTlQsIEFORCBOT05JTkZSSU5HRU1FTlQgT0YgVEhJ
UkQKK1BBUlRZIFJJR0hUUy4gQVBQTEUgQU5EIEVBQ0ggQ09OVFJJQlVUT1IgRE9FUyBOT1QgV0FS
UkFOVCBBR0FJTlNUCitJTlRFUkZFUkVOQ0UgV0lUSCBZT1VSIEVOSk9ZTUVOVCBPRiBUSEUgQ09W
RVJFRCBDT0RFLCBUSEFUIFRIRQorRlVOQ1RJT05TIENPTlRBSU5FRCBJTiBUSEUgQ09WRVJFRCBD
T0RFIFdJTEwgTUVFVCBZT1VSIFJFUVVJUkVNRU5UUywKK1RIQVQgVEhFIE9QRVJBVElPTiBPRiBU
SEUgQ09WRVJFRCBDT0RFIFdJTEwgQkUgVU5JTlRFUlJVUFRFRCBPUgorRVJST1ItRlJFRSwgT1Ig
VEhBVCBERUZFQ1RTIElOIFRIRSBDT1ZFUkVEIENPREUgV0lMTCBCRSBDT1JSRUNURUQuIE5PCitP
UkFMIE9SIFdSSVRURU4gSU5GT1JNQVRJT04gT1IgQURWSUNFIEdJVkVOIEJZIEFQUExFLCBBTiBB
UFBMRQorQVVUSE9SSVpFRCBSRVBSRVNFTlRBVElWRSBPUiBBTlkgQ09OVFJJQlVUT1IgU0hBTEwg
Q1JFQVRFIEEgV0FSUkFOVFkuCitZb3UgYWNrbm93bGVkZ2UgdGhhdCB0aGUgQ292ZXJlZCBDb2Rl
IGlzIG5vdCBpbnRlbmRlZCBmb3IgdXNlIGluIHRoZQorb3BlcmF0aW9uIG9mIG51Y2xlYXIgZmFj
aWxpdGllcywgYWlyY3JhZnQgbmF2aWdhdGlvbiwgY29tbXVuaWNhdGlvbgorc3lzdGVtcywgb3Ig
YWlyIHRyYWZmaWMgY29udHJvbCBtYWNoaW5lcyBpbiB3aGljaCBjYXNlIHRoZSBmYWlsdXJlIG9m
Cit0aGUgQ292ZXJlZCBDb2RlIGNvdWxkIGxlYWQgdG8gZGVhdGgsIHBlcnNvbmFsIGluanVyeSwg
b3Igc2V2ZXJlCitwaHlzaWNhbCBvciBlbnZpcm9ubWVudGFsIGRhbWFnZS4KKworOS4gTElNSVRB
VElPTiBPRiBMSUFCSUxJVFkuIFRPIFRIRSBFWFRFTlQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBJ
TiBOTworRVZFTlQgU0hBTEwgQVBQTEUgT1IgQU5ZIENPTlRSSUJVVE9SIEJFIExJQUJMRSBGT1Ig
QU5ZIElOQ0lERU5UQUwsCitTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgQVJJU0lORyBPVVQgT0YgT1IgUkVMQVRJTkcKK1RPIFRISVMgTElDRU5TRSBPUiBZT1VSIFVT
RSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBDT1ZFUkVEIENPREUsIE9SCitBTlkgUE9SVElPTiBU
SEVSRU9GLCBXSEVUSEVSIFVOREVSIEEgVEhFT1JZIE9GIENPTlRSQUNULCBXQVJSQU5UWSwKK1RP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgUFJPRFVDVFMgTElBQklMSVRZIE9SIE9USEVSV0lT
RSwgRVZFTiBJRgorQVBQTEUgT1IgU1VDSCBDT05UUklCVVRPUiBIQVMgQkVFTiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICitEQU1BR0VTIEFORCBOT1RXSVRIU1RBTkRJTkcgVEhF
IEZBSUxVUkUgT0YgRVNTRU5USUFMIFBVUlBPU0UgT0YgQU5ZCitSRU1FRFkuIFNPTUUgSlVSSVNE
SUNUSU9OUyBETyBOT1QgQUxMT1cgVEhFIExJTUlUQVRJT04gT0YgTElBQklMSVRZIE9GCitJTkNJ
REVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgU08gVEhJUyBMSU1JVEFUSU9OIE1BWSBO
T1QgQVBQTFkKK1RPIFlPVS4gSW4gbm8gZXZlbnQgc2hhbGwgQXBwbGUncyB0b3RhbCBsaWFiaWxp
dHkgdG8gWW91IGZvciBhbGwKK2RhbWFnZXMgKG90aGVyIHRoYW4gYXMgbWF5IGJlIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3KSB1bmRlciB0aGlzCitMaWNlbnNlIGV4Y2VlZCB0aGUgYW1vdW50
IG9mIGZpZnR5IGRvbGxhcnMgKCQ1MC4wMCkuCisKKzEwLiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vu
c2UgZG9lcyBub3QgZ3JhbnQgYW55IHJpZ2h0cyB0byB1c2UgdGhlCit0cmFkZW1hcmtzIG9yIHRy
YWRlIG5hbWVzICJBcHBsZSIsICJBcHBsZSBDb21wdXRlciIsICJNYWMiLCAiTWFjIE9TIiwKKyJR
dWlja1RpbWUiLCAiUXVpY2tUaW1lIFN0cmVhbWluZyBTZXJ2ZXIiIG9yIGFueSBvdGhlciB0cmFk
ZW1hcmtzLAorc2VydmljZSBtYXJrcywgbG9nb3Mgb3IgdHJhZGUgbmFtZXMgYmVsb25naW5nIHRv
IEFwcGxlIChjb2xsZWN0aXZlbHkKKyJBcHBsZSBNYXJrcyIpIG9yIHRvIGFueSB0cmFkZW1hcmss
IHNlcnZpY2UgbWFyaywgbG9nbyBvciB0cmFkZSBuYW1lCitiZWxvbmdpbmcgdG8gYW55IENvbnRy
aWJ1dG9yLiBZb3UgYWdyZWUgbm90IHRvIHVzZSBhbnkgQXBwbGUgTWFya3MgaW4KK29yIGFzIHBh
cnQgb2YgdGhlIG5hbWUgb2YgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoZSBPcmlnaW5hbCBDb2Rl
IG9yCit0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoZSBPcmln
aW5hbCBDb2RlIG90aGVyCit0aGFuIGFzIGV4cHJlc3NseSBwZXJtaXR0ZWQgYnkgYW5kIGluIHN0
cmljdCBjb21wbGlhbmNlIGF0IGFsbCB0aW1lcword2l0aCBBcHBsZSdzIHRoaXJkIHBhcnR5IHRy
YWRlbWFyayB1c2FnZSBndWlkZWxpbmVzIHdoaWNoIGFyZSBwb3N0ZWQKK2F0IGh0dHA6Ly93d3cu
YXBwbGUuY29tL2xlZ2FsL2d1aWRlbGluZXNmb3IzcmRwYXJ0aWVzLmh0bWwuCisKKzExLiBPd25l
cnNoaXAuIFN1YmplY3QgdG8gdGhlIGxpY2Vuc2VzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNl
LAorZWFjaCBDb250cmlidXRvciByZXRhaW5zIGFsbCByaWdodHMsIHRpdGxlIGFuZCBpbnRlcmVz
dCBpbiBhbmQgdG8gYW55CitNb2RpZmljYXRpb25zIG1hZGUgYnkgc3VjaCBDb250cmlidXRvci4g
QXBwbGUgcmV0YWlucyBhbGwgcmlnaHRzLAordGl0bGUgYW5kIGludGVyZXN0IGluIGFuZCB0byB0
aGUgT3JpZ2luYWwgQ29kZSBhbmQgYW55IE1vZGlmaWNhdGlvbnMKK21hZGUgYnkgb3Igb24gYmVo
YWxmIG9mIEFwcGxlICgiQXBwbGUgTW9kaWZpY2F0aW9ucyIpLCBhbmQgc3VjaCBBcHBsZQorTW9k
aWZpY2F0aW9ucyB3aWxsIG5vdCBiZSBhdXRvbWF0aWNhbGx5IHN1YmplY3QgdG8gdGhpcyBMaWNl
bnNlLiBBcHBsZQorbWF5LCBhdCBpdHMgc29sZSBkaXNjcmV0aW9uLCBjaG9vc2UgdG8gbGljZW5z
ZSBzdWNoIEFwcGxlCitNb2RpZmljYXRpb25zIHVuZGVyIHRoaXMgTGljZW5zZSwgb3Igb24gZGlm
ZmVyZW50IHRlcm1zIGZyb20gdGhvc2UKK2NvbnRhaW5lZCBpbiB0aGlzIExpY2Vuc2Ugb3IgbWF5
IGNob29zZSBub3QgdG8gbGljZW5zZSB0aGVtIGF0IGFsbC4KKworMTIuIFRlcm1pbmF0aW9uLgor
CisxMi4xIFRlcm1pbmF0aW9uLiBUaGlzIExpY2Vuc2UgYW5kIHRoZSByaWdodHMgZ3JhbnRlZCBo
ZXJldW5kZXIgd2lsbAordGVybWluYXRlOgorCisoYSkgYXV0b21hdGljYWxseSB3aXRob3V0IG5v
dGljZSBmcm9tIEFwcGxlIGlmIFlvdSBmYWlsIHRvIGNvbXBseSB3aXRoCithbnkgdGVybShzKSBv
ZiB0aGlzIExpY2Vuc2UgYW5kIGZhaWwgdG8gY3VyZSBzdWNoIGJyZWFjaCB3aXRoaW4gMzAKK2Rh
eXMgb2YgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBicmVhY2g7CisKKyhiKSBpbW1lZGlhdGVseSBp
biB0aGUgZXZlbnQgb2YgdGhlIGNpcmN1bXN0YW5jZXMgZGVzY3JpYmVkIGluIFNlY3Rpb24KKzEz
LjUoYik7IG9yCisKKyhjKSBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgbm90aWNlIGZyb20gQXBwbGUg
aWYgWW91LCBhdCBhbnkgdGltZSBkdXJpbmcKK3RoZSB0ZXJtIG9mIHRoaXMgTGljZW5zZSwgY29t
bWVuY2UgYW4gYWN0aW9uIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50CithZ2FpbnN0IEFwcGxlOyBw
cm92aWRlZCB0aGF0IEFwcGxlIGRpZCBub3QgZmlyc3QgY29tbWVuY2UKK2FuIGFjdGlvbiBmb3Ig
cGF0ZW50IGluZnJpbmdlbWVudCBhZ2FpbnN0IFlvdSBpbiB0aGF0IGluc3RhbmNlLgorCisxMi4y
IEVmZmVjdCBvZiBUZXJtaW5hdGlvbi4gVXBvbiB0ZXJtaW5hdGlvbiwgWW91IGFncmVlIHRvIGlt
bWVkaWF0ZWx5CitzdG9wIGFueSBmdXJ0aGVyIHVzZSwgcmVwcm9kdWN0aW9uLCBtb2RpZmljYXRp
b24sIHN1YmxpY2Vuc2luZyBhbmQKK2Rpc3RyaWJ1dGlvbiBvZiB0aGUgQ292ZXJlZCBDb2RlLiBB
bGwgc3VibGljZW5zZXMgdG8gdGhlIENvdmVyZWQgQ29kZQord2hpY2ggaGF2ZSBiZWVuIHByb3Bl
cmx5IGdyYW50ZWQgcHJpb3IgdG8gdGVybWluYXRpb24gc2hhbGwgc3Vydml2ZQorYW55IHRlcm1p
bmF0aW9uIG9mIHRoaXMgTGljZW5zZS4gUHJvdmlzaW9ucyB3aGljaCwgYnkgdGhlaXIgbmF0dXJl
LAorc2hvdWxkIHJlbWFpbiBpbiBlZmZlY3QgYmV5b25kIHRoZSB0ZXJtaW5hdGlvbiBvZiB0aGlz
IExpY2Vuc2Ugc2hhbGwKK3N1cnZpdmUsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gU2Vj
dGlvbnMgMywgNSwgOCwgOSwgMTAsIDExLAorMTIuMiBhbmQgMTMuIE5vIHBhcnR5IHdpbGwgYmUg
bGlhYmxlIHRvIGFueSBvdGhlciBmb3IgY29tcGVuc2F0aW9uLAoraW5kZW1uaXR5IG9yIGRhbWFn
ZXMgb2YgYW55IHNvcnQgc29sZWx5IGFzIGEgcmVzdWx0IG9mIHRlcm1pbmF0aW5nCit0aGlzIExp
Y2Vuc2UgaW4gYWNjb3JkYW5jZSB3aXRoIGl0cyB0ZXJtcywgYW5kIHRlcm1pbmF0aW9uIG9mIHRo
aXMKK0xpY2Vuc2Ugd2lsbCBiZSB3aXRob3V0IHByZWp1ZGljZSB0byBhbnkgb3RoZXIgcmlnaHQg
b3IgcmVtZWR5IG9mCithbnkgcGFydHkuCisKKzEzLiBNaXNjZWxsYW5lb3VzLgorCisxMy4xIEdv
dmVybm1lbnQgRW5kIFVzZXJzLiBUaGUgQ292ZXJlZCBDb2RlIGlzIGEgImNvbW1lcmNpYWwgaXRl
bSIgYXMKK2RlZmluZWQgaW4gRkFSIDIuMTAxLiBHb3Zlcm5tZW50IHNvZnR3YXJlIGFuZCB0ZWNo
bmljYWwgZGF0YSByaWdodHMgaW4KK3RoZSBDb3ZlcmVkIENvZGUgaW5jbHVkZSBvbmx5IHRob3Nl
IHJpZ2h0cyBjdXN0b21hcmlseSBwcm92aWRlZCB0byB0aGUKK3B1YmxpYyBhcyBkZWZpbmVkIGlu
IHRoaXMgTGljZW5zZS4gVGhpcyBjdXN0b21hcnkgY29tbWVyY2lhbCBsaWNlbnNlCitpbiB0ZWNo
bmljYWwgZGF0YSBhbmQgc29mdHdhcmUgaXMgcHJvdmlkZWQgaW4gYWNjb3JkYW5jZSB3aXRoIEZB
UgorMTIuMjExIChUZWNobmljYWwgRGF0YSkgYW5kIDEyLjIxMiAoQ29tcHV0ZXIgU29mdHdhcmUp
IGFuZCwgZm9yCitEZXBhcnRtZW50IG9mIERlZmVuc2UgcHVyY2hhc2VzLCBERkFSIDI1Mi4yMjct
NzAxNSAoVGVjaG5pY2FsIERhdGEgLS0KK0NvbW1lcmNpYWwgSXRlbXMpIGFuZCAyMjcuNzIwMi0z
IChSaWdodHMgaW4gQ29tbWVyY2lhbCBDb21wdXRlcgorU29mdHdhcmUgb3IgQ29tcHV0ZXIgU29m
dHdhcmUgRG9jdW1lbnRhdGlvbikuIEFjY29yZGluZ2x5LCBhbGwgVS5TLgorR292ZXJubWVudCBF
bmQgVXNlcnMgYWNxdWlyZSBDb3ZlcmVkIENvZGUgd2l0aCBvbmx5IHRob3NlIHJpZ2h0cyBzZXQK
K2ZvcnRoIGhlcmVpbi4KKworMTMuMiBSZWxhdGlvbnNoaXAgb2YgUGFydGllcy4gVGhpcyBMaWNl
bnNlIHdpbGwgbm90IGJlIGNvbnN0cnVlZCBhcworY3JlYXRpbmcgYW4gYWdlbmN5LCBwYXJ0bmVy
c2hpcCwgam9pbnQgdmVudHVyZSBvciBhbnkgb3RoZXIgZm9ybSBvZgorbGVnYWwgYXNzb2NpYXRp
b24gYmV0d2VlbiBvciBhbW9uZyBZb3UsIEFwcGxlIG9yIGFueSBDb250cmlidXRvciwgYW5kCitZ
b3Ugd2lsbCBub3QgcmVwcmVzZW50IHRvIHRoZSBjb250cmFyeSwgd2hldGhlciBleHByZXNzbHks
IGJ5CitpbXBsaWNhdGlvbiwgYXBwZWFyYW5jZSBvciBvdGhlcndpc2UuCisKKzEzLjMgSW5kZXBl
bmRlbnQgRGV2ZWxvcG1lbnQuIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHdpbGwgaW1wYWlyCitB
cHBsZSdzIHJpZ2h0IHRvIGFjcXVpcmUsIGxpY2Vuc2UsIGRldmVsb3AsIGhhdmUgb3RoZXJzIGRl
dmVsb3AgZm9yCitpdCwgbWFya2V0IGFuZC9vciBkaXN0cmlidXRlIHRlY2hub2xvZ3kgb3IgcHJv
ZHVjdHMgdGhhdCBwZXJmb3JtIHRoZQorc2FtZSBvciBzaW1pbGFyIGZ1bmN0aW9ucyBhcywgb3Ig
b3RoZXJ3aXNlIGNvbXBldGUgd2l0aCwKK01vZGlmaWNhdGlvbnMsIExhcmdlciBXb3JrcywgdGVj
aG5vbG9neSBvciBwcm9kdWN0cyB0aGF0IFlvdSBtYXkKK2RldmVsb3AsIHByb2R1Y2UsIG1hcmtl
dCBvciBkaXN0cmlidXRlLgorCisxMy40IFdhaXZlcjsgQ29uc3RydWN0aW9uLiBGYWlsdXJlIGJ5
IEFwcGxlIG9yIGFueSBDb250cmlidXRvciB0bworZW5mb3JjZSBhbnkgcHJvdmlzaW9uIG9mIHRo
aXMgTGljZW5zZSB3aWxsIG5vdCBiZSBkZWVtZWQgYSB3YWl2ZXIgb2YKK2Z1dHVyZSBlbmZvcmNl
bWVudCBvZiB0aGF0IG9yIGFueSBvdGhlciBwcm92aXNpb24uIEFueSBsYXcgb3IKK3JlZ3VsYXRp
b24gd2hpY2ggcHJvdmlkZXMgdGhhdCB0aGUgbGFuZ3VhZ2Ugb2YgYSBjb250cmFjdCBzaGFsbCBi
ZQorY29uc3RydWVkIGFnYWluc3QgdGhlIGRyYWZ0ZXIgd2lsbCBub3QgYXBwbHkgdG8gdGhpcyBM
aWNlbnNlLgorCisxMy41IFNldmVyYWJpbGl0eS4gKGEpIElmIGZvciBhbnkgcmVhc29uIGEgY291
cnQgb2YgY29tcGV0ZW50CitqdXJpc2RpY3Rpb24gZmluZHMgYW55IHByb3Zpc2lvbiBvZiB0aGlz
IExpY2Vuc2UsIG9yIHBvcnRpb24gdGhlcmVvZiwKK3RvIGJlIHVuZW5mb3JjZWFibGUsIHRoYXQg
cHJvdmlzaW9uIG9mIHRoZSBMaWNlbnNlIHdpbGwgYmUgZW5mb3JjZWQgdG8KK3RoZSBtYXhpbXVt
IGV4dGVudCBwZXJtaXNzaWJsZSBzbyBhcyB0byBlZmZlY3QgdGhlIGVjb25vbWljIGJlbmVmaXRz
CithbmQgaW50ZW50IG9mIHRoZSBwYXJ0aWVzLCBhbmQgdGhlIHJlbWFpbmRlciBvZiB0aGlzIExp
Y2Vuc2Ugd2lsbAorY29udGludWUgaW4gZnVsbCBmb3JjZSBhbmQgZWZmZWN0LiAoYikgTm90d2l0
aHN0YW5kaW5nIHRoZSBmb3JlZ29pbmcsCitpZiBhcHBsaWNhYmxlIGxhdyBwcm9oaWJpdHMgb3Ig
cmVzdHJpY3RzIFlvdSBmcm9tIGZ1bGx5IGFuZC9vcgorc3BlY2lmaWNhbGx5IGNvbXBseWluZyB3
aXRoIFNlY3Rpb25zIDIgYW5kL29yIDMgb3IgcHJldmVudHMgdGhlCitlbmZvcmNlYWJpbGl0eSBv
ZiBlaXRoZXIgb2YgdGhvc2UgU2VjdGlvbnMsIHRoaXMgTGljZW5zZSB3aWxsCitpbW1lZGlhdGVs
eSB0ZXJtaW5hdGUgYW5kIFlvdSBtdXN0IGltbWVkaWF0ZWx5IGRpc2NvbnRpbnVlIGFueSB1c2Ug
b2YKK3RoZSBDb3ZlcmVkIENvZGUgYW5kIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiBpdCB0aGF0IGFy
ZSBpbiB5b3VyCitwb3NzZXNzaW9uIG9yIGNvbnRyb2wuCisKKzEzLjYgRGlzcHV0ZSBSZXNvbHV0
aW9uLiBBbnkgbGl0aWdhdGlvbiBvciBvdGhlciBkaXNwdXRlIHJlc29sdXRpb24KK2JldHdlZW4g
WW91IGFuZCBBcHBsZSByZWxhdGluZyB0byB0aGlzIExpY2Vuc2Ugc2hhbGwgdGFrZSBwbGFjZSBp
biB0aGUKK05vcnRoZXJuIERpc3RyaWN0IG9mIENhbGlmb3JuaWEsIGFuZCBZb3UgYW5kIEFwcGxl
IGhlcmVieSBjb25zZW50IHRvCit0aGUgcGVyc29uYWwganVyaXNkaWN0aW9uIG9mLCBhbmQgdmVu
dWUgaW4sIHRoZSBzdGF0ZSBhbmQgZmVkZXJhbAorY291cnRzIHdpdGhpbiB0aGF0IERpc3RyaWN0
IHdpdGggcmVzcGVjdCB0byB0aGlzIExpY2Vuc2UuIFRoZQorYXBwbGljYXRpb24gb2YgdGhlIFVu
aXRlZCBOYXRpb25zIENvbnZlbnRpb24gb24gQ29udHJhY3RzIGZvciB0aGUKK0ludGVybmF0aW9u
YWwgU2FsZSBvZiBHb29kcyBpcyBleHByZXNzbHkgZXhjbHVkZWQuCisKKzEzLjcgRW50aXJlIEFn
cmVlbWVudDsgR292ZXJuaW5nIExhdy4gVGhpcyBMaWNlbnNlIGNvbnN0aXR1dGVzIHRoZQorZW50
aXJlIGFncmVlbWVudCBiZXR3ZWVuIHRoZSBwYXJ0aWVzIHdpdGggcmVzcGVjdCB0byB0aGUgc3Vi
amVjdAorbWF0dGVyIGhlcmVvZi4gVGhpcyBMaWNlbnNlIHNoYWxsIGJlIGdvdmVybmVkIGJ5IHRo
ZSBsYXdzIG9mIHRoZQorVW5pdGVkIFN0YXRlcyBhbmQgdGhlIFN0YXRlIG9mIENhbGlmb3JuaWEs
IGV4Y2VwdCB0aGF0IGJvZHkgb2YKK0NhbGlmb3JuaWEgbGF3IGNvbmNlcm5pbmcgY29uZmxpY3Rz
IG9mIGxhdy4KKworV2hlcmUgWW91IGFyZSBsb2NhdGVkIGluIHRoZSBwcm92aW5jZSBvZiBRdWVi
ZWMsIENhbmFkYSwgdGhlIGZvbGxvd2luZworY2xhdXNlIGFwcGxpZXM6IFRoZSBwYXJ0aWVzIGhl
cmVieSBjb25maXJtIHRoYXQgdGhleSBoYXZlIHJlcXVlc3RlZAordGhhdCB0aGlzIExpY2Vuc2Ug
YW5kIGFsbCByZWxhdGVkIGRvY3VtZW50cyBiZSBkcmFmdGVkIGluIEVuZ2xpc2guIExlcworcGFy
dGllcyBvbnQgZXhpZ2UgcXVlIGxlIHByZXNlbnQgY29udHJhdCBldCB0b3VzIGxlcyBkb2N1bWVu
dHMKK2Nvbm5leGVzIHNvaWVudCByZWRpZ2VzIGVuIGFuZ2xhaXMuCisKK0VYSElCSVQgQS4KKwor
IlBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5OS0yMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuIEFs
bCBSaWdodHMKK1Jlc2VydmVkLgorCitUaGlzIGZpbGUgY29udGFpbnMgT3JpZ2luYWwgQ29kZSBh
bmQvb3IgTW9kaWZpY2F0aW9ucyBvZiBPcmlnaW5hbCBDb2RlCithcyBkZWZpbmVkIGluIGFuZCB0
aGF0IGFyZSBzdWJqZWN0IHRvIHRoZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UKK1ZlcnNp
b24gMi4wICh0aGUgJ0xpY2Vuc2UnKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4KK2NvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gUGxlYXNlIG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKK2h0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5jb20vYXBzbC8gYW5k
IHJlYWQgaXQgYmVmb3JlIHVzaW5nIHRoaXMKK2ZpbGUuCisKK1RoZSBPcmlnaW5hbCBDb2RlIGFu
ZCBhbGwgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgYXJlCitkaXN0cmli
dXRlZCBvbiBhbiAnQVMgSVMnIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
SVRIRVIKK0VYUFJFU1MgT1IgSU1QTElFRCwgQU5EIEFQUExFIEhFUkVCWSBESVNDTEFJTVMgQUxM
IFNVQ0ggV0FSUkFOVElFUywKK0lOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLCBRVUlFVCBFTkpPWU1FTlQgT1IgTk9OLUlORlJJTkdFTUVOVC4KK1BsZWFzZSBzZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZAor
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuIgpJbmRleDogQXBwRGVsZWdhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiBBcHBEZWxlZ2F0ZS5oCmRpZmYgLU4gQXBwRGVsZWdhdGUuaAotLS0g
QXBwRGVsZWdhdGUuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBBcHBEZWxlZ2F0ZS5o
CTI4IEp1bCAyMDA1IDA1OjE0OjMyIC0wMDAwCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfU1RBUlRACisgKiAKKyAqIFRoaXMgZmlsZSBj
b250YWlucyBPcmlnaW5hbCBDb2RlIGFuZC9vciBNb2RpZmljYXRpb25zIG9mIE9yaWdpbmFsIENv
ZGUKKyAqIGFzIGRlZmluZWQgaW4gYW5kIHRoYXQgYXJlIHN1YmplY3QgdG8gdGhlIEFwcGxlIFB1
YmxpYyBTb3VyY2UgTGljZW5zZQorICogVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpLiBZb3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLiBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDov
L3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9hcHNsLyBhbmQgcmVhZCBpdCBiZWZvcmUgdXNpbmcg
dGhpcworICogZmlsZS4KKyAqIAorICogVGhlIE9yaWdpbmFsIENvZGUgYW5kIGFsbCBzb2Z0d2Fy
ZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBhcmUKKyAqIGRpc3RyaWJ1dGVkIG9uIGFu
ICdBUyBJUycgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUgorICog
RVhQUkVTUyBPUiBJTVBMSUVELCBBTkQgQVBQTEUgSEVSRUJZIERJU0NMQUlNUyBBTEwgU1VDSCBX
QVJSQU5USUVTLAorICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UsIFFVSUVUIEVOSk9ZTUVOVCBPUiBOT04tSU5GUklOR0VNRU5ULgorICogUGxlYXNlIHNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5k
CisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIAorICogQEFQUExFX0xJQ0VO
U0VfSEVBREVSX0VOREAKKyAqLworCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorCisKK0BpbnRl
cmZhY2UgQXBwRGVsZWdhdGUgOiBOU09iamVjdCB7CisgICAgSUJPdXRsZXQgTlNXaW5kb3cgKnN2
Z0ltYWdlUmVwVGVzdFdpbmRvdzsKK30KKworLSAoSUJBY3Rpb24pc2hvd1Rlc3RzUGFuZWw6KGlk
KXNlbmRlcjsKKy0gKElCQWN0aW9uKXNob3dJbWFnZVJlcFRlc3RXaW5kb3c6KGlkKXNlbmRlcjsK
Ky0gKElCQWN0aW9uKXNob3dJbnNwZWN0b3JQYW5lbDooaWQpc2VuZGVyOworCitAZW5kCkluZGV4
OiBBcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IEFwcERlbGVnYXRlLm0KZGlmZiAt
TiBBcHBEZWxlZ2F0ZS5tCi0tLSBBcHBEZWxlZ2F0ZS5tCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw
MDAKKysrIEFwcERlbGVnYXRlLm0JMjggSnVsIDIwMDUgMDU6MTQ6MzIgLTAwMDAKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9TVEFSVEAK
KyAqIAorICogVGhpcyBmaWxlIGNvbnRhaW5zIE9yaWdpbmFsIENvZGUgYW5kL29yIE1vZGlmaWNh
dGlvbnMgb2YgT3JpZ2luYWwgQ29kZQorICogYXMgZGVmaW5lZCBpbiBhbmQgdGhhdCBhcmUgc3Vi
amVjdCB0byB0aGUgQXBwbGUgUHVibGljIFNvdXJjZSBMaWNlbnNlCisgKiBWZXJzaW9uIDIuMCAo
dGhlICdMaWNlbnNlJykuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCisgKiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFBsZWFzZSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2UuYXBwbGUuY29tL2Fwc2wvIGFuZCBy
ZWFkIGl0IGJlZm9yZSB1c2luZyB0aGlzCisgKiBmaWxlLgorICogCisgKiBUaGUgT3JpZ2luYWwg
Q29kZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGFyZQor
ICogZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRUlUSEVSCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIEFORCBBUFBMRSBIRVJFQlkg
RElTQ0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcgV0lUSE9VVCBMSU1J
VEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUVVJRVQgRU5KT1lNRU5UIE9SIE5PTi1JTkZSSU5HRU1F
TlQuCisgKiBQbGVhc2Ugc2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHJpZ2h0cyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICogCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfRU5EQAorICovCisKKyNpbXBvcnQgIkFwcERl
bGVnYXRlLmgiCisKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCisjaW1wb3J0ICJEcmF3VGVz
dEluc3BlY3RvckNvbnRyb2xsZXIuaCIKKworQGltcGxlbWVudGF0aW9uIEFwcERlbGVnYXRlCisK
Ky0gKElCQWN0aW9uKXNob3dUZXN0c1BhbmVsOihpZClzZW5kZXIKK3sKKyAgICBbW1Rlc3RDb250
cm9sbGVyIHNoYXJlZENvbnRyb2xsZXJdIHNob3dUZXN0c1BhbmVsOnNlbmRlcl07Cit9CisKKy0g
KElCQWN0aW9uKXNob3dJbWFnZVJlcFRlc3RXaW5kb3c6KGlkKXNlbmRlcgoreworICAgIFtzdmdJ
bWFnZVJlcFRlc3RXaW5kb3cgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VuZGVyXTsKK30KKworLSAo
SUJBY3Rpb24pc2hvd0luc3BlY3RvclBhbmVsOihpZClzZW5kZXIKK3sKKyAgICBbW0RyYXdUZXN0
SW5zcGVjdG9yQ29udHJvbGxlciBzaGFyZWRJbnN0YW5jZV0gc2hvd0luc3BlY3RvclBhbmVsOnNl
bmRlcl07Cit9CisKKy0gKEJPT0wpYXBwbGljYXRpb25TaG91bGRPcGVuVW50aXRsZWRGaWxlOihO
U0FwcGxpY2F0aW9uICopc2VuZGVyCit7CisgICAgcmV0dXJuIE5POworfQorCitAZW5kCkluZGV4
OiBEcmF3VGVzdERvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRHJhd1Rlc3REb2N1bWVu
dC5oCmRpZmYgLU4gRHJhd1Rlc3REb2N1bWVudC5oCi0tLSBEcmF3VGVzdERvY3VtZW50LmgJMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgRHJhd1Rlc3REb2N1bWVudC5oCTI4IEp1bCAyMDA1
IDA1OjE0OjMyIC0wMDAwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAQVBQ
TEVfTElDRU5TRV9IRUFERVJfU1RBUlRACisgKiAKKyAqIFRoaXMgZmlsZSBjb250YWlucyBPcmln
aW5hbCBDb2RlIGFuZC9vciBNb2RpZmljYXRpb25zIG9mIE9yaWdpbmFsIENvZGUKKyAqIGFzIGRl
ZmluZWQgaW4gYW5kIHRoYXQgYXJlIHN1YmplY3QgdG8gdGhlIEFwcGxlIFB1YmxpYyBTb3VyY2Ug
TGljZW5zZQorICogVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpLiBZb3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBQbGVh
c2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5vcGVuc291
cmNlLmFwcGxlLmNvbS9hcHNsLyBhbmQgcmVhZCBpdCBiZWZvcmUgdXNpbmcgdGhpcworICogZmls
ZS4KKyAqIAorICogVGhlIE9yaWdpbmFsIENvZGUgYW5kIGFsbCBzb2Z0d2FyZSBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBhcmUKKyAqIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgYmFz
aXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUgorICogRVhQUkVTUyBPUiBJ
TVBMSUVELCBBTkQgQVBQTEUgSEVSRUJZIERJU0NMQUlNUyBBTEwgU1VDSCBXQVJSQU5USUVTLAor
ICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFFVSUVUIEVO
Sk9ZTUVOVCBPUiBOT04tSU5GUklOR0VNRU5ULgorICogUGxlYXNlIHNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kCisgKiBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIAorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX0VO
REAKKyAqLworCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorCitAY2xhc3MgRHJhd0RvY3VtZW50
OworQGNsYXNzIERyYXdUZXN0VmlldzsKK0BjbGFzcyBEcmF3VGVzdFRvb2xiYXJDb250cm9sbGVy
OworCitAaW50ZXJmYWNlIERyYXdUZXN0RG9jdW1lbnQgOiBOU0RvY3VtZW50Cit7CisgICAgSUJP
dXRsZXQgRHJhd1Rlc3RWaWV3ICpkcmF3VmlldzsKKyAgICBJQk91dGxldCBOU0RyYXdlciAqZGVi
dWdEcmF3ZXI7CisKKyAgICBEcmF3RG9jdW1lbnQgKmRvY3VtZW50OworICAgIERyYXdUZXN0VG9v
bGJhckNvbnRyb2xsZXIgKnRvb2xiYXJDb250cm9sbGVyOworfQorCistICh2b2lkKXNldERyYXdE
b2N1bWVudDooRHJhd0RvY3VtZW50ICopZHJhd0RvY3VtZW50OworLSAoRHJhd0RvY3VtZW50ICop
ZHJhd0RvY3VtZW50OworCisvLyBkZWJ1ZyBtZW51LgorLSAoSUJBY3Rpb24pZHVtcFNWR1RvQ29u
c29sZTooaWQpc2VuZGVyOworLSAoSUJBY3Rpb24pdG9nZ2xlRGVidWdEcmF3ZXI6KGlkKXNlbmRl
cjsKKy0gKElCQWN0aW9uKXJ1bldpbmRvd1Jlc2l6ZVRlc3Q6KGlkKXNlbmRlcjsKKworQGVuZApJ
bmRleDogRHJhd1Rlc3REb2N1bWVudC5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IERyYXdUZXN0RG9j
dW1lbnQubQpkaWZmIC1OIERyYXdUZXN0RG9jdW1lbnQubQotLS0gRHJhd1Rlc3REb2N1bWVudC5t
CTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIERyYXdUZXN0RG9jdW1lbnQubQkyOCBKdWwg
MjAwNSAwNToxNDozMiAtMDAwMApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IEBBUFBMRV9MSUNFTlNFX0hFQURFUl9TVEFSVEAKKyAqIAorICogVGhpcyBmaWxlIGNvbnRhaW5z
IE9yaWdpbmFsIENvZGUgYW5kL29yIE1vZGlmaWNhdGlvbnMgb2YgT3JpZ2luYWwgQ29kZQorICog
YXMgZGVmaW5lZCBpbiBhbmQgdGhhdCBhcmUgc3ViamVjdCB0byB0aGUgQXBwbGUgUHVibGljIFNv
dXJjZSBMaWNlbnNlCisgKiBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJykuIFlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCisgKiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
IFBsZWFzZSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm9w
ZW5zb3VyY2UuYXBwbGUuY29tL2Fwc2wvIGFuZCByZWFkIGl0IGJlZm9yZSB1c2luZyB0aGlzCisg
KiBmaWxlLgorICogCisgKiBUaGUgT3JpZ2luYWwgQ29kZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGFyZQorICogZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElT
JyBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSCisgKiBFWFBSRVNT
IE9SIElNUExJRUQsIEFORCBBUFBMRSBIRVJFQlkgRElTQ0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJ
RVMsCisgKiBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUVVJ
RVQgRU5KT1lNRU5UIE9SIE5PTi1JTkZSSU5HRU1FTlQuCisgKiBQbGVhc2Ugc2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQKKyAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICogCisgKiBAQVBQTEVfTElDRU5TRV9IRUFE
RVJfRU5EQAorICovCisKKyNpbXBvcnQgIkRyYXdUZXN0RG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRy
YXdUZXN0Vmlldy5oIgorI2ltcG9ydCAiRHJhd1Rlc3RUb29sYmFyQ29udHJvbGxlci5oIgorCisj
aW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnRQcml2YXRlLmg+CisKK0BpbXBsZW1lbnRh
dGlvbiBEcmF3VGVzdERvY3VtZW50CisKKy0gKGlkKWluaXRXaXRoVHlwZTooTlNTdHJpbmcgKil0
eXBlTmFtZSBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvcgoreworICAgIGlmIChvdXRFcnJvcikg
eworICAgICAgICBOU0RpY3Rpb25hcnkgKmVycm9ySW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgIEAiTm8gZG9jdW1lbnQgY291bGQg
YmUgY3JlYXRlZC4iLCBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5LAorICAgICAgICAgICAgQCJO
ZXcgZG9jdW1lbnQgY3JlYXRpb24gbm90IHlldCBzdXBwb3J0ZWQuIiwgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXksCisgICAgICAgICAgICBuaWxdOworICAgICAgICAqb3V0RXJyb3Ig
PSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6MCB1c2Vy
SW5mbzplcnJvckluZm9dOworICAgIH0KKyAgICBbc2VsZiByZWxlYXNlXTsKKyAgICByZXR1cm4g
bmlsOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbdG9vbGJhckNvbnRyb2xsZXIgcmVs
ZWFzZV07CisgICAgW2RvY3VtZW50IHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAoTlNTdHJpbmcgKil3aW5kb3dOaWJOYW1lCit7CisgICAgcmV0dXJuIEAiRHJhd1Rlc3RE
b2N1bWVudCI7Cit9CisKKy0gKElCQWN0aW9uKWR1bXBTVkdUb0NvbnNvbGU6KGlkKXNlbmRlcgor
eworICAgIE5TTG9nKEAiU1ZHOiAlQCIsIFtkb2N1bWVudCBzdmdUZXh0XSk7Cit9CisKKy0gKHZv
aWQpc2l6ZVdpbmRvd1RvRml0Q2FudmFzCit7CisgICAgTlNTaXplIGNhbnZhc1NpemUgPSBbZG9j
dW1lbnQgY2FudmFzU2l6ZV07CisgICAgaWYgKChjYW52YXNTaXplLndpZHRoID4gMTApICYmIChj
YW52YXNTaXplLmhlaWdodCA+IDEwKSkgeworICAgICAgICBOU1dpbmRvdyAqd2luZG93ID0gW2Ry
YXdWaWV3IHdpbmRvd107CisgICAgICAgIC8vY2FudmFzU2l6ZS5oZWlnaHQgKz0gW2RyYXdWaWV3
IGZyYW1lXS5vcmlnaW4ueTsgLy8gdG8gYWNjb21pZGF0ZSB0aGUgdG9vbCBwYWxsZXR0ZQorICAg
ICAgICBOU1JlY3QgbmV3RnJhbWUgPSBbd2luZG93IGZyYW1lUmVjdEZvckNvbnRlbnRSZWN0Ok5T
TWFrZVJlY3QoMCwwLGNhbnZhc1NpemUud2lkdGgsIGNhbnZhc1NpemUuaGVpZ2h0KV07CisgICAg
ICAgIG5ld0ZyYW1lID0gW3dpbmRvdyBjb25zdHJhaW5GcmFtZVJlY3Q6bmV3RnJhbWUgdG9TY3Jl
ZW46W3dpbmRvdyBzY3JlZW5dXTsKKyAgICAgICAgLy8gd2UgcmVhbGx5IHNob3VsZCBub3Qgc2hv
dyBtYXJnaW5zIGhlcmUuCisgICAgICAgIFt3aW5kb3cgc2V0RnJhbWU6bmV3RnJhbWUgZGlzcGxh
eTpZRVNdOworICAgIH0KK30KKworLSAodm9pZCl3aW5kb3dDb250cm9sbGVyRGlkTG9hZE5pYjoo
TlNXaW5kb3dDb250cm9sbGVyICopYUNvbnRyb2xsZXIKK3sKKyAgICBbc3VwZXIgd2luZG93Q29u
dHJvbGxlckRpZExvYWROaWI6YUNvbnRyb2xsZXJdOworICAgIHRvb2xiYXJDb250cm9sbGVyID0g
W1tEcmF3VGVzdFRvb2xiYXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aERyYXdWaWV3OmRyYXdW
aWV3XTsKKyAgICBbZHJhd1ZpZXcgc2V0RG9jdW1lbnQ6W3NlbGYgZHJhd0RvY3VtZW50XV07Cisg
ICAgW3NlbGYgc2l6ZVdpbmRvd1RvRml0Q2FudmFzXTsKK30KKworLSAoSUJBY3Rpb24pb3BlblNv
dXJjZUZvclNlbGVjdGlvbjooaWQpc2VuZGVyCit7CisgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRX
b3Jrc3BhY2VdIG9wZW5GaWxlOltzZWxmIGZpbGVOYW1lXSB3aXRoQXBwbGljYXRpb246QCJUZXh0
RWRpdCJdOworfQorCistIChJQkFjdGlvbil6b29tVG9Db250ZW50OihpZClzZW5kZXIKK3sKKyAg
ICBbZG9jdW1lbnQgc2l6ZUNhbnZhc1RvRml0Q29udGVudF07CisgICAgW2RyYXdWaWV3IHNldE5l
ZWRzRGlzcGxheTpZRVNdOworICAgIFtzZWxmIHNpemVXaW5kb3dUb0ZpdENhbnZhc107Cit9CisK
Ky0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbk9mVHlwZTooTlNTdHJpbmcgKilhVHlwZQor
eworICAgIHJldHVybiBbW2RvY3VtZW50IHN2Z1RleHRdIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXTsKK30KKworLSAoQk9PTClsb2FkRGF0YVJlcHJlc2VudGF0aW9uOihO
U0RhdGEgKilkYXRhIG9mVHlwZTooTlNTdHJpbmcgKilhVHlwZQoreworICAgIFtzZWxmIHNldERy
YXdEb2N1bWVudDpbRHJhd0RvY3VtZW50IGRvY3VtZW50V2l0aFNWR0RhdGE6ZGF0YV1dOworICAg
IHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpc2V0RHJhd0RvY3VtZW50OihEcmF3RG9jdW1lbnQg
KilkcmF3RG9jdW1lbnQKK3sKKyAgICBpZCBvbGREb2MgPSBkb2N1bWVudDsKKyAgICBkb2N1bWVu
dCA9IFtkcmF3RG9jdW1lbnQgcmV0YWluXTsKKyAgICBbb2xkRG9jIHJlbGVhc2VdOworfQorCist
IChEcmF3RG9jdW1lbnQgKilkcmF3RG9jdW1lbnQKK3sKKyAgICAvL2lmICghZG9jdW1lbnQpIGRv
Y3VtZW50ID0gW1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBkb2N1bWVu
dDsKK30KKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBEZWJ1ZyBNZXRob2RzCisKKy0g
KElCQWN0aW9uKXRvZ2dsZURlYnVnRHJhd2VyOihpZClzZW5kZXIKK3sKKyAgICBbZGVidWdEcmF3
ZXIgdG9nZ2xlOnNlbmRlcl07Cit9CisKKy0gKGlkKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3
ICopb3V0bGluZVZpZXcgY2hpbGQ6KGludClpbmRleCBvZkl0ZW06KGlkKWl0ZW0KK3sKKyAgICBy
ZXR1cm4gbmlsOworfQorCistIChCT09MKW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0
bGluZVZpZXcgaXNJdGVtRXhwYW5kYWJsZTooaWQpaXRlbQoreworICAgIHJldHVybiBOTzsKK30K
KworLSAoaW50KW91dGxpbmVWaWV3OihOU091dGxpbmVWaWV3ICopb3V0bGluZVZpZXcgbnVtYmVy
T2ZDaGlsZHJlbk9mSXRlbTooaWQpaXRlbQoreworICAgIHJldHVybiAwOworfQorCistIChpZClv
dXRsaW5lVmlldzooTlNPdXRsaW5lVmlldyAqKW91dGxpbmVWaWV3IG9iamVjdFZhbHVlRm9yVGFi
bGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiBieUl0ZW06KGlkKWl0ZW0KK3sK
KyAgICByZXR1cm4gbmlsOworfQorCistIChJQkFjdGlvbilydW5XaW5kb3dSZXNpemVUZXN0Oihp
ZClzZW5kZXIKK3sKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW2RyYXdWaWV3IHdpbmRvd107Cisg
ICAgTlNTY3JlZW4gKnNjcmVlbiA9IFt3aW5kb3cgc2NyZWVuXTsKKyAgICBmbG9hdCBzY3JlZW5I
ZWlnaHQgPSBbc2NyZWVuIHZpc2libGVGcmFtZV0uc2l6ZS5oZWlnaHQ7CisgICAgTlNSZWN0IG9y
aWdpbmFsRnJhbWUgPSBbd2luZG93IGZyYW1lXTsKKyAgICAvLyBpbml0aWFsIHNldHVwCisgICAg
Qk9PTCB0b29sYmFyVmlzaWJsZSA9IFtbd2luZG93IHRvb2xiYXJdIGlzVmlzaWJsZV07CisgICAg
aWYgKHRvb2xiYXJWaXNpYmxlKSBbd2luZG93IHRvZ2dsZVRvb2xiYXJTaG93bjpzZWxmXTsKKyAg
ICBbd2luZG93IHNldEZyYW1lOk5TTWFrZVJlY3QoMCxzY3JlZW5IZWlnaHQtMTAwLDEwMCwxMDAp
IGRpc3BsYXk6WUVTXTsKKyAgICAKKyAgICAvLyBncmFiIHRpbWUuCisgICAgQ0ZBYnNvbHV0ZVRp
bWUgc3RhcnQgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKKyAgICAKKyAgICAvLyBydW4g
dGVzdAorICAgIGZvciAoaW50IHggPSAwOyB4IDwgMzsgeCsrKSB7CisgICAgICAgIGZvciAoZmxv
YXQgc2l6ZSA9IDEwMDsgc2l6ZSA8IDUwMC5mOyBzaXplICs9IDIwLmYpIHsKKyAgICAgICAgICAg
IFt3aW5kb3cgc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCBzY3JlZW5IZWlnaHQtc2l6ZSwgc2l6ZSwg
c2l6ZSkgZGlzcGxheTpZRVNdOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGRvdWJsZSBl
bGFwc2VkID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgLSBzdGFydDsKKyAgICAKKyAgICAv
LyBsb2cKKyAgICBOU0xvZyhAIldpbmRvdyByZXNpemUgdGVzdDogJWZzIiwgZWxhcHNlZCk7Cisg
ICAgCisgICAgLy8gcmVzdG9yZQorICAgIGlmICh0b29sYmFyVmlzaWJsZSkgW3dpbmRvdyB0b2dn
bGVUb29sYmFyU2hvd246c2VsZl07CisgICAgW3dpbmRvdyBzZXRGcmFtZTpvcmlnaW5hbEZyYW1l
IGRpc3BsYXk6WUVTXTsKK30KKworQGVuZApJbmRleDogRHJhd1Rlc3RJbnNwZWN0b3JDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRHJhd1Rlc3RJbnNwZWN0b3JDb250cm9sbGVyLmgK
ZGlmZiAtTiBEcmF3VGVzdEluc3BlY3RvckNvbnRyb2xsZXIuaAotLS0gRHJhd1Rlc3RJbnNwZWN0
b3JDb250cm9sbGVyLmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgRHJhd1Rlc3RJbnNw
ZWN0b3JDb250cm9sbGVyLmgJMjggSnVsIDIwMDUgMDU6MTQ6MzIgLTAwMDAKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9TVEFSVEAKKyAq
IAorICogVGhpcyBmaWxlIGNvbnRhaW5zIE9yaWdpbmFsIENvZGUgYW5kL29yIE1vZGlmaWNhdGlv
bnMgb2YgT3JpZ2luYWwgQ29kZQorICogYXMgZGVmaW5lZCBpbiBhbmQgdGhhdCBhcmUgc3ViamVj
dCB0byB0aGUgQXBwbGUgUHVibGljIFNvdXJjZSBMaWNlbnNlCisgKiBWZXJzaW9uIDIuMCAodGhl
ICdMaWNlbnNlJykuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCisgKiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFBsZWFzZSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisgKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2UuYXBwbGUuY29tL2Fwc2wvIGFuZCByZWFk
IGl0IGJlZm9yZSB1c2luZyB0aGlzCisgKiBmaWxlLgorICogCisgKiBUaGUgT3JpZ2luYWwgQ29k
ZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGFyZQorICog
ZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRUlUSEVSCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIEFORCBBUFBMRSBIRVJFQlkgRElT
Q0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFU
SU9OLCBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSwgUVVJRVQgRU5KT1lNRU5UIE9SIE5PTi1JTkZSSU5HRU1FTlQu
CisgKiBQbGVhc2Ugc2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHJpZ2h0cyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICog
CisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfRU5EQAorICovCisKKyNpbXBvcnQgPENvY29hL0Nv
Y29hLmg+CisKKworQGludGVyZmFjZSBEcmF3VGVzdEluc3BlY3RvckNvbnRyb2xsZXIgOiBOU09i
amVjdCB7CisgICAgSUJPdXRsZXQgTlNQYW5lbCAqX2luc3BlY3RvclBhbmVsOworfQorCisrIChp
ZClzaGFyZWRJbnN0YW5jZTsKKworLSAoSUJBY3Rpb24pc2hvd0luc3BlY3RvclBhbmVsOihpZClz
ZW5kZXI7CisKK0BlbmQKSW5kZXg6IERyYXdUZXN0SW5zcGVjdG9yQ29udHJvbGxlci5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IERyYXdUZXN0SW5zcGVjdG9yQ29udHJvbGxlci5tCmRpZmYgLU4gRHJh
d1Rlc3RJbnNwZWN0b3JDb250cm9sbGVyLm0KLS0tIERyYXdUZXN0SW5zcGVjdG9yQ29udHJvbGxl
ci5tCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIERyYXdUZXN0SW5zcGVjdG9yQ29udHJv
bGxlci5tCTI4IEp1bCAyMDA1IDA1OjE0OjMyIC0wMDAwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfU1RBUlRACisgKiAKKyAqIFRoaXMg
ZmlsZSBjb250YWlucyBPcmlnaW5hbCBDb2RlIGFuZC9vciBNb2RpZmljYXRpb25zIG9mIE9yaWdp
bmFsIENvZGUKKyAqIGFzIGRlZmluZWQgaW4gYW5kIHRoYXQgYXJlIHN1YmplY3QgdG8gdGhlIEFw
cGxlIFB1YmxpYyBTb3VyY2UgTGljZW5zZQorICogVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScp
LiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLiBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICog
aHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9hcHNsLyBhbmQgcmVhZCBpdCBiZWZvcmUg
dXNpbmcgdGhpcworICogZmlsZS4KKyAqIAorICogVGhlIE9yaWdpbmFsIENvZGUgYW5kIGFsbCBz
b2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBhcmUKKyAqIGRpc3RyaWJ1dGVk
IG9uIGFuICdBUyBJUycgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhF
UgorICogRVhQUkVTUyBPUiBJTVBMSUVELCBBTkQgQVBQTEUgSEVSRUJZIERJU0NMQUlNUyBBTEwg
U1VDSCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UsIFFVSUVUIEVOSk9ZTUVOVCBPUiBOT04tSU5GUklOR0VNRU5ULgorICogUGxlYXNl
IHNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdo
dHMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIAorICogQEFQUExF
X0xJQ0VOU0VfSEVBREVSX0VOREAKKyAqLworCisKKyNpbXBvcnQgIkRyYXdUZXN0SW5zcGVjdG9y
Q29udHJvbGxlci5oIgorCitAaW1wbGVtZW50YXRpb24gRHJhd1Rlc3RJbnNwZWN0b3JDb250cm9s
bGVyCisKKysgKGlkKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIERyYXdUZXN0SW5zcGVj
dG9yQ29udHJvbGxlciAqX19zaGFyZWRDb250cm9sbGVyID0gbmlsOworICAgIGlmICghX19zaGFy
ZWRDb250cm9sbGVyKSB7CisgICAgICAgIF9fc2hhcmVkQ29udHJvbGxlciA9IFtbc2VsZiBhbGxv
Y10gaW5pdF07CisgICAgfQorICAgIHJldHVybiBfX3NoYXJlZENvbnRyb2xsZXI7Cit9CisKKy0g
KElCQWN0aW9uKXNob3dJbnNwZWN0b3JQYW5lbDooaWQpc2VuZGVyCit7CisgICAgaWYgKCFfaW5z
cGVjdG9yUGFuZWwpIHsKKyAgICAgICAgW05TQnVuZGxlIGxvYWROaWJOYW1lZDpAIkluc3BlY3Rv
ciIgb3duZXI6c2VsZl07CisgICAgfQorICAgIFtfaW5zcGVjdG9yUGFuZWwgbWFrZUtleUFuZE9y
ZGVyRnJvbnQ6c2VsZl07Cit9CisKKworQGVuZApJbmRleDogRHJhd1Rlc3RUb29sYmFyQ29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IERyYXdUZXN0VG9vbGJhckNvbnRyb2xsZXIuaApk
aWZmIC1OIERyYXdUZXN0VG9vbGJhckNvbnRyb2xsZXIuaAotLS0gRHJhd1Rlc3RUb29sYmFyQ29u
dHJvbGxlci5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIERyYXdUZXN0VG9vbGJhckNv
bnRyb2xsZXIuaAkyOCBKdWwgMjAwNSAwNToxNDozMyAtMDAwMApAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX1NUQVJUQAorICogCisgKiBU
aGlzIGZpbGUgY29udGFpbnMgT3JpZ2luYWwgQ29kZSBhbmQvb3IgTW9kaWZpY2F0aW9ucyBvZiBP
cmlnaW5hbCBDb2RlCisgKiBhcyBkZWZpbmVkIGluIGFuZCB0aGF0IGFyZSBzdWJqZWN0IHRvIHRo
ZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UKKyAqIFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vu
c2UnKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4gUGxlYXNlIG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
KyAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5jb20vYXBzbC8gYW5kIHJlYWQgaXQgYmVm
b3JlIHVzaW5nIHRoaXMKKyAqIGZpbGUuCisgKiAKKyAqIFRoZSBPcmlnaW5hbCBDb2RlIGFuZCBh
bGwgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgYXJlCisgKiBkaXN0cmli
dXRlZCBvbiBhbiAnQVMgSVMnIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
SVRIRVIKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgQU5EIEFQUExFIEhFUkVCWSBESVNDTEFJTVMg
QUxMIFNVQ0ggV0FSUkFOVElFUywKKyAqIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04sIEFO
WSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLCBRVUlFVCBFTkpPWU1FTlQgT1IgTk9OLUlORlJJTkdFTUVOVC4KKyAqIFBs
ZWFzZSBzZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cmlnaHRzIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAKKyAqIEBB
UFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKworI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4K
KworQGNsYXNzIERyYXdWaWV3OworCitAaW50ZXJmYWNlIERyYXdUZXN0VG9vbGJhckNvbnRyb2xs
ZXIgOiBOU09iamVjdCB7CisgICAgRHJhd1ZpZXcgKl9kcmF3VmlldzsKKyAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpfdG9vbGJhckl0ZW1zOworfQorCistIChpZClpbml0V2l0aERyYXdWaWV3OihE
cmF3VmlldyAqKWRyYXdWaWV3OworCitAZW5kCkluZGV4OiBEcmF3VGVzdFRvb2xiYXJDb250cm9s
bGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRHJhd1Rlc3RUb29sYmFyQ29udHJvbGxlci5tCmRp
ZmYgLU4gRHJhd1Rlc3RUb29sYmFyQ29udHJvbGxlci5tCi0tLSBEcmF3VGVzdFRvb2xiYXJDb250
cm9sbGVyLm0JMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgRHJhd1Rlc3RUb29sYmFyQ29u
dHJvbGxlci5tCTI4IEp1bCAyMDA1IDA1OjE0OjMzIC0wMDAwCkBAIC0wLDAgKzEsMzQ5IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX1NUQVJUQAorICogCisgKiBU
aGlzIGZpbGUgY29udGFpbnMgT3JpZ2luYWwgQ29kZSBhbmQvb3IgTW9kaWZpY2F0aW9ucyBvZiBP
cmlnaW5hbCBDb2RlCisgKiBhcyBkZWZpbmVkIGluIGFuZCB0aGF0IGFyZSBzdWJqZWN0IHRvIHRo
ZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UKKyAqIFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vu
c2UnKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4gUGxlYXNlIG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
KyAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5jb20vYXBzbC8gYW5kIHJlYWQgaXQgYmVm
b3JlIHVzaW5nIHRoaXMKKyAqIGZpbGUuCisgKiAKKyAqIFRoZSBPcmlnaW5hbCBDb2RlIGFuZCBh
bGwgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgYXJlCisgKiBkaXN0cmli
dXRlZCBvbiBhbiAnQVMgSVMnIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
SVRIRVIKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgQU5EIEFQUExFIEhFUkVCWSBESVNDTEFJTVMg
QUxMIFNVQ0ggV0FSUkFOVElFUywKKyAqIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04sIEFO
WSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLCBRVUlFVCBFTkpPWU1FTlQgT1IgTk9OLUlORlJJTkdFTUVOVC4KKyAqIFBs
ZWFzZSBzZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cmlnaHRzIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAKKyAqIEBB
UFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKworI2ltcG9ydCAiRHJhd1Rlc3RUb29sYmFy
Q29udHJvbGxlci5oIgorCisjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3Vmlld1ByaXZhdGUuaD4K
KworZW51bQoreworICAgIFRvb2xiYXJCcm93c2VUb29sVGFnID0gMCwKKyAgICBUb29sYmFyUGFu
VG9vbFRhZywKKyAgICBUb29sYmFyWm9vbVRvb2xUYWcsCisgICAgCisgICAgVG9vbGJhclBvaW50
ZXJUb29sVGFnLAorICAgIFRvb2xiYXJMaW5lVG9vbFRhZywKKyAgICBUb29sYmFyUmVjdGFuZ2xl
VG9vbFRhZywKKyAgICBUb29sYmFyRWxpcHNlVG9vbFRhZywKKyAgICBUb29sYmFyVHJpYW5nbGVU
b29sVGFnLAorICAgIFRvb2xiYXJQb2x5TGluZVRvb2xUYWcsCisgICAgVG9vbGJhckFyY1Rvb2xU
YWcsCisgICAgCisgICAgVG9vbGJhckRlbGV0ZVNlbGVjdGlvblRhZywKKyAgICAKKyAgICBUb29s
YmFyTW92ZUZvcndhcmRUYWcsCisgICAgVG9vbGJhck1vdmVCYWNrd2FyZFRhZywKKyAgICBUb29s
YmFyTW92ZVRvRnJvbnRUYWcsCisgICAgVG9vbGJhck1vdmVUb0JhY2tUYWcsCisgICAgVG9vbGJh
ck1pc2NJdGVtCit9OworCisvLyBDb25zdGFudHMKK05TU3RyaW5nICpUb29sYmFySWRlbnRpZmll
ciA9IEAiTWFpbiBEb2N1bWVudCBUb29sYmFyIjsKKworTlNTdHJpbmcgKlRvb2xiYXJCcm93c2VU
b29sSWRlbnRpZmllciA9IEAiQnJvd3NlIjsKK05TU3RyaW5nICpUb29sYmFyUGFuVG9vbElkZW50
aWZpZXIgPSBAIlBhbiI7CitOU1N0cmluZyAqVG9vbGJhclpvb21Ub29sSWRlbnRpZmllciA9IEAi
Wm9vbSI7CisKK05TU3RyaW5nICpUb29sYmFyUG9pbnRlclRvb2xJZGVudGlmaWVyID0gQCJQb2lu
dGVyIjsKK05TU3RyaW5nICpUb29sYmFyUmVjdGFuZ2xlVG9vbElkZW50aWZpZXIgPSBAIlJlY3Rh
bmdsZSI7CitOU1N0cmluZyAqVG9vbGJhckVsaXBzZVRvb2xJZGVudGlmaWVyID0gQCJPdmFsIjsK
K05TU3RyaW5nICpUb29sYmFyVHJpYW5nbGVUb29sSWRlbnRpZmllciA9IEAiVHJpYW5nbGUiOwor
TlNTdHJpbmcgKlRvb2xiYXJQb2x5TGluZVRvb2xJZGVudGlmaWVyID0gQCJQb2x5TGluZSI7CitO
U1N0cmluZyAqVG9vbGJhckFyY1Rvb2xJZGVudGlmaWVyID0gQCJBcmMiOworCitOU1N0cmluZyAq
VG9vbGJhckRlbGV0ZVNoYXBlSWRlbnRpZmllciA9IEAiRGVsZXRlIjsKK05TU3RyaW5nICpUb29s
YmFyTW92ZUZvcndhcmRJZGVudGlmaWVyID0gQCJGb3J3YXJkIjsKK05TU3RyaW5nICpUb29sYmFy
TW92ZUJhY2t3YXJkSWRlbnRpZmllciA9IEAiQmFja3dhcmQiOworTlNTdHJpbmcgKlRvb2xiYXJN
b3ZlVG9Gcm9udElkZW50aWZpZXIgPSBAIkZyb250IjsKK05TU3RyaW5nICpUb29sYmFyTW92ZVRv
QmFja0lkZW50aWZpZXIgPSBAIkJhY2siOworCitOU1N0cmluZyAqVG9vbGJhclBvaW50ZXJUb29s
SW1hZ2UgPSBAIlRvb2xiYXJfUG9pbnRlciI7CitOU1N0cmluZyAqVG9vbGJhclJlY3RhbmdsZVRv
b2xJbWFnZSA9IEAiVG9vbGJhcl9SZWN0YW5nbGUiOworTlNTdHJpbmcgKlRvb2xiYXJFbGlwc2VU
b29sSW1hZ2UgPSBAIlRvb2xiYXJfT3ZhbCI7CitOU1N0cmluZyAqVG9vbGJhclRyaWFuZ2xlVG9v
bEltYWdlID0gQCJUb29sYmFyX1RyaWFuZ2xlIjsKKworTlNTdHJpbmcgKlRvb2xiYXJEZWxldGVT
aGFwZUltYWdlID0gQCJUb29sYmFyX0RlbGV0ZSI7CitOU1N0cmluZyAqVG9vbGJhck1vdmVGb3J3
YXJkSW1hZ2UgPSBAIlRvb2xiYXJfRm9yd2FyZCI7CitOU1N0cmluZyAqVG9vbGJhck1vdmVCYWNr
d2FyZEltYWdlID0gQCJUb29sYmFyX0JhY2t3YXJkIjsKK05TU3RyaW5nICpUb29sYmFyTW92ZVRv
RnJvbnRJbWFnZSA9IEAiVG9vbGJhcl9Gcm9udCI7CitOU1N0cmluZyAqVG9vbGJhck1vdmVUb0Jh
Y2tJbWFnZSA9IEAiVG9vbGJhcl9CYWNrIjsKKworQGludGVyZmFjZSBEcmF3VGVzdFRvb2xiYXJD
b250cm9sbGVyIChJbnRlcm5hbE1ldGhvZHMpCistICh2b2lkKXNldHVwVG9vbGJhcjsKKy0gKHZv
aWQpYWRkVG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIHdp
dGhJbWFnZTooTlNTdHJpbmcgKilpbWFnZSB3aXRoVGFnOihpbnQpdGFnOworLSAodm9pZClhZGRU
b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgd2l0aEltYWdl
OihOU1N0cmluZyAqKWltYWdlOworLSAodm9pZClhZGRUb29sYmFySXRlbTooTlNTdHJpbmcgKilp
ZGVudGlmaWVyCisgICAgICAgICAgICAgd2l0aExhYmVsOihOU1N0cmluZyAqKWxhYmVsCisgICAg
ICB3aXRoUGFsZXR0ZUxhYmVsOihOU1N0cmluZyAqKXBhbGV0dGVMYWJlbAorICAgICAgICAgICAg
IHdpdGhJbWFnZTooTlNTdHJpbmcgKilpbWFnZU5hbWUKKyAgICAgICAgICAgd2l0aFRvb2xUaXA6
KE5TU3RyaW5nICopdG9vbFRpcAorICAgICAgICAgICAgICAgd2l0aFRhZzooaW50KXRhZzsKK0Bl
bmQKKworCitAaW1wbGVtZW50YXRpb24gRHJhd1Rlc3RUb29sYmFyQ29udHJvbGxlcgorCistIChp
ZClpbml0V2l0aERyYXdWaWV3OihEcmF3VmlldyAqKWRyYXdWaWV3Cit7CisgICAgaWYgKHNlbGYg
PSBbc3VwZXIgaW5pdF0peworICAgICAgICBfZHJhd1ZpZXcgPSBbZHJhd1ZpZXcgcmV0YWluXTsK
KyAgICAgICAgW3NlbGYgc2V0dXBUb29sYmFyXTsgLy8gY291bGQgYmUgZG9uZSBsYXppbHkuCisg
ICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3Rv
b2xiYXJJdGVtcyByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKworLSAodm9p
ZClhZGRUb29sYmFySXRlbVdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgd2l0
aEltYWdlOihOU1N0cmluZyAqKWltYWdlIHdpdGhUYWc6KGludCl0YWcKK3sKKyAgICAKKyAgICBb
c2VsZiBhZGRUb29sYmFySXRlbTppZGVudGlmaWVyCisgICAgICAgICAgICAgICB3aXRoTGFiZWw6
aWRlbnRpZmllcgorICAgICAgICB3aXRoUGFsZXR0ZUxhYmVsOmlkZW50aWZpZXIKKyAgICAgICAg
ICAgICAgIHdpdGhJbWFnZTppbWFnZQorICAgICAgICAgICAgIHdpdGhUb29sVGlwOmlkZW50aWZp
ZXIKKyAgICAgICAgICAgICAgICAgd2l0aFRhZzp0YWddOworfQorCistICh2b2lkKWFkZFRvb2xi
YXJJdGVtV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciB3aXRoSW1hZ2U6KE5T
U3RyaW5nICopaW1hZ2UKK3sKKyAgICBbc2VsZiBhZGRUb29sYmFySXRlbVdpdGhJZGVudGlmaWVy
OmlkZW50aWZpZXIgd2l0aEltYWdlOmltYWdlIHdpdGhUYWc6VG9vbGJhck1pc2NJdGVtXTsKK30K
KworLSAodm9pZClhZGRUb29sYmFySXRlbTooTlNTdHJpbmcgKilpZGVudGlmaWVyCisgICAgICAg
ICAgICAgd2l0aExhYmVsOihOU1N0cmluZyAqKWxhYmVsCisgICAgICB3aXRoUGFsZXR0ZUxhYmVs
OihOU1N0cmluZyAqKXBhbGV0dGVMYWJlbAorICAgICAgICAgICAgIHdpdGhJbWFnZTooTlNTdHJp
bmcgKilpbWFnZU5hbWUKKyAgICAgICAgICAgd2l0aFRvb2xUaXA6KE5TU3RyaW5nICopdG9vbFRp
cAorICAgICAgICAgICAgICAgd2l0aFRhZzooaW50KXRhZworeworICAgIE5TVG9vbGJhckl0ZW0g
Kml0ZW0gPSBbW1tOU1Rvb2xiYXJJdGVtIGFsbG9jXSBpbml0V2l0aEl0ZW1JZGVudGlmaWVyOmlk
ZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICBbaXRlbSBzZXRMYWJlbDpsYWJlbF07
CisgICAgW2l0ZW0gc2V0UGFsZXR0ZUxhYmVsOnBhbGV0dGVMYWJlbF07CisgICAgW2l0ZW0gc2V0
VG9vbFRpcDp0b29sVGlwXTsKKyAgICBbaXRlbSBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVk
OmltYWdlTmFtZV1dOworICAgIFtpdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbaXRlbSBzZXRB
Y3Rpb246QHNlbGVjdG9yKGNsaWNrZWRUb29sYmFySXRlbTopXTsKKyAgICBbaXRlbSBzZXRUYWc6
dGFnXTsKKyAgICAKKyAgICBbX3Rvb2xiYXJJdGVtcyBzZXRPYmplY3Q6aXRlbSBmb3JLZXk6aWRl
bnRpZmllcl07Cit9CisKKy0gKHZvaWQpc2V0dXBUb29sYmFyCit7CisgICAgX3Rvb2xiYXJJdGVt
cyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgCisgICAgW3NlbGYg
YWRkVG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpUb29sYmFyQnJvd3NlVG9vbElkZW50aWZpZXIg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhJbWFnZTpUb29sYmFyUG9pbnRlclRv
b2xJbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhUYWc6VG9vbGJhckJy
b3dzZVRvb2xUYWddOworICAgIFtbX3Rvb2xiYXJJdGVtcyBvYmplY3RGb3JLZXk6VG9vbGJhckJy
b3dzZVRvb2xJZGVudGlmaWVyXSBzZXRJbWFnZTpbW05TQ3Vyc29yIHBvaW50aW5nSGFuZEN1cnNv
cl0gaW1hZ2VdXTsKKyAgICAKKyAgICBbc2VsZiBhZGRUb29sYmFySXRlbVdpdGhJZGVudGlmaWVy
OlRvb2xiYXJQYW5Ub29sSWRlbnRpZmllciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2l0aEltYWdlOlRvb2xiYXJQb2ludGVyVG9vbEltYWdlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2l0aFRhZzpUb29sYmFyUGFuVG9vbFRhZ107CisgICAgW1tfdG9vbGJhckl0ZW1z
IG9iamVjdEZvcktleTpUb29sYmFyUGFuVG9vbElkZW50aWZpZXJdIHNldEltYWdlOltbTlNDdXJz
b3Igb3BlbkhhbmRDdXJzb3JdIGltYWdlXV07CisgICAgCisgICAgW3NlbGYgYWRkVG9vbGJhckl0
ZW1XaXRoSWRlbnRpZmllcjpUb29sYmFyWm9vbVRvb2xJZGVudGlmaWVyIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aXRoSW1hZ2U6VG9vbGJhclBvaW50ZXJUb29sSW1hZ2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoVGFnOlRvb2xiYXJab29tVG9vbFRhZ107Cisg
ICAgCisgICAgCisgICAgW3NlbGYgYWRkVG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpUb29sYmFy
UG9pbnRlclRvb2xJZGVudGlmaWVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRo
SW1hZ2U6VG9vbGJhclBvaW50ZXJUb29sSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aXRoVGFnOlRvb2xiYXJQb2ludGVyVG9vbFRhZ107CisgICAgCisgICAgW3NlbGYgYWRk
VG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpUb29sYmFyUmVjdGFuZ2xlVG9vbElkZW50aWZpZXIg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhJbWFnZTpUb29sYmFyUmVjdGFuZ2xl
VG9vbEltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRhZzpUb29sYmFy
UmVjdGFuZ2xlVG9vbFRhZ107CisgICAgCisgICAgW3NlbGYgYWRkVG9vbGJhckl0ZW1XaXRoSWRl
bnRpZmllcjpUb29sYmFyRWxpcHNlVG9vbElkZW50aWZpZXIgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpdGhJbWFnZTpUb29sYmFyRWxpcHNlVG9vbEltYWdlIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpdGhUYWc6VG9vbGJhckVsaXBzZVRvb2xUYWddOworICAgIAor
ICAgIFtzZWxmIGFkZFRvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6VG9vbGJhclRyaWFuZ2xlVG9v
bElkZW50aWZpZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhJbWFnZTpUb29s
YmFyVHJpYW5nbGVUb29sSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRo
VGFnOlRvb2xiYXJUcmlhbmdsZVRvb2xUYWddOworICAgIAorICAgIFtzZWxmIGFkZFRvb2xiYXJJ
dGVtV2l0aElkZW50aWZpZXI6VG9vbGJhckRlbGV0ZVNoYXBlSWRlbnRpZmllciAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2l0aEltYWdlOlRvb2xiYXJEZWxldGVTaGFwZUltYWdlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRhZzpUb29sYmFyRGVsZXRlU2VsZWN0
aW9uVGFnXTsKKyAgICAKKyAgICBbc2VsZiBhZGRUb29sYmFySXRlbVdpdGhJZGVudGlmaWVyOlRv
b2xiYXJNb3ZlRm9yd2FyZElkZW50aWZpZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpdGhJbWFnZTpUb29sYmFyTW92ZUZvcndhcmRJbWFnZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpdGhUYWc6VG9vbGJhck1vdmVGb3J3YXJkVGFnXTsKKyAgICAKKyAgICBbc2Vs
ZiBhZGRUb29sYmFySXRlbVdpdGhJZGVudGlmaWVyOlRvb2xiYXJNb3ZlQmFja3dhcmRJZGVudGlm
aWVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoSW1hZ2U6VG9vbGJhck1vdmVC
YWNrd2FyZEltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRhZzpUb29s
YmFyTW92ZUJhY2t3YXJkVGFnXTsKKyAgICAKKyAgICBbc2VsZiBhZGRUb29sYmFySXRlbVdpdGhJ
ZGVudGlmaWVyOlRvb2xiYXJNb3ZlVG9Gcm9udElkZW50aWZpZXIgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpdGhJbWFnZTpUb29sYmFyTW92ZVRvRnJvbnRJbWFnZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpdGhUYWc6VG9vbGJhck1vdmVUb0Zyb250VGFnXTsKKyAg
ICAKKyAgICBbc2VsZiBhZGRUb29sYmFySXRlbVdpdGhJZGVudGlmaWVyOlRvb2xiYXJNb3ZlVG9C
YWNrSWRlbnRpZmllciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEltYWdlOlRv
b2xiYXJNb3ZlVG9CYWNrSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRo
VGFnOlRvb2xiYXJNb3ZlVG9CYWNrVGFnXTsKKyAgICAKKyAgICAKKyAgICBOU1Rvb2xiYXIgKnRv
b2xiYXIgPSBbW1tOU1Rvb2xiYXIgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpUb29sYmFySWRl
bnRpZmllcl0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIFt0b29sYmFyIHNldEFsbG93c1VzZXJD
dXN0b21pemF0aW9uOllFU107CisgICAgW3Rvb2xiYXIgc2V0QXV0b3NhdmVzQ29uZmlndXJhdGlv
bjpZRVNdOworICAgIFt0b29sYmFyIHNldERpc3BsYXlNb2RlOk5TVG9vbGJhckRpc3BsYXlNb2Rl
SWNvbkFuZExhYmVsXTsKKyAgICBbdG9vbGJhciBzZXRTaXplTW9kZTpOU1Rvb2xiYXJTaXplTW9k
ZVNtYWxsXTsKKyAgICBbdG9vbGJhciBzZXREaXNwbGF5TW9kZTpOU1Rvb2xiYXJEaXNwbGF5TW9k
ZUxhYmVsT25seV07CisgICAgW3Rvb2xiYXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3Rvb2xi
YXIgc2V0U2VsZWN0ZWRJdGVtSWRlbnRpZmllcjpUb29sYmFyQnJvd3NlVG9vbElkZW50aWZpZXJd
OworICAgIFt0b29sYmFyIHNldFZpc2libGU6Tk9dOworICAgIAorICAgIFtbX2RyYXdWaWV3IHdp
bmRvd10gc2V0VG9vbGJhcjp0b29sYmFyXTsKK30KKworCistICh2b2lkKWNsaWNrZWRUb29sYmFy
SXRlbTooaWQpc2VuZGVyCit7CisgICAgaW50IHRhZyA9IFtzZW5kZXIgdGFnXTsKKyAgICAKKyAg
ICBzd2l0Y2godGFnKSB7CisgICAgICAgIGNhc2UgVG9vbGJhckJyb3dzZVRvb2xUYWc6CisgICAg
ICAgICAgICBbX2RyYXdWaWV3IHNldFRvb2xNb2RlOkRyYXdWaWV3VG9vbEJyb3dzZV07CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUb29sYmFyUGFuVG9vbFRhZzoKKyAgICAgICAg
ICAgIFtfZHJhd1ZpZXcgc2V0VG9vbE1vZGU6RHJhd1ZpZXdUb29sUGFuXTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRvb2xiYXJab29tVG9vbFRhZzoKKyAgICAgICAgICAgIFtf
ZHJhd1ZpZXcgc2V0VG9vbE1vZGU6RHJhd1ZpZXdUb29sWm9vbV07CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUb29sYmFyUG9pbnRlclRvb2xUYWc6CisgICAgICAgICAgICBbX2Ry
YXdWaWV3IHNldFRvb2xNb2RlOkRyYXdWaWV3VG9vbEFycm93XTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRvb2xiYXJSZWN0YW5nbGVUb29sVGFnOgorICAgICAgICAgICAgW19k
cmF3VmlldyBzZXRUb29sTW9kZTpEcmF3Vmlld1Rvb2xSZWN0YW5nbGVdOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVG9vbGJhckVsaXBzZVRvb2xUYWc6CisgICAgICAgICAgICBb
X2RyYXdWaWV3IHNldFRvb2xNb2RlOkRyYXdWaWV3VG9vbEVsaXBzZV07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBUb29sYmFyVHJpYW5nbGVUb29sVGFnOgorICAgICAgICAgICAg
W19kcmF3VmlldyBzZXRUb29sTW9kZTpEcmF3Vmlld1Rvb2xUcmlhbmdsZV07CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBUb29sYmFyTW92ZUZvcndhcmRUYWc6CisgICAgICAgICAg
ICBbX2RyYXdWaWV3IG1vdmVTZWxlY3Rpb25Gb3J3YXJkOnNlbmRlcl07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBUb29sYmFyTW92ZUJhY2t3YXJkVGFnOgorICAgICAgICAgICAg
W19kcmF3VmlldyBtb3ZlU2VsZWN0aW9uQmFja3dhcmQ6c2VuZGVyXTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRvb2xiYXJEZWxldGVTZWxlY3Rpb25UYWc6CisgICAgICAgICAg
ICBbX2RyYXdWaWV3IGRlbGV0ZVNlbGVjdGlvbjpzZW5kZXJdOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBOU0xvZyhAIlRvb2xiYXIgaXRlbTogJWkg
bm90IGltcGxlbWVudGVkISIsIHRhZyk7CisgICAgfQorICAgIAorICAgIFtfZHJhd1ZpZXcgc2V0
TmVlZHNEaXNwbGF5OllFU107Cit9CisKKy8vIE5TVG9vbGJhciBkZWxlZ2F0ZSBtZXRob2RzCist
IChOU1Rvb2xiYXJJdGVtICopdG9vbGJhcjooTlNUb29sYmFyICopdG9vbGJhciBpdGVtRm9ySXRl
bUlkZW50aWZpZXI6KE5TU3RyaW5nICopaXRlbUlkZW50IAorIHdpbGxCZUluc2VydGVkSW50b1Rv
b2xiYXI6KEJPT0wpd2lsbEJlSW5zZXJ0ZWQKK3sgCisgICAgTlNUb29sYmFySXRlbSAqICAgIHRv
b2xiYXJJdGVtID0gW190b29sYmFySXRlbXMgb2JqZWN0Rm9yS2V5Oml0ZW1JZGVudF07CisgICAg
CisgICAgaWYoIHRvb2xiYXJJdGVtID09IG5pbCApCisgICAgICAgIHRvb2xiYXJJdGVtID0gW1tb
TlNUb29sYmFySXRlbSBhbGxvY10gaW5pdFdpdGhJdGVtSWRlbnRpZmllcjppdGVtSWRlbnRdIGF1
dG9yZWxlYXNlXTsKKyAgICAKKyAgICByZXR1cm4gdG9vbGJhckl0ZW07Cit9CisKKy0gKE5TQXJy
YXkgKil0b29sYmFyQWxsb3dlZEl0ZW1JZGVudGlmaWVyczooTlNUb29sYmFyICopdG9vbGJhcgor
eworICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgICAgICBUb29sYmFy
QnJvd3NlVG9vbElkZW50aWZpZXIsCisgICAgICAgIFRvb2xiYXJQYW5Ub29sSWRlbnRpZmllciwK
KyAgICAgICAgVG9vbGJhclpvb21Ub29sSWRlbnRpZmllciwKKyAgICAgICAgVG9vbGJhclBvaW50
ZXJUb29sSWRlbnRpZmllciwKKyAgICAgICAgVG9vbGJhclJlY3RhbmdsZVRvb2xJZGVudGlmaWVy
LAorICAgICAgICBUb29sYmFyRWxpcHNlVG9vbElkZW50aWZpZXIsCisgICAgICAgIFRvb2xiYXJU
cmlhbmdsZVRvb2xJZGVudGlmaWVyLAorICAgICAgICBUb29sYmFyRGVsZXRlU2hhcGVJZGVudGlm
aWVyLCAKKyAgICAgICAgTlNUb29sYmFyU2hvd0NvbG9yc0l0ZW1JZGVudGlmaWVyLAorICAgICAg
ICBUb29sYmFyTW92ZUZvcndhcmRJZGVudGlmaWVyLAorICAgICAgICBUb29sYmFyTW92ZUJhY2t3
YXJkSWRlbnRpZmllciwKKyAgICAgICAgVG9vbGJhck1vdmVUb0Zyb250SWRlbnRpZmllciwKKyAg
ICAgICAgVG9vbGJhck1vdmVUb0JhY2tJZGVudGlmaWVyLAorICAgICAgICBOU1Rvb2xiYXJDdXN0
b21pemVUb29sYmFySXRlbUlkZW50aWZpZXIsCisgICAgICAgIE5TVG9vbGJhckZsZXhpYmxlU3Bh
Y2VJdGVtSWRlbnRpZmllciwgCisgICAgICAgIE5TVG9vbGJhclNwYWNlSXRlbUlkZW50aWZpZXIs
IAorICAgICAgICBOU1Rvb2xiYXJTZXBhcmF0b3JJdGVtSWRlbnRpZmllciwgbmlsXTsKK30KKwor
LSAoTlNBcnJheSAqKXRvb2xiYXJEZWZhdWx0SXRlbUlkZW50aWZpZXJzOihOU1Rvb2xiYXIgKil0
b29sYmFyCit7ICAgIAorICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAg
ICAgICBUb29sYmFyQnJvd3NlVG9vbElkZW50aWZpZXIsCisgICAgICAgIFRvb2xiYXJQYW5Ub29s
SWRlbnRpZmllciwKKyAgICAgICAgLy9Ub29sYmFyWm9vbVRvb2xJZGVudGlmaWVyLAorICAgICAg
ICBOU1Rvb2xiYXJGbGV4aWJsZVNwYWNlSXRlbUlkZW50aWZpZXIsCisgICAgICAgIFRvb2xiYXJQ
b2ludGVyVG9vbElkZW50aWZpZXIsCisgICAgICAgIFRvb2xiYXJSZWN0YW5nbGVUb29sSWRlbnRp
ZmllciwKKyAgICAgICAgVG9vbGJhckVsaXBzZVRvb2xJZGVudGlmaWVyLAorICAgICAgICAvL1Rv
b2xiYXJUcmlhbmdsZVRvb2xJZGVudGlmaWVyLCAKKyAgICAgICAgLy9OU1Rvb2xiYXJTZXBhcmF0
b3JJdGVtSWRlbnRpZmllciwKKyAgICAgICAgVG9vbGJhckRlbGV0ZVNoYXBlSWRlbnRpZmllciwg
CisgICAgICAgIC8vVG9vbGJhck1vdmVGb3J3YXJkSWRlbnRpZmllciwKKyAgICAgICAgLy9Ub29s
YmFyTW92ZUJhY2t3YXJkSWRlbnRpZmllciwKKyAgICAgICAgLy9Ub29sYmFyTW92ZVRvRnJvbnRJ
ZGVudGlmaWVyLAorICAgICAgICAvL1Rvb2xiYXJNb3ZlVG9CYWNrSWRlbnRpZmllciwgCisgICAg
ICAgIE5TVG9vbGJhclNlcGFyYXRvckl0ZW1JZGVudGlmaWVyLAorICAgICAgICAvL05TVG9vbGJh
clNob3dDb2xvcnNJdGVtSWRlbnRpZmllciwgCisgICAgICAgIC8vTlNUb29sYmFyRmxleGlibGVT
cGFjZUl0ZW1JZGVudGlmaWVyLCAKKyAgICAgICAgTlNUb29sYmFyQ3VzdG9taXplVG9vbGJhckl0
ZW1JZGVudGlmaWVyLAorICAgICAgICBuaWxdOworfQorCistIChOU0FycmF5ICopdG9vbGJhclNl
bGVjdGFibGVJdGVtSWRlbnRpZmllcnM6KE5TVG9vbGJhciAqKXRvb2xiYXIKK3sKKyAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAgVG9vbGJhckJyb3dzZVRvb2xJ
ZGVudGlmaWVyLAorICAgICAgICBUb29sYmFyUGFuVG9vbElkZW50aWZpZXIsCisgICAgICAgIFRv
b2xiYXJab29tVG9vbElkZW50aWZpZXIsICAgIAorICAgICAgICBUb29sYmFyUG9pbnRlclRvb2xJ
ZGVudGlmaWVyLAorICAgICAgICBUb29sYmFyUmVjdGFuZ2xlVG9vbElkZW50aWZpZXIsCisgICAg
ICAgIFRvb2xiYXJFbGlwc2VUb29sSWRlbnRpZmllciwKKyAgICAgICAgVG9vbGJhclRyaWFuZ2xl
VG9vbElkZW50aWZpZXIsCisgICAgICAgIG5pbF07Cit9CisKKy0gKEJPT0wpdmFsaWRhdGVUb29s
YmFySXRlbTooTlNUb29sYmFySXRlbSAqKXRoZUl0ZW0KK3sKKyAgICBCT09MIGVuYWJsZWQgPSBZ
RVM7CisgICAgCisgICAgc3dpdGNoKFt0aGVJdGVtIHRhZ10pIHsKKyAgICAgICAgY2FzZSBUb29s
YmFyTW92ZUZvcndhcmRUYWc6CisgICAgICAgIGNhc2UgVG9vbGJhck1vdmVCYWNrd2FyZFRhZzoK
KyAgICAgICAgY2FzZSBUb29sYmFyTW92ZVRvRnJvbnRUYWc6CisgICAgICAgIGNhc2UgVG9vbGJh
ck1vdmVUb0JhY2tUYWc6CisgICAgICAgIGNhc2UgVG9vbGJhckRlbGV0ZVNlbGVjdGlvblRhZzoK
KyAgICAgICAgICAgIGVuYWJsZWQgPSAoW1tfZHJhd1ZpZXcgc2VsZWN0ZWRDYW52YXNJdGVtc10g
Y291bnRdICE9IDApOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZW5hYmxlZDsKK30KKworQGVu
ZApJbmRleDogRHJhd1Rlc3RWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRHJhd1Rlc3RWaWV3
LmgKZGlmZiAtTiBEcmF3VGVzdFZpZXcuaAotLS0gRHJhd1Rlc3RWaWV3LmgJMSBKYW4gMTk3MCAw
MDowMDowMCAtMDAwMAorKysgRHJhd1Rlc3RWaWV3LmgJMjggSnVsIDIwMDUgMDU6MTQ6MzMgLTAw
MDAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBBcHBsZSBDb21w
dXRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBBUFBMRV9MSUNFTlNFX0hF
QURFUl9TVEFSVEAKKyAqIAorICogVGhpcyBmaWxlIGNvbnRhaW5zIE9yaWdpbmFsIENvZGUgYW5k
L29yIE1vZGlmaWNhdGlvbnMgb2YgT3JpZ2luYWwgQ29kZQorICogYXMgZGVmaW5lZCBpbiBhbmQg
dGhhdCBhcmUgc3ViamVjdCB0byB0aGUgQXBwbGUgUHVibGljIFNvdXJjZSBMaWNlbnNlCisgKiBW
ZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJykuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluCisgKiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFBsZWFzZSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2UuYXBwbGUuY29t
L2Fwc2wvIGFuZCByZWFkIGl0IGJlZm9yZSB1c2luZyB0aGlzCisgKiBmaWxlLgorICogCisgKiBU
aGUgT3JpZ2luYWwgQ29kZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGFyZQorICogZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBiYXNpcywgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIEFORCBB
UFBMRSBIRVJFQlkgRElTQ0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcg
V0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUVVJRVQgRU5KT1lNRU5UIE9SIE5P
Ti1JTkZSSU5HRU1FTlQuCisgKiBQbGVhc2Ugc2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICogCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfRU5EQAorICovCisKKyNp
bXBvcnQgPENvY29hL0NvY29hLmg+CisKKyNpbXBvcnQgPFdlYkNvcmUrU1ZHL0RyYXdWaWV3Lmg+
CisKKworQGludGVyZmFjZSBEcmF3VGVzdFZpZXcgOiBEcmF3VmlldworeyAgICAKKyAgICBCT09M
IF9zaG93RGVidWdTdHJpbmc7CisgICAgQk9PTCBfc2hvd0RlYnVnQXhlczsKK30KKworLSAoSUJB
Y3Rpb24pdG9nZ2xlU2hvd0RlYnVnU3RyaW5nOihpZClzZW5kZXI7CistIChJQkFjdGlvbil0b2dn
bGVTaG93RGVidWdBeGVzOihpZClzZW5kZXI7CisKK0BlbmQKSW5kZXg6IERyYXdUZXN0Vmlldy5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IERyYXdUZXN0Vmlldy5tCmRpZmYgLU4gRHJhd1Rlc3RWaWV3
Lm0KLS0tIERyYXdUZXN0Vmlldy5tCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIERyYXdU
ZXN0Vmlldy5tCTI4IEp1bCAyMDA1IDA1OjE0OjMzIC0wMDAwCkBAIC0wLDAgKzEsOTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfU1RBUlRACisgKiAKKyAqIFRo
aXMgZmlsZSBjb250YWlucyBPcmlnaW5hbCBDb2RlIGFuZC9vciBNb2RpZmljYXRpb25zIG9mIE9y
aWdpbmFsIENvZGUKKyAqIGFzIGRlZmluZWQgaW4gYW5kIHRoYXQgYXJlIHN1YmplY3QgdG8gdGhl
IEFwcGxlIFB1YmxpYyBTb3VyY2UgTGljZW5zZQorICogVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5z
ZScpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLiBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
ICogaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9hcHNsLyBhbmQgcmVhZCBpdCBiZWZv
cmUgdXNpbmcgdGhpcworICogZmlsZS4KKyAqIAorICogVGhlIE9yaWdpbmFsIENvZGUgYW5kIGFs
bCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBhcmUKKyAqIGRpc3RyaWJ1
dGVkIG9uIGFuICdBUyBJUycgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJ
VEhFUgorICogRVhQUkVTUyBPUiBJTVBMSUVELCBBTkQgQVBQTEUgSEVSRUJZIERJU0NMQUlNUyBB
TEwgU1VDSCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5Z
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UsIFFVSUVUIEVOSk9ZTUVOVCBPUiBOT04tSU5GUklOR0VNRU5ULgorICogUGxl
YXNlIHNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBy
aWdodHMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIAorICogQEFQ
UExFX0xJQ0VOU0VfSEVBREVSX0VOREAKKyAqLworCisjaW1wb3J0ICJEcmF3VGVzdFZpZXcuaCIK
KworI2ltcG9ydCA8V2ViQ29yZStTVkcvRHJhd1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJD
b3JlK1NWRy9EcmF3RG9jdW1lbnRQcml2YXRlLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBEcmF3VGVz
dFZpZXcKKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCit7CisgICAgaWYgKHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV0pIHsKKyAgICAgICAgLy9bc2VsZiBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6QCJzaG93RGVidWdTdHJp
bmciXTsKKyAgICAgICAgLy9bc2VsZiBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
WUVTXSBmb3JLZXk6QCJzaG93RGVidWdBeGVzIl07CisgICAgfQorICAgIHJldHVybiBzZWxmOwor
fQorCistICh2b2lkKWRyYXdBeGVzOihmbG9hdClsZW5ndGgKK3sKKyAgICBOU0JlemllclBhdGgg
KnhBeGlzID0gW05TQmV6aWVyUGF0aCBiZXppZXJQYXRoXTsKKyAgICBbeEF4aXMgbW92ZVRvUG9p
bnQ6TlNNYWtlUG9pbnQoLS41ICogbGVuZ3RoLCAwKV07CisgICAgW3hBeGlzIGxpbmVUb1BvaW50
Ok5TTWFrZVBvaW50KGxlbmd0aCwgMCldOworICAgIFtbTlNDb2xvciByZWRDb2xvcl0gc2V0XTsK
KyAgICBbeEF4aXMgc3Ryb2tlXTsKKyAgICAKKyAgICBOU0JlemllclBhdGggKnlBeGlzID0gW05T
QmV6aWVyUGF0aCBiZXppZXJQYXRoXTsKKyAgICBbeUF4aXMgbW92ZVRvUG9pbnQ6TlNNYWtlUG9p
bnQoMCwgLS41ICogbGVuZ3RoKV07CisgICAgW3lBeGlzIGxpbmVUb1BvaW50Ok5TTWFrZVBvaW50
KDAsIGxlbmd0aCldOworICAgIFtbTlNDb2xvciBncmVlbkNvbG9yXSBzZXRdOworICAgIFt5QXhp
cyBzdHJva2VdOworfQorCistICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpZGlydHlSZWN0Cit7Cisg
ICAgW3N1cGVyIGRyYXdSZWN0OmRpcnR5UmVjdF07CisgICAgCisgICAgaWYgKF9zaG93RGVidWdT
dHJpbmcpIHsKKyAgICAgICAgLy8gZHJhdyB0aGUgY3VycmVudCB6b29tL3BhbgorICAgICAgICBO
U1N0cmluZyAqaW5mb1N0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAidmlld3Bv
cnQgb3JpZ2luOiAlQCBjYW52YXMgc2l6ZTogJUAgem9vbTogJWYiLAorICAgICAgICAgICAgTlNT
dHJpbmdGcm9tUG9pbnQoW3NlbGYgY2FudmFzVmlzaWJsZU9yaWdpbl0pLAorICAgICAgICAgICAg
TlNTdHJpbmdGcm9tU2l6ZShbW3NlbGYgZG9jdW1lbnRdIGNhbnZhc1NpemVdKSwgW3NlbGYgY2Fu
dmFzWm9vbV1dOworICAgICAgICBbaW5mb1N0cmluZyBkcmF3QXRQb2ludDpOU01ha2VQb2ludCg1
LCAxMykgd2l0aEF0dHJpYnV0ZXM6bmlsXTsKKyAgICB9CisgICAgCisgICAgaWYgKF9zaG93RGVi
dWdBeGVzKSB7CisgICAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gKENHQ29udGV4dFJlZilb
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOworICAgICAg
ICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgICAgICBDR0NvbnRleHRDb25jYXRD
VE0oY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoW3NlbGYgdHJhbnNmb3JtRnJvbVZp
ZXdUb0NhbnZhc10pKTsKKyAgICAgICAgW3NlbGYgZHJhd0F4ZXM6MTAwXTsKKyAgICAgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICB9Cit9CisKKy0gKElCQWN0aW9uKXRv
Z2dsZVNob3dEZWJ1Z1N0cmluZzooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhCb29sOiFfc2hvd0RlYnVnU3RyaW5nXSBmb3JLZXk6QCJzaG93RGVi
dWdTdHJpbmciXTsKKyAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKK30KKworLSAoSUJB
Y3Rpb24pdG9nZ2xlU2hvd0RlYnVnQXhlczooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2V0VmFs
dWU6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFfc2hvd0RlYnVnQXhlc10gZm9yS2V5OkAic2hv
d0RlYnVnQXhlcyJdOworICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheTpZRVNdOworfQorCistIChJ
QkFjdGlvbil0b2dnbGVGaWx0ZXJTdXBwb3J0OihpZClzZW5kZXIKK3sKKyAgICBbRHJhd1ZpZXcg
c2V0RmlsdGVyU3VwcG9ydEVuYWJsZWQ6W0RyYXdWaWV3IGlzRmlsdGVyU3VwcG9ydEVuYWJsZWRd
XTsKKyAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKK30KKworLSAoQk9PTClhY2NlcHRz
Rmlyc3RSZXNwb25kZXIKK3sKKyAgICByZXR1cm4gWUVTOworfQorCitAZW5kCkluZGV4OiBEcmF3
VGVzdF9QcmVmaXgucGNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IERyYXdUZXN0X1ByZWZpeC5wY2gK
ZGlmZiAtTiBEcmF3VGVzdF9QcmVmaXgucGNoCi0tLSBEcmF3VGVzdF9QcmVmaXgucGNoCTEgSmFu
IDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIERyYXdUZXN0X1ByZWZpeC5wY2gJMjggSnVsIDIwMDUg
MDU6MTQ6MzMgLTAwMDAKQEAgLTAsMCArMSwxMiBAQAorLy8KKy8vIFByZWZpeCBoZWFkZXIgZm9y
IGFsbCBzb3VyY2UgZmlsZXMgb2YgdGhlICdEcmF3VGVzdCcgdGFyZ2V0IGluIHRoZSAnRHJhd1Rl
c3QnIHByb2plY3QKKy8vCisKKyNpZmRlZiBfX09CSkNfXworI2ltcG9ydCA8Q29jb2EvQ29jb2Eu
aD4KKworI2RlZmluZSBmb3JlYWNoYXJyYXkoX192YXJpYWJsZSwgX19jb250YWluZXIpIFwKKyAg
ICBmb3IgKGludCBfX3ZhcmlhYmxlIyNfX2k9MCwgX192YXJpYWJsZSMjX19uPVtfX2NvbnRhaW5l
ciBjb3VudF07ICBcCisgICAgICAgIF9fdmFyaWFibGUjI19faSA8IF9fdmFyaWFibGUjI19fbiAm
JiAoX192YXJpYWJsZSA9IFtfX2NvbnRhaW5lciBvYmplY3RBdEluZGV4Ol9fdmFyaWFibGUjI19f
aV0pOyAgXAorICAgICAgICArK19fdmFyaWFibGUjI19faSkKKyNlbmRpZgpJbmRleDogSW5mby5w
bGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBJbmZvLnBsaXN0CmRpZmYgLU4gSW5mby5wbGlzdAot
LS0gSW5mby5wbGlzdAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBJbmZvLnBsaXN0CTI4
IEp1bCAyMDA1IDA1OjE0OjMzIC0wMDAwCkBAIC0wLDAgKzEsNDcgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBs
ZSBDb21wdXRlci8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERz
L1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxwbGlzdCB2ZXJzaW9uPSIxLjAiPgorPGRpY3Q+CisJ
PGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+CisJPHN0cmluZz5FbmdsaXNoPC9z
dHJpbmc+CisJPGtleT5DRkJ1bmRsZURvY3VtZW50VHlwZXM8L2tleT4KKwk8YXJyYXk+CisJCTxk
aWN0PgorCQkJPGtleT5DRkJ1bmRsZVR5cGVFeHRlbnNpb25zPC9rZXk+CisJCQk8YXJyYXk+CisJ
CQkJPHN0cmluZz5zdmc8L3N0cmluZz4KKwkJCTwvYXJyYXk+CisJCQk8a2V5PkNGQnVuZGxlVHlw
ZU5hbWU8L2tleT4KKwkJCTxzdHJpbmc+U1ZHIERvY3VtZW50PC9zdHJpbmc+CisJCQk8a2V5PkNG
QnVuZGxlVHlwZU9TVHlwZXM8L2tleT4KKwkJCTxhcnJheT4KKwkJCQk8c3RyaW5nPj8/Pz88L3N0
cmluZz4KKwkJCTwvYXJyYXk+CisJCQk8a2V5PkNGQnVuZGxlVHlwZVJvbGU8L2tleT4KKwkJCTxz
dHJpbmc+RWRpdG9yPC9zdHJpbmc+CisJCQk8a2V5PkxTVHlwZUlzUGFja2FnZTwva2V5PgorCQkJ
PGZhbHNlLz4KKwkJCTxrZXk+TlNEb2N1bWVudENsYXNzPC9rZXk+CisJCQk8c3RyaW5nPkRyYXdU
ZXN0RG9jdW1lbnQ8L3N0cmluZz4KKwkJCTxrZXk+TlNQZXJzaXN0ZW50U3RvcmVUeXBlS2V5PC9r
ZXk+CisJCQk8c3RyaW5nPkJpbmFyeTwvc3RyaW5nPgorCQk8L2RpY3Q+CisJPC9hcnJheT4KKwk8
a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgorCTxzdHJpbmc+RHJhd1Rlc3Q8L3N0cmluZz4K
Kwk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgorCTxzdHJpbmc+Y29tLmFwcGxlLkRyYXdU
ZXN0PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5Pgor
CTxzdHJpbmc+Ni4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+CisJ
PHN0cmluZz5BUFBMPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNpZ25hdHVyZTwva2V5PgorCTxz
dHJpbmc+Pz8/Pzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVWZXJzaW9uPC9rZXk+CisJPHN0cmlu
Zz4xLjA8L3N0cmluZz4KKwk8a2V5Pk5TTWFpbk5pYkZpbGU8L2tleT4KKwk8c3RyaW5nPk1haW5N
ZW51PC9zdHJpbmc+CisJPGtleT5OU1ByaW5jaXBhbENsYXNzPC9rZXk+CisJPHN0cmluZz5OU0Fw
cGxpY2F0aW9uPC9zdHJpbmc+Cis8L2RpY3Q+Cis8L3BsaXN0PgpJbmRleDogTXlJbWFnZVZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiBNeUltYWdlVmlldy5oCmRpZmYgLU4gTXlJbWFnZVZpZXcu
aAotLS0gTXlJbWFnZVZpZXcuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBNeUltYWdl
Vmlldy5oCTI4IEp1bCAyMDA1IDA1OjE0OjMzIC0wMDAwCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfU1RBUlRACisgKiAKKyAqIFRoaXMg
ZmlsZSBjb250YWlucyBPcmlnaW5hbCBDb2RlIGFuZC9vciBNb2RpZmljYXRpb25zIG9mIE9yaWdp
bmFsIENvZGUKKyAqIGFzIGRlZmluZWQgaW4gYW5kIHRoYXQgYXJlIHN1YmplY3QgdG8gdGhlIEFw
cGxlIFB1YmxpYyBTb3VyY2UgTGljZW5zZQorICogVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScp
LiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLiBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICog
aHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9hcHNsLyBhbmQgcmVhZCBpdCBiZWZvcmUg
dXNpbmcgdGhpcworICogZmlsZS4KKyAqIAorICogVGhlIE9yaWdpbmFsIENvZGUgYW5kIGFsbCBz
b2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBhcmUKKyAqIGRpc3RyaWJ1dGVk
IG9uIGFuICdBUyBJUycgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhF
UgorICogRVhQUkVTUyBPUiBJTVBMSUVELCBBTkQgQVBQTEUgSEVSRUJZIERJU0NMQUlNUyBBTEwg
U1VDSCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UsIFFVSUVUIEVOSk9ZTUVOVCBPUiBOT04tSU5GUklOR0VNRU5ULgorICogUGxlYXNl
IHNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdo
dHMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIAorICogQEFQUExF
X0xJQ0VOU0VfSEVBREVSX0VOREAKKyAqLworCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorCisK
K0BpbnRlcmZhY2UgTXlJbWFnZVZpZXcgOiBOU0ltYWdlVmlldyB7CisKK30KKworQGVuZApJbmRl
eDogTXlJbWFnZVZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBNeUltYWdlVmlldy5tCmRpZmYg
LU4gTXlJbWFnZVZpZXcubQotLS0gTXlJbWFnZVZpZXcubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0w
MDAwCisrKyBNeUltYWdlVmlldy5tCTI4IEp1bCAyMDA1IDA1OjE0OjMzIC0wMDAwCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfU1RBUlRA
CisgKiAKKyAqIFRoaXMgZmlsZSBjb250YWlucyBPcmlnaW5hbCBDb2RlIGFuZC9vciBNb2RpZmlj
YXRpb25zIG9mIE9yaWdpbmFsIENvZGUKKyAqIGFzIGRlZmluZWQgaW4gYW5kIHRoYXQgYXJlIHN1
YmplY3QgdG8gdGhlIEFwcGxlIFB1YmxpYyBTb3VyY2UgTGljZW5zZQorICogVmVyc2lvbiAyLjAg
KHRoZSAnTGljZW5zZScpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICog
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorICogaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9hcHNsLyBhbmQg
cmVhZCBpdCBiZWZvcmUgdXNpbmcgdGhpcworICogZmlsZS4KKyAqIAorICogVGhlIE9yaWdpbmFs
IENvZGUgYW5kIGFsbCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBhcmUK
KyAqIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVJVEhFUgorICogRVhQUkVTUyBPUiBJTVBMSUVELCBBTkQgQVBQTEUgSEVSRUJZ
IERJU0NMQUlNUyBBTEwgU1VDSCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HIFdJVEhPVVQgTElN
SVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFFVSUVUIEVOSk9ZTUVOVCBPUiBOT04tSU5GUklOR0VN
RU5ULgorICogUGxlYXNlIHNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyByaWdodHMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KyAqIAorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX0VOREAKKyAqLworCisKKyNpbXBvcnQgIk15
SW1hZ2VWaWV3LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBNeUltYWdlVmlldworCistICh2b2lkKWRy
YXdSZWN0OihOU1JlY3QpZGlydHlSZWN0Cit7CisgICAgW1tOU0NvbG9yIHdoaXRlQ29sb3JdIHNl
dF07CisgICAgTlNSZWN0RmlsbChkaXJ0eVJlY3QpOworICAgIAorICAgIE5TU2l6ZSBpbWFnZVNp
emUgPSBbW3NlbGYgaW1hZ2VdIHNpemVdOworICAgIGZsb2F0IHNjYWxlID0gMS4wZjsKKyAgICBp
ZiAoW3NlbGYgaW1hZ2VTY2FsaW5nXSA9PSBOU1NjYWxlUHJvcG9ydGlvbmFsbHkgJiYgaW1hZ2VT
aXplLndpZHRoICYmIGltYWdlU2l6ZS5oZWlnaHQpIHsKKyAgICAgICAgZmxvYXQgd2lkdGhTY2Fs
ZSA9IFtzZWxmIGJvdW5kc10uc2l6ZS53aWR0aCAvIGltYWdlU2l6ZS53aWR0aDsKKyAgICAgICAg
ZmxvYXQgaGVpZ2h0U2NhbGUgPSBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC8gaW1hZ2VTaXpl
LmhlaWdodDsKKyAgICAgICAgc2NhbGUgPSBNSU4od2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwor
ICAgIH0KKworICAgIGZsb2F0IHNjYWxlZEhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQgKiBzY2Fs
ZTsKKyAgICBOU1JlY3QgZGVzdFJlY3QgPSBOU01ha2VSZWN0KDAsW3NlbGYgYm91bmRzXS5zaXpl
LmhlaWdodCAtIHNjYWxlZEhlaWdodCxpbWFnZVNpemUud2lkdGggKiBzY2FsZSwgc2NhbGVkSGVp
Z2h0KTsKKyAgICBbW3NlbGYgaW1hZ2VdIGRyYXdJblJlY3Q6ZGVzdFJlY3QKKyAgICAgICAgZnJv
bVJlY3Q6TlNNYWtlUmVjdCgwLDAsaW1hZ2VTaXplLndpZHRoLCBpbWFnZVNpemUuaGVpZ2h0KSBv
cGVyYXRpb246TlNDb21wb3NpdGVTb3VyY2VPdmVyIGZyYWN0aW9uOjEuMF07Cit9CisKK0BlbmQK
SW5kZXg6IFNWR1Rlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBTVkdUZXN0LmgKZGlmZiAtTiBT
VkdUZXN0LmgKLS0tIFNWR1Rlc3QuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBTVkdU
ZXN0LmgJMjggSnVsIDIwMDUgMDU6MTQ6MzMgLTAwMDAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9TVEFSVEAKKyAqIAorICogVGhpcyBm
aWxlIGNvbnRhaW5zIE9yaWdpbmFsIENvZGUgYW5kL29yIE1vZGlmaWNhdGlvbnMgb2YgT3JpZ2lu
YWwgQ29kZQorICogYXMgZGVmaW5lZCBpbiBhbmQgdGhhdCBhcmUgc3ViamVjdCB0byB0aGUgQXBw
bGUgUHVibGljIFNvdXJjZSBMaWNlbnNlCisgKiBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyku
IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCisgKiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuIFBsZWFzZSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBo
dHRwOi8vd3d3Lm9wZW5zb3VyY2UuYXBwbGUuY29tL2Fwc2wvIGFuZCByZWFkIGl0IGJlZm9yZSB1
c2luZyB0aGlzCisgKiBmaWxlLgorICogCisgKiBUaGUgT3JpZ2luYWwgQ29kZSBhbmQgYWxsIHNv
ZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGFyZQorICogZGlzdHJpYnV0ZWQg
b24gYW4gJ0FTIElTJyBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVS
CisgKiBFWFBSRVNTIE9SIElNUExJRUQsIEFORCBBUFBMRSBIRVJFQlkgRElTQ0xBSU1TIEFMTCBT
VUNIIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSwgUVVJRVQgRU5KT1lNRU5UIE9SIE5PTi1JTkZSSU5HRU1FTlQuCisgKiBQbGVhc2Ug
c2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0
cyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICogCisgKiBAQVBQTEVf
TElDRU5TRV9IRUFERVJfRU5EQAorICovCisKKyNpbXBvcnQgPENvY29hL0NvY29hLmg+CisKK0Bj
bGFzcyBEcmF3RG9jdW1lbnQ7CisKK0BpbnRlcmZhY2UgU1ZHVGVzdCA6IE5TT2JqZWN0IHsKKyAg
ICBOU1N0cmluZyAqX3N2Z1BhdGg7CisgICAgTlNTdHJpbmcgKl9pbWFnZVBhdGg7CisgICAgCisg
ICAgRHJhd0RvY3VtZW50ICpfc3ZnRG9jdW1lbnQ7CisgICAgTlNJbWFnZSAqX2ltYWdlOworICAg
IE5TSW1hZ2UgKl9jb21wb3NpdGVJbWFnZTsKKyAgICBCT09MIF9oYXNQYXNzZWQ7Cit9CisKKysg
KGlkKXRlc3RXaXRoU1ZHUGF0aDooTlNTdHJpbmcgKilzdmdQYXRoIGltYWdlUGF0aDooTlNTdHJp
bmcgKilpbWFnZVBhdGg7CistIChpZClpbml0V2l0aFNWR1BhdGg6KE5TU3RyaW5nICopc3ZnUGF0
aCBpbWFnZVBhdGg6KE5TU3RyaW5nICopaW1hZ2VQYXRoOworCistIChOU1N0cmluZyAqKWltYWdl
UGF0aDsKKy0gKE5TU3RyaW5nICopc3ZnUGF0aDsKKworLSAoTlNJbWFnZSAqKWltYWdlOworLSAo
RHJhd0RvY3VtZW50ICopc3ZnRG9jdW1lbnQ7CistIChOU0ltYWdlICopY29tcG9zaXRlSW1hZ2U7
CistIChOU1N0cmluZyAqKW5hbWU7CisKK0BlbmQKSW5kZXg6IFNWR1Rlc3QubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiBTVkdUZXN0Lm0KZGlmZiAtTiBTVkdUZXN0Lm0KLS0tIFNWR1Rlc3QubQkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBTVkdUZXN0Lm0JMjggSnVsIDIwMDUgMDU6MTQ6MzMg
LTAwMDAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAQVBQTEVfTElDRU5T
RV9IRUFERVJfU1RBUlRACisgKiAKKyAqIFRoaXMgZmlsZSBjb250YWlucyBPcmlnaW5hbCBDb2Rl
IGFuZC9vciBNb2RpZmljYXRpb25zIG9mIE9yaWdpbmFsIENvZGUKKyAqIGFzIGRlZmluZWQgaW4g
YW5kIHRoYXQgYXJlIHN1YmplY3QgdG8gdGhlIEFwcGxlIFB1YmxpYyBTb3VyY2UgTGljZW5zZQor
ICogVmVyc2lvbiAyLjAgKHRoZSAnTGljZW5zZScpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBQbGVhc2Ugb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxl
LmNvbS9hcHNsLyBhbmQgcmVhZCBpdCBiZWZvcmUgdXNpbmcgdGhpcworICogZmlsZS4KKyAqIAor
ICogVGhlIE9yaWdpbmFsIENvZGUgYW5kIGFsbCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBhcmUKKyAqIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgYmFzaXMsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUgorICogRVhQUkVTUyBPUiBJTVBMSUVELCBB
TkQgQVBQTEUgSEVSRUJZIERJU0NMQUlNUyBBTEwgU1VDSCBXQVJSQU5USUVTLAorICogSU5DTFVE
SU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFFVSUVUIEVOSk9ZTUVOVCBP
UiBOT04tSU5GUklOR0VNRU5ULgorICogUGxlYXNlIHNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAqIAorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX0VOREAKKyAqLwor
CisjaW1wb3J0ICJTVkdUZXN0LmgiCisKKyNpbXBvcnQgPFdlYkNvcmUrU1ZHL0RyYXdWaWV3Lmg+
CisjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnQuaD4KKworQGltcGxlbWVudGF0aW9u
IFNWR1Rlc3QKKworKyAoaWQpdGVzdFdpdGhTVkdQYXRoOihOU1N0cmluZyAqKXN2Z1BhdGggaW1h
Z2VQYXRoOihOU1N0cmluZyAqKWltYWdlUGF0aAoreworICAgIFNWR1Rlc3QgKnRlc3QgPSBbW3Nl
bGYgYWxsb2NdIGluaXRXaXRoU1ZHUGF0aDpzdmdQYXRoIGltYWdlUGF0aDppbWFnZVBhdGhdOwor
ICAgIHJldHVybiBbdGVzdCBhdXRvcmVsZWFzZV07Cit9CisKK3N0YXRpYyBEcmF3VmlldyAqX19z
aGFyZWREcmF3VmlldyA9IG5pbDsKKysgKERyYXdWaWV3ICopc2hhcmVkRHJhd1ZpZXcKK3sKKyAg
ICBpZiAoIV9fc2hhcmVkRHJhd1ZpZXcpIHsKKyAgICAgICAgX19zaGFyZWREcmF3VmlldyA9IFtb
RHJhd1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLDAsMCwwKV07CisgICAg
fQorICAgIHJldHVybiBfX3NoYXJlZERyYXdWaWV3OworfQorCistIChpZClpbml0V2l0aFNWR1Bh
dGg6KE5TU3RyaW5nICopc3ZnUGF0aCBpbWFnZVBhdGg6KE5TU3RyaW5nICopaW1hZ2VQYXRoCit7
CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX3N2Z1BhdGggPSBbc3Zn
UGF0aCBjb3B5XTsKKyAgICAgICAgX2ltYWdlUGF0aCA9IFtpbWFnZVBhdGggY29weV07CisgICAg
fQorICAgIHJldHVybiBzZWxmOworfQorCistIChOU1N0cmluZyAqKWltYWdlUGF0aAoreworICAg
IHJldHVybiBfaW1hZ2VQYXRoOworfQorCistIChOU1N0cmluZyAqKXN2Z1BhdGgKK3sKKyAgICBy
ZXR1cm4gX3N2Z1BhdGg7Cit9CisKKy0gKE5TSW1hZ2UgKilpbWFnZQoreworICAgIGlmICghX2lt
YWdlICYmIF9pbWFnZVBhdGgpIHsKKyAgICAgICAgX2ltYWdlID0gW1tOU0ltYWdlIGFsbG9jXSBp
bml0QnlSZWZlcmVuY2luZ0ZpbGU6X2ltYWdlUGF0aF07CisgICAgfQorICAgIHJldHVybiBfaW1h
Z2U7Cit9CisKKy0gKERyYXdEb2N1bWVudCAqKXN2Z0RvY3VtZW50Cit7CisgICAgaWYgKCFfc3Zn
RG9jdW1lbnQgJiYgX3N2Z1BhdGgpIHsKKyAgICAgICAgX3N2Z0RvY3VtZW50ID0gW1tEcmF3RG9j
dW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6X3N2Z1BhdGhdOworICAgIH0KKyAg
ICByZXR1cm4gX3N2Z0RvY3VtZW50OworfQorCistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBO
U011dGFibGVTdHJpbmcgKm5hbWUgPSBbW1tbX3N2Z1BhdGggbGFzdFBhdGhDb21wb25lbnRdIHN0
cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwor
ICAgIFtuYW1lIHJlcGxhY2VPY2N1cnJlbmNlc09mU3RyaW5nOkAiXyIgd2l0aFN0cmluZzpAIiAi
IG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBbbmFtZSBsZW5ndGhdKV07CisgICAgcmV0
dXJuIFtuYW1lIGNhcGl0YWxpemVkU3RyaW5nXTsKK30KKworLSAodm9pZClnZW5lcmF0ZUNvbXBv
c2l0ZUlmTmVjZXNzYXJ5Cit7CisgICAgaWYgKCFfY29tcG9zaXRlSW1hZ2UpIHsKKyAgICAgICAg
RHJhd1ZpZXcgKnZpZXcgPSBbU1ZHVGVzdCBzaGFyZWREcmF3Vmlld107CisgICAgICAgIFt2aWV3
IHNldERvY3VtZW50OltzZWxmIHN2Z0RvY3VtZW50XV07CisgICAgICAgIFt2aWV3IHNpemVUb0Zp
dFZpZXdCb3hdOworICAgICAgICBOU1NpemUgc3ZnU2l6ZSA9IFt2aWV3IGJvdW5kc10uc2l6ZTsK
KyAgICAgICAgCisgICAgICAgIE5TSW1hZ2UgKmltYWdlID0gW3NlbGYgaW1hZ2VdOworICAgICAg
ICBOU1NpemUgaW1hZ2VTaXplID0gW2ltYWdlIHNpemVdOworICAgICAgICAKKyAgICAgICAgTlNC
aXRtYXBJbWFnZVJlcCAqc3ZnSW1hZ2UgPSBbdmlldyBiaXRtYXBJbWFnZVJlcEZvckNhY2hpbmdE
aXNwbGF5SW5SZWN0Olt2aWV3IGJvdW5kc11dOworICAgICAgICBbdmlldyBjYWNoZURpc3BsYXlJ
blJlY3Q6W3ZpZXcgYm91bmRzXSB0b0JpdG1hcEltYWdlUmVwOnN2Z0ltYWdlXTsKKyAgICAgICAg
CisgICAgICAgIE5TU2l6ZSB1bmlvblNpemUgPSBOU01ha2VTaXplKE1BWChzdmdTaXplLndpZHRo
LCBpbWFnZVNpemUud2lkdGgpLCBNQVgoc3ZnU2l6ZS5oZWlnaHQsIGltYWdlU2l6ZS5oZWlnaHQp
KTsKKyAgICAgICAgX2NvbXBvc2l0ZUltYWdlID0gW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNp
emU6dW5pb25TaXplXTsKKyAgICAgICAgCisgICAgICAgIFtfY29tcG9zaXRlSW1hZ2UgbG9ja0Zv
Y3VzXTsKKyAgICAgICAgW3N2Z0ltYWdlIGRyYXdJblJlY3Q6TlNNYWtlUmVjdCgwLDAsc3ZnU2l6
ZS53aWR0aCxzdmdTaXplLmhlaWdodCldOworICAgICAgICBbaW1hZ2UgZHJhd0luUmVjdDpOU01h
a2VSZWN0KDAsMCxpbWFnZVNpemUud2lkdGgsaW1hZ2VTaXplLmhlaWdodCkKKyAgICAgICAgICAg
ICAgICBmcm9tUmVjdDpOU01ha2VSZWN0KDAsMCxpbWFnZVNpemUud2lkdGgsaW1hZ2VTaXplLmhl
aWdodCkKKyAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOk5TQ29tcG9zaXRlWE9SIGZyYWN0aW9u
OjEuMF07CisgICAgICAgIFtfY29tcG9zaXRlSW1hZ2UgdW5sb2NrRm9jdXNdOworICAgIH0KK30K
KworLSAoTlNJbWFnZSAqKWNvbXBvc2l0ZUltYWdlCit7CisgICAgW3NlbGYgZ2VuZXJhdGVDb21w
b3NpdGVJZk5lY2Vzc2FyeV07CisgICAgcmV0dXJuIF9jb21wb3NpdGVJbWFnZTsKK30KKworCitA
ZW5kCkluZGV4OiBUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFRlc3RDb250
cm9sbGVyLmgKZGlmZiAtTiBUZXN0Q29udHJvbGxlci5oCi0tLSBUZXN0Q29udHJvbGxlci5oCTEg
SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFRlc3RDb250cm9sbGVyLmgJMjggSnVsIDIwMDUg
MDU6MTQ6MzMgLTAwMDAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAw
NSBBcHBsZSBDb21wdXRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBBUFBM
RV9MSUNFTlNFX0hFQURFUl9TVEFSVEAKKyAqIAorICogVGhpcyBmaWxlIGNvbnRhaW5zIE9yaWdp
bmFsIENvZGUgYW5kL29yIE1vZGlmaWNhdGlvbnMgb2YgT3JpZ2luYWwgQ29kZQorICogYXMgZGVm
aW5lZCBpbiBhbmQgdGhhdCBhcmUgc3ViamVjdCB0byB0aGUgQXBwbGUgUHVibGljIFNvdXJjZSBM
aWNlbnNlCisgKiBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJykuIFlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluCisgKiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFBsZWFz
ZSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm9wZW5zb3Vy
Y2UuYXBwbGUuY29tL2Fwc2wvIGFuZCByZWFkIGl0IGJlZm9yZSB1c2luZyB0aGlzCisgKiBmaWxl
LgorICogCisgKiBUaGUgT3JpZ2luYWwgQ29kZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGFyZQorICogZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBiYXNp
cywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSCisgKiBFWFBSRVNTIE9SIElN
UExJRUQsIEFORCBBUFBMRSBIRVJFQlkgRElTQ0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJRVMsCisg
KiBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUVVJRVQgRU5K
T1lNRU5UIE9SIE5PTi1JTkZSSU5HRU1FTlQuCisgKiBQbGVhc2Ugc2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQKKyAqIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICogCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJfRU5E
QAorICovCisKKyNpbXBvcnQgPENvY29hL0NvY29hLmg+CisKK0BjbGFzcyBEcmF3VmlldzsKK0Bj
bGFzcyBTVkdUZXN0OworQGNsYXNzIFRlc3RWaWV3ZXJTcGxpdFZpZXc7CisKK0BpbnRlcmZhY2Ug
VGVzdENvbnRyb2xsZXIgOiBOU09iamVjdCB7CisgICAgSUJPdXRsZXQgTlNQYW5lbCAqX3Rlc3RQ
YW5lbDsKKyAgICBJQk91dGxldCBOU1dpbmRvdyAqX3Rlc3RXaW5kb3c7CisgICAgSUJPdXRsZXQg
VGVzdFZpZXdlclNwbGl0VmlldyAqX3NwbGl0VmlldzsKKworICAgIElCT3V0bGV0IE5TQXJyYXlD
b250cm9sbGVyICpfdGVzdHNBcnJheUNvbnRyb2xsZXI7CisgICAgSUJPdXRsZXQgTlNQb3BVcEJ1
dHRvbiAqX3BhcmVudERpcmVjdG9yeVBvcHVwOworICAgIElCT3V0bGV0IE5TVGFibGVWaWV3ICpf
dGVzdHNUYWJsZVZpZXc7CisgICAgCisgICAgSUJPdXRsZXQgTlNXaW5kb3cgKl9jb21wb3NpdGVX
aW5kb3c7CisgICAgSUJPdXRsZXQgTlNJbWFnZVZpZXcgKl9jb21wb3NpdGVJbWFnZVZpZXc7Cisg
ICAgCitAcHJpdmF0ZQorICAgIE5TU3RyaW5nICpfY3VycmVudFBhdGg7CisgICAgTlNBcnJheSAq
X3Rlc3RzOworICAgIFNWR1Rlc3QgKl9zZWxlY3RlZFRlc3Q7CisgICAgCisgICAgRHJhd1ZpZXcg
Kl9kcmF3VmlldzsKKyAgICBOU0ltYWdlVmlldyAqX2ltYWdlVmlldzsKK30KKworKyAoaWQpc2hh
cmVkQ29udHJvbGxlcjsKKworLSAoSUJBY3Rpb24pc2hvd1Rlc3RzUGFuZWw6KGlkKXNlbmRlcjsK
Ky0gKElCQWN0aW9uKXNob3dUZXN0V2luZG93OihpZClzZW5kZXI7CistIChJQkFjdGlvbilzaG93
Q29tcG9zaXRlV2luZG93OihpZClzZW5kZXI7CisKKy0gKElCQWN0aW9uKWJyb3dzZTooaWQpc2Vu
ZGVyOworLSAoSUJBY3Rpb24panVtcFRvUGFyZW50RGlyZWN0b3J5OihpZClzZW5kZXI7CistIChJ
QkFjdGlvbilvcGVuVGVzdFZpZXdlckZvclNlbGVjdGlvbjooaWQpc2VuZGVyOworLSAoSUJBY3Rp
b24pb3BlblNvdXJjZUZvclNlbGVjdGlvbjooaWQpc2VuZGVyOworLSAoSUJBY3Rpb24pb3BlblNl
bGVjdGlvbkluVmlld2VyOihpZClzZW5kZXI7CistIChJQkFjdGlvbil0b2dnbGVWaWV3ZXJzU2Nh
bGVSdWxlOihpZClzZW5kZXI7CisKKy0gKE5TQXJyYXkgKil0ZXN0czsKKy0gKE5TU3RyaW5nICop
Y3VycmVudFBhdGg7CistICh2b2lkKXNldEN1cnJlbnRQYXRoOihOU1N0cmluZyAqKW5ld1BhdGg7
CistIChOU0FycmF5ICopZGlyZWN0b3J5SGllcmFyY2h5OworCitAZW5kCkluZGV4OiBUZXN0Q29u
dHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFRlc3RDb250cm9sbGVyLm0KZGlmZiAtTiBU
ZXN0Q29udHJvbGxlci5tCi0tLSBUZXN0Q29udHJvbGxlci5tCTEgSmFuIDE5NzAgMDA6MDA6MDAg
LTAwMDAKKysrIFRlc3RDb250cm9sbGVyLm0JMjggSnVsIDIwMDUgMDU6MTQ6MzMgLTAwMDAKQEAg
LTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAQVBQTEVfTElDRU5TRV9IRUFERVJf
U1RBUlRACisgKiAKKyAqIFRoaXMgZmlsZSBjb250YWlucyBPcmlnaW5hbCBDb2RlIGFuZC9vciBN
b2RpZmljYXRpb25zIG9mIE9yaWdpbmFsIENvZGUKKyAqIGFzIGRlZmluZWQgaW4gYW5kIHRoYXQg
YXJlIHN1YmplY3QgdG8gdGhlIEFwcGxlIFB1YmxpYyBTb3VyY2UgTGljZW5zZQorICogVmVyc2lv
biAyLjAgKHRoZSAnTGljZW5zZScpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
bgorICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBQbGVhc2Ugb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9hcHNs
LyBhbmQgcmVhZCBpdCBiZWZvcmUgdXNpbmcgdGhpcworICogZmlsZS4KKyAqIAorICogVGhlIE9y
aWdpbmFsIENvZGUgYW5kIGFsbCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBhcmUKKyAqIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgYmFzaXMsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVJVEhFUgorICogRVhQUkVTUyBPUiBJTVBMSUVELCBBTkQgQVBQTEUg
SEVSRUJZIERJU0NMQUlNUyBBTEwgU1VDSCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HIFdJVEhP
VVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFFVSUVUIEVOSk9ZTUVOVCBPUiBOT04tSU5G
UklOR0VNRU5ULgorICogUGxlYXNlIHNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqIAorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX0VOREAKKyAqLworCisjaW1wb3J0
ICJUZXN0Q29udHJvbGxlci5oIgorI2ltcG9ydCAiU1ZHVGVzdC5oIgorI2ltcG9ydCAiVGVzdFZp
ZXdlclNwbGl0Vmlldy5oIgorI2ltcG9ydCAiTXlJbWFnZVZpZXcuaCIKKworI2ltcG9ydCA8V2Vi
Q29yZStTVkcvRHJhd1ZpZXcuaD4KKworQGludGVyZmFjZSBOU0FycmF5IChUZXN0Q29udHJvbGxl
ckFkZGl0aW9ucykKKy0gKGlkKWZpcnN0T2JqZWN0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
TlNBcnJheSAoVGVzdENvbnRyb2xsZXJBZGRpdGlvbnMpCistIChpZClmaXJzdE9iamVjdAorewor
ICAgIGlmIChbc2VsZiBjb3VudF0pCisgICAgICAgIHJldHVybiBbc2VsZiBvYmplY3RBdEluZGV4
OjBdOworICAgIHJldHVybiBuaWw7Cit9CitAZW5kCisKK3N0YXRpYyBUZXN0Q29udHJvbGxlciAq
X19zaGFyZWRJbnN0YW5jZSA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFRlc3RDb250cm9sbGVy
CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAg
ICBOU1N0cmluZyAqcGF0aCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IG9iamVjdEZvcktleTpAIlRlc3REaXJlY3RvcnkiXTsKKyAgICAgICAgQk9PTCBpc0RpcmVjdG9y
eSA9IE5POworICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpwYXRoIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0gfHwgIWlzRGlyZWN0
b3J5KSB7CisgICAgICAgICAgICBwYXRoID0gW0AifiIgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0
aF07CisgICAgICAgIH0KKyAgICAgICAgW3NlbGYgc2V0Q3VycmVudFBhdGg6cGF0aF07CisgICAg
fQorICAgIHJldHVybiBzZWxmOworfQorCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbc2Vs
ZiBzZXRLZXlzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpAImN1cnJlbnRQYXRoIl0gdHJpZ2dl
ckNoYW5nZU5vdGlmaWNhdGlvbnNGb3JEZXBlbmRlbnRLZXk6QCJkaXJlY3RvcnlIaWVyYXJjaHki
XTsKKyAgICBbc2VsZiBzZXRLZXlzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpAImN1cnJlbnRQ
YXRoIl0gdHJpZ2dlckNoYW5nZU5vdGlmaWNhdGlvbnNGb3JEZXBlbmRlbnRLZXk6QCJ0ZXN0cyJd
OworfQorCisrIChpZClzaGFyZWRDb250cm9sbGVyCit7CisgICAgaWYgKCFfX3NoYXJlZEluc3Rh
bmNlKSB7CisgICAgICAgIF9fc2hhcmVkSW5zdGFuY2UgPSBbW3NlbGYgYWxsb2NdIGluaXRdOwor
ICAgIH0KKyAgICByZXR1cm4gX19zaGFyZWRJbnN0YW5jZTsKK30KKworLSAodm9pZClsb2FkTmli
SWZOZWNlc3NhcnkKK3sKKyAgICBpZiAoIV90ZXN0UGFuZWwpIHsKKyAgICAgICAgW05TQnVuZGxl
IGxvYWROaWJOYW1lZDpAIlRlc3RWaWV3ZXIiIG93bmVyOnNlbGZdOworICAgIH0KK30KKworLSAo
dm9pZClhd2FrZUZyb21OaWIKK3sKKyAgICBbX3Rlc3RzVGFibGVWaWV3IHNldFRhcmdldDpzZWxm
XTsKKyAgICBbX3Rlc3RzVGFibGVWaWV3IHNldERvdWJsZUFjdGlvbjpAc2VsZWN0b3Iob3BlblRl
c3RWaWV3ZXJGb3JTZWxlY3Rpb246KV07CisgICAgX2RyYXdWaWV3ID0gW1tEcmF3VmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XTsKKyAgICBfaW1hZ2VWaWV3ID0gW1tNeUltYWdl
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XTsKKyAgICBbX3NwbGl0VmlldyBh
ZGRTdWJ2aWV3Ol9kcmF3Vmlld107CisgICAgW19zcGxpdFZpZXcgYWRkU3VidmlldzpfaW1hZ2VW
aWV3XTsKK30KKworLSAoSUJBY3Rpb24pc2hvd1Rlc3RzUGFuZWw6KGlkKXNlbmRlcgoreworICAg
IFtzZWxmIGxvYWROaWJJZk5lY2Vzc2FyeV07CisgICAgW190ZXN0UGFuZWwgbWFrZUtleUFuZE9y
ZGVyRnJvbnQ6c2VuZGVyXTsKK30KKworLSAoSUJBY3Rpb24pc2hvd1Rlc3RXaW5kb3c6KGlkKXNl
bmRlcgoreworICAgIFtzZWxmIGxvYWROaWJJZk5lY2Vzc2FyeV07CisgICAgW190ZXN0V2luZG93
IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbmRlcl07Cit9CisKKy0gKElCQWN0aW9uKXNob3dDb21w
b3NpdGVXaW5kb3c6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIGxvYWROaWJJZk5lY2Vzc2FyeV07
CisgICAgTlNMb2coQCJzaG93Q29tcG9zaXRlV2luZG93OiAlQCIsIF9jb21wb3NpdGVXaW5kb3cp
OworICAgIFtfY29tcG9zaXRlV2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbmRlcl07Cit9
CisKKy0gKElCQWN0aW9uKWJyb3dzZTooaWQpc2VuZGVyCit7CisgICAgTlNPcGVuUGFuZWwgKm9w
ZW5QYW5lbCA9IFtOU09wZW5QYW5lbCBvcGVuUGFuZWxdOworICAgIFtvcGVuUGFuZWwgc2V0Q2Fu
Q2hvb3NlRGlyZWN0b3JpZXM6WUVTXTsKKyAgICBbb3BlblBhbmVsIHNldENhbkNob29zZUZpbGVz
Ok5PXTsKKyAgICBbb3BlblBhbmVsIGJlZ2luU2hlZXRGb3JEaXJlY3Rvcnk6bmlsIGZpbGU6bmls
IG1vZGFsRm9yV2luZG93Ol90ZXN0UGFuZWwgbW9kYWxEZWxlZ2F0ZTpzZWxmIGRpZEVuZFNlbGVj
dG9yOkBzZWxlY3RvcihvcGVuUGFuZWxEaWRFbmQ6cmV0dXJuQ29kZTpjb250ZXh0SW5mbzopIGNv
bnRleHRJbmZvOk5VTExdOworfQorCistICh2b2lkKW9wZW5QYW5lbERpZEVuZDooTlNPcGVuUGFu
ZWwgKilvcGVuUGFuZWwgcmV0dXJuQ29kZTooaW50KXJldHVybkNvZGUgY29udGV4dEluZm86KHZv
aWQgKiljb250ZXh0SW5mbworeworICAgIGlmIChyZXR1cm5Db2RlID09IE5TT0tCdXR0b24pIHsK
KyAgICAgICAgTlNBcnJheSAqZm9sZGVycyA9IFtvcGVuUGFuZWwgZmlsZW5hbWVzXTsKKyAgICAg
ICAgTlNTdHJpbmcgKnNlbGVjdGVkRm9sZGVyID0gW2ZvbGRlcnMgZmlyc3RPYmplY3RdOworICAg
ICAgICBbc2VsZiBzZXRDdXJyZW50UGF0aDpzZWxlY3RlZEZvbGRlcl07CisgICAgfQorfQorCist
IChJQkFjdGlvbilqdW1wVG9QYXJlbnREaXJlY3Rvcnk6KGlkKXNlbmRlcgoreworICAgIGludCBp
bmRleCA9IFtfcGFyZW50RGlyZWN0b3J5UG9wdXAgaW5kZXhPZlNlbGVjdGVkSXRlbV07CisgICAg
TlNBcnJheSAqY29tcG9uZW50cyA9IFtfY3VycmVudFBhdGggcGF0aENvbXBvbmVudHNdOworICAg
IE5TQXJyYXkgKm5ld0NvbXBvbmVudHMgPSBbY29tcG9uZW50cyBzdWJhcnJheVdpdGhSYW5nZTpO
U01ha2VSYW5nZSgwLCBbY29tcG9uZW50cyBjb3VudF0gLSBpbmRleCldOworICAgIE5TU3RyaW5n
ICpuZXdQYXRoID0gW05TU3RyaW5nIHBhdGhXaXRoQ29tcG9uZW50czpuZXdDb21wb25lbnRzXTsK
KyAgICBbc2VsZiBzZXRDdXJyZW50UGF0aDpuZXdQYXRoXTsKK30KKworLSAodm9pZClzZXRTZWxl
Y3RlZFRlc3Q6KFNWR1Rlc3QgKilzZWxlY3RlZFRlc3QKK3sKKyAgICBpZCBvbGRUZXN0ID0gX3Nl
bGVjdGVkVGVzdDsKKyAgICBfc2VsZWN0ZWRUZXN0ID0gW3NlbGVjdGVkVGVzdCByZXRhaW5dOwor
ICAgIFtvbGRUZXN0IHJlbGVhc2VdOworICAgIAorICAgIGlmIChbX3Rlc3RXaW5kb3cgaXNWaXNp
YmxlXSkgeworICAgICAgICBbX3Rlc3RXaW5kb3cgc2V0VGl0bGU6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJUZXN0IFZpZXdlciAtICVAIiwgW19zZWxlY3RlZFRlc3QgbmFtZV1dXTsgCisg
ICAgICAgIFtfZHJhd1ZpZXcgc2V0RG9jdW1lbnQ6W19zZWxlY3RlZFRlc3Qgc3ZnRG9jdW1lbnRd
XTsKKyAgICAgICAgW19pbWFnZVZpZXcgc2V0SW1hZ2U6W19zZWxlY3RlZFRlc3QgaW1hZ2VdXTsK
KyAgICAgICAgaWYgKFtfY29tcG9zaXRlV2luZG93IGlzVmlzaWJsZV0pCisgICAgICAgICAgICBb
X2NvbXBvc2l0ZUltYWdlVmlldyBzZXRJbWFnZTpbX3NlbGVjdGVkVGVzdCBjb21wb3NpdGVJbWFn
ZV1dOworICAgIH0KK30KKworLSAodm9pZCl0YWJsZVZpZXdTZWxlY3Rpb25EaWRDaGFuZ2U6KE5T
Tm90aWZpY2F0aW9uICopYU5vdGlmaWNhdGlvbgoreworICAgIFtzZWxmIHNldFNlbGVjdGVkVGVz
dDpbW190ZXN0c0FycmF5Q29udHJvbGxlciBzZWxlY3RlZE9iamVjdHNdIGZpcnN0T2JqZWN0XV07
Cit9CisKKy0gKElCQWN0aW9uKW9wZW5UZXN0Vmlld2VyRm9yU2VsZWN0aW9uOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBzaG93VGVzdFdpbmRvdzpzZW5kZXJdOworICAgIFtfZHJhd1ZpZXcgc2V0
RG9jdW1lbnQ6W19zZWxlY3RlZFRlc3Qgc3ZnRG9jdW1lbnRdXTsKKyAgICBbX2ltYWdlVmlldyBz
ZXRJbWFnZTpbX3NlbGVjdGVkVGVzdCBpbWFnZV1dOworfQorCistIChJQkFjdGlvbilvcGVuU291
cmNlRm9yU2VsZWN0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdv
cmtzcGFjZV0gb3BlbkZpbGU6W19zZWxlY3RlZFRlc3Qgc3ZnUGF0aF0gd2l0aEFwcGxpY2F0aW9u
OkAiVGV4dEVkaXQiXTsKK30KKworLSAoSUJBY3Rpb24pb3BlblNlbGVjdGlvbkluVmlld2VyOihp
ZClzZW5kZXIKK3sKKyAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZpbGU6
W19zZWxlY3RlZFRlc3Qgc3ZnUGF0aF1dOworfQorICAgICAKKy0gKE5TU3RyaW5nICopaW1hZ2VQ
YXRoRm9yU1ZHUGF0aDooTlNTdHJpbmcgKilzdmdQYXRoCit7CisgICAgLy8gZXZlbnR1YWxseSB0
aGlzIGNvZGUgd2lsbCBidWlsZCBhbiBhcnJheSBpbnN0ZWFkLi4uCisgICAgCisgICAgTlNTdHJp
bmcgKnN2Z05hbWUgPSBbc3ZnUGF0aCBsYXN0UGF0aENvbXBvbmVudF07CisgICAgTlNTdHJpbmcg
KnRlc3ROYW1lID0gW3N2Z05hbWUgc3RyaW5nQnlEZWxldGluZ1BhdGhFeHRlbnNpb25dOworICAg
IE5TU3RyaW5nICppbWFnZU5hbWUgPSBbdGVzdE5hbWUgc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0
ZW5zaW9uOkAicG5nIl07CisgICAgTlNTdHJpbmcgKmN1cnJlbnREaXJlY3RvcnkgPSBbc2VsZiBj
dXJyZW50UGF0aF07CisgICAgTlNTdHJpbmcgKnBhcmVudERpcmVjdG9yeSA9IFtjdXJyZW50RGly
ZWN0b3J5IHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CisgICAgCisgICAgLy8g
Zmlyc3QgbG9vayBmb3IgLi4vcG5nL25hbWUucG5nIC0tIFNWRyAxLjEgYmFzZWxpbmVzCisgICAg
TlNTdHJpbmcgKmltYWdlRGlyZWN0b3J5ID0gW3BhcmVudERpcmVjdG9yeSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJwbmciXTsKKyAgICBOU1N0cmluZyAqZnVsbEltYWdlTmFtZSA9
IFtAImZ1bGwtIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzppbWFnZU5hbWVdOworICAgIC8vIFRo
ZSBTVkcgMS4xIHNwZWMgaGFzIHZhcmlvdXMgZGlmZmVybmV0IHBuZ3MsIHdlIHNob3VsZCBhbGxv
dyB0aGUKKyAgICAvLyB0ZXN0ZXIgdG8gY2hvb3NlLi4uCisgICAgTlNTdHJpbmcgKmltYWdlUGF0
aCA9IFtpbWFnZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZnVsbElt
YWdlTmFtZV07CisgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDppbWFnZVBhdGhdKSByZXR1cm4gaW1hZ2VQYXRoOworICAgIAorICAgIC8vIHRo
ZW4gbG9vayBmb3IgLi4vbmFtZS5wbmcgLS0gb3BlbmNsaXBhcnQub3JnCisgICAgaW1hZ2VQYXRo
ID0gW2N1cnJlbnREaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmltYWdl
TmFtZV07CisgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDppbWFnZVBhdGhdKSByZXR1cm4gaW1hZ2VQYXRoOworICAgIAorICAgIC8vIGZpbmFs
bHkgdHJ5IG5hbWUtYmFzZWxpbmUucG5nIC0tIGtzdmcgcmVncmVzc2lvbiBiYXNlbGluZXMKKyAg
ICB0ZXN0TmFtZSA9IFt0ZXN0TmFtZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi1iYXNlbGlu
ZSJdOworICAgIGltYWdlTmFtZSA9IFt0ZXN0TmFtZSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRl
bnNpb246QCJwbmciXTsKKyAgICBpbWFnZVBhdGggPSBbY3VycmVudERpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aW1hZ2VOYW1lXTsKKyAgICBpZiAoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmltYWdlUGF0aF0pIHJldHVybiBp
bWFnZVBhdGg7CisgICAgCisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNBcnJheSAqKXRlc3Rz
Cit7CisgICAgaWYgKCFfdGVzdHMpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKm5ld1Rlc3Rz
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAgIE5TQXJyYXkgKmZpbGVz
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBkaXJlY3RvcnlDb250ZW50c0F0UGF0
aDpbc2VsZiBjdXJyZW50UGF0aF1dOworICAgICAgICBOU1N0cmluZyAqZmlsZSA9IG5pbDsKKyAg
ICAgICAgZm9yZWFjaGFycmF5KGZpbGUsIGZpbGVzKSB7CisgICAgICAgICAgICBpZiAoW1tmaWxl
IHBhdGhFeHRlbnNpb25dIGlzRXF1YWxUb1N0cmluZzpAInN2ZyJdKSB7CisgICAgICAgICAgICAg
ICAgTlNTdHJpbmcgKnN2Z1BhdGggPSBbW3NlbGYgY3VycmVudFBhdGhdIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpmaWxlXTsKKyAgICAgICAgICAgICAgICBOU1N0cmluZyAqaW1hZ2VQ
YXRoID0gW3NlbGYgaW1hZ2VQYXRoRm9yU1ZHUGF0aDpzdmdQYXRoXTsKKyAgICAgICAgICAgICAg
ICBbbmV3VGVzdHMgYWRkT2JqZWN0OltTVkdUZXN0IHRlc3RXaXRoU1ZHUGF0aDpzdmdQYXRoIGlt
YWdlUGF0aDppbWFnZVBhdGhdXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBb
c2VsZiBzZXRWYWx1ZTpuZXdUZXN0cyBmb3JLZXk6QCJ0ZXN0cyJdOworICAgIH0KKyAgICByZXR1
cm4gX3Rlc3RzOworfQorCistIChOU0FycmF5ICopZGlyZWN0b3J5SGllcmFyY2h5Cit7CisgICAg
Ly8gQSBoYWNraXNoIHdheSB0byByZXZlcnNlIGFuIGFycmF5LgorICAgIHJldHVybiBbW1tfY3Vy
cmVudFBhdGggcGF0aENvbXBvbmVudHNdIHJldmVyc2VPYmplY3RFbnVtZXJhdG9yXSBhbGxPYmpl
Y3RzXTsKK30KKworLSAoTlNTdHJpbmcgKiljdXJyZW50UGF0aAoreworICAgIHJldHVybiBfY3Vy
cmVudFBhdGg7Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudFBhdGg6KE5TU3RyaW5nICopbmV3UGF0
aAoreworICAgIGlmICghW25ld1BhdGggaXNFcXVhbFRvU3RyaW5nOl9jdXJyZW50UGF0aF0pIHsK
KyAgICAgICAgW19jdXJyZW50UGF0aCByZWxlYXNlXTsKKyAgICAgICAgX2N1cnJlbnRQYXRoID0g
W25ld1BhdGggY29weV07CisgICAgICAgIFtzZWxmIHNldFZhbHVlOm5pbCBmb3JLZXk6QCJ0ZXN0
cyJdOworICAgIH0KKyAgICAKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBzZXRPYmplY3Q6X2N1cnJlbnRQYXRoIGZvcktleTpAIlRlc3REaXJlY3RvcnkiXTsKK30K
KworLSAoSUJBY3Rpb24pdG9nZ2xlVmlld2Vyc1NjYWxlUnVsZTooaWQpc2VuZGVyCit7CisgICAg
aWYgKFtfZHJhd1ZpZXcgaW1hZ2VTY2FsaW5nXSA9PSBOU1NjYWxlUHJvcG9ydGlvbmFsbHkpIHsK
KyAgICAgICAgW19kcmF3VmlldyBzZXRJbWFnZVNjYWxpbmc6TlNTY2FsZU5vbmVdOworICAgICAg
ICBbX2ltYWdlVmlldyBzZXRJbWFnZVNjYWxpbmc6TlNTY2FsZU5vbmVdOworICAgIH0gZWxzZSB7
CisgICAgICAgIFtfZHJhd1ZpZXcgc2V0SW1hZ2VTY2FsaW5nOk5TU2NhbGVQcm9wb3J0aW9uYWxs
eV07CisgICAgICAgIFtfaW1hZ2VWaWV3IHNldEltYWdlU2NhbGluZzpOU1NjYWxlUHJvcG9ydGlv
bmFsbHldOworICAgIH0KK30KKworQGVuZApJbmRleDogVGVzdFZpZXdlclNwbGl0Vmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IFRlc3RWaWV3ZXJTcGxpdFZpZXcuaApkaWZmIC1OIFRlc3RWaWV3
ZXJTcGxpdFZpZXcuaAotLS0gVGVzdFZpZXdlclNwbGl0Vmlldy5oCTEgSmFuIDE5NzAgMDA6MDA6
MDAgLTAwMDAKKysrIFRlc3RWaWV3ZXJTcGxpdFZpZXcuaAkyOCBKdWwgMjAwNSAwNToxNDozMyAt
MDAwMApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1IEFwcGxlIENv
bXB1dGVyLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQEFQUExFX0xJQ0VOU0Vf
SEVBREVSX1NUQVJUQAorICogCisgKiBUaGlzIGZpbGUgY29udGFpbnMgT3JpZ2luYWwgQ29kZSBh
bmQvb3IgTW9kaWZpY2F0aW9ucyBvZiBPcmlnaW5hbCBDb2RlCisgKiBhcyBkZWZpbmVkIGluIGFu
ZCB0aGF0IGFyZSBzdWJqZWN0IHRvIHRoZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UKKyAq
IFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vuc2UnKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gUGxlYXNlIG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5j
b20vYXBzbC8gYW5kIHJlYWQgaXQgYmVmb3JlIHVzaW5nIHRoaXMKKyAqIGZpbGUuCisgKiAKKyAq
IFRoZSBPcmlnaW5hbCBDb2RlIGFuZCBhbGwgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgYXJlCisgKiBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIGJhc2lzLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgQU5E
IEFQUExFIEhFUkVCWSBESVNDTEFJTVMgQUxMIFNVQ0ggV0FSUkFOVElFUywKKyAqIElOQ0xVRElO
RyBXSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBRVUlFVCBFTkpPWU1FTlQgT1Ig
Tk9OLUlORlJJTkdFTUVOVC4KKyAqIFBsZWFzZSBzZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgKiAKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKwor
I2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KKworQGludGVyZmFjZSBUZXN0Vmlld2VyU3BsaXRWaWV3
IDogTlNWaWV3IHsKKyAgICBOU011dGFibGVBcnJheSAqc3Vidmlld0xhYmVsczsKK30KKworQGVu
ZApJbmRleDogVGVzdFZpZXdlclNwbGl0Vmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFRlc3RW
aWV3ZXJTcGxpdFZpZXcubQpkaWZmIC1OIFRlc3RWaWV3ZXJTcGxpdFZpZXcubQotLS0gVGVzdFZp
ZXdlclNwbGl0Vmlldy5tCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFRlc3RWaWV3ZXJT
cGxpdFZpZXcubQkyOCBKdWwgMjAwNSAwNToxNDozMyAtMDAwMApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogQEFQUExFX0xJQ0VOU0VfSEVBREVSX1NUQVJUQAorICogCisgKiBU
aGlzIGZpbGUgY29udGFpbnMgT3JpZ2luYWwgQ29kZSBhbmQvb3IgTW9kaWZpY2F0aW9ucyBvZiBP
cmlnaW5hbCBDb2RlCisgKiBhcyBkZWZpbmVkIGluIGFuZCB0aGF0IGFyZSBzdWJqZWN0IHRvIHRo
ZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UKKyAqIFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vu
c2UnKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4gUGxlYXNlIG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
KyAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5jb20vYXBzbC8gYW5kIHJlYWQgaXQgYmVm
b3JlIHVzaW5nIHRoaXMKKyAqIGZpbGUuCisgKiAKKyAqIFRoZSBPcmlnaW5hbCBDb2RlIGFuZCBh
bGwgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgYXJlCisgKiBkaXN0cmli
dXRlZCBvbiBhbiAnQVMgSVMnIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
SVRIRVIKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgQU5EIEFQUExFIEhFUkVCWSBESVNDTEFJTVMg
QUxMIFNVQ0ggV0FSUkFOVElFUywKKyAqIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04sIEFO
WSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLCBRVUlFVCBFTkpPWU1FTlQgT1IgTk9OLUlORlJJTkdFTUVOVC4KKyAqIFBs
ZWFzZSBzZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cmlnaHRzIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAKKyAqIEBB
UFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKworI2ltcG9ydCAiVGVzdFZpZXdlclNwbGl0
Vmlldy5oIgorCitAaW1wbGVtZW50YXRpb24gVGVzdFZpZXdlclNwbGl0VmlldworCistICh2b2lk
KWRyYXdSZWN0OihOU1JlY3QpcmVjdAoreworICAgIE5TQXJyYXkgKnN1YnZpZXdzID0gW3NlbGYg
c3Vidmlld3NdOworICAgIGludCBzdWJ2aWV3Q291bnQgPSBbc3Vidmlld3MgY291bnRdOworICAg
IGZvciAoaW50IHg9MDsgeCA8IHN1YnZpZXdDb3VudDsgeCsrKSB7CisgICAgICAgIE5TVmlldyAq
c3VidmlldyA9IFtzdWJ2aWV3cyBvYmplY3RBdEluZGV4OnhdOworICAgICAgICBbc3VidmlldyBk
cmF3UmVjdDpyZWN0XTsKKy8vICAgICAgICBOU1N0cmluZyAqbGFiZWwgPSBbc3Vidmlld0xhYmVs
cyBvYmplY3RBdEluZGV4OjBdOworLy8gICAgICAgIFtsYWJlbCBkcmF3QXRQb2ludDpbc3Vidmll
dyBmcmFtZV0ub3JpZ2luIHdpdGhBdHRyaWJ1dGVzOk5VTExdOworICAgIH0KK30KKworLSAodm9p
ZClyZXRpbGVTdWJ2aWV3cworeworICAgIE5TUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZHNdOwor
ICAgIE5TQXJyYXkgKnN1YnZpZXdzID0gW3NlbGYgc3Vidmlld3NdOworICAgIGludCBzdWJ2aWV3
Q291bnQgPSBbc3Vidmlld3MgY291bnRdOworICAgIGlmICghc3Vidmlld0NvdW50KSByZXR1cm47
CisgICAgZmxvYXQgc3Vidmlld1dpZHRoID0gYm91bmRzLnNpemUud2lkdGggLyBzdWJ2aWV3Q291
bnQ7CisgICAgCisgICAgZm9yIChpbnQgeD0wOyB4IDwgc3Vidmlld0NvdW50OyB4KyspIHsKKyAg
ICAgICAgW1tzdWJ2aWV3cyBvYmplY3RBdEluZGV4OnhdIHNldEZyYW1lOk5TTWFrZVJlY3QoeCAq
IHN1YnZpZXdXaWR0aCwgMCwgc3Vidmlld1dpZHRoLCBib3VuZHMuc2l6ZS5oZWlnaHQpXTsKKyAg
ICB9Cit9CisKKy0gKHZvaWQpZGlkQWRkU3VidmlldzooTlNWaWV3ICopc3VidmlldworeworICAg
IFtzdXBlciBkaWRBZGRTdWJ2aWV3OnN1YnZpZXddOworICAgIFtzZWxmIHJldGlsZVN1YnZpZXdz
XTsKK30KKworLSAodm9pZCl3aWxsUmVtb3ZlU3VidmlldzooTlNWaWV3ICopc3Vidmlldworewor
ICAgIFtzdXBlciB3aWxsUmVtb3ZlU3VidmlldzpzdWJ2aWV3XTsKKyAgICBbc2VsZiByZXRpbGVT
dWJ2aWV3c107Cit9CisKKy0gKHZvaWQpc2V0RnJhbWU6KE5TUmVjdCluZXdGcmFtZQoreworICAg
IC8vIFNob3VsZG4ndCB0aGlzIGJlIGJvdW5kcz8KKyAgICBbc3VwZXIgc2V0RnJhbWU6bmV3RnJh
bWVdOworICAgIFtzZWxmIHJldGlsZVN1YnZpZXdzXTsKK30KKworQGVuZApJbmRleDogbWFpbi5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IG1haW4ubQpkaWZmIC1OIG1haW4ubQotLS0gbWFpbi5tCTEg
SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIG1haW4ubQkyOCBKdWwgMjAwNSAwNToxNDozMyAt
MDAwMApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1IEFwcGxlIENv
bXB1dGVyLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQEFQUExFX0xJQ0VOU0Vf
SEVBREVSX1NUQVJUQAorICogCisgKiBUaGlzIGZpbGUgY29udGFpbnMgT3JpZ2luYWwgQ29kZSBh
bmQvb3IgTW9kaWZpY2F0aW9ucyBvZiBPcmlnaW5hbCBDb2RlCisgKiBhcyBkZWZpbmVkIGluIGFu
ZCB0aGF0IGFyZSBzdWJqZWN0IHRvIHRoZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UKKyAq
IFZlcnNpb24gMi4wICh0aGUgJ0xpY2Vuc2UnKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gUGxlYXNlIG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5j
b20vYXBzbC8gYW5kIHJlYWQgaXQgYmVmb3JlIHVzaW5nIHRoaXMKKyAqIGZpbGUuCisgKiAKKyAq
IFRoZSBPcmlnaW5hbCBDb2RlIGFuZCBhbGwgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgYXJlCisgKiBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIGJhc2lzLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgQU5E
IEFQUExFIEhFUkVCWSBESVNDTEFJTVMgQUxMIFNVQ0ggV0FSUkFOVElFUywKKyAqIElOQ0xVRElO
RyBXSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBRVUlFVCBFTkpPWU1FTlQgT1Ig
Tk9OLUlORlJJTkdFTUVOVC4KKyAqIFBsZWFzZSBzZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgKiAKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKwor
aW50IG1haW4gKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCit7CisgICAgcmV0dXJuIE5T
QXBwbGljYXRpb25NYWluKGFyZ2MsIGFyZ3YpOworfQpJbmRleDogLi9EcmF3VGVzdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHByb2plY3QucGJ4cHJvagpk
aWZmIC1OIC4vRHJhd1Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagotLS0gLi9EcmF3VGVz
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysr
IC4vRHJhd1Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkyOCBKdWwgMjAwNSAwNToxNDoz
NyAtMDAwMApAQCAtMCwwICsxLDQ1NSBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJz
aW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQyOworCW9iamVj
dHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCThEMTEwNzJBMDQ4
NkNFQjgwMEU0NzA5MCAvKiBNYWluTWVudS5uaWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Qjk3MzE4RkRDRkEzOTQxMUNBMkNFQSAvKiBNYWluTWVu
dS5uaWIgKi87IH07CisJCThEMTEwNzJCMDQ4NkNFQjgwMEU0NzA5MCAvKiBJbmZvUGxpc3Quc3Ry
aW5ncyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5
QzE2NUNGRTg0MEUwQ0MwMkFBQzA3IC8qIEluZm9QbGlzdC5zdHJpbmdzICovOyB9OworCQk4RDEx
MDcyRDA0ODZDRUI4MDBFNDcwOTAgLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjlCOTczMTZGRENGQTM5NDExQ0EyQ0VBIC8qIG1haW4ubSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQk4RDExMDcyRjA0ODZDRUI4
MDBFNDcwOTAgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTA1OEM3QTFGRUE1NEYwMTExQ0EyQ0JCIC8qIENvY29hLmZy
YW1ld29yayAqLzsgfTsKKwkJQThDMDA2Q0YwODk4NjM0NjAwQkE1MTE0IC8qIFNWR1Rlc3QubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkIwMDg5
ODYzNDYwMEJBNTExNCAvKiBTVkdUZXN0Lm0gKi87IH07CisJCUE4QzAwNkQwMDg5ODYzNDYwMEJB
NTExNCAvKiBNeUltYWdlVmlldy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDMDA2QjIwODk4NjM0NjAwQkE1MTE0IC8qIE15SW1hZ2VWaWV3Lm0gKi87
IH07CisJCUE4QzAwNkQyMDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdFZpZXcubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkI1MDg5ODYzNDYw
MEJBNTExNCAvKiBEcmF3VGVzdFZpZXcubSAqLzsgfTsKKwkJQThDMDA2RDMwODk4NjM0NjAwQkE1
MTE0IC8qIERyYXdUZXN0VG9vbGJhckNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkI3MDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3
VGVzdFRvb2xiYXJDb250cm9sbGVyLm0gKi87IH07CisJCUE4QzAwNkQ0MDg5ODYzNDYwMEJBNTEx
NCAvKiBEcmF3VGVzdEluc3BlY3RvckNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkJCMDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3
VGVzdEluc3BlY3RvckNvbnRyb2xsZXIubSAqLzsgfTsKKwkJQThDMDA2RDUwODk4NjM0NjAwQkE1
MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QzAwNkJEMDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdERvY3Vt
ZW50Lm0gKi87IH07CisJCUE4QzAwNkUxMDg5ODYzNDYwMEJBNTExNCAvKiBBcHBEZWxlZ2F0ZS5t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2Q0Ew
ODk4NjM0NjAwQkE1MTE0IC8qIEFwcERlbGVnYXRlLm0gKi87IH07CisJCUE4QzAwNkUyMDg5ODYz
NDYwMEJBNTExNCAvKiBUZXN0Vmlld2VyU3BsaXRWaWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwMDZDQzA4OTg2MzQ2MDBCQTUxMTQgLyogVGVz
dFZpZXdlclNwbGl0Vmlldy5tICovOyB9OworCQlBOEMwMDZFMzA4OTg2MzQ2MDBCQTUxMTQgLyog
VGVzdENvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzAwNkNFMDg5ODYzNDYwMEJBNTExNCAvKiBUZXN0Q29udHJvbGxlci5tICovOyB9
OworCQlBOEMwMDZGMzA4OTg2NUU5MDBCQTUxMTQgLyogRHJhd1Rlc3REb2N1bWVudC5uaWIgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkVEMDg5
ODY1RTkwMEJBNTExNCAvKiBEcmF3VGVzdERvY3VtZW50Lm5pYiAqLzsgfTsKKwkJQThDMDA2RjQw
ODk4NjVFOTAwQkE1MTE0IC8qIEluc3BlY3Rvci5uaWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkVGMDg5ODY1RTkwMEJBNTExNCAvKiBJbnNw
ZWN0b3IubmliICovOyB9OworCQlBOEMwMDZGNTA4OTg2NUU5MDBCQTUxMTQgLyogVGVzdFZpZXdl
ci5uaWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzAwNkYxMDg5ODY1RTkwMEJBNTExNCAvKiBUZXN0Vmlld2VyLm5pYiAqLzsgfTsKKwkJQThDMDA2
RkEwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzAwNkY5MDg5ODY2NTIwMEJB
NTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCisJCTRBOTUw
NENDRkZFNkE0QjMxMUNBMENCQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFBCWEJ1aWxkU3R5
bGU7CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJ
CQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElO
VUUgPSBZRVM7CisJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOworCQkJ
CUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCVBSRUJJTkRJTkcgPSBOTzsKKwkJCQla
RVJPX0xJTksgPSBZRVM7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk0QTk1MDRD
REZGRTZBNEIzMTFDQTBDQkEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEJ1aWxkU3R5
bGU7CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJ
CQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gTk87CisJCQkJR0NDX0dFTkVSQVRFX0RF
QlVHR0lOR19TWU1CT0xTID0gTk87CisJCQkJUFJFQklORElORyA9IE5POworCQkJCVpFUk9fTElO
SyA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFBCWEJ1aWxk
U3R5bGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJMDg5QzE2NURGRTg0MEUwQ0MwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovSW5mb1Bs
aXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEwNThDN0ExRkVBNTRG
MDExMUNBMkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZy
YW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMTNFNDJGQjMwN0IzRjBGNjAwRTRF
RUYxIC8qIENvcmVEYXRhLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZURhdGEuZnJh
bWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkyOUI5NzMxNkZEQ0ZBMzk0MTFD
QTJDRUEgLyogbWFpbi5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBtYWlu
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5Qjk3MzE5RkRDRkEzOTQxMUNBMkNF
QSAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5uaWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9N
YWluTWVudS5uaWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5Qjk3MzI0RkRDRkEz
OTQxMUNBMkNFQSAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBLaXQu
ZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMjlCOTczMjVGRENGQTM5NDEx
Q0EyQ0VBIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0
aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRp
b24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkzMkNBNEY2MzAz
NjhEMUVFMDBDOTE3ODMgLyogRHJhd1Rlc3RfUHJlZml4LnBjaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRHJhd1Rlc3RfUHJlZml4LnBjaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOEQxMTA3MzEwNDg2Q0VCODAwRTQ3MDkwIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCThEMTEwNzMyMDQ4NkNFQjgwMEU0NzA5MCAvKiBEcmF3VGVzdC5hcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuYXBwbGljYXRpb247
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IERyYXdUZXN0LmFwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQThDMDA2QUYwODk4NjM0NjAwQkE1MTE0IC8qIFRlc3RD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkIwMDg5ODYzNDYwMEJB
NTExNCAvKiBTVkdUZXN0Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFNW
R1Rlc3QubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDMDA2QjEwODk4NjM0NjAw
QkE1MTE0IC8qIFNWR1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEMwMDZCMjA4OTg2MzQ2MDBC
QTUxMTQgLyogTXlJbWFnZVZpZXcubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRo
ID0gTXlJbWFnZVZpZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDMDA2QjMw
ODk4NjM0NjAwQkE1MTE0IC8qIE15SW1hZ2VWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE15SW1hZ2VWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4
QzAwNkI1MDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdFZpZXcubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5vYmpjOyBwYXRoID0gRHJhd1Rlc3RWaWV3Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE4QzAwNkI2MDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdFZpZXcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd1Rlc3RWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkI3MDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdFRv
b2xiYXJDb250cm9sbGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IERy
YXdUZXN0VG9vbGJhckNvbnRyb2xsZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QThDMDA2QjgwODk4NjM0NjAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd1Rlc3REb2N1bWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBOEMwMDZCQTA4OTg2MzQ2MDBCQTUxMTQgLyogRHJhd1Rlc3RUb29s
YmFyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3VGVz
dFRvb2xiYXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzAw
NkJCMDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdEluc3BlY3RvckNvbnRyb2xsZXIubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gRHJhd1Rlc3RJbnNwZWN0b3JDb250cm9s
bGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkJDMDg5ODYzNDYwMEJB
NTExNCAvKiBEcmF3VGVzdEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRHJhd1Rlc3RJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkJEMDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdERv
Y3VtZW50Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IERyYXdUZXN0RG9j
dW1lbnQubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDMDA2Q0EwODk4NjM0NjAw
QkE1MTE0IC8qIEFwcERlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0
aCA9IEFwcERlbGVnYXRlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkNC
MDg5ODYzNDYwMEJBNTExNCAvKiBBcHBEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcHBEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
OEMwMDZDQzA4OTg2MzQ2MDBCQTUxMTQgLyogVGVzdFZpZXdlclNwbGl0Vmlldy5tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBUZXN0Vmlld2VyU3BsaXRWaWV3Lm07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkNEMDg5ODYzNDYwMEJBNTExNCAvKiBUZXN0
Vmlld2VyU3BsaXRWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RW
aWV3ZXJTcGxpdFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDMDA2Q0Uw
ODk4NjM0NjAwQkE1MTE0IC8qIFRlc3RDb250cm9sbGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFRlc3RDb250cm9sbGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE4QzAwNkVFMDg5ODY1RTkwMEJBNTExNCAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5uaWI7IG5hbWUgPSBF
bmdsaXNoOyBwYXRoID0gLi4vRHJhd1Rlc3Rfb2xkL0VuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1
bWVudC5uaWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzAwNkYwMDg5ODY1RTkw
MEJBNTExNCAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5uaWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gLi4vRHJhd1Rl
c3Rfb2xkL0VuZ2xpc2gubHByb2ovSW5zcGVjdG9yLm5pYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQThDMDA2RjIwODk4NjVFOTAwQkE1MTE0IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLm5pYjsgbmFtZSA9
IEVuZ2xpc2g7IHBhdGggPSAuLi9EcmF3VGVzdF9vbGQvRW5nbGlzaC5scHJvai9UZXN0Vmlld2Vy
Lm5pYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDMDA2RjkwODk4NjY1MjAwQkE1
MTE0IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gIldlYkNvcmUr
U1ZHLmZyYW1ld29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJOEQxMTA3MkUwNDg2Q0VCODAwRTQ3MDkwIC8qIEZyYW1l
d29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk4RDExMDcyRjA0ODZD
RUI4MDBFNDcwOTAgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJQThD
MDA2RkEwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkwODBFOTZEREZFMjAxRDZEN0YwMDAwMDEgLyog
Q2xhc3NlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QThDMDA2RTUwODk4NjNBMTAwQkE1MTE0IC8qIFZpZXdlciAqLywKKwkJCQlBOEMwMDZFNjA4OTg2
M0IxMDBCQTUxMTQgLyogVGVzdCBCcm93c2VyICovLAorCQkJCUE4QzAwNkNBMDg5ODYzNDYwMEJB
NTExNCAvKiBBcHBEZWxlZ2F0ZS5tICovLAorCQkJCUE4QzAwNkNCMDg5ODYzNDYwMEJBNTExNCAv
KiBBcHBEZWxlZ2F0ZS5oICovLAorCQkJCUE4QzAwNkIyMDg5ODYzNDYwMEJBNTExNCAvKiBNeUlt
YWdlVmlldy5tICovLAorCQkJCUE4QzAwNkIzMDg5ODYzNDYwMEJBNTExNCAvKiBNeUltYWdlVmll
dy5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBDbGFzc2VzOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKKwkJMTA1OEM3QTBGRUE1NEYwMTExQ0EyQ0JCIC8qIExpbmtlZCBGcmFtZXdv
cmtzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBOEMw
MDZGOTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovLAorCQkJCTEw
NThDN0ExRkVBNTRGMDExMUNBMkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCisJCQkpOworCQkJ
bmFtZSA9ICJMaW5rZWQgRnJhbWV3b3JrcyI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQkxMDU4QzdBMkZFQTU0RjAxMTFDQTJDQkIgLyogT3RoZXIgRnJhbWV3b3JrcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMjlCOTczMjRGRENG
QTM5NDExQ0EyQ0VBIC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8sCisJCQkJMTNFNDJGQjMwN0IzRjBG
NjAwRTRFRUYxIC8qIENvcmVEYXRhLmZyYW1ld29yayAqLywKKwkJCQkyOUI5NzMyNUZEQ0ZBMzk0
MTFDQTJDRUEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkpOworCQkJbmFtZSA9ICJP
dGhlciBGcmFtZXdvcmtzIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE5
QzI4RkFDRkU5RDUyMEQxMUNBMkNCQiAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOEQxMTA3MzIwNDg2Q0VCODAwRTQ3MDkwIC8qIERy
YXdUZXN0LmFwcCAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQkyOUI5NzMxNEZEQ0ZBMzk0MTFDQTJDRUEgLyogRHJhd1Rl
c3QgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA4MEU5
NkRERkUyMDFENkQ3RjAwMDAwMSAvKiBDbGFzc2VzICovLAorCQkJCTI5Qjk3MzE1RkRDRkEzOTQx
MUNBMkNFQSAvKiBPdGhlciBTb3VyY2VzICovLAorCQkJCTI5Qjk3MzE3RkRDRkEzOTQxMUNBMkNF
QSAvKiBSZXNvdXJjZXMgKi8sCisJCQkJMjlCOTczMjNGRENGQTM5NDExQ0EyQ0VBIC8qIEZyYW1l
d29ya3MgKi8sCisJCQkJMTlDMjhGQUNGRTlENTIwRDExQ0EyQ0JCIC8qIFByb2R1Y3RzICovLAor
CQkJKTsKKwkJCW5hbWUgPSBEcmF3VGVzdDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTI5Qjk3MzE1RkRDRkEzOTQxMUNBMkNFQSAvKiBPdGhlciBTb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkzMkNBNEY2MzAzNjhEMUVF
MDBDOTE3ODMgLyogRHJhd1Rlc3RfUHJlZml4LnBjaCAqLywKKwkJCQkyOUI5NzMxNkZEQ0ZBMzk0
MTFDQTJDRUEgLyogbWFpbi5tICovLAorCQkJKTsKKwkJCW5hbWUgPSAiT3RoZXIgU291cmNlcyI7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkyOUI5NzMxN0ZEQ0ZBMzk0MTFD
QTJDRUEgLyogUmVzb3VyY2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk4RDExMDczMTA0ODZDRUI4MDBFNDcwOTAgLyogSW5mby5wbGlzdCAqLywKKwkJ
CQkwODlDMTY1Q0ZFODQwRTBDQzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8sCisJCQkJ
MjlCOTczMThGRENGQTM5NDExQ0EyQ0VBIC8qIE1haW5NZW51Lm5pYiAqLywKKwkJCQlBOEMwMDZF
RDA4OTg2NUU5MDBCQTUxMTQgLyogRHJhd1Rlc3REb2N1bWVudC5uaWIgKi8sCisJCQkJQThDMDA2
RUYwODk4NjVFOTAwQkE1MTE0IC8qIEluc3BlY3Rvci5uaWIgKi8sCisJCQkJQThDMDA2RjEwODk4
NjVFOTAwQkE1MTE0IC8qIFRlc3RWaWV3ZXIubmliICovLAorCQkJKTsKKwkJCW5hbWUgPSBSZXNv
dXJjZXM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkyOUI5NzMyM0ZEQ0ZB
Mzk0MTFDQTJDRUEgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMTA1OEM3QTBGRUE1NEYwMTExQ0EyQ0JCIC8qIExpbmtlZCBGcmFt
ZXdvcmtzICovLAorCQkJCTEwNThDN0EyRkVBNTRGMDExMUNBMkNCQiAvKiBPdGhlciBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJQThDMDA2RTUwODk4NjNBMTAwQkE1MTE0IC8qIFZpZXdlciAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQThDMDA2QkEwODk4
NjM0NjAwQkE1MTE0IC8qIERyYXdUZXN0VG9vbGJhckNvbnRyb2xsZXIuaCAqLywKKwkJCQlBOEMw
MDZCNzA4OTg2MzQ2MDBCQTUxMTQgLyogRHJhd1Rlc3RUb29sYmFyQ29udHJvbGxlci5tICovLAor
CQkJCUE4QzAwNkI2MDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdFZpZXcuaCAqLywKKwkJCQlB
OEMwMDZCNTA4OTg2MzQ2MDBCQTUxMTQgLyogRHJhd1Rlc3RWaWV3Lm0gKi8sCisJCQkJQThDMDA2
QjgwODk4NjM0NjAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQuaCAqLywKKwkJCQlBOEMwMDZC
RDA4OTg2MzQ2MDBCQTUxMTQgLyogRHJhd1Rlc3REb2N1bWVudC5tICovLAorCQkJKTsKKwkJCW5h
bWUgPSBWaWV3ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlBOEMwMDZF
NjA4OTg2M0IxMDBCQTUxMTQgLyogVGVzdCBCcm93c2VyICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBOEMwMDZCMDA4OTg2MzQ2MDBCQTUxMTQgLyogU1ZH
VGVzdC5tICovLAorCQkJCUE4QzAwNkIxMDg5ODYzNDYwMEJBNTExNCAvKiBTVkdUZXN0LmggKi8s
CisJCQkJQThDMDA2QkIwODk4NjM0NjAwQkE1MTE0IC8qIERyYXdUZXN0SW5zcGVjdG9yQ29udHJv
bGxlci5tICovLAorCQkJCUE4QzAwNkJDMDg5ODYzNDYwMEJBNTExNCAvKiBEcmF3VGVzdEluc3Bl
Y3RvckNvbnRyb2xsZXIuaCAqLywKKwkJCQlBOEMwMDZBRjA4OTg2MzQ2MDBCQTUxMTQgLyogVGVz
dENvbnRyb2xsZXIuaCAqLywKKwkJCQlBOEMwMDZDRTA4OTg2MzQ2MDBCQTUxMTQgLyogVGVzdENv
bnRyb2xsZXIubSAqLywKKwkJCQlBOEMwMDZDQzA4OTg2MzQ2MDBCQTUxMTQgLyogVGVzdFZpZXdl
clNwbGl0Vmlldy5tICovLAorCQkJCUE4QzAwNkNEMDg5ODYzNDYwMEJBNTExNCAvKiBUZXN0Vmll
d2VyU3BsaXRWaWV3LmggKi8sCisJCQkpOworCQkJbmFtZSA9ICJUZXN0IEJyb3dzZXIiOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCThEMTEwNzI2MDQ4NkNF
QjgwMEU0NzA5MCAvKiBEcmF3VGVzdCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBBOEMwMDY3NDA4OTg2MjRFMDBCQTUxMTQgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkRyYXdUZXN0IiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCThEMTEwNzI5MDQ4NkNFQjgwMEU0NzA5MCAvKiBS
ZXNvdXJjZXMgKi8sCisJCQkJOEQxMTA3MkMwNDg2Q0VCODAwRTQ3MDkwIC8qIFNvdXJjZXMgKi8s
CisJCQkJOEQxMTA3MkUwNDg2Q0VCODAwRTQ3MDkwIC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOwor
CQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19H
RU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5POworCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJ
WF9IRUFERVIgPSBZRVM7CisJCQkJR0NDX1BSRUZJWF9IRUFERVIgPSBEcmF3VGVzdF9QcmVmaXgu
cGNoOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7
CisJCQkJSU5TVEFMTF9QQVRIID0gIiQoSE9NRSkvQXBwbGljYXRpb25zIjsKKwkJCQlQUk9EVUNU
X05BTUUgPSBEcmF3VGVzdDsKKwkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IGFwcDsKKwkJCX07CisJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IERyYXdUZXN0OworCQkJcHJvZHVj
dEluc3RhbGxQYXRoID0gIiQoSE9NRSkvQXBwbGljYXRpb25zIjsKKwkJCXByb2R1Y3ROYW1lID0g
RHJhd1Rlc3Q7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gOEQxMTA3MzIwNDg2Q0VCODAwRTQ3MDkw
IC8qIERyYXdUZXN0LmFwcCAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUuYXBwbGljYXRpb24iOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQkyOUI5NzMxM0ZEQ0ZBMzk0
MTFDQTJDRUEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEE4QzAwNjc4MDg5ODYyNEUwMEJBNTExNCAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIkRyYXdUZXN0IiAqLzsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJYnVpbGRTdHlsZXMgPSAoCisJCQkJNEE5NTA0
Q0NGRkU2QTRCMzExQ0EwQ0JBIC8qIERlYnVnICovLAorCQkJCTRBOTUwNENERkZFNkE0QjMxMUNB
MENCQSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAx
OworCQkJbWFpbkdyb3VwID0gMjlCOTczMTRGRENGQTM5NDExQ0EyQ0VBIC8qIERyYXdUZXN0ICov
OworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJOEQxMTA3MjYw
NDg2Q0VCODAwRTQ3MDkwIC8qIERyYXdUZXN0ICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQ
cm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCThEMTEwNzI5MDQ4NkNFQjgwMEU0NzA5MCAvKiBSZXNvdXJjZXMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCThEMTEwNzJBMDQ4NkNFQjgwMEU0NzA5MCAvKiBN
YWluTWVudS5uaWIgaW4gUmVzb3VyY2VzICovLAorCQkJCThEMTEwNzJCMDQ4NkNFQjgwMEU0NzA5
MCAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQThDMDA2RjMwODk4
NjVFOTAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQubmliIGluIFJlc291cmNlcyAqLywKKwkJ
CQlBOEMwMDZGNDA4OTg2NUU5MDBCQTUxMTQgLyogSW5zcGVjdG9yLm5pYiBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJQThDMDA2RjUwODk4NjVFOTAwQkE1MTE0IC8qIFRlc3RWaWV3ZXIubmliIGluIFJl
c291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk4RDExMDcyQzA0ODZD
RUI4MDBFNDcwOTAgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
CThEMTEwNzJEMDQ4NkNFQjgwMEU0NzA5MCAvKiBtYWluLm0gaW4gU291cmNlcyAqLywKKwkJCQlB
OEMwMDZDRjA4OTg2MzQ2MDBCQTUxMTQgLyogU1ZHVGVzdC5tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QThDMDA2RDAwODk4NjM0NjAwQkE1MTE0IC8qIE15SW1hZ2VWaWV3Lm0gaW4gU291cmNlcyAqLywK
KwkJCQlBOEMwMDZEMjA4OTg2MzQ2MDBCQTUxMTQgLyogRHJhd1Rlc3RWaWV3Lm0gaW4gU291cmNl
cyAqLywKKwkJCQlBOEMwMDZEMzA4OTg2MzQ2MDBCQTUxMTQgLyogRHJhd1Rlc3RUb29sYmFyQ29u
dHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCisJCQkJQThDMDA2RDQwODk4NjM0NjAwQkE1MTE0IC8q
IERyYXdUZXN0SW5zcGVjdG9yQ29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCisJCQkJQThDMDA2
RDUwODk4NjM0NjAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQubSBpbiBTb3VyY2VzICovLAor
CQkJCUE4QzAwNkUxMDg5ODYzNDYwMEJBNTExNCAvKiBBcHBEZWxlZ2F0ZS5tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQThDMDA2RTIwODk4NjM0NjAwQkE1MTE0IC8qIFRlc3RWaWV3ZXJTcGxpdFZpZXcu
bSBpbiBTb3VyY2VzICovLAorCQkJCUE4QzAwNkUzMDg5ODYzNDYwMEJBNTExNCAvKiBUZXN0Q29u
dHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAqLworCQkwODlDMTY1
Q0ZFODQwRTBDQzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhWYXJpYW50R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwODlDMTY1REZFODQwRTBDQzAy
QUFDMDcgLyogRW5nbGlzaCAqLywKKwkJCSk7CisJCQluYW1lID0gSW5mb1BsaXN0LnN0cmluZ3M7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkyOUI5NzMxOEZEQ0ZBMzk0MTFD
QTJDRUEgLyogTWFpbk1lbnUubmliICovID0geworCQkJaXNhID0gUEJYVmFyaWFudEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMjlCOTczMTlGRENGQTM5NDExQ0EyQ0VBIC8qIEVuZ2xpc2gg
Ki8sCisJCQkpOworCQkJbmFtZSA9IE1haW5NZW51Lm5pYjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCUE4QzAwNkVEMDg5ODY1RTkwMEJBNTExNCAvKiBEcmF3VGVzdERvY3Vt
ZW50Lm5pYiAqLyA9IHsKKwkJCWlzYSA9IFBCWFZhcmlhbnRHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUE4QzAwNkVFMDg5ODY1RTkwMEJBNTExNCAvKiBFbmdsaXNoICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBEcmF3VGVzdERvY3VtZW50Lm5pYjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUE4QzAwNkVGMDg5ODY1RTkwMEJBNTExNCAvKiBJbnNwZWN0b3IubmliICovID0g
eworCQkJaXNhID0gUEJYVmFyaWFudEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQThDMDA2
RjAwODk4NjVFOTAwQkE1MTE0IC8qIEVuZ2xpc2ggKi8sCisJCQkpOworCQkJbmFtZSA9IEluc3Bl
Y3Rvci5uaWI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlBOEMwMDZGMTA4
OTg2NUU5MDBCQTUxMTQgLyogVGVzdFZpZXdlci5uaWIgKi8gPSB7CisJCQlpc2EgPSBQQlhWYXJp
YW50R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBOEMwMDZGMjA4OTg2NUU5MDBCQTUxMTQg
LyogRW5nbGlzaCAqLywKKwkJCSk7CisJCQluYW1lID0gVGVzdFZpZXdlci5uaWI7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJQThDMDA2
NzUwODk4NjI0RTAwQkE1MTE0IC8qIERldmVsb3BtZW50ICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gIlwiJChTUkNST09UKS8uLi8u
Li8uLi9idWlsZC9EZXZlbG9wbWVudFwiIjsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsK
KwkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7CisJCQkJR0NDX0dFTkVSQVRF
X0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAw
OworCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CisJCQkJR0NDX1BSRUZJ
WF9IRUFERVIgPSBEcmF3VGVzdF9QcmVmaXgucGNoOworCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19B
U19FUlJPUlMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJ
CQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCUlORk9QTElTVF9GSUxFID0g
SW5mby5wbGlzdDsKKwkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9BcHBsaWNhdGlvbnMiOwor
CQkJCVBSRUJJTkRJTkcgPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSBEcmF3VGVzdDsKKwkJCQlX
UkFQUEVSX0VYVEVOU0lPTiA9IGFwcDsKKwkJCQlaRVJPX0xJTksgPSBZRVM7CisJCQl9OworCQkJ
bmFtZSA9IERldmVsb3BtZW50OworCQl9OworCQlBOEMwMDY3NjA4OTg2MjRFMDBCQTUxMTQgLyog
RGVwbG95bWVudCAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCUZSQU1FV09S
S19TRUFSQ0hfUEFUSFMgPSAiXCIkKFNSQ1JPT1QpLy4uLy4uLy4uL2J1aWxkL0RldmVsb3BtZW50
XCIiOworCQkJCUdDQ19FTkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POworCQkJCUdDQ19HRU5F
UkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5POworCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9I
RUFERVIgPSBZRVM7CisJCQkJR0NDX1BSRUZJWF9IRUFERVIgPSBEcmF3VGVzdF9QcmVmaXgucGNo
OworCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CisJCQkJR0NDX1dBUk5f
QUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0g
WUVTOworCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKKwkJCQlJTlNUQUxMX1BBVEgg
PSAiJChIT01FKS9BcHBsaWNhdGlvbnMiOworCQkJCVBSRUJJTkRJTkcgPSBOTzsKKwkJCQlQUk9E
VUNUX05BTUUgPSBEcmF3VGVzdDsKKwkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IGFwcDsKKwkJCQla
RVJPX0xJTksgPSBOTzsKKwkJCX07CisJCQluYW1lID0gRGVwbG95bWVudDsKKwkJfTsKKwkJQThD
MDA2NzcwODk4NjI0RTAwQkE1MTE0IC8qIERlZmF1bHQgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRlJBTUVXT1JLX1NFQVJD
SF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4vYnVpbGQvRGV2ZWxvcG1lbnRcIiI7CisJ
CQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87CisJCQkJR0NDX1BSRUNPTVBJ
TEVfUFJFRklYX0hFQURFUiA9IFlFUzsKKwkJCQlHQ0NfUFJFRklYX0hFQURFUiA9IERyYXdUZXN0
X1ByZWZpeC5wY2g7CisJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OworCQkJCUlO
U1RBTExfUEFUSCA9ICIkKEhPTUUpL0FwcGxpY2F0aW9ucyI7CisJCQkJUFJPRFVDVF9OQU1FID0g
RHJhd1Rlc3Q7CisJCQkJV1JBUFBFUl9FWFRFTlNJT04gPSBhcHA7CisJCQl9OworCQkJbmFtZSA9
IERlZmF1bHQ7CisJCX07CisJCUE4QzAwNjc5MDg5ODYyNEUwMEJBNTExNCAvKiBEZXZlbG9wbWVu
dCAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJfTsKKwkJCW5h
bWUgPSBEZXZlbG9wbWVudDsKKwkJfTsKKwkJQThDMDA2N0EwODk4NjI0RTAwQkE1MTE0IC8qIERl
cGxveW1lbnQgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCX07
CisJCQluYW1lID0gRGVwbG95bWVudDsKKwkJfTsKKwkJQThDMDA2N0IwODk4NjI0RTAwQkE1MTE0
IC8qIERlZmF1bHQgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJ
CX07CisJCQluYW1lID0gRGVmYXVsdDsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwor
CQlBOEMwMDY3NDA4OTg2MjRFMDBCQTUxMTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIkRyYXdUZXN0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUE4QzAwNjc1MDg5ODYy
NEUwMEJBNTExNCAvKiBEZXZlbG9wbWVudCAqLywKKwkJCQlBOEMwMDY3NjA4OTg2MjRFMDBCQTUx
MTQgLyogRGVwbG95bWVudCAqLywKKwkJCQlBOEMwMDY3NzA4OTg2MjRFMDBCQTUxMTQgLyogRGVm
YXVsdCAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWZhdWx0OworCQl9OworCQlBOEMwMDY3ODA4
OTg2MjRFMDBCQTUxMTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0
ICJEcmF3VGVzdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlBOEMwMDY3OTA4OTg2MjRFMDBCQTUxMTQgLyogRGV2
ZWxvcG1lbnQgKi8sCisJCQkJQThDMDA2N0EwODk4NjI0RTAwQkE1MTE0IC8qIERlcGxveW1lbnQg
Ki8sCisJCQkJQThDMDA2N0IwODk4NjI0RTAwQkE1MTE0IC8qIERlZmF1bHQgKi8sCisJCQkpOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gRGVmYXVsdDsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAyOUI5NzMxM0ZEQ0ZBMzk0MTFDQTJDRUEgLyog
UHJvamVjdCBvYmplY3QgKi87Cit9CkluZGV4OiAuL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0
cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogSW5mb1BsaXN0LnN0cmluZ3MKZGlmZiAtTiAuL0Vu
Z2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQg
SW5mb1BsaXN0LnN0cmluZ3MgZGlmZmVyCkluZGV4OiAuL0VuZ2xpc2gubHByb2ovRHJhd1Rlc3RE
b2N1bWVudC5uaWIvY2xhc3Nlcy5uaWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogY2xhc3Nlcy5uaWIK
ZGlmZiAtTiAuL0VuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1bWVudC5uaWIvY2xhc3Nlcy5uaWIK
LS0tIC4vRW5nbGlzaC5scHJvai9EcmF3VGVzdERvY3VtZW50Lm5pYi9jbGFzc2VzLm5pYgkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyAuL0VuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1bWVu
dC5uaWIvY2xhc3Nlcy5uaWIJMjggSnVsIDIwMDUgMDU6MTQ6NDYgLTAwMDAKQEAgLTAsMCArMSwz
NCBAQAoreworICAgIElCQ2xhc3NlcyA9ICgKKyAgICAgICAgeworICAgICAgICAgICAgQUNUSU9O
UyA9IHt0b2dnbGVTaG93RGVidWdBeGVzID0gaWQ7IHRvZ2dsZVNob3dEZWJ1Z1N0cmluZyA9IGlk
OyB9OyAKKyAgICAgICAgICAgIENMQVNTID0gRHJhd1Rlc3RWaWV3OyAKKyAgICAgICAgICAgIExB
TkdVQUdFID0gT2JqQzsgCisgICAgICAgICAgICBTVVBFUkNMQVNTID0gRHJhd1ZpZXc7IAorICAg
ICAgICB9LCAKKyAgICAgICAgeworICAgICAgICAgICAgQUNUSU9OUyA9IHsKKyAgICAgICAgICAg
ICAgICBkZWxldGVTZWxlY3Rpb24gPSBpZDsgCisgICAgICAgICAgICAgICAgbW92ZVNlbGVjdGlv
bkJhY2t3YXJkID0gaWQ7IAorICAgICAgICAgICAgICAgIG1vdmVTZWxlY3Rpb25Gb3J3YXJkID0g
aWQ7IAorICAgICAgICAgICAgICAgIHpvb21JbiA9IGlkOyAKKyAgICAgICAgICAgICAgICB6b29t
T3JpZ2luYWwgPSBpZDsgCisgICAgICAgICAgICAgICAgem9vbU91dCA9IGlkOyAKKyAgICAgICAg
ICAgICAgICB6b29tVG9GaXQgPSBpZDsgCisgICAgICAgICAgICB9OyAKKyAgICAgICAgICAgIENM
QVNTID0gRHJhd1ZpZXc7IAorICAgICAgICAgICAgTEFOR1VBR0UgPSBPYmpDOyAKKyAgICAgICAg
ICAgIFNVUEVSQ0xBU1MgPSBOU1ZpZXc7IAorICAgICAgICB9LCAKKyAgICAgICAge0NMQVNTID0g
Rmlyc3RSZXNwb25kZXI7IExBTkdVQUdFID0gT2JqQzsgU1VQRVJDTEFTUyA9IE5TT2JqZWN0OyB9
LCAKKyAgICAgICAgeworICAgICAgICAgICAgQUNUSU9OUyA9IHtkdW1wU1ZHVG9Db25zb2xlID0g
aWQ7IH07IAorICAgICAgICAgICAgQ0xBU1MgPSBNeURvY3VtZW50OyAKKyAgICAgICAgICAgIExB
TkdVQUdFID0gT2JqQzsgCisgICAgICAgICAgICBPVVRMRVRTID0ge2RyYXdWaWV3ID0gS0NhbnZh
c1Rlc3RWaWV3OyB9OyAKKyAgICAgICAgICAgIFNVUEVSQ0xBU1MgPSBOU0RvY3VtZW50OyAKKyAg
ICAgICAgfSwgCisgICAgICAgIHtDTEFTUyA9IE5TU2VnbWVudGVkQ29udHJvbDsgTEFOR1VBR0Ug
PSBPYmpDOyBTVVBFUkNMQVNTID0gTlNDb250cm9sOyB9CisgICAgKTsgCisgICAgSUJWZXJzaW9u
ID0gMTsgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogLi9FbmdsaXNoLmxw
cm9qL0RyYXdUZXN0RG9jdW1lbnQubmliL2luZm8ubmliCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGlu
Zm8ubmliCmRpZmYgLU4gLi9FbmdsaXNoLmxwcm9qL0RyYXdUZXN0RG9jdW1lbnQubmliL2luZm8u
bmliCi0tLSAuL0VuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1bWVudC5uaWIvaW5mby5uaWIJMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgLi9FbmdsaXNoLmxwcm9qL0RyYXdUZXN0RG9jdW1l
bnQubmliL2luZm8ubmliCTI4IEp1bCAyMDA1IDA1OjE0OjQ2IC0wMDAwCkBAIC0wLDAgKzEsMjIg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxp
c3QgUFVCTElDICItLy9BcHBsZSBDb21wdXRlci8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8v
d3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxwbGlzdCB2ZXJzaW9u
PSIxLjAiPgorPGRpY3Q+CisJPGtleT5JQkRvY3VtZW50TG9jYXRpb248L2tleT4KKwk8c3RyaW5n
Pjg2IDMwIDM1NiAyNDAgMCAwIDEwMjQgNzQ2IDwvc3RyaW5nPgorCTxrZXk+SUJFZGl0b3JQb3Np
dGlvbnM8L2tleT4KKwk8ZGljdD4KKwkJPGtleT41MDwva2V5PgorCQk8c3RyaW5nPjM3NyAzMjcg
MjcwIDM0MiAwIDAgMTAyNCA3NDYgPC9zdHJpbmc+CisJPC9kaWN0PgorCTxrZXk+SUJGcmFtZXdv
cmsgVmVyc2lvbjwva2V5PgorCTxzdHJpbmc+NDM3LjA8L3N0cmluZz4KKwk8a2V5PklCT3Blbk9i
amVjdHM8L2tleT4KKwk8YXJyYXk+CisJCTxpbnRlZ2VyPjUwPC9pbnRlZ2VyPgorCQk8aW50ZWdl
cj41PC9pbnRlZ2VyPgorCTwvYXJyYXk+CisJPGtleT5JQlN5c3RlbSBWZXJzaW9uPC9rZXk+CisJ
PHN0cmluZz44QzQyPC9zdHJpbmc+Cis8L2RpY3Q+Cis8L3BsaXN0PgpJbmRleDogLi9FbmdsaXNo
Lmxwcm9qL0RyYXdUZXN0RG9jdW1lbnQubmliL2tleWVkb2JqZWN0cy5uaWIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZToga2V5ZWRvYmplY3RzLm5pYgpkaWZmIC1OIC4vRW5nbGlzaC5scHJvai9EcmF3VGVz
dERvY3VtZW50Lm5pYi9rZXllZG9iamVjdHMubmliCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5k
IGtleWVkb2JqZWN0cy5uaWIgZGlmZmVyCkluZGV4OiAuL0VuZ2xpc2gubHByb2ovSW5zcGVjdG9y
Lm5pYi9jbGFzc2VzLm5pYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBjbGFzc2VzLm5pYgpkaWZmIC1O
IC4vRW5nbGlzaC5scHJvai9JbnNwZWN0b3IubmliL2NsYXNzZXMubmliCi0tLSAuL0VuZ2xpc2gu
bHByb2ovSW5zcGVjdG9yLm5pYi9jbGFzc2VzLm5pYgkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw
CisrKyAuL0VuZ2xpc2gubHByb2ovSW5zcGVjdG9yLm5pYi9jbGFzc2VzLm5pYgkyOCBKdWwgMjAw
NSAwNToxNDo0OCAtMDAwMApAQCAtMCwwICsxLDEyIEBACit7CisgICAgSUJDbGFzc2VzID0gKAor
ICAgICAgICB7CisgICAgICAgICAgICBDTEFTUyA9IERyYXdUZXN0SW5zcGVjdG9yQ29udHJvbGxl
cjsgCisgICAgICAgICAgICBMQU5HVUFHRSA9IE9iakM7IAorICAgICAgICAgICAgT1VUTEVUUyA9
IHsiX2luc3BlY3RvclBhbmVsIiA9IE5TUGFuZWw7IH07IAorICAgICAgICAgICAgU1VQRVJDTEFT
UyA9IE5TT2JqZWN0OyAKKyAgICAgICAgfSwgCisgICAgICAgIHtDTEFTUyA9IEZpcnN0UmVzcG9u
ZGVyOyBMQU5HVUFHRSA9IE9iakM7IFNVUEVSQ0xBU1MgPSBOU09iamVjdDsgfQorICAgICk7IAor
ICAgIElCVmVyc2lvbiA9IDE7IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IC4vRW5nbGlzaC5scHJvai9JbnNwZWN0b3IubmliL2luZm8ubmliCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IGluZm8ubmliCmRpZmYgLU4gLi9FbmdsaXNoLmxwcm9qL0luc3BlY3Rvci5uaWIvaW5mby5u
aWIKLS0tIC4vRW5nbGlzaC5scHJvai9JbnNwZWN0b3IubmliL2luZm8ubmliCTEgSmFuIDE5NzAg
MDA6MDA6MDAgLTAwMDAKKysrIC4vRW5nbGlzaC5scHJvai9JbnNwZWN0b3IubmliL2luZm8ubmli
CTI4IEp1bCAyMDA1IDA1OjE0OjQ4IC0wMDAwCkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9B
cHBsZSBDb21wdXRlci8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9E
VERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxwbGlzdCB2ZXJzaW9uPSIxLjAiPgorPGRpY3Q+
CisJPGtleT5JQkRvY3VtZW50TG9jYXRpb248L2tleT4KKwk8c3RyaW5nPjI2MSAxODQgMzU2IDI0
MCAwIDAgMTAyNCA3NDYgPC9zdHJpbmc+CisJPGtleT5JQkZyYW1ld29yayBWZXJzaW9uPC9rZXk+
CisJPHN0cmluZz40MzcuMDwvc3RyaW5nPgorCTxrZXk+SUJPcGVuT2JqZWN0czwva2V5PgorCTxh
cnJheT4KKwkJPGludGVnZXI+NzwvaW50ZWdlcj4KKwk8L2FycmF5PgorCTxrZXk+SUJTeXN0ZW0g
VmVyc2lvbjwva2V5PgorCTxzdHJpbmc+OEI5PC9zdHJpbmc+Cis8L2RpY3Q+Cis8L3BsaXN0PgpJ
bmRleDogLi9FbmdsaXNoLmxwcm9qL0luc3BlY3Rvci5uaWIva2V5ZWRvYmplY3RzLm5pYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiBrZXllZG9iamVjdHMubmliCmRpZmYgLU4gLi9FbmdsaXNoLmxwcm9q
L0luc3BlY3Rvci5uaWIva2V5ZWRvYmplY3RzLm5pYgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBrZXllZG9iamVjdHMubmliIGRpZmZlcgpJbmRleDogLi9FbmdsaXNoLmxwcm9qL01haW5NZW51
Lm5pYi9jbGFzc2VzLm5pYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBjbGFzc2VzLm5pYgpkaWZmIC1O
IC4vRW5nbGlzaC5scHJvai9NYWluTWVudS5uaWIvY2xhc3Nlcy5uaWIKLS0tIC4vRW5nbGlzaC5s
cHJvai9NYWluTWVudS5uaWIvY2xhc3Nlcy5uaWIJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
KysgLi9FbmdsaXNoLmxwcm9qL01haW5NZW51Lm5pYi9jbGFzc2VzLm5pYgkyOCBKdWwgMjAwNSAw
NToxNDo1MSAtMDAwMApAQCAtMCwwICsxLDQ0IEBACit7CisgICAgSUJDbGFzc2VzID0gKAorICAg
ICAgICB7CisgICAgICAgICAgICBBQ1RJT05TID0ge3Nob3dJbWFnZVJlcFRlc3RXaW5kb3cgPSBp
ZDsgc2hvd0luc3BlY3RvclBhbmVsID0gaWQ7IHNob3dUZXN0c1BhbmVsID0gaWQ7IH07IAorICAg
ICAgICAgICAgQ0xBU1MgPSBBcHBEZWxlZ2F0ZTsgCisgICAgICAgICAgICBMQU5HVUFHRSA9IE9i
akM7IAorICAgICAgICAgICAgT1VUTEVUUyA9IHtzdmdJbWFnZVJlcFRlc3RXaW5kb3cgPSBOU1dp
bmRvdzsgfTsgCisgICAgICAgICAgICBTVVBFUkNMQVNTID0gTlNPYmplY3Q7IAorICAgICAgICB9
LCAKKyAgICAgICAgeworICAgICAgICAgICAgQUNUSU9OUyA9IHsKKyAgICAgICAgICAgICAgICBk
dW1wU1ZHVG9Db25zb2xlID0gaWQ7IAorICAgICAgICAgICAgICAgIG9wZW5TZWxlY3Rpb25JblZp
ZXdlciA9IGlkOyAKKyAgICAgICAgICAgICAgICBvcGVuU291cmNlRm9yU2VsZWN0aW9uID0gaWQ7
IAorICAgICAgICAgICAgICAgIHJ1bldpbmRvd1Jlc2l6ZVRlc3QgPSBpZDsgCisgICAgICAgICAg
ICAgICAgc2hvd0NvbXBvc2l0ZVdpbmRvdyA9IGlkOyAKKyAgICAgICAgICAgICAgICBzaG93SW1h
Z2VSZXBUZXN0V2luZG93ID0gaWQ7IAorICAgICAgICAgICAgICAgIHNob3dJbnNwZWN0b3JQYW5l
bCA9IGlkOyAKKyAgICAgICAgICAgICAgICBzaG93VGVzdHNQYW5lbCA9IGlkOyAKKyAgICAgICAg
ICAgICAgICB0b2dnbGVEZWJ1Z0RyYXdlciA9IGlkOyAKKyAgICAgICAgICAgICAgICB0b2dnbGVG
aWx0ZXJTdXBwb3J0ID0gaWQ7IAorICAgICAgICAgICAgICAgIHRvZ2dsZVNob3dEZWJ1Z0F4ZXMg
PSBpZDsgCisgICAgICAgICAgICAgICAgdG9nZ2xlU2hvd0RlYnVnU3RyaW5nID0gaWQ7IAorICAg
ICAgICAgICAgICAgIHRvZ2dsZVZpZXdlcnNTY2FsZVJ1bGUgPSBpZDsgCisgICAgICAgICAgICAg
ICAgem9vbUluID0gaWQ7IAorICAgICAgICAgICAgICAgIHpvb21PcmlnaW5hbCA9IGlkOyAKKyAg
ICAgICAgICAgICAgICB6b29tT3V0ID0gaWQ7IAorICAgICAgICAgICAgICAgIHpvb21Ub0NvbnRl
bnQgPSBpZDsgCisgICAgICAgICAgICB9OyAKKyAgICAgICAgICAgIENMQVNTID0gRmlyc3RSZXNw
b25kZXI7IAorICAgICAgICAgICAgTEFOR1VBR0UgPSBPYmpDOyAKKyAgICAgICAgICAgIFNVUEVS
Q0xBU1MgPSBOU09iamVjdDsgCisgICAgICAgIH0sIAorICAgICAgICB7Q0xBU1MgPSBLQ2FudmFz
VGVzdFZpZXc7IExBTkdVQUdFID0gT2JqQzsgU1VQRVJDTEFTUyA9IE5TVmlldzsgfSwgCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFDVElPTlMgPSB7ZHVtcFNWR1RvQ29uc29sZSA9IGlkOyB9OyAK
KyAgICAgICAgICAgIENMQVNTID0gTXlEb2N1bWVudDsgCisgICAgICAgICAgICBMQU5HVUFHRSA9
IE9iakM7IAorICAgICAgICAgICAgT1VUTEVUUyA9IHtjYW52YXNWaWV3ID0gS0NhbnZhc1Rlc3RW
aWV3OyB9OyAKKyAgICAgICAgICAgIFNVUEVSQ0xBU1MgPSBOU0RvY3VtZW50OyAKKyAgICAgICAg
fQorICAgICk7IAorICAgIElCVmVyc2lvbiA9IDE7IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IC4vRW5nbGlzaC5scHJvai9NYWluTWVudS5uaWIvaW5mby5uaWIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogaW5mby5uaWIKZGlmZiAtTiAuL0VuZ2xpc2gubHByb2ovTWFpbk1lbnUu
bmliL2luZm8ubmliCi0tLSAuL0VuZ2xpc2gubHByb2ovTWFpbk1lbnUubmliL2luZm8ubmliCTEg
SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIC4vRW5nbGlzaC5scHJvai9NYWluTWVudS5uaWIv
aW5mby5uaWIJMjggSnVsIDIwMDUgMDU6MTQ6NTEgLTAwMDAKQEAgLTAsMCArMSwyMSBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBwbGlzdCBQVUJM
SUMgIi0vL0FwcGxlIENvbXB1dGVyLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBw
bGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNpb249IjEuMCI+
Cis8ZGljdD4KKwk8a2V5PklCRG9jdW1lbnRMb2NhdGlvbjwva2V5PgorCTxzdHJpbmc+Mjc0IDU4
IDM1NiAyNDAgMCAwIDEwMjQgNzQ2IDwvc3RyaW5nPgorCTxrZXk+SUJFZGl0b3JQb3NpdGlvbnM8
L2tleT4KKwk8ZGljdD4KKwkJPGtleT4yOTwva2V5PgorCQk8c3RyaW5nPjEyOCA2NzggMzU1IDQ0
IDAgMCAxMDI0IDc0NiA8L3N0cmluZz4KKwk8L2RpY3Q+CisJPGtleT5JQkZyYW1ld29yayBWZXJz
aW9uPC9rZXk+CisJPHN0cmluZz40MzkuMDwvc3RyaW5nPgorCTxrZXk+SUJPcGVuT2JqZWN0czwv
a2V5PgorCTxhcnJheT4KKwkJPGludGVnZXI+Mjk8L2ludGVnZXI+CisJPC9hcnJheT4KKwk8a2V5
PklCU3lzdGVtIFZlcnNpb248L2tleT4KKwk8c3RyaW5nPjhDMzI8L3N0cmluZz4KKzwvZGljdD4K
KzwvcGxpc3Q+CkluZGV4OiAuL0VuZ2xpc2gubHByb2ovTWFpbk1lbnUubmliL2tleWVkb2JqZWN0
cy5uaWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZToga2V5ZWRvYmplY3RzLm5pYgpkaWZmIC1OIC4vRW5n
bGlzaC5scHJvai9NYWluTWVudS5uaWIva2V5ZWRvYmplY3RzLm5pYgpCaW5hcnkgZmlsZXMgL2Rl
di9udWxsIGFuZCBrZXllZG9iamVjdHMubmliIGRpZmZlcgpJbmRleDogLi9FbmdsaXNoLmxwcm9q
L1Rlc3RWaWV3ZXIubmliL2NsYXNzZXMubmliCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGNsYXNzZXMu
bmliCmRpZmYgLU4gLi9FbmdsaXNoLmxwcm9qL1Rlc3RWaWV3ZXIubmliL2NsYXNzZXMubmliCi0t
LSAuL0VuZ2xpc2gubHByb2ovVGVzdFZpZXdlci5uaWIvY2xhc3Nlcy5uaWIJMSBKYW4gMTk3MCAw
MDowMDowMCAtMDAwMAorKysgLi9FbmdsaXNoLmxwcm9qL1Rlc3RWaWV3ZXIubmliL2NsYXNzZXMu
bmliCTI4IEp1bCAyMDA1IDA1OjE0OjU0IC0wMDAwCkBAIC0wLDAgKzEsMzYgQEAKK3sKKyAgICBJ
QkNsYXNzZXMgPSAoCisgICAgICAgIHtDTEFTUyA9IERyYXdWaWV3OyBMQU5HVUFHRSA9IE9iakM7
IFNVUEVSQ0xBU1MgPSBOU1ZpZXc7IH0sIAorICAgICAgICB7Q0xBU1MgPSBGaXJzdFJlc3BvbmRl
cjsgTEFOR1VBR0UgPSBPYmpDOyBTVVBFUkNMQVNTID0gTlNPYmplY3Q7IH0sIAorICAgICAgICB7
Q0xBU1MgPSBLQ2FudmFzVGVzdFZpZXc7IExBTkdVQUdFID0gT2JqQzsgU1VQRVJDTEFTUyA9IE5T
VmlldzsgfSwgCisgICAgICAgIHtDTEFTUyA9IE15SW1hZ2VWaWV3OyBMQU5HVUFHRSA9IE9iakM7
IFNVUEVSQ0xBU1MgPSBOU0ltYWdlVmlldzsgfSwgCisgICAgICAgIHsKKyAgICAgICAgICAgIEFD
VElPTlMgPSB7CisgICAgICAgICAgICAgICAgYnJvd3NlID0gaWQ7IAorICAgICAgICAgICAgICAg
IGp1bXBUb1BhcmVudERpcmVjdG9yeSA9IGlkOyAKKyAgICAgICAgICAgICAgICBvcGVuU2VsZWN0
aW9uSW5WaWV3ZXIgPSBpZDsgCisgICAgICAgICAgICAgICAgb3BlblNvdXJjZUZvclNlbGVjdGlv
biA9IGlkOyAKKyAgICAgICAgICAgICAgICBvcGVuVGVzdFZpZXdlckZvclNlbGVjdGlvbiA9IGlk
OyAKKyAgICAgICAgICAgICAgICBzaG93Q29tcG9zaXRlV2luZG93ID0gaWQ7IAorICAgICAgICAg
ICAgICAgIHNob3dUZXN0V2luZG93ID0gaWQ7IAorICAgICAgICAgICAgICAgIHNob3dUZXN0c1Bh
bmVsID0gaWQ7IAorICAgICAgICAgICAgICAgIHRvZ2dsZVZpZXdlcnNTY2FsZVJ1bGUgPSBpZDsg
CisgICAgICAgICAgICB9OyAKKyAgICAgICAgICAgIENMQVNTID0gVGVzdENvbnRyb2xsZXI7IAor
ICAgICAgICAgICAgTEFOR1VBR0UgPSBPYmpDOyAKKyAgICAgICAgICAgIE9VVExFVFMgPSB7Cisg
ICAgICAgICAgICAgICAgIl9jb21wb3NpdGVJbWFnZVZpZXciID0gTlNJbWFnZVZpZXc7IAorICAg
ICAgICAgICAgICAgICJfY29tcG9zaXRlV2luZG93IiA9IE5TV2luZG93OyAKKyAgICAgICAgICAg
ICAgICAiX3BhcmVudERpcmVjdG9yeVBvcHVwIiA9IE5TUG9wVXBCdXR0b247IAorICAgICAgICAg
ICAgICAgICJfc3BsaXRWaWV3IiA9IFRlc3RWaWV3ZXJTcGxpdFZpZXc7IAorICAgICAgICAgICAg
ICAgICJfdGVzdFBhbmVsIiA9IE5TUGFuZWw7IAorICAgICAgICAgICAgICAgICJfdGVzdFdpbmRv
dyIgPSBOU1dpbmRvdzsgCisgICAgICAgICAgICAgICAgIl90ZXN0c0FycmF5Q29udHJvbGxlciIg
PSBOU0FycmF5Q29udHJvbGxlcjsgCisgICAgICAgICAgICAgICAgIl90ZXN0c1RhYmxlVmlldyIg
PSBOU1RhYmxlVmlldzsgCisgICAgICAgICAgICB9OyAKKyAgICAgICAgICAgIFNVUEVSQ0xBU1Mg
PSBOU09iamVjdDsgCisgICAgICAgIH0sIAorICAgICAgICB7Q0xBU1MgPSBUZXN0Vmlld2VyU3Bs
aXRWaWV3OyBMQU5HVUFHRSA9IE9iakM7IFNVUEVSQ0xBU1MgPSBOU1ZpZXc7IH0KKyAgICApOyAK
KyAgICBJQlZlcnNpb24gPSAxOyAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiAuL0VuZ2xpc2gubHByb2ovVGVzdFZpZXdlci5uaWIvaW5mby5uaWIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogaW5mby5uaWIKZGlmZiAtTiAuL0VuZ2xpc2gubHByb2ovVGVzdFZpZXdlci5uaWIvaW5m
by5uaWIKLS0tIC4vRW5nbGlzaC5scHJvai9UZXN0Vmlld2VyLm5pYi9pbmZvLm5pYgkxIEphbiAx
OTcwIDAwOjAwOjAwIC0wMDAwCisrKyAuL0VuZ2xpc2gubHByb2ovVGVzdFZpZXdlci5uaWIvaW5m
by5uaWIJMjggSnVsIDIwMDUgMDU6MTQ6NTQgLTAwMDAKQEAgLTAsMCArMSwxNyBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMg
Ii0vL0FwcGxlIENvbXB1dGVyLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUu
Y29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNpb249IjEuMCI+Cis8
ZGljdD4KKwk8a2V5PklCRG9jdW1lbnRMb2NhdGlvbjwva2V5PgorCTxzdHJpbmc+MjYzIDExOSAz
NTYgMjQwIDAgMCAxMDI0IDc0NiA8L3N0cmluZz4KKwk8a2V5PklCRnJhbWV3b3JrIFZlcnNpb248
L2tleT4KKwk8c3RyaW5nPjQzNy4wPC9zdHJpbmc+CisJPGtleT5JQk9wZW5PYmplY3RzPC9rZXk+
CisJPGFycmF5PgorCQk8aW50ZWdlcj4yNDwvaW50ZWdlcj4KKwkJPGludGVnZXI+NjA8L2ludGVn
ZXI+CisJPC9hcnJheT4KKwk8a2V5PklCU3lzdGVtIFZlcnNpb248L2tleT4KKwk8c3RyaW5nPjhD
MjY8L3N0cmluZz4KKzwvZGljdD4KKzwvcGxpc3Q+CkluZGV4OiAuL0VuZ2xpc2gubHByb2ovVGVz
dFZpZXdlci5uaWIva2V5ZWRvYmplY3RzLm5pYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBrZXllZG9i
amVjdHMubmliCmRpZmYgLU4gLi9FbmdsaXNoLmxwcm9qL1Rlc3RWaWV3ZXIubmliL2tleWVkb2Jq
ZWN0cy5uaWIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQga2V5ZWRvYmplY3RzLm5pYiBkaWZm
ZXIK
</data>
<flag name="review"
          id="289"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>