<?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>115223</bug_id>
          
          <creation_ts>2013-04-25 22:32:11 -0700</creation_ts>
          <short_desc>[WebKit2] Loading a resource from a custom protocol in a synchronous XHR times out</short_desc>
          <delta_ts>2013-04-26 11:14:28 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>881692</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-25 22:32:11 -0700</bug_when>
    <thetext>[WebKit2] Loading a resource from a custom protocol in a synchronous XHR times out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881693</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-25 22:33:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/12890540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881703</commentid>
    <comment_count>2</comment_count>
      <attachid>199785</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-25 22:58:46 -0700</bug_when>
    <thetext>Created attachment 199785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881938</commentid>
    <comment_count>3</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-26 09:54:26 -0700</bug_when>
    <thetext>Committed r149194: &lt;http://trac.webkit.org/changeset/149194&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881940</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-26 10:09:21 -0700</bug_when>
    <thetext>This change means that messages are now handled on a secondary thread. What is the design for CustomProtocolManager thread safety?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881942</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-26 10:22:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This change means that messages are now handled on a secondary thread. What is the design for CustomProtocolManager thread safety?

The messages that are handled on this thread do two things:

1) Look up a WKCustomProtocol by ID. This was made thread-safe in &lt;http://trac.webkit.org/changeset/149121&gt;.
2) Call a method on NSURLProtocolClient. I believe this is thread-safe by code inspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881944</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-26 10:29:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This change means that messages are now handled on a secondary thread. What is the design for CustomProtocolManager thread safety?

Oh, we do need to protect m_registeredSchemes. We add/remove schemes to that set from the work queue but look them up from some thread managed by NSURLConnection. I&apos;ll fix that in a follow-up. Thanks for making me double-check!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881969</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-04-26 11:14:28 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;ll fix that in a follow-up.

Filed &lt;https://bugs.webkit.org/show_bug.cgi?id=115267&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199785</attachid>
            <date>2013-04-25 22:58:46 -0700</date>
            <delta_ts>2013-04-26 07:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115223-20130425225801.patch</filename>
            <type>text/plain</type>
            <size>36255</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZkNDU1NGY3NDM4YmQ4
MjJiZTk5YjhlZmQ0MjkzY2ZiYjNlOTUzZi4uOTVlYjI2MDliOTJjY2JhZjc4YmI4ZjE4NTdjNGUw
MGNmZGIyYjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTA0LTI1ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0Ml0gTG9hZGluZyBh
IHJlc291cmNlIGZyb20gYSBjdXN0b20gcHJvdG9jb2wgaW4gYSBzeW5jaHJvbm91cyBYSFIgdGlt
ZXMgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTUyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
aGVuIFdlYktpdCBwZXJmb3JtcyBhIHN5bmNocm9ub3VzIGxvYWQgb24gdGhlIE1hYywgaXQgc3Bp
bnMgYSBuZXN0ZWQKKyAgICAgICAgcnVuIGxvb3AgaW4gYSBtb2RlIHRoYXQgb25seSBhY2NlcHRz
IGlucHV0IGZyb20gdGhlIE5TVVJMQ29ubmVjdGlvbgorICAgICAgICBwZXJmb3JtaW5nIHRoZSBs
b2FkLiBXaGVuIHRoZSBsb2FkIGlzIGZvciBhIGN1c3RvbSBwcm90b2NvbCBpbiBXZWJLaXQyLAor
ICAgICAgICB3ZSBwcm94eSBpdCB0byB0aGUgVUkgcHJvY2VzcyB2aWEgQ29yZUlQQyBtZXNzYWdl
cywgYnV0IHRoZSByZXNwb25zZQorICAgICAgICBtZXNzYWdlcyBmcm9tIHRoZSBVSSBwcm9jZXNz
IGFyZSBuZXZlciBwcm9jZXNzZWQgYXMgbG9uZyBhcyB0aGUgcnVuCisgICAgICAgIGxvb3AgaXMg
aW4gYSBub24tY29tbW9uIG1vZGUgKGFuZCB3ZSB3b3VsZG4ndCB3YW50IHRvIHByb2Nlc3MgbWVz
c2FnZXMKKyAgICAgICAgdGhhdCBjb3VsZCByZS1lbnRlciBXZWJDb3JlIGluIHRoZSBtaWRkbGUg
b2YgbG9hZGluZywgYW55d2F5KS4gU2luY2UKKyAgICAgICAgdGhlc2UgbWVzc2FnZXMgbmV2ZXIg
bWFrZSBpdCBiYWNrIHRvIHRoZSBOU1VSTENvbm5lY3Rpb24gaGFuZGxpbmcgdGhlCisgICAgICAg
IHJlcXVlc3QsIHRoZSBjb25uZWN0aW9uIGV2ZW50dWFsbHkgdGltZXMgb3V0LgorCisgICAgICAg
IEZpeCB0aGlzIGJ5IHVzaW5nIGEgd29yayBxdWV1ZSB0byBoYW5kbGUgY3VzdG9tIHByb3RvY29s
IG1lc3NhZ2VzIGluCisgICAgICAgIHRoZSBuZXR3b3JraW5nIHByb2Nlc3MuIFRoZSB3b3JrIHF1
ZXVlIGNhbiBwcm9jZXNzIGluY29taW5nIGN1c3RvbQorICAgICAgICBwcm90b2NvbCBtZXNzYWdl
cyB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYmxvY2tlZC4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW9uKTogQ2FsbGVkCisgICAgICAgIGluaXRpYWxpemVDb25u
ZWN0aW9uKCkgb24gYWxsIHRoZSBOZXR3b3JrUHJvY2VzcydzIHN1cHBsZW1lbnRzLgorICAgICAg
ICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NTdXBwbGVtZW50Lmg6IEFkZGVkIGEgYmFzZSBjbGFzcyBm
b3IKKyAgICAgICAgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50IGFuZCBXZWJQcm9jZXNzU3VwcGxl
bWVudCB3aGljaCBkZWZpbmVzCisgICAgICAgIGluaXRpYWxpemVDb25uZWN0aW9uIGFuZCBwcm92
aWRlcyBhbiBlbXB0eSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpD
aGlsZFByb2Nlc3NTdXBwbGVtZW50Ojp+Q2hpbGRQcm9jZXNzU3VwcGxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1N1cHBsZW1lbnQ6OmluaXRpYWxpemVDb25uZWN0aW9uKToK
KyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTogSW5zdGFudGlhdGVkIGEKKyAgICAg
ICAgd29yayBxdWV1ZSBmb3IgbWVzc2FnZSBwcm9jZXNzaW5nLgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKTogQWRkZWQgdGhlIHdv
cmsKKyAgICAgICAgcXVldWUgYXMgYSBtZXNzYWdlIHJlY2VpdmVyIG9uIHRoZSBDb3JlSVBDIGNv
bm5lY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlh
bGl6ZSk6IElmIHdlJ3JlIGluIHRoZSB3ZWIKKyAgICAgICAgcHJvY2VzcyBhbmQgdGhlIG5ldHdv
cmsgcHJvY2VzcyBpcyBiZWluZyB1c2VkLCB1bnJlZ2lzdGVyIGFuZCBkZXN0cm95CisgICAgICAg
IHRoZSB3b3JrIHF1ZXVlIHdlIHByZXZpb3VzbHkgY3JlYXRlZC4gSXQnZCBiZSBiZXR0ZXIgdG8g
bm90IGNyZWF0ZSBpdAorICAgICAgICBpbiB0aGUgZmlyc3QgcGxhY2UsIGJ1dCB3ZSBoYXZlIHRv
IHJlZ2lzdGVyIG91ciB3b3JrIHF1ZXVlIHdpdGggdGhlCisgICAgICAgIENvcmVJUEMgY29ubmVj
dGlvbiBiZWZvcmUgaXQgaXMgZXN0YWJsaXNoZWQsIHdoaWNoIGlzIGJlZm9yZSB0aGUgVUkKKyAg
ICAgICAgcHJvY2VzcyBoYXMgdG9sZCB1cyB3aGV0aGVyIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMg
aW4gdXNlLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dC5oOiBJbmhlcml0ZWQgZnJvbQorICAgICAgICBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgQ2hpbGRQcm9j
ZXNzU3VwcGxlbWVudC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKTogQ2FsbGVk
CisgICAgICAgIGluaXRpYWxpemVDb25uZWN0aW9uKCkgb24gYWxsIHRoZSBXZWJQcm9jZXNzJ3Mg
c3VwcGxlbWVudHMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzU3VwcGxlbWVudC5o
OiBJbmhlcml0ZWQgZnJvbQorICAgICAgICBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LgorCiAyMDEz
LTA0LTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQ29uc29sZU1lc3NhZ2Ugc2hvdWxkIGluY2x1ZGUgbGluZSBhbmQgY29s
dW1uIG51bWJlciB3aGVyZSBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDk0ZDA5MGZjM2MxOTc1NmUwNDUyNTE2ZmQ3
ODhjOGIzYTUxZjBkMjYuLjRjNjQ5MmE0MWQ5ZjY2ODE3OGRjZDk1ZTI3ZDZhN2FlZTk2NWVkMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTE3NCw2ICsxNzQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICNpZiBVU0UoU0VDVVJJ
VFlfRlJBTUVXT1JLKQogICAgIFNlY0l0ZW1TaGltOjpzaGFyZWQoKS5pbml0aWFsaXplQ29ubmVj
dGlvbihjb25uZWN0aW9uKTsKICNlbmRpZgorCisgICAgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3VwcGxlbWVu
dHMuZW5kKCk7CisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVl
LT5pbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NTdXBwbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MzQw
NTA0YWI2NGNhYzc4ZTNiYzM4ZTc1MzZmOTYwMTdhNzlhMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NTdXBwbGVtZW50LmgKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hpbGRQcm9jZXNzU3VwcGxlbWVudF9oCisjZGVm
aW5lIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnRfaAorCituYW1lc3BhY2UgQ29yZUlQQyB7CitjbGFz
cyBDb25uZWN0aW9uOworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQ2hpbGRQcm9jZXNzU3VwcGxlbWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+Q2hpbGRQcm9jZXNzU3VwcGxlbWVudCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKikKKyAgICB7Cisg
ICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBDaGlsZFByb2Nl
c3NTdXBwbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaApp
bmRleCA3NDUyZGJkZTA5MmE5OGZkYjNlOTEzMzJlNDk4ZmI5NDI0MmQ4NWUyLi43NjUzM2UwY2Rm
YTYzMjI0OWUyMDA1MDAyMzUyYWMyMDQyZTIwYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3Rv
bVByb3RvY29sTWFuYWdlci5oCkBAIC0yOCw5ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCiAKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU2LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBDaGlsZFByb2Nlc3M7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CiAKLWNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBXZWJQ
cm9jZXNzU3VwcGxlbWVudCwgcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIg
OiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBs
ZW1lbnQsIHB1YmxpYyBDb3JlSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1c3RvbVByb3RvY29sTWFuYWdlcik7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJvY2Vzcyop
OwpAQCAtNzUsNiArNzYsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICAvLyBD
aGlsZFByb2Nlc3NTdXBwbGVtZW50CisgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihDb3Jl
SVBDOjpDb25uZWN0aW9uKikgT1ZFUlJJREU7CisKICAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVu
dAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JikgT1ZFUlJJREU7CiAKQEAgLTkzLDYgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwogICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFBy
b2Nlc3M7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V0tDdXN0
b21Qcm90b2NvbD4gPiBDdXN0b21Qcm90b2NvbE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KaW5kZXggODJhYmM2NjA4MjUxMGNmMzdi
YWM3M2Q2MjEzMWIzNGQ4YzI0NmRhYS4uMWQwYTc1NTg2Njk0Y2Y3OTEyMjAyZDI1NWUwMzg5MzE4
MjBhMTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJNYWMubW0KQEAgLTExNiwxOSArMTE2LDI2IEBAIGNvbnN0IGNoYXIqIEN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkN1
c3RvbVByb3RvY29sTWFuYWdlcihDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcykKICAgICA6IG1f
Y2hpbGRQcm9jZXNzKGNoaWxkUHJvY2VzcykKKyAgICAsIG1fbWVzc2FnZVF1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkN1c3RvbVByb3RvY29sTWFuYWdlciIpKQogewot
ICAgIG1fY2hpbGRQcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKLQogICAgIEFTU0VS
VCghc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsKICAgICBzaGFyZWRDdXN0b21Qcm90b2Nv
bE1hbmFnZXIgPSB0aGlzOwogfQogCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBj
b25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX21lc3NhZ2VRdWV1ZS5nZXQo
KSwgdGhpcyk7Cit9CisKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBBU1NFUlQocGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5pc0VtcHR5KCkgfHwgIXBhcmFtZXRlcnMudXNlc05l
dHdvcmtQcm9jZXNzKTsKLSAgICBpZiAocGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3MpCisg
ICAgaWYgKHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzKSB7CisgICAgICAgIG1fY2hpbGRQ
cm9jZXNzLT5jb25uZWN0aW9uKCktPnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAg
ICAgICBtX21lc3NhZ2VRdWV1ZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAj
ZW5kaWYKIAogICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9j
b2wgY2xhc3NdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgKaW5kZXggY2JiNzY2OTIyMDVjMGQ0NjMyNmNkMWQ1
NWVlNWYwOWY5ODM1OTNhMi4uZDZmYmU1YmZkOWQ0ZmQxNWI5MmQ2ZWVhYjExOTllNWZlZjc5N2U0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50LmgKQEAgLTI2LDE3ICsyNiwxNSBAQAogI2lmbmRlZiBOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnRfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRfaAog
CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oIgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQgeworY2xhc3MgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
IDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQgewogI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50KCkK
LSAgICB7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYwMjgwY2Fk
YTFjYzg3Zjk0NDAzODA1MmU0MzRmMTg1MmFjMDk5Yi4uNWQ0ZDI5MGQ2ZDY1OTA1YWRjMDlkOGIy
YTFkNjkwYzY5OWMwMDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk1LDYgKzI5NSw3IEBACiAJCTFDQkM5NDVFMTY1MTVF
RDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0
b20ucGRmICovOyB9OwogCQkxUVE0MTdDQjEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJD
b21wbGV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0M0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi87
IH07CiAJCTFaWjQxN0VGMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJCNDE3
QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi87IH07CisJ
CTI5MEY0MjcyMTcyQTBDNzQwMDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTBGNDI3MTE3MkEw
Qzc0MDA5MzlGRjAgLyogQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oICovOyB9OwogCQkyOTNFQkVB
QjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTNFQkVBOTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01U
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQky
OTNFQkVBQzE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkzRUJFQUExNjI3RDlDOTAwNUY4OUYxIC8q
IFdLRE9NVGV4dC5tbSAqLzsgfTsKIAkJMjk1MDE3MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTAxNzIzMTYyQTQ1MDQwMDRB
OUQ3MSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3
MTksNiArMTcyMCw3IEBACiAJCTFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQu
cGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1h
Z2UucGRmOyBuYW1lID0gRG9ja1JpZ2h0LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHQu
cGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1RUQyMDBENjhB
QUUgLyogRG9ja0JvdHRvbS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsgcGF0aCA9IFJl
c291cmNlcy9Eb2NrQm90dG9tLnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUND
NDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkwRjQyNzExNzJBMEM3NDAwOTM5RkYwIC8qIENoaWxk
UHJvY2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hp
bGRQcm9jZXNzU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTNF
QkVBOTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OTNFQkVBQTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01UZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTUwMTcyMzE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjA0LDYgKzMyMDYsNyBAQAog
CQkJCTFBMkQ5NTZEMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKIAkJCQlF
MTUxM0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovLAogCQkJ
CUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovLAorCQkJ
CTI5MEY0MjcxMTcyQTBDNzQwMDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LmggKi8s
CiAJCQkJMUE2RjlGOEUxMUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJ
NTEzNjE4M0IxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgKi8sCiAJCQkJ
NTEzNjE4M0MxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5oICovLApAQCAtNTYx
Nyw2ICs1NjIwLDcgQEAKIAkJCQk1MTY3RUVBMDE3MDM3N0JGMDA3NjgxQ0EgLyogRGlza0NhY2hl
TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDZDMUQxMUREMzk5RjAwNjQ1NUIwIC8q
IFdLQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEREIzMTcxMjRF
QkQxMzAwNDhEMTNDIC8qIFdLQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjkwRjQyNzIxNzJB
MEM3NDAwOTM5RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQkFBQzczMTQ0RTYxOUUwMDUzRjgyRiAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkFBQzc0MTQ0RTYxQTUwMDUzRjgyRiAvKiBXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4
OEEwNUMxNDc0M0M5MDAwNjMxOUU1IC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlclByaXZh
dGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggMjE4MTIyOTkxMmZjN2M4ZmMzMDkxMTY3NTY3MDFiMTIxZmIwNjFkMS4uNjEzZjYz
MDlhOTY4MDIyM2MzNzQxNDQ0NDA5MmNmMTA2YzdlNzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMjksNiArMjI5LDExIEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikK
ICNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQogICAgIFNlY0l0ZW1TaGltOjpzaGFyZWQoKS5p
bml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKICNlbmRpZgorICAgIAorICAgIFdlYlBy
b2Nlc3NTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3VwcGxlbWVudHMuYmVn
aW4oKTsKKyAgICBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9zdXBwbGVtZW50cy5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICBpdC0+dmFsdWUtPmluaXRpYWxpemVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogCiAgICAgbV93
ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3NTdXBwbGVt
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3NTdXBwbGVtZW50LmgK
aW5kZXggZTRkZDRkYjc5YWQyODIxYjU5NGY4MDhjM2QyZTM4YmE1OGJhMDZlMC4uYjY3YTczZTcz
NDg2OTRiZDMzZjUzYzdmNWE1NDFhNTFkYzkxZjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzU3VwcGxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaApAQCAtMjYsMTYgKzI2LDE0IEBACiAj
aWZuZGVmIFdlYlByb2Nlc3NTdXBwbGVtZW50X2gKICNkZWZpbmUgV2ViUHJvY2Vzc1N1cHBsZW1l
bnRfaAogCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oIgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNz
IFdlYlByb2Nlc3NTdXBwbGVtZW50IHsKK2NsYXNzIFdlYlByb2Nlc3NTdXBwbGVtZW50IDogcHVi
bGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfldlYlBy
b2Nlc3NTdXBwbGVtZW50KCkKLSAgICB7Ci0gICAgfQotCiAgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCiAgICAgewogICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMmNk
ZGM2YmM0MzViY2FkOThlZDQ5ZmJiNjJjZThkMDczZDA5MDJhLi4xNTJmZjNhODIzMzJjM2M1ODRk
MjhmMGJkNDBiY2FlYjg4NTRhZWNkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTMtMDQtMjUgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBMb2FkaW5nIGEgcmVzb3Vy
Y2UgZnJvbSBhIGN1c3RvbSBwcm90b2NvbCBpbiBhIHN5bmNocm9ub3VzIFhIUiB0aW1lcyBvdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTIyMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGFu
IEFQSSB0ZXN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBUZXN0ZWQgdGhhdCBhIHN5bmNocm9ub3VzIFhIUiBk
b2VzIG5vdCB0aW1lIG91dAorICAgICAgICB3aGVuIGl0IGxvYWRzIGEgcmVxdWVzdCB3aXRoIGEg
Y3VzdG9tIHByb3RvY29sLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9j
dXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOiBNb3ZlZCB0aGUK
KyAgICAgICAgTlNVUkxQcm90b2NvbCBzdWJjbGFzcyB0byBUZXN0UHJvdG9jb2wue2gsIG1tfSBh
bmQgZGlkIHNvbWUKKyAgICAgICAgbWlzY2VsbGFuZW91cyBjbGVhbnVwLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvbWFjL1Rlc3RQcm90b2NvbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3NTdXBwbGVtZW50LmguCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9tYWMvVGVzdFByb3RvY29sLm1tOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0uCisgICAgICAgICgrW1Rl
c3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6XSk6CisgICAgICAgICgrW1Rlc3RQcm90b2Nv
bCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpdKToKKyAgICAgICAgKCtbVGVzdFByb3RvY29s
IHJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVlc3Q6XSk6CisgICAgICAgICgrW1Rlc3RQ
cm90b2NvbCBzY2hlbWVdKToKKyAgICAgICAgKC1bVGVzdFByb3RvY29sIHN0YXJ0TG9hZGluZ10p
OgorICAgICAgICAoLVtUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToKKwogMjAxMy0wNC0yNSAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXguIEZv
cmdvdCB0byBtZXJnZSBhcmdzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjliNTQzYTQ0
YTQ5OTQzMmMzNTk5MThiODY5ZjhhMjdhYTc2YTVkLi4wYjgzZDQwNDFlODk2ODE0OWYzNTE5MDdj
MGU5Zjk5YjFhZTAwOTAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUsNiArMzUsOSBA
QAogCQkyNkRGNUE2MzE1QTJBMjdFMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2REY1QTYxMTVBMkEyMkIwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJl
c291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCTI2RjFCNDQ0MTVDQTQzNEYwMEQxRTRC
RiAvKiBBdG9taWNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAg
Ki87IH07CiAJCTI2RjFCNDQ1MTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjFCNDQzMTVDQTQz
NEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCAqLzsgfTsKKwkJMjkwRjQyNzUxNzJBMjIxQzAw
OTM5RkYwIC8qIGN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0Mjc0MTcyQTFGREUwMDkz
OUZGMCAvKiBjdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCAqLzsgfTsKKwkJMjkwRjQyNzgx
NzJBMjMyQzAwOTM5RkYwIC8qIEN1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwRjQyNzYxNzJBMjMyQzAw
OTM5RkYwIC8qIEN1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tICovOyB9OworCQkyOTBGNDI3
QjE3MkEyM0E1MDA5MzlGRjAgLyogVGVzdFByb3RvY29sLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwRjQyNzkxNzJBMjNBNTAwOTM5RkYwIC8qIFRl
c3RQcm90b2NvbC5tbSAqLzsgfTsKIAkJMjk0M0JFODYxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJD
b250ZW50VGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi87IH07
CiAJCTI5QUI4QUExMTY0QzczNTgwMEQ0OUJFQyAvKiBDdXN0b21Qcm90b2NvbHNUZXN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBQjhBOUYxNjRD
NzM1ODAwRDQ5QkVDIC8qIEN1c3RvbVByb3RvY29sc1Rlc3QubW0gKi87IH07CiAJCTI5QUI4QUE0
MTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBQjhBQTIxNjRD
N0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gKi87IH07
CkBAIC0yMzIsNiArMjM1LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNl
czsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJMjkwRjQyNzUx
NzJBMjIxQzAwOTM5RkYwIC8qIGN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUMyQ0Y5NzVCMTZDRUM3MUIwMDU0RTk5RCAvKiBKU0NvbnRleHRC
YWNrRm9yd2FyZENhY2hlMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMyQ0Y5NzVB
MTZDRUM3MTQwMDU0RTk5RCAvKiBKU0NvbnRleHRCYWNrRm9yd2FyZENhY2hlMi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFy
YWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zMDIsNiArMzA2LDEwIEBACiAJ
CTI2REY1QTYxMTVBMkEyMkIwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDYW5jZWxMb2FkRnJvbVJl
c291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RjFCNDQyMTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9taWNTdHJpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXRvbWljU3RyaW5nLmNwcDsgcGF0aCA9IFdURi9BdG9t
aWNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkYxQjQ0MzE1Q0E0
MzRGMDBEMUU0QkYgLyogU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHJpbmdJbXBsLmNwcDsgcGF0aCA9IFdURi9TdHJpbmdJbXBsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkwRjQyNzQxNzJBMUZERTAwOTM5RkYwIC8qIGN1
c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjkwRjQyNzYxNzJBMjMyQzAwOTM5RkYwIC8qIEN1c3RvbVByb3RvY29sc1N5bmNYSFJU
ZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ3VzdG9tUHJv
dG9jb2xzU3luY1hIUlRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MEY0
Mjc5MTcyQTIzQTUwMDkzOUZGMCAvKiBUZXN0UHJvdG9jb2wubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0UHJvdG9jb2wubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTI5MEY0MjdBMTcyQTIzQTUwMDkzOUZGMCAvKiBUZXN0UHJvdG9jb2wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFByb3RvY29sLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29u
dGVudFRlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBVc2Vy
Q29udGVudFRlc3QubW07IHBhdGggPSBXZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUI4QTlGMTY0QzczNTgwMEQ0OUJFQyAvKiBD
dXN0b21Qcm90b2NvbHNUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbTsgcGF0aCA9IFdlYktpdDJPYmpDL0N1c3RvbVBy
b3RvY29sc1Rlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUI4QUEyMTY0
QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5OCw2ICs2MDYs
NyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyOUFCOEE5RjE2
NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSAqLywKKwkJCQkyOTBGNDI3
NjE3MkEyMzJDMDA5MzlGRjAgLyogQ3VzdG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW0gKi8sCiAJ
CQkJMjk0M0JFODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVzdC5tbSAqLywKIAkJ
CQlCQzNDNEM3RDE0NTg3QUE2MDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRleHRHcm91cFRlc3Qu
bW0gKi8sCiAJCQkJQkMzQzRDNzAxNDU3NUI2QTAwMjVGQjYyIC8qIFdLQnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlVGVzdC5tbSAqLywKQEAgLTc0NSw2ICs3NTQsNyBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJQzA0NUY5NDYxMzg1QzJGODAwQzBGM0NEIC8qIDE4LWNoYXJhY3RlcnMuaHRtbCAq
LywKIAkJCQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0u
aHRtbCAqLywKKwkJCQkyOTBGNDI3NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9tLXByb3RvY29s
LXN5bmMteGhyLmh0bWwgKi8sCiAJCQkJQzVFMUFGRkQxNkIyMjE3OTAwNkNDMUYyIC8qIGV4ZWND
b3B5Lmh0bWwgKi8sCiAJCQkJQkMyRDAwNEExMkE5RkVCMzAwRTczMkEzIC8qIGZpbGUtd2l0aC1h
bmNob3IuaHRtbCAqLywKIAkJCQkxQTAyQzg0QjEyNUQ0QTVFMDBFM0Y0QkQgLyogZmluZC5odG1s
ICovLApAQCAtNzc5LDYgKzc4OSw4IEBACiAJCQkJQzA4MTIyNDQxM0ZDMTlFQzAwREMzOUFFIC8q
IFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdy5tICovLAogCQkJCTI5QUI4QUEzMTY0
QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmggKi8sCiAJ
CQkJMjlBQjhBQTIxNjRDN0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGUubW0gKi8sCisJCQkJMjkwRjQyN0ExNzJBMjNBNTAwOTM5RkYwIC8qIFRlc3RQcm90b2Nv
bC5oICovLAorCQkJCTI5MEY0Mjc5MTcyQTIzQTUwMDkzOUZGMCAvKiBUZXN0UHJvdG9jb2wubW0g
Ki8sCiAJCQkJQzA4NTg3QkUxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5o
ICovLAogCQkJCUMwODU4N0JEMTNGRTk1NkMwMDFFRjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3Qu
bW0gKi8sCiAJCQkpOwpAQCAtMTAyMiw2ICsxMDM0LDcgQEAKIAkJCQkxQURCRUZBRTEzMEM2ODlD
MDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkQzNzEw
MTI1QUEyRUIwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlSFRNTC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0JEMzc2MTEyNUFCQ0ZFMDBEMkMyOUYgLyogRnJhbWVNSU1FVHlwZVBORy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkyOTBGNDI3QjE3MkEyM0E1MDA5MzlGRjAgLyogVGVzdFByb3RvY29s
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBOUU1NTkxNDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0
aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBDNUQzQkUxNDU5OEI2RjAwQTgwMkE2IC8q
IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2NjBBQTBEMTVB
NUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExMDQsNiArMTExNyw3IEBACiAJCQkJRkUy
MTdFQ0QxNjQwQTU0QTAwNTI5ODhCIC8qIFZNSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUyMEJDRjREMTQxRUIwOUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMTdCQkQ2MTVBRjZDNEQwMDdBQjc1MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dp
dGhOb1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkwRjQyNzgxNzJBMjMyQzAw
OTM5RkYwIC8qIEN1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzA4NTg3QkYxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxRkJCQjREMTUxM0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFz
dGVVUkwubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0UzOEMzNDE2OUI3RDAxMDA4NEMyOEMgLyog
V2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhS
VGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvQ3VzdG9tUHJvdG9jb2xzU3luY1hI
UlRlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBiZTlkOTMyZDkyYWFhZGM0NDI2MTA3Y2JlNzM5MDNmZmQz
N2FkZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvQ3VzdG9t
UHJvdG9jb2xzU3luY1hIUlRlc3QubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSmF2YVNjcmlwdFRlc3QuaCIKKyNpbXBvcnQgIlRl
c3QuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2lt
cG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1JldGFp
blB0ci5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1N0cmluZy5oPgorI2ltcG9ydCA8V2ViS2l0Mi9X
S1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBib29s
IHRlc3RGaW5pc2hlZCA9IGZhbHNlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RF
U1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIFN5bmNYSFIpCit7CisgICAgW05TVVJMUHJv
dG9jb2wgcmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CisgICAgW1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0
UHJvdG9jb2wgc2NoZW1lXV07CisKKyAgICBSZXRhaW5QdHI8V0tQcm9jZXNzR3JvdXA+IHByb2Nl
c3NHcm91cChBZG9wdE5TLCBbW1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XSk7CisgICAgUmV0
YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0R3JvdXA+IGJyb3dzaW5nQ29udGV4dEdyb3VwKEFkb3B0
TlMsIFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAi
VGVzdElkZW50aWZpZXIiXSk7CisKKyAgICAvLyBBbGxvdyBmaWxlIFVSTHMgdG8gbG9hZCBub24t
ZmlsZSByZXNvdXJjZXMKKyAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJl
bmNlcyhBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ3JlYXRlKCkpOworICAgIFdLUHJlZmVyZW5jZXNT
ZXRVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2VzLmdldCgpLCB0
cnVlKTsKKyAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKGJyb3dzaW5nQ29udGV4dEdyb3Vw
LmdldCgpLl9wYWdlR3JvdXBSZWYsIHByZWZlcmVuY2VzLmdldCgpKTsKKworICAgIFJldGFpblB0
cjxXS1ZpZXc+IHdrVmlldyhBZG9wdE5TLCBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgp
IGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAg
IFJldGFpblB0cjxUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPiBkZWxlZ2F0ZShBZG9w
dE5TLCBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Cisg
ICAgICAgICBFWFBFQ1RfSlNfRVEod2tWaWV3LmdldCgpLnBhZ2VSZWYsICJ3aW5kb3cuX3Rlc3RS
ZXN1bHQiLCAiUEFTUyIpOworICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XSk7
CisgICAgd2tWaWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdrVmlldy5nZXQoKS5wYWdl
UmVmLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiY3VzdG9tLXByb3RvY29sLXN5bmMteGhy
IiwgImh0bWwiKSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hl
ZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jdXN0b20tcHJvdG9jb2wtc3lu
Yy14aHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTk4ZjMzZTk1NmM1ODQ0NjBjNjRjYzNlYzY1YjcyYThm
Y2YyNzBjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL2N1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sCkBAIC0wLDAgKzEsNiBAQAorPHNjcmlw
dD4KKyAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcXVlc3Qu
b3BlbignR0VUJywgJ3Rlc3Q6Ly90ZXN0JywgZmFsc2UpOworICAgIHJlcXVlc3Quc2VuZChudWxs
KTsKKyAgICB3aW5kb3cuX3Rlc3RSZXN1bHQgPSByZXF1ZXN0LnJlc3BvbnNlVGV4dDsKKzwvc2Ny
aXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbQpp
bmRleCAwNDU0ZjNmMzgxMGM3ZjI5NDQyODQ5OTMwMzNkYzhlNjFhOTE3ZTg3Li43ZWIyZDM2NGU0
M2Q1OTU1ZDliYTVkNWUwMmZlYTcwOGM0ZWY2NDkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1t
CkBAIC0yOCw1NyArMjgsMTcgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIKLSNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0IDxX
ZWJLaXQyL1dlYktpdDIuaD4KIAotc3RhdGljIE5TU3RyaW5nICp0ZXN0U2NoZW1lID0gQCJ0ZXN0
IjsKLXN0YXRpYyBOU1N0cmluZyAqdGVzdEhvc3QgPSBAInRlc3QiOwogc3RhdGljIGJvb2wgdGVz
dEZpbmlzaGVkID0gZmFsc2U7CiAKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29sIDogTlNVUkxQcm90
b2NvbCB7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2wKLQotKyAoQk9P
TCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKLXsKLSAgICByZXR1
cm4gW1tbcmVxdWVzdCBVUkxdIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTp0ZXN0U2No
ZW1lXSA9PSBOU09yZGVyZWRTYW1lOwotfQotCi0rIChOU1VSTFJlcXVlc3QgKiljYW5vbmljYWxS
ZXF1ZXN0Rm9yUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAotewotICAgIHJldHVybiBy
ZXF1ZXN0OwotfQotCi0rIChCT09MKXJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDooTlNVUkxSZXF1
ZXN0ICopYSB0b1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKWIKLXsKLSAgICByZXR1cm4gTk87Ci19
Ci0KLS0gKHZvaWQpc3RhcnRMb2FkaW5nCi17Ci0gICAgRVhQRUNUX1RSVUUoW1tbW3NlbGYgcmVx
dWVzdF0gVVJMXSBzY2hlbWVdIGlzRXF1YWxUb1N0cmluZzp0ZXN0U2NoZW1lXSk7Ci0gICAgRVhQ
RUNUX1RSVUUoW1tbW3NlbGYgcmVxdWVzdF0gVVJMXSBob3N0XSBpc0VxdWFsVG9TdHJpbmc6dGVz
dEhvc3RdKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBbQCI8Ym9keT5QQVNTPC9ib2R5PiIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKLSAgICBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSA9IFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W1tzZWxm
IHJlcXVlc3RdIFVSTF0gTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpbZGF0YSBsZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6bmlsXTsKLSAgICBbW3NlbGYgY2xpZW50
XSBVUkxQcm90b2NvbDpzZWxmIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZSBjYWNoZVN0b3Jh
Z2VQb2xpY3k6TlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkXTsKLSAgICBbW3NlbGYgY2xpZW50
XSBVUkxQcm90b2NvbDpzZWxmIGRpZExvYWREYXRhOmRhdGFdOwotICAgIFtbc2VsZiBjbGllbnRd
IFVSTFByb3RvY29sRGlkRmluaXNoTG9hZGluZzpzZWxmXTsKLSAgICBbcmVzcG9uc2UgcmVsZWFz
ZV07Ci19Ci0KLS0gKHZvaWQpc3RvcExvYWRpbmcKLXsKLX0KLQotQGVuZAorbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCi1URVNUKFdlYktpdDJDdXN0b21Qcm90b2NvbHNUZXN0LCBDdXN0b21Q
cm90b2NvbFVzZWQpCitURVNUKFdlYktpdDJDdXN0b21Qcm90b2NvbHNUZXN0LCBNYWluUmVzb3Vy
Y2UpCiB7CiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNs
YXNzXV07Ci0gICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sOnRlc3RTY2hlbWVdOworICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVt
ZV1dOwogCiAgICAgV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCA9IFtbV0tQcm9jZXNzR3Jv
dXAgYWxsb2NdIGluaXRdOwogICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKmJyb3dzaW5nQ29u
dGV4dEdyb3VwID0gW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50
aWZpZXI6QCJUZXN0SWRlbnRpZmllciJdOwpAQCAtODYsNyArNDYsOSBAQCBURVNUKFdlYktpdDJD
dXN0b21Qcm90b2NvbHNUZXN0LCBDdXN0b21Qcm90b2NvbFVzZWQpCiAgICAgd2tWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVl
OwogICAgIH1dOwotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6Ly8lQCIsIHRlc3RTY2hlbWUsIHRlc3RIb3N0
XV1dXTsKKyAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOi8vdGVzdCIsIFtUZXN0UHJvdG9jb2wgc2NoZW1lXV1d
XV07CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CiAKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9tYWMvVGVzdFByb3RvY29sLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0UHJvdG9jb2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjY3MzRiODg4NzZiNGU3Y2U3NjkyZTg0NzE4ZTVk
ZGYwMzRjMWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVz
dFByb3RvY29sLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVzdFBy
b3RvY29sX2gKKyNkZWZpbmUgVGVzdFByb3RvY29sX2gKKworQGludGVyZmFjZSBUZXN0UHJvdG9j
b2wgOiBOU1VSTFByb3RvY29sIHsKK30KKysgKE5TU3RyaW5nICopc2NoZW1lOworQGVuZAorCisj
ZW5kaWYgLy8gVGVzdFByb3RvY29sX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL1Rlc3RQcm90b2NvbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RQcm90b2Nv
bC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNjdlYTA0ODk4Zjg2Y2Y4MjE5YjhiZTM1MTQ5YWZjZmFhOWQxODk4
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdFByb3RvY29s
Lm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlRlc3RQcm90b2NvbC5oIgorCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTY2hlbWUgPSBA
InRlc3QiOworCitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sCisKKysgKEJPT0wpY2FuSW5p
dFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Cit7CisgICAgcmV0dXJuIFtbW3Jl
cXVlc3QgVVJMXSBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6dGVzdFNjaGVtZV0gPT0g
TlNPcmRlcmVkU2FtZTsKK30KKworKyAoTlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZv
clJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gcmVxdWVzdDsK
K30KKworKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEg
dG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliCit7CisgICAgcmV0dXJuIE5POworfQorCisrIChO
U1N0cmluZyAqKXNjaGVtZQoreworICAgIHJldHVybiB0ZXN0U2NoZW1lOworfQorCistICh2b2lk
KXN0YXJ0TG9hZGluZworeworICAgIEVYUEVDVF9UUlVFKFtbW1tzZWxmIHJlcXVlc3RdIFVSTF0g
c2NoZW1lXSBpc0VxdWFsVG9TdHJpbmc6dGVzdFNjaGVtZV0pOworICAgIAorICAgIE5TRGF0YSAq
ZGF0YSA9IFtAIlBBU1MiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ107
CisgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOltbc2VsZiByZXF1ZXN0XSBVUkxdIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6W2RhdGEgbGVuZ3RoXSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF07Cisg
ICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2w6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UgY2FjaGVTdG9yYWdlUG9saWN5Ok5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07Cisg
ICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2w6c2VsZiBkaWRMb2FkRGF0YTpkYXRhXTsKKyAg
ICBbW3NlbGYgY2xpZW50XSBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6c2VsZl07CisgICAg
W3Jlc3BvbnNlIHJlbGVhc2VdOworfQorCistICh2b2lkKXN0b3BMb2FkaW5nCit7Cit9CisKK0Bl
bmQK
</data>
<flag name="review"
          id="221257"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>