<?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>103226</bug_id>
          
          <creation_ts>2012-11-26 01:27:25 -0800</creation_ts>
          <short_desc>[JSC] Add support for overloaded constructors</short_desc>
          <delta_ts>2012-12-19 02:52:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105271</dependson>
          <blocked>73064</blocked>
    
    <blocked>98416</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>775245</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-26 01:27:25 -0800</bug_when>
    <thetext>Bring the same functionality to JSC as V8.; see https://bugs.webkit.org/show_bug.cgi?id=100801</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792665</commentid>
    <comment_count>1</comment_count>
      <attachid>179727</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-17 06:07:01 -0800</bug_when>
    <thetext>Created attachment 179727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792708</commentid>
    <comment_count>2</comment_count>
      <attachid>179738</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-17 07:27:42 -0800</bug_when>
    <thetext>Created attachment 179738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793224</commentid>
    <comment_count>3</comment_count>
      <attachid>179738</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-17 18:15:35 -0800</bug_when>
    <thetext>Comment on attachment 179738
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=179738&amp;action=review

The overall approach looks good. But it looks like this patch is doing a lot of things at a breath. We might want to land the patch incrementally.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Adding patch adds the same support for overloaded constructors to JSC as V8.

Typo: Adding patch =&gt; This patch

&gt; Source/WebCore/ChangeLog:9
&gt; +        As proof of implementation soundness WebSockets costom constrictor is removed.

Typo: constrictor =&gt; constructor

&gt; Source/WebCore/ChangeLog:12
&gt; +        The changes to bindings/scripts/CodeGeneratorJS.pm is quite extensive since
&gt; +        I split up the enormous &quot;doEverything()&quot; function into a few smaller; this also meant
&gt; +        that some generated code has been shuffled around.

Would you land these refactoring patches first? It&apos;s a bit difficult to verify that this patch is correct.

&gt; LayoutTests/http/tests/websocket/tests/hybi/url-parsing-expected.txt:1
&gt; -CONSOLE MESSAGE: Invalid url for WebSocket null
&gt; +CONSOLE MESSAGE: Wrong url scheme for WebSocket http://127.0.0.1:8000/websocket/tests/hybi/null

Are we changing the current behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793638</commentid>
    <comment_count>4</comment_count>
      <attachid>179940</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-18 07:53:33 -0800</bug_when>
    <thetext>Created attachment 179940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793644</commentid>
    <comment_count>5</comment_count>
      <attachid>179738</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-18 07:57:55 -0800</bug_when>
    <thetext>Comment on attachment 179738
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=179738&amp;action=review

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Adding patch adds the same support for overloaded constructors to JSC as V8.
&gt; 
&gt; Typo: Adding patch =&gt; This patch

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        As proof of implementation soundness WebSockets costom constrictor is removed.
&gt; 
&gt; Typo: constrictor =&gt; constructor

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        that some generated code has been shuffled around.
&gt; 
&gt; Would you land these refactoring patches first? It&apos;s a bit difficult to verify that this patch is correct.

Fixed.

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/url-parsing-expected.txt:1
&gt;&gt; +CONSOLE MESSAGE: Wrong url scheme for WebSocket http://127.0.0.1:8000/websocket/tests/hybi/null
&gt; 
&gt; Are we changing the current behavior?

No, just unifying the output between JSC and V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793647</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-18 07:58:52 -0800</bug_when>
    <thetext>There&apos;s a bit more cleanup that could be done but I&apos;ll leave that to a follow-up patch to keep this one reasonable in size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794183</commentid>
    <comment_count>7</comment_count>
      <attachid>179940</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-18 16:51:52 -0800</bug_when>
    <thetext>Comment on attachment 179940
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=179940&amp;action=review

This is a great improvement.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3774
&gt; +            next if exists $fetchedArguments{$parameterIndex};

Why can the same parameterIndex appear twice in @neededArguments ?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3980
&gt; +            $numberOfConstructorParameters = 1024;

Nit: Let&apos;s use 255 as we&apos;re using 255 in other places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794451</commentid>
    <comment_count>8</comment_count>
      <attachid>179940</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-19 01:48:34 -0800</bug_when>
    <thetext>Comment on attachment 179940
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=179940&amp;action=review

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3774
&gt;&gt; +            next if exists $fetchedArguments{$parameterIndex};
&gt; 
&gt; Why can the same parameterIndex appear twice in @neededArguments ?

Honestly I have no idea... This is copied from the function overload generation and I kept it as is.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3980
&gt;&gt; +            $numberOfConstructorParameters = 1024;
&gt; 
&gt; Nit: Let&apos;s use 255 as we&apos;re using 255 in other places.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794453</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-19 01:49:48 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Why can the same parameterIndex appear twice in @neededArguments ?
&gt; 
&gt; Honestly I have no idea... This is copied from the function overload generation and I kept it as is.

OK, then let&apos; fix it in a follow-up patch if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794456</commentid>
    <comment_count>10</comment_count>
      <attachid>180120</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-19 01:56:46 -0800</bug_when>
    <thetext>Created attachment 180120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794481</commentid>
    <comment_count>11</comment_count>
      <attachid>180120</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 02:52:52 -0800</bug_when>
    <thetext>Comment on attachment 180120
Patch

Clearing flags on attachment: 180120

Committed r138138: &lt;http://trac.webkit.org/changeset/138138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794482</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 02:52:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179727</attachid>
            <date>2012-12-17 06:07:01 -0800</date>
            <delta_ts>2012-12-17 07:27:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103226-20121217150418.patch</filename>
            <type>text/plain</type>
            <size>66497</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1ZWQxYmI2Zjc3YjJl
YWI3MmIxOWE5NzY0NTJlMjZiMWE4NWE5ZS4uZjI3ZDA0ZTBlMGEzNzA5YTgxNjhlZmI2Y2M5NTUw
NzEyYzRlMjI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTEyLTE3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0pTQ10gQWRk
IHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcGF0Y2ggYWRkcyB0aGUgc2FtZSBz
dXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycyB0byBKU0MgYXMgVjguCisgICAgICAg
IEFzIHByb29mIG9mIGltcGxlbWVudGF0aW9uIHNvdW5kbmVzcyBXZWJTb2NrZXRzIGNvc3RvbSBj
b25zdHJpY3RvciBpcyByZW1vdmVkLgorICAgICAgICBUaGUgY2hhbmdlcyB0byBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBpcyBxdWl0ZSBleHRlbnNpdmUgc2luY2UKKyAgICAg
ICAgSSBzcGxpdCB1cCB0aGUgZW5vcm1vdXMgImRvRXZlcnl0aGluZygpIiBmdW5jdGlvbiBpbnRv
IGEgZmV3IHNtYWxsZXI7IHRoaXMgYWxzbyBtZWFudAorICAgICAgICB0aGF0IHNvbWUgZ2VuZXJh
dGVkIGNvZGUgaGFzIGJlZW4gc2h1ZmZsZWQgYXJvdW5kLgorCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGNvdmVyIHBhdGNoLiBBcyB0aGV5IHNob3VsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGw6Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b25zKToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbik6
CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9yU3VwcG9ydERlZmluaXRpb25zKToKKyAgICAgICAgKElzQ3VzdG9tQ29u
c3RydWN0YWJsZSk6CisgICAgICAgIChJc0NvbnN0cnVjdGFibGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNGbG9hdDY0QXJyYXk6OmluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEludGVyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RPYmopOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTEyLTE3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2Nzk0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMTIyYjU0ZjQ3YTFjNjBlZGU4NGRhMjk0ZjIyZTVkOGIwZDVkY2M3Ni4uOWVjZjQy
NmVkMjk3YjM5ZGU0ODQ3MmQ4MWYzNmEzZTVmNjgwOTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yNDA2LDcgKzI0MDYsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1
c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmlu
ZGV4IDBmMDFmNDM5NmIxZTlhZDMyZjJkMDZjYzk4MWEwYTY3ODZkMDVmZWIuLjQxZmUyMmIyZjQ4
MzAxNDhjMjMyMTM5NzVhOTcxYmU0ZDVkYzUzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zOSw3ICszOSw2IEBACiAgICAgQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFdmVudFRhcmdldCwKICAgICBKU05v
U3RhdGljVGFibGVzLAotICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzPTEKIF0gaW50ZXJmYWNlIFdlYlNvY2tldCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBVUkw7IC8vIExvd2VyY2FzZWQgLnVybCBpcyB0aGUgb25lIGluIHRoZSBz
cGVjLCBidXQgbGVhdmluZyAuVVJMIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCBkYmU4NDk3NDM4ODE2ZTlhOGRjODM0NDI3NzAxMGM1YWYyMzU0ZTVhLi5hMWM5YWM5
N2JmMDgzMTkwNzZmZTA4NDYxODE0ZDg5MGM2ZGEyMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5MTcs
OSArMzkxNyw2IEBAIGVuYWJsZT8oV0VCX1NPQ0tFVFMpIHsKICAgICAgICAgcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwCiAKLSAgICBTT1VSQ0VTICs9IFwKLSAgICAg
ICAgYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCi0KICAgICBlbmFibGU/KFdPUktF
UlMpIHsKICAgICAgICAgSEVBREVSUyArPSBcCiAgICAgICAgICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4
IDg5ZmY4Y2IyZDk3MWJmNWYyNWYyYjMzYWRkZWE0NTQ2NzFkYmQ5MjUuLmExYzZhNmQ2NTY3NDgx
M2IzZDU2OTlmNzAxM2EwYjZhZjIyZTQzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTIwNiwxMiAr
MjA2LDYgQEAgaWYgKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKQogICAgICkKIGVuZGlmICgpCiAK
LWlmIChFTkFCTEVfV0VCX1NPQ0tFVFMpCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
Ci0gICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAotICAgICkKLWVuZGlm
ICgpCi0KIGlmIChFTkFCTEVfV09SS0VSUykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICAgICAgYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBj
YTIwNDkzYjFjNmUyNDIxZWNmN2M5MTc3Y2ZmZTc2Zjc4ODIzNzU5Li43NmE0ZDcwMjQ1MTliZGZj
Nzg1YzhkYTY2MGFlZjM4ZmY1Yzg0ZDNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzEzNDgsNTkgKzcxMzQ4LDcgQEAKIAkJCQkJCS8+CiAJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJTb2NrZXRDdXN0b20uY3BwIgotCQkJCQk+
Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
LQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4K
LQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0J
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0
QmFzZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODE1ZWVmMGI4
ZTEwMDNjMThkZjZmMWIxMDJjMWEyYTY3MDliMGRkZi4uNmI2Y2MzYzljNjFhOWRmZWU0NjhkZmY4
MWIzMzkwZjQ2ZTE1OWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYxMiw3ICsxNjEyLDYgQEAKIAkJNTE4OUYwMUQxMEIz
N0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQ
b3BTdGF0ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNTE4OUYwMUUxMEIzN0JEOTAwRjNDNzM5IC8qIEpT
UG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4OUYwMUMxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oICovOyB9
OwogCQk1MTg5RjBERTEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjBERDEwQjQ2QjBF
MDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi87IH07Ci0JCTUxOEEzNEM5MTAyNkM4Qzkw
MDFCNjg5NiAvKiBKU1dlYlNvY2tldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBMzRDNjEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJT
b2NrZXRDdXN0b20uY3BwICovOyB9OwogCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlFOTUgLyogQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQTA1MjM0
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUg
LyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlF
OTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25T
cGFjZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODg5Nyw3ICs4ODk2LDYgQEAKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8qIEpT
UG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjAx
QzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4QTM0QzYxMDI2QzhDOTAwMUI2ODk2IC8qIEpT
V2ViU29ja2V0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViU29ja2V0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE5
RkUwQTEwREFENDQ2RTAwQTA4RjIxIC8qIEhUTUxBdHRyaWJ1dGVOYW1lcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBIVE1MQXR0cmlidXRlTmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxOUZFMEEyMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MVGFnTmFtZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRhZ05hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbFN0b3JhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzE5LDcgKzIwNzE3LDYgQEAKIAkJCQlF
MUFEMTRDNDEyOTczNTQ5MDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20u
Y3BwICovLAogCQkJCUUxQUQxNEI0MTI5NzM0Q0EwMEFDQTk4OSAvKiBKU1dlYktpdENTU0tleWZy
YW1lc1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDMjc1Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBK
U1dlYktpdFBvaW50Q3VzdG9tLmNwcCAqLywKLQkJCQk1MThBMzRDNjEwMjZDOEM5MDAxQjY4OTYg
LyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NENzAwMDkzMzI0
MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwICovLAogCQkJCUUxQ0E1Q0JCMEU4Q0RDQUYw
MEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzNDhCQkQwREI3RjUzMTAw
NEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwICovLApAQCAtMjgwMDgsNyArMjgw
MDUsNiBAQAogCQkJCUJDMjc1Qjc5MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktpdFBvaW50Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REE1RTBGQzEw
MkI5NTM4MDAwODhDRjkgLyogSlNXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4
QTM0QzkxMDI2QzhDOTAwMUI2ODk2IC8qIEpTV2ViU29ja2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTY1REYzMjA1MDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTFDOEJFNUQwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxODI1NjhGMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtl
ckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1OTk4ODllOWQxNTNhYTlkZGZiZjUw
MDIyN2Y5ODEyNjliZWZkOThiLi4zNTcyNTRjNjk0M2Y4YTY3NDc0MzE4ZWY3OGIzZTY3YzJlOGI2
YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAKQEAgLTE1Miw3ICsxNTIsNiBAQAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpT
V2ViU29ja2V0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRCYXNlLmNwcCIK
ICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV29ya2Vy
Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
U29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmZWFlMzJiOTczZWFl
MDhhNDcwOWQwZDRmYzg2NzlkNzM1NDQ2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1
c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiSlNXZWJTb2Nr
ZXQuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlICJKU0Jsb2Iu
aCIKLSNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5j
bHVkZSAiV2ViU29ja2V0LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgotI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1dl
YlNvY2tldENvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTV2ViU29ja2V0Q29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgIldlYlNvY2tldCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3Vt
ZW50IGlzIHVuYXZhaWxhYmxlIikpOwotCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOwotCi0gICAgU3RyaW5nIHVybFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIndyb25nIFVSTCIpKTsKLSAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQg
PSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgd2ViU29ja2V0LT5j
b25uZWN0KHVybFN0cmluZywgZWMpOwotICAgIGVsc2UgewotICAgICAgICBKU1ZhbHVlIHByb3Rv
Y29sc1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgICAgIGlmIChpc0pTQXJyYXkocHJv
dG9jb2xzVmFsdWUpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7Ci0g
ICAgICAgICAgICBKU0FycmF5KiBwcm90b2NvbHNBcnJheSA9IGFzQXJyYXkocHJvdG9jb2xzVmFs
dWUpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3RvY29sc0FycmF5
LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJv
dG9jb2xzQXJyYXktPmdldEluZGV4KGV4ZWMsIGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKLSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICAgICAgICAg
ICAgICBwcm90b2NvbHMuYXBwZW5kKHByb3RvY29sKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29scywgZWMpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJvdG9jb2xzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29s
LCBlYyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQuZ2V0KCkpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTBlOTBjNDA4
ZGI2YWU2MDEwZjFhZjg5OGQ5YmJkZGY5NjNkNzc0OS4uYjcyNWQ1N2E4NmVmNWUyZWFmYmYyZGNm
YTQyMjc3ZjUyYTZjYjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE1MjgsOSArMTUyOCw5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7
CiAKICAgICAgICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7
Ci0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRj
bGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJm
YWNlTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZh
Y2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewot
ICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwg
JGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1l
LCAkaW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVk
Q29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM2NzIsNiArMzY3MiwxNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZh
Y2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3Rv
ciJ9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShKU0M6OkV4ZWNT
dGF0ZSopO1xuIik7CisKKyAgICAgICAgaWYgKCFJc0N1c3RvbUNvbnN0cnVjdGFibGUoJGludGVy
ZmFjZSkpIHsKKyAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNv
bnN0cnVjdG9yc307CisgICAgICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVjdG9ycykgeworICAg
ICAgICAgICAgICAgICAgICBteSAkb3ZlcmxvYWRlZEluZGV4ID0gIiIgLiAkY29uc3RydWN0b3It
PntvdmVybG9hZGVkSW5kZXh9OworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3Qke2NsYXNzTmFtZX0ke292ZXJsb2FkZWRJbmRleH0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTtcbiIpOwogICAgIH0K
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9O1xuXG4iKTsKQEAgLTM3MTEsMTAgKzM3MjIsOSBA
QCBFTkQKICAgICB9CiB9CiAKLXN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgorc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewogICAgIG15ICRvdXRwdXRBcnJheSA9
IHNoaWZ0OwotCiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAgIG15ICRwcm90b0NsYXNz
TmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CkBAIC0zNzIyLDgz
ICszNzMyLDgxIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBz
aGlmdDsKIAotICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVj
dG9ycyB0byBKUyBhcyB3ZWxsLgotICAgICMgRm9yIG5vdyBtaW1pYyB0aGUgb2xkIGJlaGF2aW91
ciBieSBvbmx5IGdlbmVyYXRpbmcgY29kZSBmb3IgdGhlIGxhc3QgIkNvbnN0cnVjdG9yIiBhdHRy
aWJ1dGUuCi0gICAgbXkgJGZ1bmN0aW9uID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9Wy0x
XTsKLQotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25z
dHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7Ci0gICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9Owot
ICAgIGlmICghZGVmaW5lZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKLSAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwg
IkV2ZW50IikpIHsKLSAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9
IDI7Ci0gICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRl
cnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgaWYgKElzQ29uc3RydWN0YWJsZSgk
aW50ZXJmYWNlKSAmJiAhSXNDdXN0b21Db25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CisgICAg
ICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CisgICAg
ICAgIGlmIChAY29uc3RydWN0b3JzID4gMSkgeworICAgICAgICAgICAgZm9yZWFjaCBteSAkY29u
c3RydWN0b3IgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3IpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRw
dXRBcnJheSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0
b3JzWzBdKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZv
ICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojoke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClc
biIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgOiBET01Db25zdHJ1Y3Rvcldp
dGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4i
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSkgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAic3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1U
YWJsZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBn
ZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgJiR7Y29uc3RydWN0
b3JDbGFzc05hbWV9VGFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ9XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJ
bmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJm
YWNlTmFtZX1Db25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXQke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjb25zdHJ1Y3RvckNsYXNzTmFt
ZSkgfTtcblxuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9
IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yXCIsICZCYXNlOjpzX2luZm8s
ICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRj
b25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CisgICAgR2VuZXJhdGVDb25zdHJ1Y3RvclN1
cHBvcnREZWZpbml0aW9ucygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKK30KKworc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENv
bnN0cnVjdG9yRGVmaW5pdGlvbgoreworICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OworICAg
IG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisKKyAg
ICBteSAkZnVuY3Rpb25OYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qk
e2NsYXNzTmFtZX0iOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CitFTkQKKworICAg
IG15ICVmZXRjaGVkQXJndW1lbnRzID0gKCk7CisgICAgbXkgJGxlYXN0TnVtTWFuZGF0b3J5UGFy
YW1zID0gMjU1OworCisgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3Ry
dWN0b3JzfTsKKyAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQGNvbnN0cnVjdG9ycykgeworICAg
ICAgICBteSAoJG51bU1hbmRhdG9yeVBhcmFtcywgJHBhcmFtZXRlcnNDaGVjaywgQG5lZWRlZEFy
Z3VtZW50cykgPSBHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRvdmVybG9hZCk7Cisg
ICAgICAgICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9ICRudW1NYW5kYXRvcnlQYXJhbXMgaWYg
KCRudW1NYW5kYXRvcnlQYXJhbXMgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpOworCisgICAg
ICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlckluZGV4IChAbmVlZGVkQXJndW1lbnRzKSB7CisgICAg
ICAgICAgICBuZXh0IGlmIGV4aXN0cyAkZmV0Y2hlZEFyZ3VtZW50c3skcGFyYW1ldGVySW5kZXh9
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTVmFsdWUgYXJnJHBhcmFt
ZXRlckluZGV4KGV4ZWMtPmFyZ3VtZW50KCRwYXJhbWV0ZXJJbmRleCkpO1xuIik7CisgICAgICAg
ICAgICAkZmV0Y2hlZEFyZ3VtZW50c3skcGFyYW1ldGVySW5kZXh9ID0gMTsKICAgICAgICAgfQog
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojok
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAifVxuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICgk
cGFyYW1ldGVyc0NoZWNrKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuICR7ZnVuY3Rpb25OYW1lfSRvdmVybG9hZC0+e292ZXJsb2FkZWRJbmRleH0oZXhl
Yyk7XG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7
XG4iKTsKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
XG4iKTsKLSAgICB9IGVsc2lmICgkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKLSAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdCk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25l
KTtcbiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpO1xuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpO1xuIik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6
c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7Cisg
ICAgaWYgKCRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA+PSAxKSB7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoYXJnc0NvdW50IDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7XG4iKTsK
ICAgICB9Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVtYmVy
T2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnN9KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVu
dW0pO1xuIikgaWYgZGVmaW5lZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnM7Ci0gICAg
cHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKLQotICAgIGlmICghJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yKSB7Ci0gICAgICAgIG15ICRoYXNTdGF0aWNGdW5jdGlvbnMgPSAwOwotICAg
ICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0g
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICRo
YXNTdGF0aWNGdW5jdGlvbnMgPSAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKKyAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KIAotICAgICAgICBteSAka2luZCA9ICRoYXNT
dGF0aWNGdW5jdGlvbnMgPyAiUHJvcGVydHkiIDogIlZhbHVlIjsKK0VORAorfQogCi0gICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0
dXJuIGdldFN0YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdy
YXBwZXI+KGV4ZWMsICIgLiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjb25zdHJ1Y3RvckNs
YXNzTmFtZSkgLiAiLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjZWxsKSwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5c
biIpOworc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCit7CisgICAgbXkgJG91dHB1
dEFycmF5ID0gc2hpZnQ7CisgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRwcm90
b0NsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisgICAg
bXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAgIG15
ICRmdW5jdGlvbiA9IHNoaWZ0OwogCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBn
ZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSwgSlNET01X
cmFwcGVyPihleGVjLCAiIC4gY29uc3RydWN0b3JIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY29uc3RydWN0b3JD
bGFzc05hbWUpIC4gIiwganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOworICAgIG15ICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgPSAiIjsKKyAgICBp
ZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZGVk
SW5kZXh9ID4gMCkgeworICAgICAgICAkb3ZlcmxvYWRlZEluZGV4U3RyaW5nIC49ICRmdW5jdGlv
bi0+e292ZXJsb2FkZWRJbmRleH07CiAgICAgfQogCisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NO
YW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5hbWVkQ29u
c3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKwogICAgIGlmIChJc0NvbnN0
cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRGljdGlvbmFyeS5oIn0gPSAxOwpAQCAtMzg4OSw5ICszODk3LDggQEAg
RU5ECiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoISgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSAmJiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yKSkgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05h
bWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Y29uc3RydWN0JHtjbGFzc05hbWV9JHtvdmVybG9hZGVkSW5kZXhTdHJpbmd9KEV4ZWNTdGF0ZSog
ZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0KICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNh
bGxlZSgpKTtcbiIpOwogCiAgICAgICAgICAgICBteSBAY29uc3RydWN0b3JBcmdMaXN0OwpAQCAt
Mzk0OCw3ICszOTU1LDk0IEBAIEVORAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9CisgICAgfQorfQorCitzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvclN1cHBvcnREZWZpbml0aW9ucworeworICAgIG15ICRvdXRwdXRBcnJh
eSA9IHNoaWZ0OworICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkcHJvdG9DbGFz
c05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
KyAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKKworICAgIG15ICRj
b25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2Ns
YXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7Cisg
ICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9OworICAgIGlmICghZGVmaW5l
ZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKKyAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKKyAg
ICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9IDI7CisgICAgICAgIH0g
ZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7
CisgICAgICAgICAgICAjIFVzaW5nIHRoZSBmaXJzdCBDb25zdHJ1Y3RvciBmb3IgcGFyYW1ldGVy
IGNvdW50LgorICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGludGVyZmFjZS0+Y29u
c3RydWN0b3JzfTsKKyAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9
IEB7JGNvbnN0cnVjdG9yc1swXS0+cGFyYW1ldGVyc307CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZv
ID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgkY29uc3RydWN0b3JDbGFzc05hbWUpIH07XG5c
biIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0pIHsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGdl
dCR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUoRXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT5n
bG9iYWxEYXRhKCksICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19p
bmZvID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNf
aW5mbywgMCwgZ2V0JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRSgkY29uc3RydWN0b3JDbGFzc05hbWUpIH07XG5cbiIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZvICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1Db25z
dHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgkY29uc3RydWN0b3JDbGFzc05hbWUpIH07XG5cbiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX06OiR7Y29uc3RydWN0b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbn1cblxuIik7CisgICAg
fQorCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAidm9pZCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpO1xuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBnbG9iYWxP
YmplY3QtPnByb3RvdHlwZSgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CisgICAgfSBl
bHNpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpO1xuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke2NsYXNzTmFt
ZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7XG4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOworICAgIH0KKyAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZkNvbnN0cnVjdG9yUGFy
YW1ldGVyc30pLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiBkZWZp
bmVkICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVyczsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOworCisgICAgaWYgKCEkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsK
KyAgICAgICAgbXkgJGhhc1N0YXRpY0Z1bmN0aW9ucyA9IDA7CisgICAgICAgIGZvcmVhY2ggbXkg
JGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgICAgIGlmICgk
ZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgJGhhc1N0YXRpY0Z1bmN0aW9u
cyA9IDE7CisgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIG15ICRraW5kID0gJGhhc1N0YXRpY0Z1bmN0aW9ucyA/ICJQcm9wZXJ0eSIgOiAi
VmFsdWUiOworCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICIgLiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFj
Y2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVz
In0sICRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgLiAiLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJv
b2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVy
biBnZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSwgSlNE
T01XcmFwcGVyPihleGVjLCAiIC4gY29uc3RydWN0b3JIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY29uc3RydWN0
b3JDbGFzc05hbWUpIC4gIiwganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ9XG5cbiIpOworICAgIH0KKworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVy
ZmFjZSkpIHsKICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TmFtZWRDb25zdHJ1Y3RvciJ9IHx8ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiQ29uc3RydWN0VHlwZSAke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
QEAgLTM5NTksMTEgKzQwNTMsMTggQEAgRU5ECiAgICAgfQogfQogCitzdWIgSXNDdXN0b21Db25z
dHJ1Y3RhYmxlCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn07Cit9
CisKIHN1YiBJc0NvbnN0cnVjdGFibGUKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAK
LSAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3Rv
ciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclRlbXBs
YXRlIn07CisgICAgcmV0dXJuIElzQ3VzdG9tQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSB8fCAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9IHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclRlbXBsYXRlIn07CiB9CiAKIDE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNG
bG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCBlYjgzMzkwZmI5MWYyYWI2YzE0ZmY1MjJiYWU1ZWU4
NGU3YWIyZjFiLi41Mzk4NDg0MThlNGNmNzFkOGU2ODg1YWUyNTA5NTNkMmUzM2Y0MjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5jcHAKQEAgLTUzLDYgKzUzLDI2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSA9IHsg
MSwgMCwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTRmxvYXQ2NEFycmF5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgUmVmUHRyPEZsb2F0NjRBcnJheT4gYXJyYXkgPSBj
b25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8RmxvYXQ2NEFycmF5LCBkb3VibGU+KGV4ZWMpOworICAg
IGlmICghYXJyYXkuZ2V0KCkpCisgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVu
IHRocm93bi4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBG
bG9hdDY0QXJyYXkqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxK
U0Zsb2F0NjRBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQorCit2b2lkIEpT
RmxvYXQ2NEFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpbXBsKCktPnNldChpbmRleCwgdmFs
dWUudG9OdW1iZXIoZXhlYykpOworfQorCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXRKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVy
biBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgJkpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3JUYWJsZSk7CkBAIC04MywyNiArMTAzLDYgQEAgYm9vbCBKU0Zsb2F0
NjRBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1MKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgZ2V0SlNGbG9hdDY0QXJyYXlD
b25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9h
dDY0QXJyYXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0
b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+KGV4
ZWMtPmNhbGxlZSgpKTsKLSAgICBSZWZQdHI8RmxvYXQ2NEFycmF5PiBhcnJheSA9IGNvbnN0cnVj
dEFycmF5QnVmZmVyVmlldzxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYyk7Ci0gICAgaWYgKCFh
cnJheS5nZXQoKSkKLSAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3du
LgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjRB
cnJheSogb2JqZWN0KQotewotICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTRmxvYXQ2
NEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLXZvaWQgSlNGbG9hdDY0
QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCB2YWx1ZS50b051
bWJlcihleGVjKSk7Ci19Ci0KIENvbnN0cnVjdFR5cGUgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNGbG9h
dDY0QXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjNjMjVh
NWY2YmIyYzI0ZGNiOWJhYjZkZWI5NWM3MTQzNGM3NTM2Yi4uMDNlYzIzMGE1NmVhMzM3YTFjMGRk
ZTViODVlMzM5NDhmNzMxM2M4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cApAQCAtNTEsMzEgKzUxLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSA9IHsg
MSwgMCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsK
LWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAm
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwotCi1KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
LSAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotewot
fQotCi12b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7Ci0gICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJv
dG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
LX0KLQotYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwotfQotCi1ib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewot
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci19Ci0KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwpAQCAtMTE0
LDYgKzg5LDMxIEBAIGJvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRD
b25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgSlNEaWN0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OworCitKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKKyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQor
eworfQorCit2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVt
KTsKK30KKworYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCitib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKIENvbnN0cnVj
dFR5cGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBiMmEwNmYwNDA4YWZmNWRjZTZjYmMwYjYwMzExMmIz
OTY2N2EwM2IzLi5hZDg5YmU0NjU3MjljZDExMGI3NTg4MWMzNGFiNTZiNjRlNzNlNTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTAwLDYgKzEwMCwyOSBAQCBDT01QSUxFX0FTU0VSVCgx
ID09IFRlc3RTdXBwbGVtZW50YWw6OlNVUFBMRU1FTlRBTENPTlNUQU5UMSwgVGVzdEludGVyZmFj
ZUVudW1TVQogQ09NUElMRV9BU1NFUlQoMiA9PSBUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTVBM
LCBUZXN0SW50ZXJmYWNlRW51bUNPTlNUX0lNUExJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50
cyk7CiAjZW5kaWYKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0
cmluZyYgc3RyMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCAiVGVzdEludGVyZmFjZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlz
IHVuYXZhaWxhYmxlIikpOworICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3QgPSBUZXN0
SW50ZXJmYWNlOjpjcmVhdGUoY29udGV4dCwgc3RyMSwgc3RyMiwgZWMpOworICAgIGlmIChlYykg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0
LmdldCgpKSkpOworfQorCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xMjUsMjkgKzE0OCw2IEBAIGJvb2wg
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjCiAgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRv
cjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNUZXN0SW50ZXJmYWNlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgU3Ry
aW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0g
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyMihNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmlu
ZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVk
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVGVzdEludGVyZmFjZSBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwotICAgIFJl
ZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3QgPSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoY29udGV4
dCwgc3RyMSwgc3RyMiwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
Ci0gICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwotfQotCiBDb25zdHJ1
Y3RUeXBlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RJbnRlcmZhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjUyMDFmMzU1MDJmNmNkYTAxNmVmYjYxZDM0NGU0
ZGY4MTI1M2FhOS4uNGE4OGY1YTFlYjE2ZmM4ODQ2YmI3OTNhM2NlYzFiNjJhYTdkMDFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtNzIsMjAgKzcyLDYgQEAgYm9v
bCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAm
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0
cnVjdG9yKSB9OwotCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6SlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvcldp
dGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLXsKLX0KLQotdm9pZCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxmKGV4ZWMs
IGdsb2JhbE9iamVjdCksIE5vbmUpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWRDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKQEAgLTEwOSw2ICs5
NSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0
LmdldCgpKSkpOwogfQogCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5h
bWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAmQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yKSB9OworCitKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
cjo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBET01Db25zdHJ1
Y3RvcldpdGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKK3sKK30KKwordm9pZCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxm
KGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOworfQorCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CmluZGV4IGRhMjRhNGRlMTdjYWY5NTVkN2ZhZTcxMWY5YTEyNDUwOTUwN2M5NjAuLjFmZTdmNjY3
MTE5Y2VkODRmNjJlNjU0MzVjNmI1YzM2ZDFjZmMzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTQ4LDYg
KzQ4LDEzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROb2RlQ29uc3RydWN0
b3JUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5vZGVDb25zdHJ1Y3RvclRhYmxlVmFs
dWVzLCAwIH07CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0
Tm9kZUNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBSZWZQdHI8VGVzdE5vZGU+IG9iamVjdCA9IFRlc3RO
b2RlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwog
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5v
ZGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROb2RlQ29uc3RydWN0b3JUYWJs
ZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROb2RlQ29uc3RydWN0b3IpIH07CiAKIEpT
VGVzdE5vZGVDb25zdHJ1Y3Rvcjo6SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNzMsMTMgKzgwLDYg
QEAgYm9vbCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNj
cmlwdG9yPEpTVGVzdE5vZGVDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0
Tm9kZUNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZShFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBSZWZQ
dHI8VGVzdE5vZGU+IG9iamVjdCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIG9iamVjdC5nZXQoKSkpKTsKLX0KLQogQ29uc3RydWN0VHlwZSBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKIHsKICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpT
VGVzdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGVlNjg3OWVmMmI3MjU3ZGExZmFiZDUzYTg2ZGFkM2Y4
MjQ0MmViZTQuLjYyNWYzNDhhOTY1NDZiNDY2ZDc3ZGQ2ODEyZDBiY2Q5OTRjNjRiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC0xOTksNiArMTk5LDE4IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9i
ajo6Q09OU1RfVkFMVUVfMTMsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nCiBDT01Q
SUxFX0FTU0VSVCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RPYmpFbnVt
Q09OU1RfVkFMVUVfMTRJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiBDT01QSUxFX0FT
U0VSVCgxNSA9PSBUZXN0T2JqOjpDT05TVF9JTVBMLCBUZXN0T2JqRW51bUNPTlNUX0lNUExJc1dy
b25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPD0gMCB8fCAhZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0
ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxUZXN0T2Jq
PiBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUodGVzdENhbGxiYWNrKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPYmpDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0T2JqQ29uc3RydWN0b3I6OkpTVGVzdE9iakNv
bnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpAQCAtMjI0LDE4ICsyMzYsNiBAQCBib29sIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAg
IHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8SlNUZXN0T2JqQ29uc3RydWN0b3Is
IEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxK
U1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNUZXN0T2JqQ29u
c3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gMCB8fCAhZXhlYy0+YXJn
dW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKLSAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxs
YmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCkpOwotICAgIFJlZlB0cjxUZXN0T2JqPiBvYmplY3QgPSBUZXN0T2JqOjpjcmVh
dGUodGVzdENhbGxiYWNrKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKLX0K
LQogQ29uc3RydWN0VHlwZSBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0T2JqOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDUyZDJlYTg1MDBmMGQxZmM0MmMw
ODE5NTRkNjhmMjAwOGFjYjQ2ZTQuLmEzNjk4ZTAwMzg0ZDFiNWJkOTE2OTJkMmZkM2U4MjUxYzI0
YWY3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
QEAgLTIyLDYgKzIyLDkgQEAKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiSlNCbG9iLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC00OCw2ICs1MSw3MSBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKHRvQXJyYXlC
dWZmZXIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJy
YXlCdWZmZXIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVj
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvciog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOworICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KHRv
QXJyYXlCdWZmZXJWaWV3KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09i
amVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkp
KSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgQmxvYiogYmxvYih0b0Jsb2IoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxl
ZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKHN0cmluZyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pT
KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOworICAgIEpTVmFsdWUgYXJnMChleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKChhcmdz
Q291bnQgPT0gMSAmJiAoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0
cygmSlNBcnJheUJ1ZmZlcjo6c19pbmZvKSkpKQorICAgICAgICByZXR1cm4gSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMShleGVjKTsKKyAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6c19p
bmZvKSkpKQorICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihleGVjKTsKKyAg
ICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJn
MCktPmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpKSkKKyAgICAgICAgcmV0dXJuIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczMoZXhlYyk7CisgICAgaWYgKGFyZ3NDb3VudCA9PSAxKQorICAgICAgICBy
ZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChleGVjKTsKKyAgICBpZiAoYXJnc0NvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9
CisKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFi
bGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTczLDE4ICsxNDEsNiBA
QCBib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KgogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2Ny
aXB0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBw
ZXI+KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KG9iamVjdCks
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
OwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBSZWZQdHI8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVh
dGUoc3RyaW5nKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKLX0KLQogQ29u
c3RydWN0VHlwZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKICAg
ICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aAppbmRleCAyMjg1MDQ3N2ZiYjBiYzZmMWE2ODAzNTY1YTkxMDhjNjgxNGI2M2UwLi5hMGEzMDJi
ZDMzZWU2YTZiZWYyMjkxYmRkODljYTI4NzQxZDliNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTEzMiw2ICsxMzIsMTAgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShK
U0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoSlNDOjpFeGVjU3Rh
dGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpTQzo6RXhlY1N0YXRlKik7CisgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBKU0M6
OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3Ry
dWN0RGF0YSYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA5NTczMzUxZDcwMGI0Mzg0OTBhMzQyNDI0YWE1
NjI1YmViMTY3MDhhLi4zNjU2ZWU3MjBjZThiNjk1M2ZiMDdiMTZlNDgzYTliZGEzYTg2M2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcApAQCAtNjEsNiArNjEsMjQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUKIH07CiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgY29uc3QgU3RyaW5nJiBoZWxs
byhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCksIDAsIDApKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgQXJyYXkqIHRyYW5zZmVyTGlzdCh0b0FycmF5KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IG9iamVjdCA9IFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZShoZWxsbywgZGF0YSwgdHJh
bnNmZXJMaXN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtODYsMjQgKzEwNCw2IEBAIGJvb2wgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVj
LCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
b25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBo
ZWxsbyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
LmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCksIDAsIDApKTsKLSAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgQXJyYXkqIHRyYW5zZmVyTGlzdCh0b0FycmF5KE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IG9iamVjdCA9
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZShoZWxsbywgZGF0YSwg
dHJhbnNmZXJMaXN0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKLX0KLQog
Q29uc3RydWN0VHlwZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179738</attachid>
            <date>2012-12-17 07:27:42 -0800</date>
            <delta_ts>2012-12-18 07:57:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103226-20121217162459.patch</filename>
            <type>text/plain</type>
            <size>68055</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1ZWQxYmI2Zjc3YjJl
YWI3MmIxOWE5NzY0NTJlMjZiMWE4NWE5ZS4uZjI3ZDA0ZTBlMGEzNzA5YTgxNjhlZmI2Y2M5NTUw
NzEyYzRlMjI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTEyLTE3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0pTQ10gQWRk
IHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgcGF0Y2ggYWRkcyB0aGUgc2FtZSBz
dXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycyB0byBKU0MgYXMgVjguCisgICAgICAg
IEFzIHByb29mIG9mIGltcGxlbWVudGF0aW9uIHNvdW5kbmVzcyBXZWJTb2NrZXRzIGNvc3RvbSBj
b25zdHJpY3RvciBpcyByZW1vdmVkLgorICAgICAgICBUaGUgY2hhbmdlcyB0byBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBpcyBxdWl0ZSBleHRlbnNpdmUgc2luY2UKKyAgICAg
ICAgSSBzcGxpdCB1cCB0aGUgZW5vcm1vdXMgImRvRXZlcnl0aGluZygpIiBmdW5jdGlvbiBpbnRv
IGEgZmV3IHNtYWxsZXI7IHRoaXMgYWxzbyBtZWFudAorICAgICAgICB0aGF0IHNvbWUgZ2VuZXJh
dGVkIGNvZGUgaGFzIGJlZW4gc2h1ZmZsZWQgYXJvdW5kLgorCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIGNvdmVyIHBhdGNoLiBBcyB0aGV5IHNob3VsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGw6Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b25zKToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbik6
CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9yU3VwcG9ydERlZmluaXRpb25zKToKKyAgICAgICAgKElzQ3VzdG9tQ29u
c3RydWN0YWJsZSk6CisgICAgICAgIChJc0NvbnN0cnVjdGFibGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNGbG9hdDY0QXJyYXk6OmluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEludGVyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RPYmopOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTEyLTE3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2Nzk0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMTIyYjU0ZjQ3YTFjNjBlZGU4NGRhMjk0ZjIyZTVkOGIwZDVkY2M3Ni4uOWVjZjQy
NmVkMjk3YjM5ZGU0ODQ3MmQ4MWYzNmEzZTVmNjgwOTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yNDA2LDcgKzI0MDYsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1
c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmlu
ZGV4IDBmMDFmNDM5NmIxZTlhZDMyZjJkMDZjYzk4MWEwYTY3ODZkMDVmZWIuLjQxZmUyMmIyZjQ4
MzAxNDhjMjMyMTM5NzVhOTcxYmU0ZDVkYzUzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zOSw3ICszOSw2IEBACiAgICAgQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFdmVudFRhcmdldCwKICAgICBKU05v
U3RhdGljVGFibGVzLAotICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzPTEKIF0gaW50ZXJmYWNlIFdlYlNvY2tldCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBVUkw7IC8vIExvd2VyY2FzZWQgLnVybCBpcyB0aGUgb25lIGluIHRoZSBz
cGVjLCBidXQgbGVhdmluZyAuVVJMIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCBkYmU4NDk3NDM4ODE2ZTlhOGRjODM0NDI3NzAxMGM1YWYyMzU0ZTVhLi5hMWM5YWM5
N2JmMDgzMTkwNzZmZTA4NDYxODE0ZDg5MGM2ZGEyMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5MTcs
OSArMzkxNyw2IEBAIGVuYWJsZT8oV0VCX1NPQ0tFVFMpIHsKICAgICAgICAgcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwCiAKLSAgICBTT1VSQ0VTICs9IFwKLSAgICAg
ICAgYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCi0KICAgICBlbmFibGU/KFdPUktF
UlMpIHsKICAgICAgICAgSEVBREVSUyArPSBcCiAgICAgICAgICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4
IDg5ZmY4Y2IyZDk3MWJmNWYyNWYyYjMzYWRkZWE0NTQ2NzFkYmQ5MjUuLmExYzZhNmQ2NTY3NDgx
M2IzZDU2OTlmNzAxM2EwYjZhZjIyZTQzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTIwNiwxMiAr
MjA2LDYgQEAgaWYgKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKQogICAgICkKIGVuZGlmICgpCiAK
LWlmIChFTkFCTEVfV0VCX1NPQ0tFVFMpCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
Ci0gICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAotICAgICkKLWVuZGlm
ICgpCi0KIGlmIChFTkFCTEVfV09SS0VSUykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICAgICAgYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBj
YTIwNDkzYjFjNmUyNDIxZWNmN2M5MTc3Y2ZmZTc2Zjc4ODIzNzU5Li43NmE0ZDcwMjQ1MTliZGZj
Nzg1YzhkYTY2MGFlZjM4ZmY1Yzg0ZDNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzEzNDgsNTkgKzcxMzQ4LDcgQEAKIAkJCQkJCS8+CiAJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJTb2NrZXRDdXN0b20uY3BwIgotCQkJCQk+
Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
LQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4K
LQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0J
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0
QmFzZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODE1ZWVmMGI4
ZTEwMDNjMThkZjZmMWIxMDJjMWEyYTY3MDliMGRkZi4uNmI2Y2MzYzljNjFhOWRmZWU0NjhkZmY4
MWIzMzkwZjQ2ZTE1OWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYxMiw3ICsxNjEyLDYgQEAKIAkJNTE4OUYwMUQxMEIz
N0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQ
b3BTdGF0ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNTE4OUYwMUUxMEIzN0JEOTAwRjNDNzM5IC8qIEpT
UG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4OUYwMUMxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oICovOyB9
OwogCQk1MTg5RjBERTEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjBERDEwQjQ2QjBF
MDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi87IH07Ci0JCTUxOEEzNEM5MTAyNkM4Qzkw
MDFCNjg5NiAvKiBKU1dlYlNvY2tldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBMzRDNjEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJT
b2NrZXRDdXN0b20uY3BwICovOyB9OwogCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlFOTUgLyogQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQTA1MjM0
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUg
LyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlF
OTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25T
cGFjZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODg5Nyw3ICs4ODk2LDYgQEAKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8qIEpT
UG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjAx
QzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4QTM0QzYxMDI2QzhDOTAwMUI2ODk2IC8qIEpT
V2ViU29ja2V0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViU29ja2V0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE5
RkUwQTEwREFENDQ2RTAwQTA4RjIxIC8qIEhUTUxBdHRyaWJ1dGVOYW1lcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBIVE1MQXR0cmlidXRlTmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxOUZFMEEyMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MVGFnTmFtZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRhZ05hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbFN0b3JhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzE5LDcgKzIwNzE3LDYgQEAKIAkJCQlF
MUFEMTRDNDEyOTczNTQ5MDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20u
Y3BwICovLAogCQkJCUUxQUQxNEI0MTI5NzM0Q0EwMEFDQTk4OSAvKiBKU1dlYktpdENTU0tleWZy
YW1lc1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDMjc1Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBK
U1dlYktpdFBvaW50Q3VzdG9tLmNwcCAqLywKLQkJCQk1MThBMzRDNjEwMjZDOEM5MDAxQjY4OTYg
LyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NENzAwMDkzMzI0
MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwICovLAogCQkJCUUxQ0E1Q0JCMEU4Q0RDQUYw
MEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzNDhCQkQwREI3RjUzMTAw
NEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwICovLApAQCAtMjgwMDgsNyArMjgw
MDUsNiBAQAogCQkJCUJDMjc1Qjc5MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktpdFBvaW50Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REE1RTBGQzEw
MkI5NTM4MDAwODhDRjkgLyogSlNXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4
QTM0QzkxMDI2QzhDOTAwMUI2ODk2IC8qIEpTV2ViU29ja2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTY1REYzMjA1MDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTFDOEJFNUQwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxODI1NjhGMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtl
ckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1OTk4ODllOWQxNTNhYTlkZGZiZjUw
MDIyN2Y5ODEyNjliZWZkOThiLi4zNTcyNTRjNjk0M2Y4YTY3NDc0MzE4ZWY3OGIzZTY3YzJlOGI2
YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAKQEAgLTE1Miw3ICsxNTIsNiBAQAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpT
V2ViU29ja2V0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRCYXNlLmNwcCIK
ICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV29ya2Vy
Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
U29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmZWFlMzJiOTczZWFl
MDhhNDcwOWQwZDRmYzg2NzlkNzM1NDQ2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1
c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiSlNXZWJTb2Nr
ZXQuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlICJKU0Jsb2Iu
aCIKLSNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5j
bHVkZSAiV2ViU29ja2V0LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgotI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1dl
YlNvY2tldENvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTV2ViU29ja2V0Q29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgIldlYlNvY2tldCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3Vt
ZW50IGlzIHVuYXZhaWxhYmxlIikpOwotCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOwotCi0gICAgU3RyaW5nIHVybFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIndyb25nIFVSTCIpKTsKLSAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQg
PSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgd2ViU29ja2V0LT5j
b25uZWN0KHVybFN0cmluZywgZWMpOwotICAgIGVsc2UgewotICAgICAgICBKU1ZhbHVlIHByb3Rv
Y29sc1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgICAgIGlmIChpc0pTQXJyYXkocHJv
dG9jb2xzVmFsdWUpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7Ci0g
ICAgICAgICAgICBKU0FycmF5KiBwcm90b2NvbHNBcnJheSA9IGFzQXJyYXkocHJvdG9jb2xzVmFs
dWUpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3RvY29sc0FycmF5
LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJv
dG9jb2xzQXJyYXktPmdldEluZGV4KGV4ZWMsIGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKLSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICAgICAgICAg
ICAgICBwcm90b2NvbHMuYXBwZW5kKHByb3RvY29sKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29scywgZWMpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJvdG9jb2xzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29s
LCBlYyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQuZ2V0KCkpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTBlOTBjNDA4
ZGI2YWU2MDEwZjFhZjg5OGQ5YmJkZGY5NjNkNzc0OS4uYjcyNWQ1N2E4NmVmNWUyZWFmYmYyZGNm
YTQyMjc3ZjUyYTZjYjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE1MjgsOSArMTUyOCw5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7
CiAKICAgICAgICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7
Ci0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRj
bGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJm
YWNlTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZh
Y2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewot
ICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwg
JGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1l
LCAkaW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVk
Q29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM2NzIsNiArMzY3MiwxNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZh
Y2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3Rv
ciJ9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShKU0M6OkV4ZWNT
dGF0ZSopO1xuIik7CisKKyAgICAgICAgaWYgKCFJc0N1c3RvbUNvbnN0cnVjdGFibGUoJGludGVy
ZmFjZSkpIHsKKyAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNv
bnN0cnVjdG9yc307CisgICAgICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVjdG9ycykgeworICAg
ICAgICAgICAgICAgICAgICBteSAkb3ZlcmxvYWRlZEluZGV4ID0gIiIgLiAkY29uc3RydWN0b3It
PntvdmVybG9hZGVkSW5kZXh9OworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3Qke2NsYXNzTmFtZX0ke292ZXJsb2FkZWRJbmRleH0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTtcbiIpOwogICAgIH0K
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9O1xuXG4iKTsKQEAgLTM3MTEsMTAgKzM3MjIsOSBA
QCBFTkQKICAgICB9CiB9CiAKLXN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgorc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewogICAgIG15ICRvdXRwdXRBcnJheSA9
IHNoaWZ0OwotCiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAgIG15ICRwcm90b0NsYXNz
TmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CkBAIC0zNzIyLDgz
ICszNzMyLDgxIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBz
aGlmdDsKIAotICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVj
dG9ycyB0byBKUyBhcyB3ZWxsLgotICAgICMgRm9yIG5vdyBtaW1pYyB0aGUgb2xkIGJlaGF2aW91
ciBieSBvbmx5IGdlbmVyYXRpbmcgY29kZSBmb3IgdGhlIGxhc3QgIkNvbnN0cnVjdG9yIiBhdHRy
aWJ1dGUuCi0gICAgbXkgJGZ1bmN0aW9uID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9Wy0x
XTsKLQotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25z
dHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7Ci0gICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9Owot
ICAgIGlmICghZGVmaW5lZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKLSAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwg
IkV2ZW50IikpIHsKLSAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9
IDI7Ci0gICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRl
cnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgaWYgKElzQ29uc3RydWN0YWJsZSgk
aW50ZXJmYWNlKSAmJiAhSXNDdXN0b21Db25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CisgICAg
ICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CisgICAg
ICAgIGlmIChAY29uc3RydWN0b3JzID4gMSkgeworICAgICAgICAgICAgZm9yZWFjaCBteSAkY29u
c3RydWN0b3IgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3IpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRw
dXRBcnJheSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0
b3JzWzBdKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZv
ICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojoke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClc
biIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgOiBET01Db25zdHJ1Y3Rvcldp
dGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4i
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSkgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAic3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1U
YWJsZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBn
ZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgJiR7Y29uc3RydWN0
b3JDbGFzc05hbWV9VGFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ9XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJ
bmZvICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJm
YWNlTmFtZX1Db25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXQke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjb25zdHJ1Y3RvckNsYXNzTmFt
ZSkgfTtcblxuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OnNfaW5mbyA9
IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yXCIsICZCYXNlOjpzX2luZm8s
ICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRj
b25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CisgICAgR2VuZXJhdGVDb25zdHJ1Y3RvclN1
cHBvcnREZWZpbml0aW9ucygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKK30KKworc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENv
bnN0cnVjdG9yRGVmaW5pdGlvbgoreworICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OworICAg
IG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisKKyAg
ICBteSAkZnVuY3Rpb25OYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qk
e2NsYXNzTmFtZX0iOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CitFTkQKKworICAg
IG15ICVmZXRjaGVkQXJndW1lbnRzID0gKCk7CisgICAgbXkgJGxlYXN0TnVtTWFuZGF0b3J5UGFy
YW1zID0gMjU1OworCisgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3Ry
dWN0b3JzfTsKKyAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQGNvbnN0cnVjdG9ycykgeworICAg
ICAgICBteSAoJG51bU1hbmRhdG9yeVBhcmFtcywgJHBhcmFtZXRlcnNDaGVjaywgQG5lZWRlZEFy
Z3VtZW50cykgPSBHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRvdmVybG9hZCk7Cisg
ICAgICAgICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9ICRudW1NYW5kYXRvcnlQYXJhbXMgaWYg
KCRudW1NYW5kYXRvcnlQYXJhbXMgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpOworCisgICAg
ICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlckluZGV4IChAbmVlZGVkQXJndW1lbnRzKSB7CisgICAg
ICAgICAgICBuZXh0IGlmIGV4aXN0cyAkZmV0Y2hlZEFyZ3VtZW50c3skcGFyYW1ldGVySW5kZXh9
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTVmFsdWUgYXJnJHBhcmFt
ZXRlckluZGV4KGV4ZWMtPmFyZ3VtZW50KCRwYXJhbWV0ZXJJbmRleCkpO1xuIik7CisgICAgICAg
ICAgICAkZmV0Y2hlZEFyZ3VtZW50c3skcGFyYW1ldGVySW5kZXh9ID0gMTsKICAgICAgICAgfQog
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojok
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAifVxuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICgk
cGFyYW1ldGVyc0NoZWNrKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuICR7ZnVuY3Rpb25OYW1lfSRvdmVybG9hZC0+e292ZXJsb2FkZWRJbmRleH0oZXhl
Yyk7XG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7
XG4iKTsKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
XG4iKTsKLSAgICB9IGVsc2lmICgkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKLSAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdCk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25l
KTtcbiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpO1xuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpO1xuIik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6
c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7Cisg
ICAgaWYgKCRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA+PSAxKSB7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoYXJnc0NvdW50IDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7XG4iKTsK
ICAgICB9Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVtYmVy
T2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnN9KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVu
dW0pO1xuIikgaWYgZGVmaW5lZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnM7Ci0gICAg
cHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKLQotICAgIGlmICghJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yKSB7Ci0gICAgICAgIG15ICRoYXNTdGF0aWNGdW5jdGlvbnMgPSAwOwotICAg
ICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0g
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICRo
YXNTdGF0aWNGdW5jdGlvbnMgPSAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKKyAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KIAotICAgICAgICBteSAka2luZCA9ICRoYXNT
dGF0aWNGdW5jdGlvbnMgPyAiUHJvcGVydHkiIDogIlZhbHVlIjsKK0VORAorfQogCi0gICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0
dXJuIGdldFN0YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdy
YXBwZXI+KGV4ZWMsICIgLiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjb25zdHJ1Y3RvckNs
YXNzTmFtZSkgLiAiLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjZWxsKSwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5c
biIpOworc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCit7CisgICAgbXkgJG91dHB1
dEFycmF5ID0gc2hpZnQ7CisgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRwcm90
b0NsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisgICAg
bXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAgIG15
ICRmdW5jdGlvbiA9IHNoaWZ0OwogCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBn
ZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSwgSlNET01X
cmFwcGVyPihleGVjLCAiIC4gY29uc3RydWN0b3JIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY29uc3RydWN0b3JD
bGFzc05hbWUpIC4gIiwganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOworICAgIG15ICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgPSAiIjsKKyAgICBp
ZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZGVk
SW5kZXh9ID4gMCkgeworICAgICAgICAkb3ZlcmxvYWRlZEluZGV4U3RyaW5nIC49ICRmdW5jdGlv
bi0+e292ZXJsb2FkZWRJbmRleH07CiAgICAgfQogCisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NO
YW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5hbWVkQ29u
c3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKwogICAgIGlmIChJc0NvbnN0
cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRGljdGlvbmFyeS5oIn0gPSAxOwpAQCAtMzg4OSw5ICszODk3LDggQEAg
RU5ECiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoISgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSAmJiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yKSkgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05h
bWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Y29uc3RydWN0JHtjbGFzc05hbWV9JHtvdmVybG9hZGVkSW5kZXhTdHJpbmd9KEV4ZWNTdGF0ZSog
ZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0KICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNh
bGxlZSgpKTtcbiIpOwogCiAgICAgICAgICAgICBteSBAY29uc3RydWN0b3JBcmdMaXN0OwpAQCAt
Mzk0OCw3ICszOTU1LDk0IEBAIEVORAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9CisgICAgfQorfQorCitzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvclN1cHBvcnREZWZpbml0aW9ucworeworICAgIG15ICRvdXRwdXRBcnJh
eSA9IHNoaWZ0OworICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkcHJvdG9DbGFz
c05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
KyAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKKworICAgIG15ICRj
b25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2Ns
YXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7Cisg
ICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1ldGVycyJ9OworICAgIGlmICghZGVmaW5l
ZCAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKKyAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKKyAg
ICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9IDI7CisgICAgICAgIH0g
ZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7
CisgICAgICAgICAgICAjIFVzaW5nIHRoZSBmaXJzdCBDb25zdHJ1Y3RvciBmb3IgcGFyYW1ldGVy
IGNvdW50LgorICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGludGVyZmFjZS0+Y29u
c3RydWN0b3JzfTsKKyAgICAgICAgICAgICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVycyA9
IEB7JGNvbnN0cnVjdG9yc1swXS0+cGFyYW1ldGVyc307CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZv
ID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgkY29uc3RydWN0b3JDbGFzc05hbWUpIH07XG5c
biIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0pIHsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGdl
dCR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUoRXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT5n
bG9iYWxEYXRhKCksICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19p
bmZvID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JcIiwgJkJhc2U6OnNf
aW5mbywgMCwgZ2V0JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRSgkY29uc3RydWN0b3JDbGFzc05hbWUpIH07XG5cbiIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZvICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1Db25z
dHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgkY29uc3RydWN0b3JDbGFzc05hbWUpIH07XG5cbiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX06OiR7Y29uc3RydWN0b3JDbGFzc05hbWV9KFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbn1cblxuIik7CisgICAg
fQorCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAidm9pZCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpO1xuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBnbG9iYWxP
YmplY3QtPnByb3RvdHlwZSgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CisgICAgfSBl
bHNpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpO1xuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke2NsYXNzTmFt
ZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7XG4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOworICAgIH0KKyAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZkNvbnN0cnVjdG9yUGFy
YW1ldGVyc30pLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiBkZWZp
bmVkICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1ldGVyczsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOworCisgICAgaWYgKCEkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsK
KyAgICAgICAgbXkgJGhhc1N0YXRpY0Z1bmN0aW9ucyA9IDA7CisgICAgICAgIGZvcmVhY2ggbXkg
JGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgICAgIGlmICgk
ZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgJGhhc1N0YXRpY0Z1bmN0aW9u
cyA9IDE7CisgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIG15ICRraW5kID0gJGhhc1N0YXRpY0Z1bmN0aW9ucyA/ICJQcm9wZXJ0eSIgOiAi
VmFsdWUiOworCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICIgLiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFj
Y2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVz
In0sICRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgLiAiLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJv
b2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVy
biBnZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSwgSlNE
T01XcmFwcGVyPihleGVjLCAiIC4gY29uc3RydWN0b3JIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY29uc3RydWN0
b3JDbGFzc05hbWUpIC4gIiwganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ9XG5cbiIpOworICAgIH0KKworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVy
ZmFjZSkpIHsKICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TmFtZWRDb25zdHJ1Y3RvciJ9IHx8ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiQ29uc3RydWN0VHlwZSAke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
QEAgLTM5NTksMTEgKzQwNTMsMTggQEAgRU5ECiAgICAgfQogfQogCitzdWIgSXNDdXN0b21Db25z
dHJ1Y3RhYmxlCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn07Cit9
CisKIHN1YiBJc0NvbnN0cnVjdGFibGUKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAK
LSAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3Rv
ciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclRlbXBs
YXRlIn07CisgICAgcmV0dXJuIElzQ3VzdG9tQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSB8fCAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9IHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclRlbXBsYXRlIn07CiB9CiAKIDE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNG
bG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmNwcAppbmRleCBlYjgzMzkwZmI5MWYyYWI2YzE0ZmY1MjJiYWU1ZWU4
NGU3YWIyZjFiLi41Mzk4NDg0MThlNGNmNzFkOGU2ODg1YWUyNTA5NTNkMmUzM2Y0MjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5jcHAKQEAgLTUzLDYgKzUzLDI2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSA9IHsg
MSwgMCwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTRmxvYXQ2NEFycmF5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgUmVmUHRyPEZsb2F0NjRBcnJheT4gYXJyYXkgPSBj
b25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8RmxvYXQ2NEFycmF5LCBkb3VibGU+KGV4ZWMpOworICAg
IGlmICghYXJyYXkuZ2V0KCkpCisgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVu
IHRocm93bi4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBG
bG9hdDY0QXJyYXkqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxK
U0Zsb2F0NjRBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQorCit2b2lkIEpT
RmxvYXQ2NEFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpbXBsKCktPnNldChpbmRleCwgdmFs
dWUudG9OdW1iZXIoZXhlYykpOworfQorCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXRKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVy
biBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgJkpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3JUYWJsZSk7CkBAIC04MywyNiArMTAzLDYgQEAgYm9vbCBKU0Zsb2F0
NjRBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1MKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgZ2V0SlNGbG9hdDY0QXJyYXlD
b25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9h
dDY0QXJyYXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0
b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+KGV4
ZWMtPmNhbGxlZSgpKTsKLSAgICBSZWZQdHI8RmxvYXQ2NEFycmF5PiBhcnJheSA9IGNvbnN0cnVj
dEFycmF5QnVmZmVyVmlldzxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYyk7Ci0gICAgaWYgKCFh
cnJheS5nZXQoKSkKLSAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3du
LgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjRB
cnJheSogb2JqZWN0KQotewotICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTRmxvYXQ2
NEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLXZvaWQgSlNGbG9hdDY0
QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCB2YWx1ZS50b051
bWJlcihleGVjKSk7Ci19Ci0KIENvbnN0cnVjdFR5cGUgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNGbG9h
dDY0QXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjNjMjVh
NWY2YmIyYzI0ZGNiOWJhYjZkZWI5NWM3MTQzNGM3NTM2Yi4uMDNlYzIzMGE1NmVhMzM3YTFjMGRk
ZTViODVlMzM5NDhmNzMxM2M4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cApAQCAtNTEsMzEgKzUxLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSA9IHsg
MSwgMCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsK
LWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAm
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwotCi1KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
LSAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotewot
fQotCi12b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7Ci0gICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJv
dG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
LX0KLQotYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwotfQotCi1ib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewot
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci19Ci0KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwpAQCAtMTE0
LDYgKzg5LDMxIEBAIGJvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRD
b25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgSlNEaWN0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OworCitKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKKyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQor
eworfQorCit2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVt
KTsKK30KKworYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCitib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKIENvbnN0cnVj
dFR5cGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBiMmEwNmYwNDA4YWZmNWRjZTZjYmMwYjYwMzExMmIz
OTY2N2EwM2IzLi5hZDg5YmU0NjU3MjljZDExMGI3NTg4MWMzNGFiNTZiNjRlNzNlNTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTAwLDYgKzEwMCwyOSBAQCBDT01QSUxFX0FTU0VSVCgx
ID09IFRlc3RTdXBwbGVtZW50YWw6OlNVUFBMRU1FTlRBTENPTlNUQU5UMSwgVGVzdEludGVyZmFj
ZUVudW1TVQogQ09NUElMRV9BU1NFUlQoMiA9PSBUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTVBM
LCBUZXN0SW50ZXJmYWNlRW51bUNPTlNUX0lNUExJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50
cyk7CiAjZW5kaWYKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0
cmluZyYgc3RyMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCAiVGVzdEludGVyZmFjZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlz
IHVuYXZhaWxhYmxlIikpOworICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3QgPSBUZXN0
SW50ZXJmYWNlOjpjcmVhdGUoY29udGV4dCwgc3RyMSwgc3RyMiwgZWMpOworICAgIGlmIChlYykg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0
LmdldCgpKSkpOworfQorCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xMjUsMjkgKzE0OCw2IEBAIGJvb2wg
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09i
amVjdCogb2JqZWN0LCBFeGVjCiAgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRv
cjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNUZXN0SW50ZXJmYWNlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgU3Ry
aW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0g
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyMihNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmlu
ZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVk
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVGVzdEludGVyZmFjZSBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwotICAgIFJl
ZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3QgPSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoY29udGV4
dCwgc3RyMSwgc3RyMiwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
Ci0gICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwotfQotCiBDb25zdHJ1
Y3RUeXBlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RJbnRlcmZhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjUyMDFmMzU1MDJmNmNkYTAxNmVmYjYxZDM0NGU0
ZGY4MTI1M2FhOS4uNGE4OGY1YTFlYjE2ZmM4ODQ2YmI3OTNhM2NlYzFiNjJhYTdkMDFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtNzIsMjAgKzcyLDYgQEAgYm9v
bCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAm
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0
cnVjdG9yKSB9OwotCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6SlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvcldp
dGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLXsKLX0KLQotdm9pZCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxmKGV4ZWMs
IGdsb2JhbE9iamVjdCksIE5vbmUpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWRDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKQEAgLTEwOSw2ICs5
NSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKUwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0
LmdldCgpKSkpOwogfQogCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5h
bWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAmQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yKSB9OworCitKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
cjo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBET01Db25zdHJ1
Y3RvcldpdGhEb2N1bWVudChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKK3sKK30KKwordm9pZCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxm
KGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOworfQorCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CmluZGV4IGRhMjRhNGRlMTdjYWY5NTVkN2ZhZTcxMWY5YTEyNDUwOTUwN2M5NjAuLjFmZTdmNjY3
MTE5Y2VkODRmNjJlNjU0MzVjNmI1YzM2ZDFjZmMzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTQ4LDYg
KzQ4LDEzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROb2RlQ29uc3RydWN0
b3JUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5vZGVDb25zdHJ1Y3RvclRhYmxlVmFs
dWVzLCAwIH07CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0
Tm9kZUNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBSZWZQdHI8VGVzdE5vZGU+IG9iamVjdCA9IFRlc3RO
b2RlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwog
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5v
ZGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROb2RlQ29uc3RydWN0b3JUYWJs
ZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROb2RlQ29uc3RydWN0b3IpIH07CiAKIEpT
VGVzdE5vZGVDb25zdHJ1Y3Rvcjo6SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNzMsMTMgKzgwLDYg
QEAgYm9vbCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNj
cmlwdG9yPEpTVGVzdE5vZGVDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0
Tm9kZUNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZShFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBSZWZQ
dHI8VGVzdE5vZGU+IG9iamVjdCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIG9iamVjdC5nZXQoKSkpKTsKLX0KLQogQ29uc3RydWN0VHlwZSBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKIHsKICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpT
VGVzdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGVlNjg3OWVmMmI3MjU3ZGExZmFiZDUzYTg2ZGFkM2Y4
MjQ0MmViZTQuLjYyNWYzNDhhOTY1NDZiNDY2ZDc3ZGQ2ODEyZDBiY2Q5OTRjNjRiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC0xOTksNiArMTk5LDE4IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9i
ajo6Q09OU1RfVkFMVUVfMTMsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nCiBDT01Q
SUxFX0FTU0VSVCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RPYmpFbnVt
Q09OU1RfVkFMVUVfMTRJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiBDT01QSUxFX0FT
U0VSVCgxNSA9PSBUZXN0T2JqOjpDT05TVF9JTVBMLCBUZXN0T2JqRW51bUNPTlNUX0lNUExJc1dy
b25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPD0gMCB8fCAhZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0
ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxUZXN0T2Jq
PiBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUodGVzdENhbGxiYWNrKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPYmpDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0T2JqQ29uc3RydWN0b3I6OkpTVGVzdE9iakNv
bnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpAQCAtMjI0LDE4ICsyMzYsNiBAQCBib29sIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAg
IHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8SlNUZXN0T2JqQ29uc3RydWN0b3Is
IEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxK
U1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNUZXN0T2JqQ29u
c3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gMCB8fCAhZXhlYy0+YXJn
dW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKLSAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxs
YmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCkpOwotICAgIFJlZlB0cjxUZXN0T2JqPiBvYmplY3QgPSBUZXN0T2JqOjpjcmVh
dGUodGVzdENhbGxiYWNrKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKLX0K
LQogQ29uc3RydWN0VHlwZSBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0T2JqOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDUyZDJlYTg1MDBmMGQxZmM0MmMw
ODE5NTRkNjhmMjAwOGFjYjQ2ZTQuLmEzNjk4ZTAwMzg0ZDFiNWJkOTE2OTJkMmZkM2U4MjUxYzI0
YWY3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
QEAgLTIyLDYgKzIyLDkgQEAKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiSlNCbG9iLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC00OCw2ICs1MSw3MSBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKHRvQXJyYXlC
dWZmZXIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJy
YXlCdWZmZXIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVj
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvciog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOworICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KHRv
QXJyYXlCdWZmZXJWaWV3KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09i
amVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkp
KSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgQmxvYiogYmxvYih0b0Jsb2IoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxl
ZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKHN0cmluZyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pT
KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOworICAgIEpTVmFsdWUgYXJnMChleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKChhcmdz
Q291bnQgPT0gMSAmJiAoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0
cygmSlNBcnJheUJ1ZmZlcjo6c19pbmZvKSkpKQorICAgICAgICByZXR1cm4gSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMShleGVjKTsKKyAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6c19p
bmZvKSkpKQorICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihleGVjKTsKKyAg
ICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJn
MCktPmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpKSkKKyAgICAgICAgcmV0dXJuIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczMoZXhlYyk7CisgICAgaWYgKGFyZ3NDb3VudCA9PSAxKQorICAgICAgICBy
ZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChleGVjKTsKKyAgICBpZiAoYXJnc0NvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9
CisKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFi
bGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTczLDE4ICsxNDEsNiBA
QCBib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KgogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2Ny
aXB0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBw
ZXI+KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KG9iamVjdCks
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
OwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBSZWZQdHI8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVh
dGUoc3RyaW5nKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKLX0KLQogQ29u
c3RydWN0VHlwZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKICAg
ICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aAppbmRleCAyMjg1MDQ3N2ZiYjBiYzZmMWE2ODAzNTY1YTkxMDhjNjgxNGI2M2UwLi5hMGEzMDJi
ZDMzZWU2YTZiZWYyMjkxYmRkODljYTI4NzQxZDliNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTEzMiw2ICsxMzIsMTAgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShK
U0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoSlNDOjpFeGVjU3Rh
dGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpTQzo6RXhlY1N0YXRlKik7CisgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBKU0M6
OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3Ry
dWN0RGF0YSYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA5NTczMzUxZDcwMGI0Mzg0OTBhMzQyNDI0YWE1
NjI1YmViMTY3MDhhLi4zNjU2ZWU3MjBjZThiNjk1M2ZiMDdiMTZlNDgzYTliZGEzYTg2M2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcApAQCAtNjEsNiArNjEsMjQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUKIH07CiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgY29uc3QgU3RyaW5nJiBoZWxs
byhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCksIDAsIDApKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgQXJyYXkqIHRyYW5zZmVyTGlzdCh0b0FycmF5KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IG9iamVjdCA9IFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZShoZWxsbywgZGF0YSwgdHJh
bnNmZXJMaXN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtODYsMjQgKzEwNCw2IEBAIGJvb2wgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVj
LCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
b25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBo
ZWxsbyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
LmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCksIDAsIDApKTsKLSAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgQXJyYXkqIHRyYW5zZmVyTGlzdCh0b0FycmF5KE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IG9iamVjdCA9
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZShoZWxsbywgZGF0YSwg
dHJhbnNmZXJMaXN0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKLX0KLQog
Q29uc3RydWN0VHlwZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyMmMyYTkzMTM2MTg3
ODYwNjllNzQwYTNlYzM3OGMzNGVjNTQxMTguLmRjZWNlMWExYTNlN2U4MWU4MGEwOTdhZTVmZjM4
MzJjNzFjOTYxMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0xMi0xNyAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtKU0NdIEFkZCBzdXBw
b3J0IGZvciBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMi0xNiAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5p
bmcuIFVwZGF0ZSBleHBlY3RlZCBmaWxlcyBhZnRlciByMTM3Nzk4LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBlNmUyN2UzYzE0ZWIyZTNlOTljMjUyYWNiY2Jm
Y2QzYzMzZjAwNjFmLi43Nzk2YTYwNDY0YTllYTRkYWE0ZTFlMWVlNjQ3ODUxYzI3YmVhNWE2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAK
LUNPTlNPTEUgTUVTU0FHRTogSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCBudWxsCitDT05TT0xF
IE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbAogQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlk
IHVybCBmb3IgV2ViU29ja2V0IHdzOi8vamF2YXNjcmlwdDphCi1DT05TT0xFIE1FU1NBR0U6IElu
dmFsaWQgdXJsIGZvciBXZWJTb2NrZXQgL2FwcGxldAorQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1
cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FwcGxldAogQ09O
U09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgamF2YXNjcmlwdDph
CiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBwb3J0IDI1IGJsb2NrZWQKIENPTlNPTEUgTUVT
U0FHRTogVVJMIGhhcyBmcmFnbWVudCBjb21wb25lbnQgd3M6Ly8xMjcuMC4wLjEvcGF0aCMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179940</attachid>
            <date>2012-12-18 07:53:33 -0800</date>
            <delta_ts>2012-12-19 01:56:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103226-20121218165049.patch</filename>
            <type>text/plain</type>
            <size>29665</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcwODdkOGYxN2U1MThj
MjNlMzAyODg2MjY4MWU2YjQ5NTM1MmQwZC4uYzEzNGQ3OGI2MGIxZTBlZGZkOWYwZmNiZDVhNWVl
OWMyZGNjZTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTE4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0pTQ10gQWRk
IHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgc3Vw
cG9ydCBmb3Igb3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMgdG8gSlNDIGFzIFY4LgorICAgICAgICBB
cyBwcm9vZiBvZiBpbXBsZW1lbnRhdGlvbiBzb3VuZG5lc3MgV2ViU29ja2V0cyBjdXN0b20gY29u
c3RydWN0b3IgaXMgcmVtb3ZlZC4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBjb3ZlciBwYXRj
aC4gQXMgdGhleSBzaG91bGQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZp
bml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKToKKwogMjAxMi0xMi0xOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzc2MDcpOiBDYW5ub3QgZG93bmxvYWQgZmls
ZXMsIHN0dWNrIGluIOKAnFByZXBhcmluZyB0byBkb3dubG9hZOKAnQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggYjdhNmEyYzg0MzRmMjdmYmI1YTIxNGMyNDE0MTg4M2Q1NWNmYWE2
OS4uOTQ0MTU4ZWUyMjgzNTRjYWZmM2I1ZDQzYzNhZjNmM2E0OTM4YjQxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNDA2LDcgKzI0MDYsNiBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRQb2ludEN1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29j
a2V0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaWRsCmluZGV4IDBmMDFmNDM5NmIxZTlhZDMyZjJkMDZjYzk4MWEwYTY3ODZkMDVmZWIuLjQx
ZmUyMmIyZjQ4MzAxNDhjMjMyMTM5NzVhOTcxYmU0ZDVkYzUzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC0zOSw3ICszOSw2IEBA
CiAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFdmVudFRhcmdldCwK
ICAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCiAgICAgQ29u
c3RydWN0b3JQYXJhbWV0ZXJzPTEKIF0gaW50ZXJmYWNlIFdlYlNvY2tldCB7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBVUkw7IC8vIExvd2VyY2FzZWQgLnVybCBpcyB0aGUgb25l
IGluIHRoZSBzcGVjLCBidXQgbGVhdmluZyAuVVJMIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBhNjhhZDg0ZjQzNTlmZDE3ZjY3NTkxNzQyZjQ1OGQ3ODFjMDNmMjg4
Li5kZTAxZjU5ZjFjMmI4NjhhYjg5YzE0ZDQzODJlNzZiZmVjNmIxZjFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTM5MTksOSArMzkxOSw2IEBAIGVuYWJsZT8oV0VCX1NPQ0tFVFMpIHsKICAgICAgICAgcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwCiAKLSAgICBTT1VSQ0VTICs9
IFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCi0KICAgICBlbmFi
bGU/KFdPUktFUlMpIHsKICAgICAgICAgSEVBREVSUyArPSBcCiAgICAgICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCmluZGV4IDg5ZmY4Y2IyZDk3MWJmNWYyNWYyYjMzYWRkZWE0NTQ2NzFkYmQ5MjUuLmExYzZh
NmQ2NTY3NDgxM2IzZDU2OTlmNzAxM2EwYjZhZjIyZTQzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAg
LTIwNiwxMiArMjA2LDYgQEAgaWYgKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKQogICAgICkKIGVu
ZGlmICgpCiAKLWlmIChFTkFCTEVfV0VCX1NPQ0tFVFMpCi0gICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAotICAg
ICkKLWVuZGlmICgpCi0KIGlmIChFTkFCTEVfV09SS0VSUykKICAgICBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICAgICAgYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA3OGY3ODI0YmRmNzA4MWYyYzk1M2VkMTIxYzdjOWVjOTE5NzUzZmNkLi40N2RhMjJk
NzZmNGM4NjI5MTlkODhmMjk1YTJlYTJlOTAxYjY2OGZhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzEzNTYsNTkgKzcxMzU2LDcgQEAKIAkJ
CQkJCS8+CiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgotCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJTb2NrZXRDdXN0b20uY3Bw
IgotCQkJCQk+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29s
Ci0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJ
PFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
LQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
CQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIi
Ci0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0J
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3Jr
ZXJDb250ZXh0QmFzZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjFkZDE4MDUzYTJmZDczZWQxYjA0ZjFiM2Q3NWFiMzVjMjM0ZDg5OS4uM2E1OGM5NzZkMWM3ZTU0
YjZkNjJiYjM2NTRiMWNjMDRjNmQzZjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYxMiw3ICsxNjEyLDYgQEAKIAkJNTE4
OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3
MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNTE4OUYwMUUxMEIzN0JEOTAwRjND
NzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4OUYwMUMxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVu
dC5oICovOyB9OwogCQk1MTg5RjBERTEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjBE
RDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgKi87IH07Ci0JCTUxOEEzNEM5
MTAyNkM4QzkwMDFCNjg5NiAvKiBKU1dlYlNvY2tldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBMzRDNjEwMjZDOEM5MDAxQjY4OTYg
LyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovOyB9OwogCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlF
OTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3Rv
cmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxQTA1MjM0MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMjEwNTg3NzRG
MDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUEwNTI1NjEwNTg4
NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFBy
b3RlY3Rpb25TcGFjZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODg5OSw3ICs4ODk4LDYgQEAKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjND
NzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4QTM0QzYxMDI2QzhDOTAwMUI2
ODk2IC8qIEpTV2ViU29ja2V0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViU29ja2V0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE5RkUwQTEwREFENDQ2RTAwQTA4RjIxIC8qIEhUTUxBdHRyaWJ1dGVOYW1lcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQXR0cmlidXRlTmFtZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxOUZFMEEyMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MVGFnTmFt
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRhZ05hbWVzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlh
bFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbFN0
b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzIzLDcgKzIwNzIxLDYg
QEAKIAkJCQlFMUFEMTRDNDEyOTczNTQ5MDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZVJ1
bGVDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNEI0MTI5NzM0Q0EwMEFDQTk4OSAvKiBKU1dlYktp
dENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDMjc1Qjc4MTFDNUQxQzMwMEM5
MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCAqLywKLQkJCQk1MThBMzRDNjEwMjZDOEM5
MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NE
NzAwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwICovLAogCQkJCUUxQ0E1Q0JC
MEU4Q0RDQUYwMEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzNDhCQkQw
REI3RjUzMTAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwICovLApAQCAtMjgw
MTUsNyArMjgwMTIsNiBAQAogCQkJCUJDMjc1Qjc5MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktp
dFBvaW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdE
NkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
REE1RTBGQzEwMkI5NTM4MDAwODhDRjkgLyogSlNXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE4QTM0QzkxMDI2QzhDOTAwMUI2ODk2IC8qIEpTV2ViU29ja2V0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTY1REYzMjA1MDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDOEJFNUQwRThCRDE1QTAwNjRDQjdEIC8qIEpT
V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODI1NjhGMEVGMkIwMkQwMDkzMzI0MiAv
KiBKU1dvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1OTk4ODllOWQxNTNh
YTlkZGZiZjUwMDIyN2Y5ODEyNjliZWZkOThiLi4zNTcyNTRjNjk0M2Y4YTY3NDc0MzE4ZWY3OGIz
ZTY3YzJlOGI2YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTE1Miw3ICsxNTIsNiBAQAogI2luY2x1ZGUgIkpTV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1l
c1J1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDdXN0b20uY3BwIgotI2lu
Y2x1ZGUgIkpTV2ViU29ja2V0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRC
YXNlLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTV29ya2VyQ3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViU29ja2V0Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmZWFl
MzJiOTczZWFlMDhhNDcwOWQwZDRmYzg2NzlkNzM1NDQ2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YlNvY2tldEN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAi
SlNXZWJTb2NrZXQuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJK
U0FycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRl
ICJKU0Jsb2IuaCIKLSNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5o
IgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV2ViU29j
a2V0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBKU1dlYlNvY2tldENvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTV2Vi
U29ja2V0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIldlYlNvY2tldCBjb25zdHJ1Y3RvciBhc3NvY2lh
dGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwotCi0gICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotCi0gICAgU3RyaW5nIHVybFN0cmluZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgIndyb25nIFVSTCIpKTsKLSAgICBSZWZQdHI8V2ViU29ja2V0PiB3
ZWJTb2NrZXQgPSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgd2Vi
U29ja2V0LT5jb25uZWN0KHVybFN0cmluZywgZWMpOwotICAgIGVsc2UgewotICAgICAgICBKU1Zh
bHVlIHByb3RvY29sc1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgICAgIGlmIChpc0pT
QXJyYXkocHJvdG9jb2xzVmFsdWUpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm90
b2NvbHM7Ci0gICAgICAgICAgICBKU0FycmF5KiBwcm90b2NvbHNBcnJheSA9IGFzQXJyYXkocHJv
dG9jb2xzVmFsdWUpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3Rv
Y29sc0FycmF5LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHByb3Rv
Y29sID0gcHJvdG9jb2xzQXJyYXktPmdldEluZGV4KGV4ZWMsIGkpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAg
ICAgICAgICAgICAgICBwcm90b2NvbHMuYXBwZW5kKHByb3RvY29sKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29scywgZWMp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJvdG9j
b2xzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKLSAgICAgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcs
IHByb3RvY29sLCBlYyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQu
Z2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
NDA3MmVlNWJlZjc3MjNkMzc2Y2ZmM2Y2Mzk0MjIyYzIxNzBhYTU5NC4uOWUwZTZhZTAyYjcwZTdm
Mzk1NzczMjJjMzUyZDY5NjExN2U3YjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM2NzIsNiArMzY3MiwxNyBAQCBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAKICAgICBpZiAoSXNDb25zdHJ1Y3Rh
YmxlKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFt
ZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1l
fShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisKKyAgICAgICAgaWYgKCFIYXNDdXN0b21Db25zdHJ1
Y3RvcigkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGlu
dGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKKyAgICAgICAgICAgIGlmIChAY29uc3RydWN0b3JzID4g
MSkgeworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAY29uc3RydWN0
b3JzKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRvdmVybG9hZGVkSW5kZXggPSAiIiAuICRj
b25zdHJ1Y3Rvci0+e292ZXJsb2FkZWRJbmRleH07CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSR7b3ZlcmxvYWRlZEluZGV4fShKU0M6OkV4ZWNTdGF0
ZSopO1xuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpO1xu
Iik7CiAgICAgfQogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn07XG5cbiIpOwpAQCAtMzcyMSwx
MiArMzczMiw2MyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zCiAgICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9
IHNoaWZ0OwogCi0gICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3Ry
dWN0b3JzIHRvIEpTIGFzIHdlbGwuCi0gICAgIyBGb3Igbm93IG1pbWljIHRoZSBvbGQgYmVoYXZp
b3VyIGJ5IG9ubHkgZ2VuZXJhdGluZyBjb2RlIGZvciB0aGUgbGFzdCAiQ29uc3RydWN0b3IiIGF0
dHJpYnV0ZS4KLSAgICBteSAkZnVuY3Rpb24gPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc31b
LTFdOworICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKKyAgICAgICAgbXkg
QGNvbnN0cnVjdG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKKyAgICAgICAgaWYg
KEBjb25zdHJ1Y3RvcnMgPiAxKSB7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3Rv
ciAoQGNvbnN0cnVjdG9ycykgeworICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50
ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGlu
Z05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5
LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgfSBlbHNpZiAoQGNvbnN0cnVjdG9y
cyA9PSAxKSB7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yLCAkY29uc3RydWN0b3JzWzBdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHBy
b3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50
ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgICAgICB9CisgICAgfQog
Ci0gICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NO
YW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5h
bWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0aW9uKTsK
LSAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkZnVuY3Rpb24p
OworICAgIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNs
YXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZh
Y2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworfQorCitz
dWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0aW9uCit7CisgICAgbXkgJG91
dHB1dEFycmF5ID0gc2hpZnQ7CisgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKKworICAgIG15ICRmdW5jdGlvbk5hbWUgPSAiJHtjbGFzc05hbWV9
Q29uc3RydWN0b3I6OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfSI7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCA8PEVORCk7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1l
fShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsKK0VORAorCisgICAgbXkgJWZldGNoZWRBcmd1bWVudHMgPSAoKTsKKyAgICBt
eSAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMgPSAyNTU7CisKKyAgICBteSBAY29uc3RydWN0b3Jz
ID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9OworICAgIGZvcmVhY2ggbXkgJG92ZXJsb2Fk
IChAY29uc3RydWN0b3JzKSB7CisgICAgICAgIG15ICgkbnVtTWFuZGF0b3J5UGFyYW1zLCAkcGFy
YW1ldGVyc0NoZWNrLCBAbmVlZGVkQXJndW1lbnRzKSA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0
ZXJzQ2hlY2soJG92ZXJsb2FkKTsKKyAgICAgICAgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID0g
JG51bU1hbmRhdG9yeVBhcmFtcyBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA8ICRsZWFzdE51bU1h
bmRhdG9yeVBhcmFtcyk7CisKKyAgICAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVySW5kZXggKEBu
ZWVkZWRBcmd1bWVudHMpIHsKKyAgICAgICAgICAgIG5leHQgaWYgZXhpc3RzICRmZXRjaGVkQXJn
dW1lbnRzeyRwYXJhbWV0ZXJJbmRleH07CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgSlNWYWx1ZSBhcmckcGFyYW1ldGVySW5kZXgoZXhlYy0+YXJndW1lbnQoJHBhcmFtZXRl
ckluZGV4KSk7XG4iKTsKKyAgICAgICAgICAgICRmZXRjaGVkQXJndW1lbnRzeyRwYXJhbWV0ZXJJ
bmRleH0gPSAxOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmICgkcGFyYW1ldGVyc0NoZWNrKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcmV0dXJuICR7ZnVuY3Rpb25OYW1lfSRvdmVybG9hZC0+e292ZXJsb2FkZWRJbmRl
eH0oZXhlYyk7XG4iKTsKKyAgICB9CisKKyAgICBpZiAoJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
ID49IDEpIHsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhcmdzQ291bnQg
PCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTtcbiIpOworICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
IDw8RU5EKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KKworRU5ECiB9
CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgpAQCAtMzgzMiw3ICszODk0LDEy
IEBAIEVORAogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCFIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50
ZXJmYWNlKSAmJiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0
cnVjdG9yIn0gfHwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSkgewotICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYylc
biIpOworICAgICAgICAgICAgbXkgJG92ZXJsb2FkZWRJbmRleFN0cmluZyA9ICIiOworICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRlZEluZGV4fSA+IDApIHsKKyAgICAgICAgICAgICAgICAkb3ZlcmxvYWRlZEluZGV4U3Ry
aW5nIC49ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH07CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfSR7b3Zlcmxv
YWRlZEluZGV4U3RyaW5nfShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7CiAKQEAgLTM5MDIsNyArMzk2
OSw2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIG15ICR2aXNp
YmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAg
ICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rp
b24gPSBzaGlmdDsKIAogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5n
TmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2Ns
YXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0
ZXJzID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1l
dGVycyJ9OwpAQCAtMzkxMCw3ICszOTc2LDE0IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcwogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1w
bGF0ZSgkaW50ZXJmYWNlLCAiRXZlbnQiKSkgewogICAgICAgICAgICAgJG51bWJlck9mQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzID0gMjsKICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAgICRudW1iZXJPZkNv
bnN0cnVjdG9yUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAg
ICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CisgICAg
ICAgICAgICAkbnVtYmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMgPSAxMDI0OworICAgICAgICAg
ICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAg
ICAgICBteSAkY3Vyck51bWJlck9mUGFyYW1ldGVycyA9IEB7JGNvbnN0cnVjdG9yLT5wYXJhbWV0
ZXJzfTsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJOdW1iZXJPZlBhcmFtZXRlcnMgPCAkbnVt
YmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgJG51bWJl
ck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGN1cnJOdW1iZXJPZlBhcmFtZXRlcnM7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTE5MzU4NWI1YjE0
NzczOTY1YWEwOGM3MzdjZjU2MDM2MWQyNDZiNy4uYTM2OThlMDAzODRkMWI1YmQ5MTY5MmQyZmQz
ZTgyNTFjMjRhZjdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcApAQCAtMjIsNiArMjIsOSBAQAogI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJK
U0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KQEAgLTQ4LDcg
KzUxLDQzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdCiB9OwogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlID0geyAx
LCAwLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywg
MCB9OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBBcnJheUJ1ZmZlciog
YXJyYXlCdWZmZXIodG9BcnJheUJ1ZmZlcihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlcik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3Qu
Z2V0KCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcodG9BcnJheUJ1ZmZlclZpZXcoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3KTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBC
bG9iKiBibG9iKHRvQmxvYihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNyZWF0ZShibG9iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtNjAsNiArOTksMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEoKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHNpemVf
dCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgSlNWYWx1ZSBhcmcwKGV4
ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyOjpzX2luZm8p
KSkpCisgICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKGV4ZWMpOworICAgIGlm
ICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+
aW5oZXJpdHMoJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKSkpCisgICAgICAgIHJldHVybiBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKGV4ZWMpOworICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYg
KGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTQmxvYjo6c19p
bmZvKSkpKQorICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhleGVjKTsKKyAg
ICBpZiAoYXJnc0NvdW50ID09IDEpCisgICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM0KGV4ZWMpOworICAgIGlmIChhcmdzQ291bnQgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgK
aW5kZXggMjI4NTA0NzdmYmIwYmM2ZjFhNjgwMzU2NWE5MTA4YzY4MTRiNjNlMC4uYTBhMzAyYmQz
M2VlNmE2YmVmMjI5MWJkZDg5Y2EyODc0MWQ5YjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0xMzIsNiArMTMyLDEwIEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
RE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyhKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoSlND
OjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEpTQzo6RXhlY1N0YXRl
Kik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0
YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczQoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVj
dERhdGEmKTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYjhjYTg3OWEwMWM1N2ZjOTA5MDBkNmQwNzU5YWI5YmE5
M2I5MzRhLi4xZWI3YjBkZjliNTQ4OWI5M2JhNzc5ZjA2M2VlMWY1ZDA2NGM4YjRmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMTggIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3Igb3ZlcmxvYWRlZCBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzIyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3Rl
ZC50eHQ6CisKIDIwMTItMTItMTggIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcmViYXNlbGluZSBuZXcgdGVzdCBpbnRyb2RpY2Vk
IGF0IHIxMzgwMDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXgg
ZTZlMjdlM2MxNGViMmUzZTk5YzI1MmFjYmNiZmNkM2MzM2YwMDYxZi4uNzc5NmE2MDQ2NGE5ZWE0
ZGFhNGUxZTFlZTY0Nzg1MWMyN2JlYTVhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1l
eHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACi1DT05TT0xFIE1FU1NBR0U6IEludmFsaWQgdXJs
IGZvciBXZWJTb2NrZXQgbnVsbAorQ09OU09MRSBNRVNTQUdFOiBXcm9uZyB1cmwgc2NoZW1lIGZv
ciBXZWJTb2NrZXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dlYnNvY2tldC90ZXN0cy9oeWJpL251
bGwKIENPTlNPTEUgTUVTU0FHRTogSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCB3czovL2phdmFz
Y3JpcHQ6YQotQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IC9hcHBs
ZXQKK0NPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9hcHBsZXQKIENPTlNPTEUgTUVTU0FHRTogV3JvbmcgdXJsIHNjaGVt
ZSBmb3IgV2ViU29ja2V0IGphdmFzY3JpcHQ6YQogQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQg
cG9ydCAyNSBibG9ja2VkCiBDT05TT0xFIE1FU1NBR0U6IFVSTCBoYXMgZnJhZ21lbnQgY29tcG9u
ZW50IHdzOi8vMTI3LjAuMC4xL3BhdGgjCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180120</attachid>
            <date>2012-12-19 01:56:46 -0800</date>
            <delta_ts>2012-12-19 02:52:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103226-20121219105402.patch</filename>
            <type>text/plain</type>
            <size>29690</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhMWI3OTRlMzQ5ZjA3
YzY5Y2RjMTQ4ODAzM2UxOTMzNjRjOTRkMi4uNjkzNmMyNGY1OTY5M2Y0ZDAyNmQyNGJlOGQ2NzM3
NDVhOTdiODVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0pTQ10gQWRk
IHN1cHBvcnQgZm9yIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHNhbWUgc3Vw
cG9ydCBmb3Igb3ZlcmxvYWRlZCBjb25zdHJ1Y3RvcnMgdG8gSlNDIGFzIFY4LgorICAgICAgICBB
cyBwcm9vZiBvZiBpbXBsZW1lbnRhdGlvbiBzb3VuZG5lc3MgV2ViU29ja2V0cyBjdXN0b20gY29u
c3RydWN0b3IgaXMgcmVtb3ZlZC4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBjb3ZlciBwYXRj
aC4gQXMgdGhleSBzaG91bGQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZp
bml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKToKKwogMjAxMi0xMi0xOSAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgW1NoYWRvd10gVElUTEUgZWxlbWVudHMgaW4gU2hhZG93IERPTSBz
aG91bGQgbm90IGFmZmVjdCBkb2N1bWVudC50aXRsZSBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDkwOTI1MzM1MGNmMTIwMWM2N2NhN2FjYjYwODVkOGI0ZWRiNzA5
MDYuLjVlYTNhZjI5MjcxYjQxN2YxYjIxYjdkNWRjNjM2NzQ4ZjMwZTcxZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjQwOSw3ICsyNDA5LDYgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1
bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
S2l0UG9pbnRDdXN0b20uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNv
Y2tldEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbAppbmRleCAwZjAxZjQzOTZiMWU5YWQzMmYyZDA2Y2M5ODFhMGE2Nzg2ZDA1ZmViLi40
MWZlMjJiMmY0ODMwMTQ4YzIzMjEzOTc1YTk3MWJlNGQ1ZGM1MzUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbApAQCAtMzksNyArMzksNiBA
QAogICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgRXZlbnRUYXJnZXQs
CiAgICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBKU0N1c3RvbUNvbnN0cnVjdG9yLAogICAgIENv
bnN0cnVjdG9yUGFyYW1ldGVycz0xCiBdIGludGVyZmFjZSBXZWJTb2NrZXQgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgVVJMOyAvLyBMb3dlcmNhc2VkIC51cmwgaXMgdGhlIG9u
ZSBpbiB0aGUgc3BlYywgYnV0IGxlYXZpbmcgLlVSTCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25z
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggZDEwNDVjNTBmZmI4OGZlMTJhZGE3OTdkNmQ5ZWExNTQ2MjUxNzY1
ZC4uZTZkNDdmNmNhZjI4MmI4MWRmMGZlZWQ0YWFiYjY0OTI0YzY4NjE4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CkBAIC0zOTIwLDkgKzM5MjAsNiBAQCBlbmFibGU/KFdFQl9TT0NLRVRTKSB7CiAgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAogCi0gICAgU09VUkNFUyAr
PSBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAotCiAgICAgZW5h
YmxlPyhXT1JLRVJTKSB7CiAgICAgICAgIEhFQURFUlMgKz0gXAogICAgICAgICAgICAgTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQppbmRleCBkMzA0ZmI2OGZlNDRjMmE1YjVjYjI0ZTExNjE0NDRhYzA2ZGQ1NGQ3Li41NjQ0
YWY1ZGFkZjgxNjBkNzljYmRhN2FjMmFhNzAxYWNjYWZiZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBA
IC0yMDgsMTIgKzIwOCw2IEBAIGlmIChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkKICAgICApCiBl
bmRpZiAoKQogCi1pZiAoRU5BQkxFX1dFQl9TT0NLRVRTKQotICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwotICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKLSAg
ICApCi1lbmRpZiAoKQotCiBpZiAoRU5BQkxFX1dPUktFUlMpCiAgICAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggMmY2N2Y0ODZkYzA5YjY2MjI5YzFjYzI5MzVlZjk2NTUyOGY0MjRkMi4uMGY2ZGRj
NmU1MDBlMTdkZWRmYjA5OGE2NzE1YjU2YWFhZmUyNThmZCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTcxMzYwLDU5ICs3MTM2MCw3IEBACiAJ
CQkJCQkvPgogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4KLQkJCQk8Rmls
ZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViU29ja2V0Q3VzdG9tLmNw
cCIKLQkJCQkJPgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9v
bAotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IlJlbGVh
c2V8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJ
CTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
Ci0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0J
CQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KLQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMy
IgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAot
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV29y
a2VyQ29udGV4dEJhc2UuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDcyNTE1YjZjYmQ2MjhjYTQyOGZiMWQyYTkzZjI4YjRlYTJjZDQzYmUuLmQ1ZWZjZDJjOGU1ZDYw
ZTQyZTdhZmRiNTFhOGNhY2Q1ZWY2NGQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MTYsNyArMTYxNiw2IEBACiAJCTUx
ODlGMDFEMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUIxMEIzN0JEOTAwRjND
NzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi87IH07CiAJCTUxODlGMDFFMTBCMzdCRDkwMEYz
QzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZl
bnQuaCAqLzsgfTsKIAkJNTE4OUYwREUxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYw
REQxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwICovOyB9OwotCQk1MThBMzRD
OTEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QTM0QzYxMDI2QzhDOTAwMUI2ODk2
IC8qIEpTV2ViU29ja2V0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNTFBMDUyMzMxMDU4Nzc0RjAwQ0M5
RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0
b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUEwNTIzNDEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzIxMDU4Nzc0
RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmNwcCAqLzsgfTsKIAkJNTFBMDUyNTYxMDU4
ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQ
cm90ZWN0aW9uU3BhY2VIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTg5MDksNyArODkwOCw2IEBACiAJCTUxODlGMDFCMTBCMzdCRDkwMEYz
QzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNQb3BTdGF0ZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE4OUYwMUMxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BvcFN0YXRlRXZlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE4OUYwREQxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9wU3RhdGVFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxOEEzNEM2MTAyNkM4QzkwMDFC
Njg5NiAvKiBKU1dlYlNvY2tldEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dlYlNvY2tldEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxOUZFMEExMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MQXR0cmlidXRlTmFtZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dHJpYnV0ZU5hbWVzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTlGRTBBMjBEQUQ0NDZFMDBBMDhGMjEgLyogSFRNTFRhZ05h
bWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUYWdOYW1lcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxT
dG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc0MSw3ICsyMDczOSw2
IEBACiAJCQkJRTFBRDE0QzQxMjk3MzU0OTAwQUNBOTg5IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTRCNDEyOTczNENBMDBBQ0E5ODkgLyogSlNXZWJL
aXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzI3NUI3ODExQzVEMUMzMDBD
OTIwNkMgLyogSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAgKi8sCi0JCQkJNTE4QTM0QzYxMDI2QzhD
OTAwMUI2ODk2IC8qIEpTV2ViU29ja2V0Q3VzdG9tLmNwcCAqLywKIAkJCQlFMTgyNThBQjBFRjND
RDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUNBNUNC
QjBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUJDMzQ4QkJE
MERCN0Y1MzEwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCAqLywKQEAgLTI4
MDM3LDcgKzI4MDM0LDYgQEAKIAkJCQlCQzI3NUI3OTExQzVEMUMzMDBDOTIwNkMgLyogSlNXZWJL
aXRQb2ludEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYzRjBFNENFRkFDMDA3
RDZGRTUgLyogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NURBNUUwRkMxMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxOEEzNEM5MTAyNkM4QzkwMDFCNjg5NiAvKiBKU1dlYlNvY2tldEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5RDFDQzYwMDAwQkUzMjUgLyogSlNXaGVlbEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzhCRTVEMEU4QkQxNUEwMDY0Q0I3RCAvKiBK
U1dvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTgyNTY4RjBFRjJCMDJEMDA5MzMyNDIg
LyogSlNXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNTk5ODg5ZTlkMTUz
YWE5ZGRmYmY1MDAyMjdmOTgxMjY5YmVmZDk4Yi4uMzU3MjU0YzY5NDNmOGE2NzQ3NDMxOGVmNzhi
M2U2N2MyZThiNmEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xNTIsNyArMTUyLDYgQEAKICNpbmNsdWRlICJKU1dlYktp
dENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCIKLSNp
bmNsdWRlICJKU1dlYlNvY2tldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0
QmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1dvcmtlckN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYlNvY2tldEN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZmVh
ZTMyYjk3M2VhZTA4YTQ3MDlkMGQ0ZmM4Njc5ZDczNTQ0NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJTb2NrZXRDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUg
IkpTV2ViU29ja2V0LmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAi
SlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVk
ZSAiSlNCbG9iLmgiCi0jaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgotI2luY2x1ZGUgIldlYlNvY2tldC5oIgotI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwu
aCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNv
Y2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChFeGVjU3RhdGUqIGV4ZWMpCi17
Ci0gICAgSlNXZWJTb2NrZXRDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1dl
YlNvY2tldENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJXZWJTb2NrZXQgY29uc3RydWN0b3IgYXNzb2Np
YXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKLQotICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLQotICAgIFN0cmluZyB1cmxTdHJpbmcgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsICJ3cm9uZyBVUkwiKSk7Ci0gICAgUmVmUHRyPFdlYlNvY2tldD4g
d2ViU29ja2V0ID0gV2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCk7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHdl
YlNvY2tldC0+Y29ubmVjdCh1cmxTdHJpbmcsIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgSlNW
YWx1ZSBwcm90b2NvbHNWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgICAgICBpZiAoaXNK
U0FycmF5KHByb3RvY29sc1ZhbHVlKSkgewotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJv
dG9jb2xzOwotICAgICAgICAgICAgSlNBcnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5KHBy
b3RvY29sc1ZhbHVlKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90
b2NvbHNBcnJheS0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBwcm90
b2NvbCA9IHByb3RvY29sc0FycmF5LT5nZXRJbmRleChleGVjLCBpKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0g
ICAgICAgICAgICAgICAgcHJvdG9jb2xzLmFwcGVuZChwcm90b2NvbCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsU3RyaW5nLCBwcm90b2NvbHMsIGVj
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBwcm90b2NvbCA9IHByb3Rv
Y29sc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7Ci0gICAgICAgICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QodXJsU3RyaW5n
LCBwcm90b2NvbCwgZWMpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIFdlYlNvY2tldCwgd2ViU29ja2V0
LmdldCgpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDQwNzJlZTViZWY3NzIzZDM3NmNmZjNmNjM5NDIyMmMyMTcwYWE1OTQuLjZjOTJkNzExNjgyMGQz
MWQyNDM1NjIyYjY0OWM4NzNmZGMwZWJlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNjcyLDYgKzM2NzIsMTcgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogCiAgICAgaWYgKElzQ29uc3RydWN0
YWJsZSgkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5h
bWVkQ29uc3RydWN0b3IifSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFt
ZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOworCisgICAgICAgIGlmICghSGFzQ3VzdG9tQ29uc3Ry
dWN0b3IoJGludGVyZmFjZSkpIHsKKyAgICAgICAgICAgIG15IEBjb25zdHJ1Y3RvcnMgPSBAeyRp
bnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CisgICAgICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+
IDEpIHsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVj
dG9ycykgeworICAgICAgICAgICAgICAgICAgICBteSAkb3ZlcmxvYWRlZEluZGV4ID0gIiIgLiAk
Y29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9OworICAgICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0ke292ZXJsb2FkZWRJbmRleH0oSlNDOjpFeGVjU3Rh
dGUqKTtcbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTtc
biIpOwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9O1xuXG4iKTsKQEAgLTM3MjEs
MTIgKzM3MzIsNjMgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogICAgIG15
ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PSBzaGlmdDsKIAotICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdmVybG9hZGVkIGNvbnN0
cnVjdG9ycyB0byBKUyBhcyB3ZWxsLgotICAgICMgRm9yIG5vdyBtaW1pYyB0aGUgb2xkIGJlaGF2
aW91ciBieSBvbmx5IGdlbmVyYXRpbmcgY29kZSBmb3IgdGhlIGxhc3QgIkNvbnN0cnVjdG9yIiBh
dHRyaWJ1dGUuCi0gICAgbXkgJGZ1bmN0aW9uID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9
Wy0xXTsKKyAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CisgICAgICAgIG15
IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CisgICAgICAgIGlm
IChAY29uc3RydWN0b3JzID4gMSkgeworICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0
b3IgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGlu
dGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3IpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJh
eSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3Rv
cnMgPT0gMSkgeworICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAk
dmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRw
cm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGlu
dGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICAgICAgfQorICAgIH0K
IAotICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNz
TmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRmdW5jdGlvbik7
Ci0gICAgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMoJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0aW9u
KTsKKyAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRj
bGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJm
YWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKK30KKwor
c3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbgoreworICAgIG15ICRv
dXRwdXRBcnJheSA9IHNoaWZ0OworICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CisKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gIiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0iOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgPDxFTkQpOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFt
ZX0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1
bWVudENvdW50KCk7CitFTkQKKworICAgIG15ICVmZXRjaGVkQXJndW1lbnRzID0gKCk7CisgICAg
bXkgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID0gMjU1OworCisgICAgbXkgQGNvbnN0cnVjdG9y
cyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKKyAgICBmb3JlYWNoIG15ICRvdmVybG9h
ZCAoQGNvbnN0cnVjdG9ycykgeworICAgICAgICBteSAoJG51bU1hbmRhdG9yeVBhcmFtcywgJHBh
cmFtZXRlcnNDaGVjaywgQG5lZWRlZEFyZ3VtZW50cykgPSBHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1l
dGVyc0NoZWNrKCRvdmVybG9hZCk7CisgICAgICAgICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9
ICRudW1NYW5kYXRvcnlQYXJhbXMgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPCAkbGVhc3ROdW1N
YW5kYXRvcnlQYXJhbXMpOworCisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlckluZGV4IChA
bmVlZGVkQXJndW1lbnRzKSB7CisgICAgICAgICAgICBuZXh0IGlmIGV4aXN0cyAkZmV0Y2hlZEFy
Z3VtZW50c3skcGFyYW1ldGVySW5kZXh9OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIEpTVmFsdWUgYXJnJHBhcmFtZXRlckluZGV4KGV4ZWMtPmFyZ3VtZW50KCRwYXJhbWV0
ZXJJbmRleCkpO1xuIik7CisgICAgICAgICAgICAkZmV0Y2hlZEFyZ3VtZW50c3skcGFyYW1ldGVy
SW5kZXh9ID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoJHBhcmFtZXRlcnNDaGVjaylcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiAke2Z1bmN0aW9uTmFtZX0kb3ZlcmxvYWQtPntvdmVybG9hZGVkSW5k
ZXh9KGV4ZWMpO1xuIik7CisgICAgfQorCisgICAgaWYgKCRsZWFzdE51bU1hbmRhdG9yeVBhcmFt
cyA+PSAxKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoYXJnc0NvdW50
IDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihleGVjKSk7XG4iKTsKKyAgICB9CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCA8PEVORCk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9CisKK0VORAog
fQogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KQEAgLTM4MzIsNyArMzg5NCwx
MiBAQCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGlu
dGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9IHx8ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMp
XG4iKTsKKyAgICAgICAgICAgIG15ICRvdmVybG9hZGVkSW5kZXhTdHJpbmcgPSAiIjsKKyAgICAg
ICAgICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292
ZXJsb2FkZWRJbmRleH0gPiAwKSB7CisgICAgICAgICAgICAgICAgJG92ZXJsb2FkZWRJbmRleFN0
cmluZyAuPSAkZnVuY3Rpb24tPntvdmVybG9hZGVkSW5kZXh9OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0ke292ZXJs
b2FkZWRJbmRleFN0cmluZ30oRXhlY1N0YXRlKiBleGVjKVxuIik7CiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTtcbiIpOwogCkBAIC0zOTAyLDcgKzM5
NjksNiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBteSAkdmlz
aWJsZUludGVyZmFjZU5hbWUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAg
ICAgbXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0
aW9uID0gc2hpZnQ7CiAKICAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGlu
Z05hbWVkQ29uc3RydWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtj
bGFzc05hbWV9Q29uc3RydWN0b3IiOwogICAgIG15ICRudW1iZXJPZkNvbnN0cnVjdG9yUGFyYW1l
dGVycyA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclBhcmFt
ZXRlcnMifTsKQEAgLTM5MTAsNyArMzk3NiwxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rvckhl
bHBlck1ldGhvZHMKICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVt
cGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKICAgICAgICAgICAgICRudW1iZXJPZkNvbnN0
cnVjdG9yUGFyYW1ldGVycyA9IDI7CiAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICAkbnVtYmVyT2ZD
b25zdHJ1Y3RvclBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAg
ICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9OworICAg
ICAgICAgICAgJG51bWJlck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gMjU1OworICAgICAgICAg
ICAgZm9yZWFjaCBteSAkY29uc3RydWN0b3IgKEBjb25zdHJ1Y3RvcnMpIHsKKyAgICAgICAgICAg
ICAgICBteSAkY3Vyck51bWJlck9mUGFyYW1ldGVycyA9IEB7JGNvbnN0cnVjdG9yLT5wYXJhbWV0
ZXJzfTsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJOdW1iZXJPZlBhcmFtZXRlcnMgPCAkbnVt
YmVyT2ZDb25zdHJ1Y3RvclBhcmFtZXRlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgJG51bWJl
ck9mQ29uc3RydWN0b3JQYXJhbWV0ZXJzID0gJGN1cnJOdW1iZXJPZlBhcmFtZXRlcnM7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTE5MzU4NWI1YjE0
NzczOTY1YWEwOGM3MzdjZjU2MDM2MWQyNDZiNy4uYTM2OThlMDAzODRkMWI1YmQ5MTY5MmQyZmQz
ZTgyNTFjMjRhZjdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcApAQCAtMjIsNiArMjIsOSBAQAogI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJK
U0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KQEAgLTQ4LDcg
KzUxLDQzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdCiB9OwogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclRhYmxlID0geyAx
LCAwLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywg
MCB9OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMo
RXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBBcnJheUJ1ZmZlciog
YXJyYXlCdWZmZXIodG9BcnJheUJ1ZmZlcihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlcik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3Qu
Z2V0KCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcodG9BcnJheUJ1ZmZlclZpZXcoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3KTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBC
bG9iKiBibG9iKHRvQmxvYihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNyZWF0ZShibG9iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAxKQpAQCAtNjAsNiArOTksMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEoKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHNpemVf
dCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgSlNWYWx1ZSBhcmcwKGV4
ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyOjpzX2luZm8p
KSkpCisgICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKGV4ZWMpOworICAgIGlm
ICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+
aW5oZXJpdHMoJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKSkpCisgICAgICAgIHJldHVybiBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKGV4ZWMpOworICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYg
KGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTQmxvYjo6c19p
bmZvKSkpKQorICAgICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhleGVjKTsKKyAg
ICBpZiAoYXJnc0NvdW50ID09IDEpCisgICAgICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM0KGV4ZWMpOworICAgIGlmIChhcmdzQ291bnQgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgK
aW5kZXggMjI4NTA0NzdmYmIwYmM2ZjFhNjgwMzU2NWE5MTA4YzY4MTRiNjNlMC4uYTBhMzAyYmQz
M2VlNmE2YmVmMjI5MWJkZDg5Y2EyODc0MWQ5YjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0xMzIsNiArMTMyLDEwIEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
RE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyhKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoSlND
OjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEpTQzo6RXhlY1N0YXRl
Kik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0
YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczQoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVj
dERhdGEmKTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiM2M5MzY4ODQ4ZTU0MmVlNjE5MDcxMzRmNGI3Njc1MzQx
ZTQzOGU1Li5hZDQ0ZjdmMjFjMGU0MGUzYTA1Y2RlNWJmZTAyY2NiMTY3MmU1Y2M4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMTkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3Igb3ZlcmxvYWRlZCBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzIyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy1leHBlY3Rl
ZC50eHQ6CisKIDIwMTItMTItMTkgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFtTaGFkb3ddIFRJVExFIGVsZW1lbnRzIGluIFNoYWRvdyBET00gc2hvdWxk
IG5vdCBhZmZlY3QgZG9jdW1lbnQudGl0bGUgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBh
cnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGU2ZTI3ZTNjMTRlYjJlM2U5OWMyNTJhY2JjYmZjZDNj
MzNmMDA2MWYuLjc3OTZhNjA0NjRhOWVhNGRhYTRlMWUxZWU2NDc4NTFjMjdiZWE1YTYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXBh
cnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvdXJsLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAotQ09O
U09MRSBNRVNTQUdFOiBJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0IG51bGwKK0NPTlNPTEUgTUVT
U0FHRTogV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9udWxsCiBDT05TT0xFIE1FU1NBR0U6IEludmFsaWQgdXJs
IGZvciBXZWJTb2NrZXQgd3M6Ly9qYXZhc2NyaXB0OmEKLUNPTlNPTEUgTUVTU0FHRTogSW52YWxp
ZCB1cmwgZm9yIFdlYlNvY2tldCAvYXBwbGV0CitDT05TT0xFIE1FU1NBR0U6IFdyb25nIHVybCBz
Y2hlbWUgZm9yIFdlYlNvY2tldCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwbGV0CiBDT05TT0xF
IE1FU1NBR0U6IFdyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCBqYXZhc2NyaXB0OmEKIENP
TlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IHBvcnQgMjUgYmxvY2tlZAogQ09OU09MRSBNRVNTQUdF
OiBVUkwgaGFzIGZyYWdtZW50IGNvbXBvbmVudCB3czovLzEyNy4wLjAuMS9wYXRoIwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>