<?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>24223</bug_id>
          
          <creation_ts>2009-02-27 04:19:22 -0800</creation_ts>
          <short_desc>CSS downloads all background images related to element, instead of just final rule</short_desc>
          <delta_ts>2011-08-03 06:36:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.leepowell.net/webkit/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lee Powell">powell.lee</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andyhume</cc>
    
    <cc>hyatt</cc>
    
    <cc>luying.pan</cc>
    
    <cc>mathias</cc>
    
    <cc>rik</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>111430</commentid>
    <comment_count>0</comment_count>
    <who name="Lee Powell">powell.lee</who>
    <bug_when>2009-02-27 04:19:22 -0800</bug_when>
    <thetext>When an element is given a background image, that is later over ruled with another background image later on in the css cascade, webkit downloads both images.

Check the link for an example, and then view the Resources in the Inspector panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190354</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-02-14 14:26:42 -0800</bug_when>
    <thetext>*** Bug 31630 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262930</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Hume">andyhume</who>
    <bug_when>2010-08-10 18:02:17 -0700</bug_when>
    <thetext>This seems to have been fixed in or before r65052?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269435</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-25 12:25:38 -0700</bug_when>
    <thetext>No, this still happens if the two images are referred to by different rule blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269437</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-25 12:27:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/8354391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269724</commentid>
    <comment_count>5</comment_count>
      <attachid>65526</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-25 22:48:27 -0700</bug_when>
    <thetext>Created attachment 65526
Mostly complete patch

This patch works pretty well, but breaks one test: fast/css-generated-content/after-order.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270137</commentid>
    <comment_count>6</comment_count>
      <attachid>65622</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-26 14:57:05 -0700</bug_when>
    <thetext>Created attachment 65622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270138</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-26 14:58:55 -0700</bug_when>
    <thetext>Attachment 65622 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:6725:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270147</commentid>
    <comment_count>8</comment_count>
      <attachid>65622</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-26 15:10:53 -0700</bug_when>
    <thetext>Comment on attachment 65622
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270150</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-26 15:17:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66141</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270230</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-26 17:16:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66141 seems to have caused fast/forms/select-style.html to fail on mac:

@@ -56,10 +56,10 @@
       RenderText {#text} at (0,160) size 498x18
         text run at (0,160) width 498: &quot;This tests that background is white if only background-image:none is specified.&quot;
       RenderBR {BR} at (498,174) size 0x0
-      RenderMenuList {SELECT} at (2,180) size 51x18 [bgcolor=#FFFFFF]
-        RenderBlock (anonymous) at (0,0) size 51x18
-          RenderText at (8,2) size 20x13
-            text run at (8,2) width 20: &quot;test&quot;
+      RenderMenuList {SELECT} at (2,180) size 51x18 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+        RenderBlock (anonymous) at (1,1) size 49x16
+          RenderText at (8,1) size 20x13
+            text run at (8,1) width 20: &quot;test&quot;
       RenderText {#text} at (55,179) size 4x18
         text run at (55,179) width 4: &quot; &quot;
       RenderBR {BR} at (59,193) size 0x0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270246</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-26 17:44:28 -0700</bug_when>
    <thetext>I filed bug 44737 to investigate the test breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337887</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-20 22:28:22 -0800</bug_when>
    <thetext>*** Bug 52847 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65526</attachid>
            <date>2010-08-25 22:48:27 -0700</date>
            <delta_ts>2010-08-26 14:57:02 -0700</delta_ts>
            <desc>Mostly complete patch</desc>
            <filename>css-image-loading-patch.txt</filename>
            <type>text/plain</type>
            <size>37667</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9jc3MtaW1hZ2UtbG9h
ZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Nzcy1pbWFnZS1sb2Fk
aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkNDA2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9jc3MtaW1hZ2Ut
bG9hZGluZy5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04
Ij4KKyAgPHNjcmlwdD4KKyAgZnVuY3Rpb24gQ2FsbENvbW1hbmQoY21kKQorICB7CisgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAg
ICAgcmVxLm9wZW4oIkdFVCIsICIvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21t
YW5kPSIgKyBjbWQsIGZhbHNlKTsKKyAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAg
ICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0OworICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAg
ICAgICAgIHJldHVybiAiIjsKKyAgICAgICB9CisgICB9CisgICAKKyAgIGZ1bmN0aW9uIHN0YXJ0
VGVzdCgpCisgICB7CisgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgIH0KKyAgICAgICAKKyAgICAgICB3aW5kb3cuc2V0
VGltZW91dChlbmRUZXN0LCAwKTsKKyAgIH0KKyAgIAorICAgZnVuY3Rpb24gZW5kVGVzdCgpCisg
ICB7CisgICAgIGdldFJlc291cmNlTG9nKCk7CisgICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNv
dXJjZS1yZXF1ZXN0LWxvZyIpOworCisgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgfQorCisg
ICBmdW5jdGlvbiBnZXRSZXNvdXJjZUxvZygpCisgICB7CisgICAgICAgdmFyIGxvZyA9IENhbGxD
b21tYW5kKCJnZXQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gbG9nOworICAgfQorCisgICBDYWxsQ29t
bWFuZCgic3RhcnQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgc3RhcnRUZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorICAgIC5ib3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiL3Jlc291cmNlcy9u
ZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWJh
Y2tncm91bmQxLmpwZyIpOworICAgIH0KKyAgICAKKyAgICAuYmFja2dyb3VuZCB7CisgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1iYWNrZ3JvdW5kMi5qcGciKTsKKyAgICB9
CisgICAgCisgICAgLmNvbnRlbnQgeworICAgICAgY29udGVudDogdXJsKCIvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9Y29u
dGVudC1pbWFnZTEuanBnIik7CisgICAgfQorCisgICAgLmNvbnRlbnQgeworICAgICAgY29udGVu
dDogdXJsKCIvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNv
dXJjZS1yZXF1ZXN0JnBhdGg9Y29udGVudC1pbWFnZTIuanBnIik7CisgICAgfQorICAgIAorICAg
IHVsIHsKKyAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgiL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxpc3QtaW1hZ2Ux
LmpwZyIpOworICAgIH0KKyAgICAubGlzdCB7CisgICAgICBsaXN0LXN0eWxlLWltYWdlOiB1cmwo
Ii9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJl
cXVlc3QmcGF0aD1saXN0LWltYWdlMi5qcGciKTsKKyAgICB9CisgICAgCisgIDwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKworICA8ZGl2IGNsYXNzPSJib3ggYmFja2dyb3VuZCI+PC9kaXY+Cisg
IDxkaXYgY2xhc3M9ImNvbnRlbnQiPjwvZGl2PgorICA8dWwgY2xhc3M9Imxpc3QiPjxsaT5pdGVt
PC9saT48L2Rpdj4KKworICA8aDI+UmVzb3VyY2UgcmVxdWVzdHM6PC9oMj4KKyAgPHByZSBpZD0i
cmVzdWx0Ij5SZXF1ZXN0IGxvZyBnb2VzIGhlcmUgaW4gRFJUPC9wcmU+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3Jr
LXNpbXVsYXRvci5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3Jr
LXNpbXVsYXRvci5waHAKaW5kZXggM2YxMjAxZi4uMGQ3OGIxOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocApAQCAt
MTIwLDYgKzEyMCwzOSBAQCBmdW5jdGlvbiBoYW5kbGVHZXRSZXNvdXJjZUNvdW50Q29tbWFuZCgk
cGF0aCkKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGhhbmRsZVN0YXJ0UmVzb3VyY2VSZXF1ZXN0c0xv
ZygpCit7CisgICAgJHJlc291cmNlTG9nRmlsZSA9IHN5c19nZXRfdGVtcF9kaXIoKSAuICIvcmVz
b3VyY2UtbG9nIjsKKyAgICBmaWxlX3B1dF9jb250ZW50cygkcmVzb3VyY2VMb2dGaWxlLCAgIiIp
OworfQorCitmdW5jdGlvbiBoYW5kbGVDbGVhclJlc291cmNlUmVxdWVzdHNMb2coKQoreworICAg
ICRyZXNvdXJjZUxvZ0ZpbGUgPSBzeXNfZ2V0X3RlbXBfZGlyKCkgLiAiL3Jlc291cmNlLWxvZyI7
CisgICAgZmlsZV9wdXRfY29udGVudHMoJHJlc291cmNlTG9nRmlsZSwgIiIpOworfQorCitmdW5j
dGlvbiBoYW5kbGVHZXRSZXNvdXJjZVJlcXVlc3RzTG9nKCkKK3sKKyAgICAkcmVzb3VyY2VMb2dG
aWxlID0gc3lzX2dldF90ZW1wX2RpcigpIC4gIi9yZXNvdXJjZS1sb2ciOworCisgICAgZ2VuZXJh
dGVOb0NhY2hlSFRUUEhlYWRlcigpOworICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuIGdt
ZGF0ZSgiRCwgZCBNIFkgSDppOnMgVCIsIGZpbGVtdGltZSgkcmVzb3VyY2VMb2dGaWxlKSkpOwor
ICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7CisKKyAgICBwcmludCBmaWxl
X2dldF9jb250ZW50cygkcmVzb3VyY2VMb2dGaWxlKTsKK30KKworZnVuY3Rpb24gaGFuZGxlTG9n
UmVzb3VyY2VSZXF1ZXN0KCRwYXRoKQoreworICAgICRyZXNvdXJjZUxvZ0ZpbGUgPSBzeXNfZ2V0
X3RlbXBfZGlyKCkgLiAiL3Jlc291cmNlLWxvZyI7CisgICAgJHJlc291cmNlTG9nID0gZ2V0U3Rh
dGUoJHJlc291cmNlTG9nRmlsZSk7CisgICAgCisgICAgJHJlc291cmNlTG9nID0gJHJlc291cmNl
TG9nLiJcbiIuJHBhdGg7CisgICAgZmlsZV9wdXRfY29udGVudHMoJHJlc291cmNlTG9nRmlsZSwg
JHJlc291cmNlTG9nKTsKKyAgICBnZW5lcmF0ZVJlc3BvbnNlKCRwYXRoKTsKK30KKwogJHN0YXRl
RmlsZSA9IHN5c19nZXRfdGVtcF9kaXIoKSAuICIvbmV0d29yay1zaW11bGF0b3Itc3RhdGUiOwog
JGNvbW1hbmQgPSAkX0dFVFsnY29tbWFuZCddOwogaWYgKCRjb21tYW5kKSB7CkBAIC0xMzMsNiAr
MTY2LDE0IEBAIGlmICgkY29tbWFuZCkgewogICAgICAgICBoYW5kbGVSZXNldFJlc291cmNlQ291
bnRDb21tYW5kKCk7CiAgICAgZWxzZSBpZiAoJGNvbW1hbmQgPT0gImdldC1yZXNvdXJjZS1jb3Vu
dCIpCiAgICAgICAgIGhhbmRsZUdldFJlc291cmNlQ291bnRDb21tYW5kKCRfR0VUWydwYXRoJ10p
OworICAgIGVsc2UgaWYgKCRjb21tYW5kID09ICJzdGFydC1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIp
CisgICAgICAgIGhhbmRsZVN0YXJ0UmVzb3VyY2VSZXF1ZXN0c0xvZygpOworICAgIGVsc2UgaWYg
KCRjb21tYW5kID09ICJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpCisgICAgICAgIGhhbmRs
ZUNsZWFyUmVzb3VyY2VSZXF1ZXN0c0xvZygpOworICAgIGVsc2UgaWYgKCRjb21tYW5kID09ICJn
ZXQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKQorICAgICAgICBoYW5kbGVHZXRSZXNvdXJjZVJlcXVl
c3RzTG9nKCk7CisgICAgZWxzZSBpZiAoJGNvbW1hbmQgPT0gImxvZy1yZXNvdXJjZS1yZXF1ZXN0
IikKKyAgICAgICAgaGFuZGxlTG9nUmVzb3VyY2VSZXF1ZXN0KCRfR0VUWydwYXRoJ10pOwogICAg
IGVsc2UKICAgICAgICAgZWNobyAiVW5rbm93biBjb21tYW5kOiAiIC4gJGNvbW1hbmQgLiAiXG4i
OwogICAgIGV4aXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDc2MzNlMy4uNGMxZmJhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIyMCw2ICsyMjAsNyBAQAogCQkwQzQ1MzQyODEwQ0RCQkZBMDA4Njkx
NTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xV
bmlmb3JtTG9jYXRpb24uaCAqLzsgfTsKIAkJMEYxMUE1NEYwRjM5MjMzMTAwQzM3ODg0IC8qIFJl
bmRlclNlbGVjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMTFBNTRFMEYzOTIzMzEwMEMzNzg4NCAvKiBSZW5kZXJTZWxlY3Rpb25JbmZv
LmggKi87IH07CiAJCTBGMTVEQThBMEYzQUFFRTcwMDAwQ0U0NyAvKiBBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYxNURBODkwRjNBQUVFNzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
LmggKi87IH07CisJCTBGNDVFQjVGMTIyNUY2MzEwMDgwOTNBOCAvKiBTdHlsZURlbGF5TG9hZGVk
SW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDVFQjVFMTIyNUY2MzEwMDgwOTNBOCAvKiBTdHlsZURlbGF5TG9hZGVkSW1hZ2UuaCAqLzsgfTsK
IAkJMEY1MDBBQUYwRjU0REIxQjAwRUVGOTI4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUwMEFBRTBGNTREQjFCMDBF
RUY5MjggLyogVHJhbnNmb3JtU3RhdGUuaCAqLzsgfTsKIAkJMEY1MDBBQjEwRjU0REIzMTAwRUVG
OTI4IC8qIFRyYW5zZm9ybVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNTAwQUIwMEY1NERCMzEwMEVFRjkyOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5jcHAgKi87IH07CiAJCTBGNTYwMjhGMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2MDI4
RDBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5oICovOyB9OwpAQCAtNjAwMCw2ICs2
MDAxLDcgQEAKIAkJMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9j
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjExQTU0RTBGMzkyMzMx
MDBDMzc4ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJTZWxlY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMTVEQTg5MEYzQUFFRTcwMDAwQ0U0NyAvKiBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oOyBwYXRoID0gYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDVFQjVFMTIyNUY2MzEwMDgwOTNB
OCAvKiBTdHlsZURlbGF5TG9hZGVkSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU3R5bGVEZWxheUxvYWRlZEltYWdlLmg7IHBhdGggPSBzdHlsZS9TdHlsZURlbGF5TG9h
ZGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1MDBBQUUwRjU0REIx
QjAwRUVGOTI4IC8qIFRyYW5zZm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRyYW5zZm9ybVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NTAwQUIwMEY1NERCMzEwMEVFRjkyOCAvKiBUcmFuc2Zvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJx
dWVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hcnF1ZWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzM2LDYgKzE2MzM4LDcgQEAKIAkJCQlC
Q0VGNDQ3OTBFNjc0N0QwMDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5jcHAgKi8sCiAJCQkJ
QkNFRjQ0NEMwRTY3NDYyODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuaCAqLywKIAkJCQlC
QzVFQjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRSZWdpb24uaCAqLywKKwkJ
CQkwRjQ1RUI1RTEyMjVGNjMxMDA4MDkzQTggLyogU3R5bGVEZWxheUxvYWRlZEltYWdlLmggKi8s
CiAJCQkJQkM1RUI4QjYwRTgyMDFCRDAwQjI1OTY1IC8qIFN0eWxlRmxleGlibGVCb3hEYXRhLmNw
cCAqLywKIAkJCQlCQzVFQjhCNzBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVGbGV4aWJsZUJveERh
dGEuaCAqLywKIAkJCQlCQ0VGNDQ3QzBFNjc0ODA2MDAxQzEyODcgLyogU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAgKi8sCkBAIC0yMDM3Miw2ICsyMDM3NSw3IEBACiAJCQkJODk0N0E4MkMxMjIyMkM0
NzAwRDk1RjJEIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk0
N0E4M0MxMjIyMzRGNDAwRDk1RjJEIC8qIE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
OTQ3QTgzRDEyMjIzNEY5MDBEOTVGMkQgLyogTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NUVCNUYxMjI1RjYzMTAwODA5M0E4IC8qIFN0eWxlRGVsYXlMb2FkZWRJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IDk2YThkZWMuLjRhNDU0
ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkSW1hZ2UuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hl
ZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVEZWxheUxvYWRlZEltYWdlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsMTEgQEAgQ1NTSW1hZ2VWYWx1ZTo6fkNTU0ltYWdl
VmFsdWUoKQogICAgICAgICBtX2ltYWdlLT5jYWNoZWRJbWFnZSgpLT5yZW1vdmVDbGllbnQodGhp
cyk7CiB9CiAKK1Bhc3NSZWZQdHI8U3R5bGVJbWFnZT4gQ1NTSW1hZ2VWYWx1ZTo6cGVuZGluZ0lt
YWdlKCkKK3sKKyAgICByZXR1cm4gU3R5bGVEZWxheUxvYWRlZEltYWdlOjpjcmVhdGUodGhpcyk7
Cit9CisKIFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKERvY0xv
YWRlciogbG9hZGVyKQogewogICAgIHJldHVybiBjYWNoZWRJbWFnZShsb2FkZXIsIGdldFN0cmlu
Z1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IGExNzE1Y2QuLmQwNDZlZjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVZhbHVlLmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
b2NMb2FkZXI7CiBjbGFzcyBTdHlsZUNhY2hlZEltYWdlOworY2xhc3MgU3R5bGVJbWFnZTsKIAog
Y2xhc3MgQ1NTSW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NQcmltaXRpdmVWYWx1ZSwgcHJpdmF0ZSBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC0zNiw2ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiB1cmwpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NJbWFnZVZhbHVlKHVybCkpOyB9CiAgICAg
dmlydHVhbCB+Q1NTSW1hZ2VWYWx1ZSgpOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IHBlbmRpbmdJbWFnZSgpOwogICAgIHZpcnR1YWwgU3R5bGVDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UoRG9jTG9hZGVyKik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
MTIwNTE5Yi4uM2RjZDdlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTgzLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgogI2luY2x1ZGUgIlNrZXdUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5
bGVEZWxheUxvYWRlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgog
I2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtMTk5LDEy
ICsyMDAsMTIgQEAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKICAgICAgICAgICAgIGN1
cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpOyBcCiAgICAgICAg
ICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsgXAogICAgICAgICB9IFwKLSAgICAg
ICAgbWFwRmlsbCMjUHJvcChjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKSk7IFwKKyAgICAgICAgbWFwRmlsbCMjUHJvcChwcm9wZXJ0eSwgY3VyckNoaWxkLCB2
YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCiAgICAgICAgIHByZXZDaGls
ZCA9IGN1cnJDaGlsZDsgXAogICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsg
XAogICAgIH0gXAogfSBlbHNlIHsgXAotICAgIG1hcEZpbGwjI1Byb3AoY3VyckNoaWxkLCB2YWx1
ZSk7IFwKKyAgICBtYXBGaWxsIyNQcm9wKHByb3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlKTsgXAog
ICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCiB9IFwKIHdoaWxlIChjdXJyQ2hp
bGQpIHsgXApAQCAtODU1LDYgKzg1Niw4IEBAIGlubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVuCiAKICAg
ICBtX21hdGNoZWREZWNscy5jbGVhcigpOwogCisgICAgbV9kZWxheWVkSW1hZ2VMb2FkaW5nUHJv
cGVydGllcy5jbGVhcigpOworCiAgICAgbV9ydWxlTGlzdCA9IDA7CiAKICAgICBtX2ZvbnREaXJ0
eSA9IGZhbHNlOwpAQCAtMTM1Niw2ICsxMzU5LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWwK
ICAgICAvLyBDbGVhbiB1cCBvdXIgc3R5bGUgb2JqZWN0J3MgZGlzcGxheSBhbmQgdGV4dCBkZWNv
cmF0aW9ucyAoYW1vbmcgb3RoZXIgZml4dXBzKS4KICAgICBhZGp1c3RSZW5kZXJTdHlsZShzdHls
ZSgpLCBlKTsKIAorICAgIC8vIFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkgdGhp
cyBzdHlsZS4KKyAgICBsb2FkSW1hZ2VzKCk7CisKICAgICAvLyBJZiB3ZSBoYXZlIGZpcnN0LWxl
dHRlciBwc2V1ZG8gc3R5bGUsIGRvIG5vdCBzaGFyZSB0aGlzIHN0eWxlCiAgICAgaWYgKG1fc3R5
bGUtPmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCiAgICAgICAgIG1fc3R5bGUtPnNldFVu
aXF1ZSgpOwpAQCAtMTQxNCw2ICsxNDIwLDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NT
U3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWwKICAg
ICBpZiAobV9mb250RGlydHkpCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKIAorICAgIC8vIFN0YXJ0
IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkgdGhpcyBzdHlsZS4KKyAgICBsb2FkSW1hZ2Vz
KCk7CisKICAgICAvLyBBZGQgYWxsIHRoZSBhbmltYXRpbmcgcHJvcGVydGllcyB0byB0aGUgbGlz
dAogICAgIGlmIChrZXlmcmFtZVJ1bGUtPnN0eWxlKCkpIHsKICAgICAgICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGtleWZyYW1lUnVsZS0+c3R5bGUo
KS0+ZW5kKCk7CkBAIC0xNTY5LDYgKzE1NzgsOSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLAog
ICAgIC8vIENsZWFuIHVwIG91ciBzdHlsZSBvYmplY3QncyBkaXNwbGF5IGFuZCB0ZXh0IGRlY29y
YXRpb25zIChhbW9uZyBvdGhlciBmaXh1cHMpLgogICAgIGFkanVzdFJlbmRlclN0eWxlKHN0eWxl
KCksIDApOwogCisgICAgLy8gU3RhcnQgbG9hZGluZyBpbWFnZXMgcmVmZXJlbmNlZCBieSB0aGlz
IHN0eWxlLgorICAgIGxvYWRJbWFnZXMoKTsKKwogICAgIC8vIEhhbmcgb3VyIHZpc2l0ZWQgc3R5
bGUgb2ZmIG1fc3R5bGUuCiAgICAgaWYgKHZpc2l0ZWRTdHlsZSkKICAgICAgICAgbV9zdHlsZS0+
YWRkQ2FjaGVkUHNldWRvU3R5bGUodmlzaXRlZFN0eWxlLnJlbGVhc2UoKSk7CkBAIC0xNjAzLDYg
KzE2MTUsOSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHls
ZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIAogICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPihm
YWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7CiAKKyAgICAvLyBTdGFydCBsb2Fk
aW5nIGltYWdlcyByZWZlcmVuY2VkIGJ5IHRoaXMgc3R5bGUuCisgICAgbG9hZEltYWdlcygpOwor
CiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFz
ZSgpOwogfQpAQCAtMzEyMCw3ICszMTM1LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgIC8vIFdoYXQgZm9sbG93cyBp
cyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRoZWlyIGNvcnJlc3Bv
bmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAgU2hvcnRoYW5kcyAo
ZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBhcyB3ZWxsIGFuZAog
ICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9yICJpbml0aWFsIiBp
bnRvIGZyb250LWVuZCB2YWx1ZXMuCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eUlEPihpZCkpIHsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NT
UHJvcGVydHlJRD4oaWQpOworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKIC8vIGlkZW50IG9ubHkg
cHJvcGVydGllcwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKICAg
ICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoYXR0YWNobWVudCwgQXR0YWNobWVudCwgdmFs
dWUpCkBAIC0zNTExLDcgKzM1MjcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGlmIChp
bWFnZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQobV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0
aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQgdG8gc2hhcmUgc3R5bGUuCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRlbXBvcmFyeSBjbHVtc2luZXNzIHRvIHBhc3Mgb2ZmIGEgQ2FjaGVkSW1hZ2Ug
dG8gYW4gQVBJIHRoYXQgd2lsbCBldmVudHVhbGx5IGNvbnZlcnQgdG8gdXNpbmcKLSAgICAgICAg
ICAgICAgICAgICAgLy8gU3R5bGVJbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgLy8gU3R5bGVJ
bWFnZS4gU2hvdWxkIGFsc28gYmUgZml4ZWQgdG8gdXNlIFN0eWxlRGVsYXlMb2FkZWRJbWFnZSBh
dCB0aGUgc2FtZSB0aW1lLgogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U3R5bGVDYWNoZWRJ
bWFnZT4gc3R5bGVDYWNoZWRJbWFnZShpbWFnZS0+Y2FjaGVkSW1hZ2UobV9lbGVtZW50LT5kb2N1
bWVudCgpLT5kb2NMb2FkZXIoKSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVDYWNo
ZWRJbWFnZSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPmFkZEN1cnNvcihzdHls
ZUNhY2hlZEltYWdlLT5jYWNoZWRJbWFnZSgpLCBpbWFnZS0+aG90U3BvdCgpKTsKQEAgLTM2MTEs
NyArMzYyNyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQs
IENTU1ZhbHVlICp2YWx1ZSkKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6CiAg
ICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaXN0U3R5bGVJbWFnZSwg
TGlzdFN0eWxlSW1hZ2UpCi0gICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZUltYWdlKHN0eWxl
SW1hZ2UodmFsdWUpKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2Uoc3R5bGVJ
bWFnZShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCB2YWx1ZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00Mjc0LDcgKzQyOTAsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkk6IHsKICAgICAg
ICAgICAgICAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NJbWFn
ZVZhbHVlKj4odmFsKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29udGVudChp
bWFnZS0+Y2FjaGVkSW1hZ2UobV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSksIGRp
ZFNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fZGVsYXllZEltYWdlTG9hZGluZ1Byb3BlcnRp
ZXMuYWRkKENTU1Byb3BlcnR5Q29udGVudCk7CisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldENvbnRlbnQoaW1hZ2UtPnBlbmRpbmdJbWFnZSgpLCBkaWRTZXQpOwogICAgICAgICAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CkBAIC00NzAxLDcgKzQ3MTgsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgIH0KIAogICAg
ICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZTsKLSAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UodmFs
dWUsIGltYWdlKTsKKyAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UocHJvcGVydHksIHZhbHVlLCBp
bWFnZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJJbWFnZSkKICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckltYWdlKGltYWdlKTsKQEAg
LTQ4NTEsNyArNDg2OCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRP
ZmZzZXQoTGVuZ3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JM
ZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpKTsK
ICAgICAgICAgfQogICAgICAgICBOaW5lUGllY2VJbWFnZSBtYXNrOwotICAgICAgICBtYXBOaW5l
UGllY2VJbWFnZShyZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7CisgICAgICAgIG1hcE5pbmVQ
aWVjZUltYWdlKHByb3BlcnR5LCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7CiAgICAgICAg
IHJlZmxlY3Rpb24tPnNldE1hc2sobWFzayk7CiAgICAgICAgIAogICAgICAgICBtX3N0eWxlLT5z
ZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKQEAgLTU2NzYsNyArNTY5Myw3IEBA
IExlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQogICAgIHJl
dHVybiBMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbmNoLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lOKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUpLCBGaXhlZCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmls
bEF0dGFjaG1lbnQoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUo
KSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsKICAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1l
bnQoRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUoKSkpOwpAQCAt
NTcwMiw3ICs1NzE5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVu
dChGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgfQogfQogCi12b2lkIENT
U1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDbGlwKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENsaXAoQ1NTUHJvcGVydHlJRCwg
RmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+Y3Nz
VmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CiAgICAgICAgIGxheWVyLT5z
ZXRDbGlwKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwKGxheWVyLT50eXBlKCkpKTsKQEAgLTU3
MTYsNyArNTczMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENsaXAoRmlsbExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5zZXRDbGlwKCpwcmltaXRp
dmVWYWx1ZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENvbXBvc2l0ZShG
aWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6
OkNTU19JTklUSUFMKSB7CiAgICAgICAgIGxheWVyLT5zZXRDb21wb3NpdGUoRmlsbExheWVyOjpp
bml0aWFsRmlsbENvbXBvc2l0ZShsYXllci0+dHlwZSgpKSk7CkBAIC01NzMwLDcgKzU3NDcsNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGUoRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5zZXRDb21wb3NpdGUoKnByaW1pdGl2ZVZh
bHVlKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsT3JpZ2luKEZpbGxMYXll
ciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmls
bE9yaWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJ
QUwpIHsKICAgICAgICAgbGF5ZXItPnNldE9yaWdpbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3Jp
Z2luKGxheWVyLT50eXBlKCkpKTsKQEAgLTU3NDQsMjYgKzU3NjEsMzAgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXBGaWxsT3JpZ2luKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1
ZSkKICAgICBsYXllci0+c2V0T3JpZ2luKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLVN0eWxlSW1h
Z2UqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlSW1hZ2UoQ1NTVmFsdWUqIHZhbHVlKQorUGFzc1Jl
ZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUtPmlzSW1hZ2VW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHZhbHVl
KS0+Y2FjaGVkSW1hZ2UobV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSk7CisgICAg
aWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkgeworICAgICAgICBtX2RlbGF5ZWRJbWFnZUxvYWRp
bmdQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
U1NJbWFnZVZhbHVlKj4odmFsdWUpLT5wZW5kaW5nSW1hZ2UoKTsKKyAgICB9CisKICAgICBpZiAo
dmFsdWUtPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+Z2VuZXJhdGVkSW1hZ2UoKTsKKwog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxJbWFnZShG
aWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NW
YWx1ZTo6Q1NTX0lOSVRJQUwpIHsKICAgICAgICAgbGF5ZXItPnNldEltYWdlKEZpbGxMYXllcjo6
aW5pdGlhbEZpbGxJbWFnZShsYXllci0+dHlwZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBsYXllci0+c2V0SW1hZ2Uoc3R5bGVJbWFnZSh2YWx1ZSkpOworICAgIGxheWVyLT5z
ZXRJbWFnZShzdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOwogfQogCi12b2lkIENTU1N0eWxl
U2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRYKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1
ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwg
RmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+Y3Nz
VmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CiAgICAgICAgIGxheWVyLT5z
ZXRSZXBlYXRYKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYKGxheWVyLT50eXBlKCkpKTsK
QEAgLTU3NzcsNyArNTc5OCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVh
dFgoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5zZXRSZXBl
YXRYKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmls
bFJlcGVhdFkoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBD
U1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsKICAgICAgICAgbGF5ZXItPnNldFJlcGVhdFkoRmlsbExh
eWVyOjppbml0aWFsRmlsbFJlcGVhdFkobGF5ZXItPnR5cGUoKSkpOwpAQCAtNTc5MSw3ICs1ODEy
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WShGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgbGF5ZXItPnNldFJlcGVhdFkoKnByaW1pdGl2ZVZh
bHVlKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxT
aXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNl
dFNpemVUeXBlKFNpemVOb25lKTsKQEAgLTU4NTMsNyArNTg3NCw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwRmlsbFNpemUoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQog
ICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxYUG9zaXRpb24oRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmNzc1ZhbHVl
VHlwZSgpID09IENTU1ZhbHVlOjpDU1NfSU5JVElBTCkgewogICAgICAgICBsYXllci0+c2V0WFBv
c2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOwpA
QCAtNTg3Nyw3ICs1ODk4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0
aW9uKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBsYXllci0+c2V0WFBv
c2l0aW9uKGwpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxZUG9zaXRpb24o
RmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVl
OjpDU1NfSU5JVElBTCkgewogICAgICAgICBsYXllci0+c2V0WVBvc2l0aW9uKEZpbGxMYXllcjo6
aW5pdGlhbEZpbGxZUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOwpAQCAtNjA2NSw3ICs2MDg2LDcg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUKICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwTmluZVBpZWNlSW1hZ2UoQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYg
aW1hZ2UpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQog
ewogICAgIC8vIElmIHdlJ3JlIGEgcHJpbWl0aXZlIHZhbHVlLCB0aGVuIHdlIGFyZSAibm9uZSIg
YW5kIGRvbid0IG5lZWQgdG8gYWx0ZXIgdGhlIGVtcHR5IGltYWdlIGF0IGFsbC4KICAgICBpZiAo
IXZhbHVlIHx8IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC02MDc1LDcgKzYwOTYsNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlKENTU1ZhbHVlKiB2YWx1
ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogICAgIENTU0JvcmRlckltYWdlVmFsdWUqIGJvcmRl
ckltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQm9yZGVySW1hZ2VWYWx1ZSo+KHZhbHVlKTsKICAgICAK
ICAgICAvLyBTZXQgdGhlIGltYWdlICh0aGlzIGtpY2tzIG9mZiB0aGUgbG9hZCkuCi0gICAgaW1h
Z2Uuc2V0SW1hZ2Uoc3R5bGVJbWFnZShib3JkZXJJbWFnZS0+aW1hZ2VWYWx1ZSgpKSk7CisgICAg
aW1hZ2Uuc2V0SW1hZ2Uoc3R5bGVJbWFnZShwcm9wZXJ0eSwgYm9yZGVySW1hZ2UtPmltYWdlVmFs
dWUoKSkpOwogCiAgICAgLy8gU2V0IHVwIGEgbGVuZ3RoIGJveCB0byByZXByZXNlbnQgb3VyIGlt
YWdlIHNsaWNlcy4KICAgICBMZW5ndGhCb3ggbDsKQEAgLTY2ODQsNCArNjcwNSw4OCBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGlu
VmFsdWUsIFJlbmRlclN0eWxlKgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmxvYWRJbWFnZXMoKQoreworICAgIGlmIChtX2RlbGF5ZWRJbWFnZUxvYWRpbmdQ
cm9wZXJ0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBIYXNo
U2V0PGludD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fZGVsYXllZEltYWdlTG9hZGluZ1Byb3Bl
cnRpZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9kZWxheWVkSW1hZ2VMb2FkaW5nUHJvcGVydGllcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBjdXJyZW50UHJvcGVydHkgPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPigqaXQpOworCisgICAgICAgIERvY0xvYWRlciogZG9jTG9hZGVyID0gbV9l
bGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRj
aCAoY3VycmVudFByb3BlcnR5KSB7CisgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZEltYWdlOiB7CisgICAgICAgICAgICAgICAgZm9yIChGaWxsTGF5ZXIqIGJhY2tncm91bmRM
YXllciA9IG1fc3R5bGUtPmFjY2Vzc0JhY2tncm91bmRMYXllcnMoKTsgYmFja2dyb3VuZExheWVy
OyBiYWNrZ3JvdW5kTGF5ZXIgPSBiYWNrZ3JvdW5kTGF5ZXItPm5leHQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoYmFja2dyb3VuZExheWVyLT5pbWFnZSgpICYmIGJhY2tncm91bmRMYXll
ci0+aW1hZ2UoKS0+aXNEZWxheUxvYWRpbmdJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8U3R5bGVEZWxheUxv
YWRlZEltYWdlKj4oYmFja2dyb3VuZExheWVyLT5pbWFnZSgpKS0+Y3NzSW1hZ2VWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZExheWVyLT5zZXRJbWFnZShpbWFnZVZh
bHVlLT5jYWNoZWRJbWFnZShkb2NMb2FkZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OiB7CisgICAgICAgICAgICAgICAgaWYg
KG1fc3R5bGUtPmNvbnRlbnREYXRhKCktPmlzSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAg
ICBDU1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8U3R5bGVEZWxheUxvYWRl
ZEltYWdlKj4obV9zdHlsZS0+Y29udGVudERhdGEoKS0+aW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29udGVudChpbWFnZVZhbHVlLT5j
YWNoZWRJbWFnZShkb2NMb2FkZXIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vy
c29yOgorICAgICAgICAgICAgICAgIC8vIEN1cnNvciBkb2Vzbid0IHVzZSBTdHlsZURlbGF5TG9h
ZGVkSW1hZ2UgeWV0LgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNl
IENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6IHsKKyAgICAgICAgICAgICAgICBpZiAobV9zdHls
ZS0+bGlzdFN0eWxlSW1hZ2UoKS0+aXNEZWxheUxvYWRpbmdJbWFnZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxTdHlsZURl
bGF5TG9hZGVkSW1hZ2UqPihtX3N0eWxlLT5saXN0U3R5bGVJbWFnZSgpKS0+Y3NzSW1hZ2VWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShpbWFn
ZVZhbHVlLT5jYWNoZWRJbWFnZShkb2NMb2FkZXIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZTogeworICAgICAgICAgICAgICAgIGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBib3JkZXJJbWFnZSA9IG1fc3R5bGUtPmJvcmRlckltYWdlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGJvcmRlckltYWdlLmltYWdlKCktPmlzRGVsYXlMb2FkaW5nSW1hZ2UoKSkg
eworICAgICAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVEZWxheUxvYWRlZEltYWdlKj4oYm9yZGVySW1hZ2UuaW1hZ2UoKSktPmNzc0lt
YWdlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVySW1hZ2Uo
TmluZVBpZWNlSW1hZ2UoaW1hZ2VWYWx1ZS0+Y2FjaGVkSW1hZ2UoZG9jTG9hZGVyKSwgYm9yZGVy
SW1hZ2Uuc2xpY2VzKCksIGJvcmRlckltYWdlLmhvcml6b250YWxSdWxlKCksIGJvcmRlckltYWdl
LnZlcnRpY2FsUnVsZSgpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94UmVmbGVjdDogeworICAgICAgICAgICAgICAgIGNvbnN0IE5pbmVQaWVj
ZUltYWdlJiBtYXNrSW1hZ2UgPSBtX3N0eWxlLT5ib3hSZWZsZWN0KCktPm1hc2soKTsKKyAgICAg
ICAgICAgICAgICBpZiAobWFza0ltYWdlLmltYWdlKCktPmlzRGVsYXlMb2FkaW5nSW1hZ2UoKSkg
eworICAgICAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVEZWxheUxvYWRlZEltYWdlKj4obWFza0ltYWdlLmltYWdlKCkpLT5jc3NJbWFn
ZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPmJveFJlZmxlY3QoKS0+c2V0
TWFzayhOaW5lUGllY2VJbWFnZShpbWFnZVZhbHVlLT5jYWNoZWRJbWFnZShkb2NMb2FkZXIpLCBt
YXNrSW1hZ2Uuc2xpY2VzKCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2Uu
dmVydGljYWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrQm94SW1hZ2U6IHsKKyAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFz
a0JveEltYWdlID0gbV9zdHlsZS0+bWFza0JveEltYWdlKCk7CisgICAgICAgICAgICAgICAgaWYg
KG1hc2tCb3hJbWFnZS5pbWFnZSgpLT5pc0RlbGF5TG9hZGluZ0ltYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1hZ2VWYWx1ZSA9IHN0YXRpY19jYXN0PFN0eWxl
RGVsYXlMb2FkZWRJbWFnZSo+KG1hc2tCb3hJbWFnZS5pbWFnZSgpKS0+Y3NzSW1hZ2VWYWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXNrQm94SW1hZ2UoTmluZVBpZWNl
SW1hZ2UoaW1hZ2VWYWx1ZS0+Y2FjaGVkSW1hZ2UoZG9jTG9hZGVyKSwgbWFza0JveEltYWdlLnNs
aWNlcygpLCBtYXNrQm94SW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSwgbWFza0JveEltYWdlLnZlcnRp
Y2FsUnVsZSgpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza0ltYWdlOiB7CisgICAgICAgICAgICAgICAgZm9yIChGaWxsTGF5ZXIqIG1hc2tM
YXllciA9IG1fc3R5bGUtPmFjY2Vzc01hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIg
PSBtYXNrTGF5ZXItPm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWFza0xheWVy
LT5pbWFnZSgpICYmIG1hc2tMYXllci0+aW1hZ2UoKS0+aXNEZWxheUxvYWRpbmdJbWFnZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8U3R5bGVEZWxheUxvYWRlZEltYWdlKj4obWFza0xheWVyLT5pbWFnZSgpKS0+Y3Nz
SW1hZ2VWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbWFza0xheWVyLT5zZXRJbWFn
ZShpbWFnZVZhbHVlLT5jYWNoZWRJbWFnZShkb2NMb2FkZXIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2RlbGF5ZWRJbWFnZUxvYWRpbmdQ
cm9wZXJ0aWVzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuaAppbmRleCBiMGQ5NzdlLi5kMWVlNGM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CkBAIC0yNDAsMTYgKzI0MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgdXBkYXRlRm9udCgp
OwogICAgICAgICB2b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCi0gICAgICAgIHZv
aWQgbWFwRmlsbEF0dGFjaG1lbnQoRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICAgICAgdm9p
ZCBtYXBGaWxsQ2xpcChGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgICAgICB2b2lkIG1hcEZp
bGxDb21wb3NpdGUoRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICAgICAgdm9pZCBtYXBGaWxs
T3JpZ2luKEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgICAgIHZvaWQgbWFwRmlsbEltYWdl
KEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgICAgIHZvaWQgbWFwRmlsbFJlcGVhdFgoRmls
bExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICAgICAgdm9pZCBtYXBGaWxsUmVwZWF0WShGaWxsTGF5
ZXIqLCBDU1NWYWx1ZSopOwotICAgICAgICB2b2lkIG1hcEZpbGxTaXplKEZpbGxMYXllciosIENT
U1ZhbHVlKik7Ci0gICAgICAgIHZvaWQgbWFwRmlsbFhQb3NpdGlvbihGaWxsTGF5ZXIqLCBDU1NW
YWx1ZSopOwotICAgICAgICB2b2lkIG1hcEZpbGxZUG9zaXRpb24oRmlsbExheWVyKiwgQ1NTVmFs
dWUqKTsKKyAgICAgICAgdm9pZCBtYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqLCBDU1NWYWx1ZSopOworICAgICAgICB2b2lkIG1hcEZpbGxDbGlwKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0
ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgICAgICB2b2lkIG1h
cEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICAg
ICAgdm9pZCBtYXBGaWxsSW1hZ2UoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUq
KTsKKyAgICAgICAgdm9pZCBtYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
LCBDU1NWYWx1ZSopOworICAgICAgICB2b2lkIG1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgICAgIHZvaWQgbWFwRmlsbFNpemUoQ1NTUHJv
cGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICAgICAgdm9pZCBtYXBGaWxsWFBv
c2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgICAgIHZv
aWQgbWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSop
OwogCiAgICAgICAgIHZvaWQgbWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiwgQ1NTVmFsdWUq
KTsKICAgICAgICAgdm9pZCBtYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgbWFwQW5pbWF0
aW9uUHJvcGVydHkoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsKICAgICAgICAgdm9pZCBtYXBBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb24qLCBDU1NWYWx1ZSopOwogCi0gICAgICAgIHZv
aWQgbWFwTmluZVBpZWNlSW1hZ2UoQ1NTVmFsdWUqLCBOaW5lUGllY2VJbWFnZSYpOworICAgICAg
ICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiwgTmluZVBp
ZWNlSW1hZ2UmKTsKIAogICAgICAgICB2b2lkIGFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1
ZSopOwogICAgICAgICB2b2lkIGFwcGx5UGFnZVNpemVQcm9wZXJ0eShDU1NWYWx1ZSopOwpAQCAt
MjcyLDcgKzI3Miw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5KGlu
dCBpZCwgQ1NTVmFsdWUqKTsKICNlbmRpZgogCi0gICAgICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1h
Z2UoQ1NTVmFsdWUqIHZhbHVlKTsKKyAgICAgICAgdm9pZCBsb2FkSW1hZ2VzKCk7CisgICAgICAg
IAorICAgICAgICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJ
RCwgQ1NTVmFsdWUqIHZhbHVlKTsKIAogICAgICAgICAvLyBXZSBjb2xsZWN0IHRoZSBzZXQgb2Yg
ZGVjbHMgdGhhdCBtYXRjaCBpbiB8bV9tYXRjaGVkRGVjbHN8LiAgV2UgdGhlbiB3YWxrIHRoZQog
ICAgICAgICAvLyBzZXQgb2YgbWF0Y2hlZCBkZWNscyBmb3VyIHRpbWVzLCBvbmNlIGZvciB0aG9z
ZSBwcm9wZXJ0aWVzIHRoYXQgb3RoZXJzIGRlcGVuZCBvbiAobGlrZSBmb250LXNpemUpLApAQCAt
Mjg1LDYgKzI4Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPENTU1J1bGVEYXRhKiwgMzI+
IG1fbWF0Y2hlZFJ1bGVzOwogCiAgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlz
dDsKKyAgICAgICAgCisgICAgICAgIEhhc2hTZXQ8aW50PiBtX2RlbGF5ZWRJbWFnZUxvYWRpbmdQ
cm9wZXJ0aWVzOyAvLyBIYXNoIG9mIENTU1Byb3BlcnR5SURzCiAKICAgICAgICAgTWVkaWFRdWVy
eUV2YWx1YXRvciogbV9tZWRpdW07CiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9yb290
RGVmYXVsdFN0eWxlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAppbmRleCA0OWZiMjk0
Li41NGY2NmZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaApAQCAtOTEsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbXBvc2l0ZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcG9zaXRlU2V0OyB9CiAgICAgYm9vbCBpc1NpemVTZXQoKSBjb25zdCB7IHJldHVybiBtX3Np
emVUeXBlICE9IFNpemVOb25lOyB9CiAgICAgCi0gICAgdm9pZCBzZXRJbWFnZShTdHlsZUltYWdl
KiBpKSB7IG1faW1hZ2UgPSBpOyBtX2ltYWdlU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SW1h
Z2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpKSB7IG1faW1hZ2UgPSBpOyBtX2ltYWdlU2V0ID0g
dHJ1ZTsgfQogICAgIHZvaWQgc2V0WFBvc2l0aW9uKExlbmd0aCBsKSB7IG1feFBvc2l0aW9uID0g
bDsgbV94UG9zU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0WVBvc2l0aW9uKExlbmd0aCBsKSB7
IG1feVBvc2l0aW9uID0gbDsgbV95UG9zU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QXR0YWNo
bWVudChFRmlsbEF0dGFjaG1lbnQgYXR0YWNobWVudCkgeyBtX2F0dGFjaG1lbnQgPSBhdHRhY2ht
ZW50OyBtX2F0dGFjaG1lbnRTZXQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmlu
ZVBpZWNlSW1hZ2UuaAppbmRleCBjNDAwNTUxLi44ZTk5ZjhlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL05pbmVQaWVjZUltYWdlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgIT0gMDsgfQogICAgIFN0eWxl
SW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQotICAgIHZvaWQg
c2V0SW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9CisgICAgdm9p
ZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBpbWFn
ZTsgfQogICAgIAogICAgIGNvbnN0IExlbmd0aEJveCYgc2xpY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9zbGljZXM7IH0KICAgICB2b2lkIHNldFNsaWNlcyhjb25zdCBMZW5ndGhCb3gmIGwpIHsgbV9z
bGljZXMgPSBsOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBlODZj
NWUyLi5hNjA2Mzg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTg5
Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb3VudGVyUmVzZXQoc2hvcnQgdikg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2NvdW50ZXJSZXNldCwgdikgfQogCiAg
ICAgdm9pZCBzZXRMaXN0U3R5bGVUeXBlKEVMaXN0U3R5bGVUeXBlIHYpIHsgaW5oZXJpdGVkX2Zs
YWdzLl9saXN0X3N0eWxlX3R5cGUgPSB2OyB9Ci0gICAgdm9pZCBzZXRMaXN0U3R5bGVJbWFnZShT
dHlsZUltYWdlKiB2KSB7IGlmIChpbmhlcml0ZWQtPmxpc3Rfc3R5bGVfaW1hZ2UgIT0gdikgaW5o
ZXJpdGVkLmFjY2VzcygpLT5saXN0X3N0eWxlX2ltYWdlID0gdjsgfQorICAgIHZvaWQgc2V0TGlz
dFN0eWxlSW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiB2KSB7IGlmIChpbmhlcml0ZWQtPmxp
c3Rfc3R5bGVfaW1hZ2UgIT0gdikgaW5oZXJpdGVkLmFjY2VzcygpLT5saXN0X3N0eWxlX2ltYWdl
ID0gdjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9u
IHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uID0gdjsgfQogCiAgICAg
dm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLCBMZW5ndGhCb3go
Rml4ZWQpKSB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CmluZGV4IGI1NWM1YjkuLjFkN2FiYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUoKQor
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAog
ewogICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1faW1hZ2UtPnVybCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlLmgKaW5kZXggM2QyMjg2OC4uM2Q2ZTFhMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCk7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0OwogICAgIAog
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZWxheUxv
YWRlZEltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlbGF5TG9hZGVkSW1h
Z2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzc4MzZjCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZWxheUxvYWRlZEltYWdl
LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTdHlsZURlbGF5TG9hZGVkSW1hZ2VfaAorI2Rl
ZmluZSBTdHlsZURlbGF5TG9hZGVkSW1hZ2VfaAorCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFN0eWxlRGVsYXlMb2FkZWRJbWFnZSBpcyBhIHBs
YWNlaG9sZGVyIFN0eWxlSW1hZ2UgdGhhdCBpcyBlbnRlcmVkIGludG8gdGhlIFJlbmRlclN0eWxl
IGR1cmluZworLy8gc3R5bGUgcmVzb2x1dGlvbiBpbiBDU1NTdHlsZVNlbGVjdG9yLCBpbiBvcmRl
ciB0byBhdm9pZCBsb2FkaW5nIGltYWdlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZAorLy8gYnkg
dGhlIGZpbmFsIHN0eWxlLgorY2xhc3MgU3R5bGVEZWxheUxvYWRlZEltYWdlIDogcHVibGljIFN0
eWxlSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlRGVsYXlMb2Fk
ZWRJbWFnZT4gY3JlYXRlKENTU0ltYWdlVmFsdWUqIHZhbHVlKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVEZWxheUxvYWRlZEltYWdlKHZhbHVlKSk7IH0KKworICAgIHZpcnR1YWwgV3JhcHBl
ZEltYWdlUHRyIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgaXNEZWxheUxvYWRpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQorICAgIENTU0ltYWdlVmFsdWUqIGNzc0ltYWdlVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CisgICAgCisgICAgdmlydHVhbCBib29sIGNh
blJlbmRlcihmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IC8qbXVs
dGlwbGllciovKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3Qg
SW50U2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKSB7IH0KKyAg
ICB2aXJ0dWFsIEltYWdlKiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFN0eWxlRGVsYXlMb2FkZWRJbWFnZShDU1NJ
bWFnZVZhbHVlKiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWZQdHI8Q1NTSW1hZ2VWYWx1ZT4gbV92YWx1ZTsKK307CisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRl
eCA2MTBlNzNkLi4yMzIyZjVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVl
KCkKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9nZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUltYWdlLmgKaW5kZXggY2I5MDI4OC4uNjI4ZmJmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW1hZ2UuaApAQCAtMjQsNiArMjQsOCBAQAogI2lmbmRlZiBTdHlsZUltYWdlX2gKICNk
ZWZpbmUgU3R5bGVJbWFnZV9oCiAKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDEsMTIgKzQzLDI0IEBA
IGNsYXNzIFN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUltYWdlPiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U3R5bGVJbWFnZSgpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlSW1hZ2UmIG90aGVyKQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZUltYWdlJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBkYXRhKCkgPT0gb3Ro
ZXIuZGF0YSgpOworICAgICAgICBpZiAoaXNDYWNoZWRJbWFnZSgpICYmIG90aGVyLmlzQ2FjaGVk
SW1hZ2UoKSkgeworICAgICAgICAgICAgaWYgKGRhdGEoKSAmJiBvdGhlci5kYXRhKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGRhdGEoKSA9PSBvdGhlci5kYXRhKCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEFTU0VSVChjc3NWYWx1ZSgpLT5pc0ltYWdlVmFsdWUoKSAmJiBvdGhlci5j
c3NWYWx1ZSgpLT5pc0ltYWdlVmFsdWUoKSk7CisgICAgICAgICAgICAvLyBDb21wYXJlIFVSSXMu
CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KGNzc1ZhbHVl
KCkuZ2V0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpID09IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUq
PihvdGhlci5jc3NWYWx1ZSgpLmdldCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChpc0dlbmVyYXRlZEltYWdlKCkgJiYgb3RoZXIuaXNHZW5lcmF0ZWRJbWFn
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEoKSA9PSBvdGhlci5kYXRhKCk7CisgICAgICAg
IAorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhblJl
bmRlcihmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTYwLDcgKzc0
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0
KikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IElu
dFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNv
bnN0ID0gMDsKKwogICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEZWxheUxvYWRpbmdJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVkSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyAgYm9vbCBpbWFnZXNFcXVp
dmFsZW50KFN0eWxlSW1hZ2UqIGltYWdlMSwgU3R5bGVJbWFnZSogaW1hZ2UyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65622</attachid>
            <date>2010-08-26 14:57:05 -0700</date>
            <delta_ts>2010-08-26 15:10:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-24223-20100826145704.patch</filename>
            <type>text/plain</type>
            <size>42462</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNTJiN2QxODUwODI5MzI4MjdmNTlmNGRmNDI3OWFmYWI4OTJhMTU0Li5jYmRkNGVh
ODBhNDFmZTU1Y2IwNDNiYmVjMmE4M2U1MzdmMTA2ZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAK
IDIwMTAtMDgtMjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NTIGRvd25sb2Fk
cyBhbGwgYmFja2dyb3VuZCBpbWFnZXMgcmVsYXRlZCB0byBlbGVtZW50LCBpbnN0ZWFkIG9mIGp1
c3QgZmluYWwgcnVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQyMjMKKyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0cyB0aGF0IGxvZyB3aGljaCBp
bWFnZSByZXF1ZXN0cyBhcmUgbWFkZSBieSBDU1MuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nz
cy9ib3JkZXItaW1hZ2UtbG9hZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvY3NzL2JvcmRlci1pbWFnZS1sb2FkaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvY3NzL2Nzcy1pbWFnZS1sb2FkaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2Nzcy9tYXNrLWltYWdlLWxvYWRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9tYXNrLWltYWdlLWxvYWRpbmcuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVmbGVjdGlvbi1tYXNrLWltYWdlLWxvYWRpbmct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9yZWZsZWN0aW9u
LW1hc2staW1hZ2UtbG9hZGluZy5odG1sOiBBZGRlZC4KKworMjAxMC0wOC0yNiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIGh0dHAgdGVz
dHMgdG8gbG9nIHJlc291cmNlIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Nzcy9ib3JkZXItaW1hZ2UtbG9hZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nzcy9ib3JkZXItaW1hZ2UtbG9hZGluZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2FhOGZiZGI3MjlmNWMxYzg2MzNjNzIyOTY1Y2ZlY2RjZmEwOWYwNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2JvcmRlci1pbWFnZS1sb2FkaW5n
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Jlc291cmNlIHJlcXVlc3RzOgorCisKK2Jv
cmRlcjIuanBnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9ib3JkZXIt
aW1hZ2UtbG9hZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvYm9yZGVyLWlt
YWdlLWxvYWRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzUyMTI3MTAwZWU2MmQzN2MyODI3ODEzY2Y4
MjM3ZjYxYjIwMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
c3MvYm9yZGVyLWltYWdlLWxvYWRpbmcuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxo
ZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD1VVEYtOCI+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVxdWVzdC1sb2dn
aW5nLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4K
KworICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5ib3ggeworICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1
cmwoIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNl
LXJlcXVlc3QmcGF0aD1ib3JkZXIxLmpwZyIpIDEwIDEwIDEwIDEwIHN0cmV0Y2g7CisgICAgfQor
ICAgIAorICAgIC5ib3JkZXJlZCB7CisgICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKCIv
cmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1
ZXN0JnBhdGg9Ym9yZGVyMi5qcGciKSAxMCAxMCAxMCAxMCBzdHJldGNoOworICAgIH0KKyAgICAK
KyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCisgIDxkaXYgY2xhc3M9ImJveCBib3JkZXJl
ZCI+PC9kaXY+CisKKyAgPGgyPlJlc291cmNlIHJlcXVlc3RzOjwvaDI+CisgIDxwcmUgaWQ9InJl
c3VsdCI+UmVxdWVzdCBsb2cgZ29lcyBoZXJlIGluIERSVDwvcHJlPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY3NzLWltYWdlLWxvYWRp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY3NzLWltYWdlLWxv
YWRpbmctZXhwZWN0ZWQudHh0CmluZGV4IDZlOTc0MzQ3ZWI0MTFhM2YwY2RhNWJjMDAxOTk4MWIz
M2M3MmZhYjguLmMyOTNiMjMzNTQ0ZWM0NjVhMjkxYmEyMDA1YjIzYjgwNWE5Yzk0NzEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2Nzcy1pbWFnZS1sb2FkaW5nLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9jc3MtaW1hZ2UtbG9hZGlu
Zy1leHBlY3RlZC50eHQKQEAgLTIsMTAgKzIsNyBAQCBpdGVtCiBSZXNvdXJjZSByZXF1ZXN0czoK
IAogCi1iYWNrZ3JvdW5kMS5qcGcKIGJhY2tncm91bmQyLmpwZwotY29udGVudC1pbWFnZTEuanBn
CiBjb250ZW50LWltYWdlMi5qcGcKIGNvbnRlbnQtaW1hZ2UzLmpwZwotbGlzdC1pbWFnZTEuanBn
CiBsaXN0LWltYWdlMi5qcGcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3Nz
L21hc2staW1hZ2UtbG9hZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nzcy9tYXNrLWltYWdlLWxvYWRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZmI2YzBh
MzYwNWIyODg2MDhjOTc2NTJmMGRlZDA1NDRjZThlYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9tYXNrLWltYWdlLWxvYWRpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorUmVzb3VyY2UgcmVxdWVzdHM6CisKKworbWFzazIuanBnCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9tYXNrLWltYWdlLWxvYWRpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL21hc2staW1hZ2UtbG9hZGluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRmMjgxOTFiNWU5NDEwNDRkZDZmOTE5ZjYzOTVlNGY5MmJjMDMxNjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9tYXNrLWltYWdlLWxvYWRpbmcu
aHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CisgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVxdWVzdC1sb2dnaW5nLmpzIiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKworICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorICAgIC5ib3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgIC13ZWJraXQtbWFzay1ib3gtaW1hZ2U6IHVybCgiL3Jlc291cmNlcy9uZXR3b3Jr
LXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1hc2sxLmpw
ZyIpOworICAgIH0KKyAgICAKKyAgICAubWFza2VkIHsKKyAgICAgIC13ZWJraXQtbWFzay1ib3gt
aW1hZ2U6IHVybCgiL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ct
cmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1hc2syLmpwZyIpOworICAgIH0KKyAgICAKKyAgPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorCisgIDxkaXYgY2xhc3M9ImJveCBtYXNrZWQiPjwvZGl2Pgor
CisgIDxoMj5SZXNvdXJjZSByZXF1ZXN0czo8L2gyPgorICA8cHJlIGlkPSJyZXN1bHQiPlJlcXVl
c3QgbG9nIGdvZXMgaGVyZSBpbiBEUlQ8L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3JlZmxlY3Rpb24tbWFzay1pbWFnZS1sb2Fk
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3JlZmxlY3Rpb24t
bWFzay1pbWFnZS1sb2FkaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGZiNmMwYTM2MDVi
Mjg4NjA4Yzk3NjUyZjBkZWQwNTQ0Y2U4ZWMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jc3MvcmVmbGVjdGlvbi1tYXNrLWltYWdlLWxvYWRpbmctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorUmVzb3VyY2UgcmVxdWVzdHM6CisKKworbWFzazIuanBnCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZWZsZWN0aW9uLW1hc2staW1h
Z2UtbG9hZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVmbGVjdGlvbi1t
YXNrLWltYWdlLWxvYWRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2U2OGQ5M2JhYzBkN2IzNThmNWQ5
MWQzYjY2NWRmYTY5ODA2ODgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jc3MvcmVmbGVjdGlvbi1tYXNrLWltYWdlLWxvYWRpbmcuaHRtbApAQCAtMCwwICsxLDI1
IEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcmVxdWVzdC1sb2dnaW5nLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij48L3NjcmlwdD4KKworICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5ib3ggewor
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIC13ZWJraXQt
Ym94LXJlZmxlY3Q6IGJlbG93IDEwcHggdXJsKCIvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWFzazEuanBnIik7CisgICAg
fQorICAgIAorICAgIC5yZWZsZWN0ZWQgeworICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogYmVs
b3cgMTBweCB1cmwoIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9n
LXJlc291cmNlLXJlcXVlc3QmcGF0aD1tYXNrMi5qcGciKTsKKyAgICB9CisgICAgCisgIDwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iYm94IHJlZmxlY3RlZCI+PC9kaXY+
CisKKyAgPGgyPlJlc291cmNlIHJlcXVlc3RzOjwvaDI+CisgIDxwcmUgaWQ9InJlc3VsdCI+UmVx
dWVzdCBsb2cgZ29lcyBoZXJlIGluIERSVDwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NDUzNzUx
YTM4MzRjYzYwNzFlYWEyMTZlN2U5MmFkZDZkNTcwNWRhLi5mMzVkNTJiZTI2ZDMxZDM1MWJlOTlm
ZmQ0NDM3NjQ2MTM4Mzg0NmMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEwLTA4LTI2ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENTUyBkb3dubG9hZHMgYWxsIGJhY2tncm91bmQgaW1hZ2Vz
IHJlbGF0ZWQgdG8gZWxlbWVudCwgaW5zdGVhZCBvZiBqdXN0IGZpbmFsIHJ1bGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MjIzCisgICAgICAgIAor
ICAgICAgICBXZSB1c2VkIHRvIGtpY2sgb2ZmIGltYWdlIGxvYWRzIGF0IHRoZSBwb2ludCB3aGVy
ZSB0aGUgc3R5bGUgc2VsZWN0b3IKKyAgICAgICAgYXBwbGllcyBhIENTUyBydWxlIHRvIGFuIGVs
ZW1lbnQsIGV2ZW4gaWYgdGhhdCBydWxlIHdhcyBvdmVycmlkZGVuCisgICAgICAgIGJ5IGEgcnVs
ZSBpbiBhIGxhdGVyIGJsb2NrIG9mIHJ1bGVzLiBUaGlzIGNhdXNlZCBsb2FkcyBvZiBpbWFnZXMg
dGhhdAorICAgICAgICB3ZXJlbid0IGFjdHVhbGx5IHVzZWQuCisgICAgICAgIAorICAgICAgICBG
aXggdGhpcyBieSBkZWxheWluZyBpbWFnZSBsb2FkcyB1bnRpbCB0aGUgc3R5bGUgaGFzIGJlZW4g
ZnVsbHkKKyAgICAgICAgcmVzb2x2ZWQuIFRoaXMgaXMgYWNoaWV2ZWQgYnkgaW5zZXJ0aW5nIGEg
U3R5bGVQZW5kaW5nSW1hZ2UgaW50bworICAgICAgICB0aGUgUmVuZGVyU3R5bGUgZm9yIGR1cmF0
aW9uIG9mIHRoZSBzdHlsZSByZXNvbHV0aW9uLCBhbmQga2VlcGluZworICAgICAgICBhbiBlbnRy
eSBpbiBhIGhhc2ggZm9yIHRoZSByZWxldmFudCBDU1MgcHJvcGVydHkuCisgICAgICAgIAorICAg
ICAgICBBdCB0aGUgZW5kIG9mIHN0eWxlIHJlc29sdXRpb24sIHdlIGl0ZXJhdGUgdGhyb3VnaCB0
aGUgaGFzaCwgYW5kCisgICAgICAgIHJlcGxhY2UgdGhlIFN0eWxlUGVuZGluZ0ltYWdlIHdpdGgg
U3R5bGVDYWNoZWRJbWFnZXMsIHdoaWNoCisgICAgICAgIGNhdXNlcyB0aGUgbG9hZHMgdG8gaGFw
cGVuIG9ubHkgZm9yIGltYWdlcyB0aGF0IGFyZSBpbiB0aGUgZmluYWwgc3R5bGUuICAgICAgICAK
KworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9jc3MvYm9yZGVyLWltYWdlLWxvYWRpbmcuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9jc3MvbWFzay1pbWFnZS1sb2FkaW5nLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL3JlZmxlY3Rpb24tbWFzay1pbWFnZS1sb2Fk
aW5nLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgU3R5bGVQZW5kaW5nSW1h
Z2UuaAorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8KKworICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVl
Lmg6IENoYW5nZSBtX2ltYWdlIHRvIGEgUmVmUHRyPFN0eWxlSW1hZ2U+LAorICAgICAgICBzaW5j
ZSBpdCBtYXkgYmUgYSBTdHlsZVBlbmRpbmdJbWFnZSBvciBTdHlsZUNhY2hlZEltYWdlLgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdl
VmFsdWU6On5DU1NJbWFnZVZhbHVlKTogT25seSBjYWxsIHJlbW92ZUNsaWVudCBpZiBpdCdzIGEg
Y2FjaGVkSW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjYWNoZWRPclBl
bmRpbmdJbWFnZSk6IElmIHdlIGhhdmUgYW4gaW1hZ2UgKHBlbmRpbmcgb3IgY2FjaGVkKSwKKyAg
ICAgICAgcmV0dXJuIGl0LiBPdGhlcndpc2UgbWFrZSBhIHBlbmRpbmcgaW1hZ2UgYW5kIHJldHVy
biBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKTogT25s
eSByZXR1cm4gdGhlIGltYWdlIGlmIGl0J3MgYSBjYWNoZWQgaW1hZ2UuCisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NJbWFnZVZhbHVlOjpjbGVhckNhY2hlZEltYWdlKToKKworICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eWxlUmVzb2x2ZSk6IENsZWFy
IG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OnN0eWxlRm9yRWxlbWVudCk6IExvYWQgcGVuZGluZyBpbWFnZXMuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvcktleWZyYW1lKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yUGFnZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6IFB1bGwgcHJvcGVydHkgaW50byBhIGxvY2FsIHZhcmlhYmxlCisgICAgICAgIHNvIHdlIGNh
biB1c2UgaXQgaW4gbWFjcm9zLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbEF0dGFjaG1lbnQpOiBQYXNzIHRoZSBwcm9wZXJ0eSBkb3duIChuZWVkZWQgdG8gYXZv
aWQKKyAgICAgICAgYWRkaXRpb25hbCBtYWNybyBjb21wbGV4aXR5KS4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDbGlwKTogRGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGUpOiBEaXR0bworICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbE9yaWdpbik6IERpdHRvCisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUltYWdlKTogQ2FsbCBjYWNoZWRPclBl
bmRpbmdGcm9tVmFsdWUoKQorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2Fj
aGVkT3JQZW5kaW5nRnJvbVZhbHVlKTogR2V0IHRoZSBjYWNoZWRPclBlbmRpbmdJbWFnZSgpCisg
ICAgICAgIGZyb20gdGhlIENTU1ZhbHVlLCBhbmQgaWYgaXQncyBhIHBlbmRpbmcgaW1hZ2UsIHJl
Y29yZCB0aGUgcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsSW1hZ2UpOiBQYXNzIHRoZSBwcm9wZXJ0eSBkb3duIChuZWVkZWQgdG8gYXZvaWQKKyAg
ICAgICAgYWRkaXRpb25hbCBtYWNybyBjb21wbGV4aXR5KS4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRYKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRZKTogRGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKTogRGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxYUG9zaXRpb24pOiBEaXR0bworICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFlQb3NpdGlvbik6IERpdHRvCisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBOaW5lUGllY2VJbWFnZSk6IERpdHRv
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpsb2FkUGVuZGluZ0ltYWdlcyk6
IEl0ZXJhdGUgdGhyb3VnaCB0aGUgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzCisgICAgICAgIGhh
c2gsIGFuZCByZXBsYWNlIHRoZSBwZW5kaW5nIGltYWdlcyB3aXRoIGNhY2hlZCBpbWFnZXMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oOiBNYWtlIGNzc1Zh
bHVlKCkgY29uc3QuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUpOgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDogIE1ha2UgY3Nz
VmFsdWUoKSBjb25zdC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1
ZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVJbWFnZTo6b3BlcmF0b3I9PSk6IE1ha2UgY29uc3QuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUltYWdlOjppc1BlbmRpbmdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmg6IEFkZGVkLgorCiAyMDEwLTA4LTI2ICBQZXRlciBL
YXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyNzA3YTFhNjA1N2ZmOGFkYjkzY2U4ZGFiNjMyODRlOGU0
NzBiZTFmLi5mZTQ5ZWUwN2RkYmE1ZWNjZGFjMTEwNmJiM2VjNTEyNGQ0MDA3MmYwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTI0MTEsNiArMjQxMSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TXVsdGlDb2xEYXRhLmggXAorCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0lt
YWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgg
XAogCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggM2YwYzZkZTNjNWRhZDdlMmYwMTk3YjFiNWFkMWZhZmVlNGRlMTNlOC4uY2Y2ZWY3
Mjk0ZDI3MGNjODRiZWFlNGI1YzEyZjYwZmIyYTFlNTY5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMyMzgsNiArMzIzOCw3
IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuaCcsCiAg
ICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgnLAorICAgICAgICAg
ICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCcsCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkZDJiYmU2YzNlYTQyNTg1ZTA0OWQxMWY3
ZTA5NDgxNzBkY2VjY2E1Li4wMGMwZmNjODU1Y2JiZTc4YWNmOTQ0MDNjMGQwMGU4MjY2Y2ZiYWY1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyOTgyLDYgKzMyOTgy
LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcU3R5bGVQZW5kaW5nSW1hZ2UuaCINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdc
c3R5bGVcU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJlMjYxOTc3
NTY3YmI2MjRhZDM5NTY3Y2JkYmI4YjhiNDk1MmFjNjkuLmRjNjg0YjY1M2QwYmZkMzNhZDI4OWQ4
OGFlMzUyMTgwNDVlNmM3MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMDQzNSw2ICsyMDQzNSw3IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29t
cGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0g
RW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25z
ID0gKAogCQkJCUVuZ2xpc2gsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IDk2YThkZWMyYTY3ZDAx
MmU0NTBhMzczZGI5ZDI2ZmE0OTlkMTVjZWMuLjA1OGQwZTlkY2RlM2NiNTBkOGQ5MjE5MGZlOWRi
M2M4OGI0MGMxMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisr
KyBiL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJT
dHlsZUNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVQZW5kaW5nSW1hZ2UuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw4ICs0NCwxNiBAQCBDU1NJbWFnZVZhbHVlOjpDU1NJ
bWFnZVZhbHVlKCkKIAogQ1NTSW1hZ2VWYWx1ZTo6fkNTU0ltYWdlVmFsdWUoKQogewotICAgIGlm
IChtX2ltYWdlKQotICAgICAgICBtX2ltYWdlLT5jYWNoZWRJbWFnZSgpLT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAg
ICAgICBzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4obV9pbWFnZS5nZXQoKSktPmNhY2hl
ZEltYWdlKCktPnJlbW92ZUNsaWVudCh0aGlzKTsKK30KKworU3R5bGVJbWFnZSogQ1NTSW1hZ2VW
YWx1ZTo6Y2FjaGVkT3JQZW5kaW5nSW1hZ2UoKQoreworICAgIGlmICghbV9pbWFnZSkKKyAgICAg
ICAgbV9pbWFnZSA9IFN0eWxlUGVuZGluZ0ltYWdlOjpjcmVhdGUodGhpcyk7CisKKyAgICByZXR1
cm4gbV9pbWFnZS5nZXQoKTsKIH0KIAogU3R5bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6
Y2FjaGVkSW1hZ2UoRG9jTG9hZGVyKiBsb2FkZXIpCkBAIC03MSwyMCArODAsMjAgQEAgU3R5bGVD
YWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoRG9jTG9hZGVyKiBsb2FkZXIs
IGNvbnN0IFN0cmluZyYgdXIKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gbV9p
bWFnZS5nZXQoKTsKKyAgICByZXR1cm4gbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpID8gc3RhdGlj
X2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KG1faW1hZ2UuZ2V0KCkpIDogMDsKIH0KIAogU3RyaW5n
IENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlVVJMKCkKIHsKLSAgICBpZiAoIW1faW1hZ2UpCisg
ICAgaWYgKCFtX2ltYWdlIHx8ICFtX2ltYWdlLT5pc0NhY2hlZEltYWdlKCkpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+dXJsKCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihtX2ltYWdlLmdldCgp
KS0+Y2FjaGVkSW1hZ2UoKS0+dXJsKCk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6Y2xlYXJD
YWNoZWRJbWFnZSgpCiB7Ci0gICAgaWYgKG1faW1hZ2UpCi0gICAgICAgIG1faW1hZ2UtPmNhY2hl
ZEltYWdlKCktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdl
LT5pc0NhY2hlZEltYWdlKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2Uq
PihtX2ltYWdlLmdldCgpKS0+Y2FjaGVkSW1hZ2UoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAg
IG1faW1hZ2UgPSAwOwogICAgIG1fYWNjZXNzZWRJbWFnZSA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5oCmluZGV4IGExNzE1Y2Q5YWQxMGQxOWVlMTBlNGJmZmY1YzNkZTI3MDU5OGM2OTQuLjQyMDVj
NGZlNjQyMzNiNzkyYzlhNGQwMjNlOWQ2ODRmNGE0OWVkMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAg
LTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2NMb2FkZXI7CiBj
bGFzcyBTdHlsZUNhY2hlZEltYWdlOworY2xhc3MgU3R5bGVJbWFnZTsKIAogY2xhc3MgQ1NTSW1h
Z2VWYWx1ZSA6IHB1YmxpYyBDU1NQcmltaXRpdmVWYWx1ZSwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6CkBAIC0zNyw2ICszOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DU1NJbWFnZVZhbHVlKCk7CiAKICAgICB2aXJ0dWFsIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlKERvY0xvYWRlciopOworICAgIC8vIFJldHVybnMgYSBTdHlsZUNhY2hlZEltYWdlIGlm
IHRoZSBpbWFnZSBpcyBjYWNoZWQgYWxyZWFkeSwgb3RoZXJ3aXNlIGEgU3R5bGVQZW5kaW5nSW1h
Z2UuCisgICAgU3R5bGVJbWFnZSogY2FjaGVkT3JQZW5kaW5nSW1hZ2UoKTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC01
MCw3ICs1Myw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ1NTSW1hZ2VWYWx1ZSgpOwog
Ci0gICAgUmVmUHRyPFN0eWxlQ2FjaGVkSW1hZ2U+IG1faW1hZ2U7CisgICAgUmVmUHRyPFN0eWxl
SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2FjY2Vzc2VkSW1hZ2U7CiB9OwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCmluZGV4IDg0NzdlZDc3MmQwNTg0MmYxYWYyMzdmNTFjZjFlMTU3MTUw
OWM2NTEuLjJhYmI4ZWJhZjYxZThiZTc3MzVlODE0MmZkMTI0YmJjNmQzMTMyNDIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAiU2hhZG93VmFs
dWUuaCIKICNpbmNsdWRlICJTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5
bGVDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIlN0eWxlUGVuZGluZ0ltYWdlLmgiCiAjaW5jbHVk
ZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgpAQCAtMTk5LDEyICsyMDAsMTIgQEAgaWYgKHZhbHVlLT5pc1ZhbHVl
TGlzdCgpKSB7IFwKICAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJU
eXBlIyNGaWxsTGF5ZXIpOyBcCiAgICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNo
aWxkKTsgXAogICAgICAgICB9IFwKLSAgICAgICAgbWFwRmlsbCMjUHJvcChjdXJyQ2hpbGQsIHZh
bHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAgICAgICAgbWFwRmlsbCMj
UHJvcChwcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSkpOyBcCiAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAogICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAogICAgIH0gXAogfSBlbHNlIHsgXAotICAgIG1h
cEZpbGwjI1Byb3AoY3VyckNoaWxkLCB2YWx1ZSk7IFwKKyAgICBtYXBGaWxsIyNQcm9wKHByb3Bl
cnR5LCBjdXJyQ2hpbGQsIHZhbHVlKTsgXAogICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4
dCgpOyBcCiB9IFwKIHdoaWxlIChjdXJyQ2hpbGQpIHsgXApAQCAtODU1LDYgKzg1Niw4IEBAIGlu
bGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCog
ZSwgUmVuZGVyU3R5bGUqIHBhcmVuCiAKICAgICBtX21hdGNoZWREZWNscy5jbGVhcigpOwogCisg
ICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmNsZWFyKCk7CisKICAgICBtX3J1bGVMaXN0ID0g
MDsKIAogICAgIG1fZm9udERpcnR5ID0gZmFsc2U7CkBAIC0xMzU3LDYgKzEzNjAsOSBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxl
bWVudCogZSwgUmVuZGVyU3R5bAogICAgIC8vIENsZWFuIHVwIG91ciBzdHlsZSBvYmplY3QncyBk
aXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRpb25zIChhbW9uZyBvdGhlciBmaXh1cHMpLgogICAgIGFk
anVzdFJlbmRlclN0eWxlKHN0eWxlKCksIGUpOwogCisgICAgLy8gU3RhcnQgbG9hZGluZyBpbWFn
ZXMgcmVmZXJlbmNlZCBieSB0aGlzIHN0eWxlLgorICAgIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CisK
ICAgICAvLyBJZiB3ZSBoYXZlIGZpcnN0LWxldHRlciBwc2V1ZG8gc3R5bGUsIGRvIG5vdCBzaGFy
ZSB0aGlzIHN0eWxlCiAgICAgaWYgKG1fc3R5bGUtPmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRF
UikpCiAgICAgICAgIG1fc3R5bGUtPnNldFVuaXF1ZSgpOwpAQCAtMTQxNSw2ICsxNDIxLDkgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JLZXlmcmFt
ZShjb25zdCBSZW5kZXJTdHlsZSogZWwKICAgICBpZiAobV9mb250RGlydHkpCiAgICAgICAgIHVw
ZGF0ZUZvbnQoKTsKIAorICAgIC8vIFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkg
dGhpcyBzdHlsZS4KKyAgICBsb2FkUGVuZGluZ0ltYWdlcygpOworCiAgICAgLy8gQWRkIGFsbCB0
aGUgYW5pbWF0aW5nIHByb3BlcnRpZXMgdG8gdGhlIGxpc3QKICAgICBpZiAoa2V5ZnJhbWVSdWxl
LT5zdHlsZSgpKSB7CiAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBrZXlmcmFtZVJ1bGUtPnN0eWxlKCktPmVuZCgpOwpAQCAtMTU3MCw2ICsx
NTc5LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRv
U3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywKICAgICAvLyBDbGVhbiB1cCBvdXIgc3R5
bGUgb2JqZWN0J3MgZGlzcGxheSBhbmQgdGV4dCBkZWNvcmF0aW9ucyAoYW1vbmcgb3RoZXIgZml4
dXBzKS4KICAgICBhZGp1c3RSZW5kZXJTdHlsZShzdHlsZSgpLCAwKTsKIAorICAgIC8vIFN0YXJ0
IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkgdGhpcyBzdHlsZS4KKyAgICBsb2FkUGVuZGlu
Z0ltYWdlcygpOworCiAgICAgLy8gSGFuZyBvdXIgdmlzaXRlZCBzdHlsZSBvZmYgbV9zdHlsZS4K
ICAgICBpZiAodmlzaXRlZFN0eWxlKQogICAgICAgICBtX3N0eWxlLT5hZGRDYWNoZWRQc2V1ZG9T
dHlsZSh2aXNpdGVkU3R5bGUucmVsZWFzZSgpKTsKQEAgLTE2MDQsNiArMTYxNiw5IEBAIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yUGFnZShpbnQgcGFn
ZUluZGV4KQogCiAgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCAwLCBtX21hdGNo
ZWREZWNscy5zaXplKCkgLSAxKTsKIAorICAgIC8vIFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVy
ZW5jZWQgYnkgdGhpcyBzdHlsZS4KKyAgICBsb2FkUGVuZGluZ0ltYWdlcygpOworCiAgICAgLy8g
Tm93IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQpA
QCAtMzEyMSw3ICszMTM2LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5
KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIGxpc3Qg
dGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgZnJv
bnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAgU2hvcnRoYW5kcyAoZS5nLiBib3Jk
ZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBhcyB3ZWxsIGFuZAogICAgIC8vIGFy
ZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9yICJpbml0aWFsIiBpbnRvIGZyb250
LWVuZCB2YWx1ZXMuCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCkp
IHsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4oaWQpOworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKIC8vIGlkZW50IG9ubHkgcHJvcGVydGll
cwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKICAgICAgICAgSEFO
RExFX0JBQ0tHUk9VTkRfVkFMVUUoYXR0YWNobWVudCwgQXR0YWNobWVudCwgdmFsdWUpCkBAIC0z
NTEyLDcgKzM1MjgsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50
IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+dXBk
YXRlSWZTVkdDdXJzb3JJc1VzZWQobV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vy
c29ycyBhcmUgbm90IGFsbG93ZWQgdG8gc2hhcmUgc3R5bGUuCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRlbXBvcmFyeSBjbHVtc2luZXNzIHRvIHBhc3Mgb2ZmIGEgQ2FjaGVkSW1hZ2UgdG8gYW4gQVBJ
IHRoYXQgd2lsbCBldmVudHVhbGx5IGNvbnZlcnQgdG8gdXNpbmcKLSAgICAgICAgICAgICAgICAg
ICAgLy8gU3R5bGVJbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgLy8gU3R5bGVJbWFnZS4gU2hv
dWxkIGFsc28gYmUgZml4ZWQgdG8gdXNlIFN0eWxlUGVuZGluZ0ltYWdlIGF0IHRoZSBzYW1lIHRp
bWUuCiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUNhY2hlZEltYWdlPiBzdHlsZUNh
Y2hlZEltYWdlKGltYWdlLT5jYWNoZWRJbWFnZShtX2VsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xv
YWRlcigpKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZUNhY2hlZEltYWdlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+YWRkQ3Vyc29yKHN0eWxlQ2FjaGVkSW1hZ2Ut
PmNhY2hlZEltYWdlKCksIGltYWdlLT5ob3RTcG90KCkpOwpAQCAtMzYxMiw3ICszNjI4LDcgQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZh
bHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToKICAgICB7CiAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxpc3RTdHlsZUltYWdlLCBMaXN0U3R5bGVJbWFn
ZSkKLSAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2Uoc3R5bGVJbWFnZSh2YWx1ZSkp
OworICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShzdHlsZUltYWdlKENTU1Byb3Bl
cnR5TGlzdFN0eWxlSW1hZ2UsIHZhbHVlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQyNzQsOCArNDI5MCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19VUkk6IHsKLSAgICAgICAgICAgICAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1hZ2UgPSBzdGF0
aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4odmFsKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Q29udGVudChpbWFnZS0+Y2FjaGVkSW1hZ2UobV9lbGVtZW50LT5kb2N1bWVudCgpLT5k
b2NMb2FkZXIoKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENv
bnRlbnQoY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwgc3RhdGlj
X2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHZhbCkpLCBkaWRTZXQpOwogICAgICAgICAgICAgICAgICAg
ICBkaWRTZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CkBAIC00NzAyLDcgKzQ3MTcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgIH0KIAogICAgICAgICBO
aW5lUGllY2VJbWFnZSBpbWFnZTsKLSAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UodmFsdWUsIGlt
YWdlKTsKKyAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UocHJvcGVydHksIHZhbHVlLCBpbWFnZSk7
CiAgICAgICAgIAogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFn
ZSkKICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckltYWdlKGltYWdlKTsKQEAgLTQ4NTIs
NyArNDg2Nyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQs
IENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQo
TGVuZ3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgo
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpKTsKICAgICAg
ICAgfQogICAgICAgICBOaW5lUGllY2VJbWFnZSBtYXNrOwotICAgICAgICBtYXBOaW5lUGllY2VJ
bWFnZShyZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7CisgICAgICAgIG1hcE5pbmVQaWVjZUlt
YWdlKHByb3BlcnR5LCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7CiAgICAgICAgIHJlZmxl
Y3Rpb24tPnNldE1hc2sobWFzayk7CiAgICAgICAgIAogICAgICAgICBtX3N0eWxlLT5zZXRCb3hS
ZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKQEAgLTU2NzcsNyArNTY5Miw3IEBAIExlbmd0
aCBDU1NTdHlsZVNlbGVjdG9yOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQogICAgIHJldHVybiBM
ZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbmNoLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lOKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUpLCBGaXhlZCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFj
aG1lbnQoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBD
U1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsKICAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoRmls
bExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUoKSkpOwpAQCAtNTcwMyw3
ICs1NzE4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChGaWxs
TGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgfQogfQogCi12b2lkIENTU1N0eWxl
U2VsZWN0b3I6Om1hcEZpbGxDbGlwKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
K3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENsaXAoQ1NTUHJvcGVydHlJRCwgRmlsbExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVU
eXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CiAgICAgICAgIGxheWVyLT5zZXRDbGlw
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwKGxheWVyLT50eXBlKCkpKTsKQEAgLTU3MTcsNyAr
NTczMiw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENsaXAoRmlsbExheWVyKiBs
YXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5zZXRDbGlwKCpwcmltaXRpdmVWYWx1
ZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENvbXBvc2l0ZShGaWxsTGF5
ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZp
bGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19J
TklUSUFMKSB7CiAgICAgICAgIGxheWVyLT5zZXRDb21wb3NpdGUoRmlsbExheWVyOjppbml0aWFs
RmlsbENvbXBvc2l0ZShsYXllci0+dHlwZSgpKSk7CkBAIC01NzMxLDcgKzU3NDYsNyBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGUoRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5zZXRDb21wb3NpdGUoKnByaW1pdGl2ZVZhbHVlKTsK
IH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsT3JpZ2luKEZpbGxMYXllciogbGF5
ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbE9yaWdp
bihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsK
ICAgICAgICAgbGF5ZXItPnNldE9yaWdpbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2luKGxh
eWVyLT50eXBlKCkpKTsKQEAgLTU3NDUsMjYgKzU3NjAsMzYgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsT3JpZ2luKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICBsYXllci0+c2V0T3JpZ2luKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLVN0eWxlSW1hZ2UqIENT
U1N0eWxlU2VsZWN0b3I6OnN0eWxlSW1hZ2UoQ1NTVmFsdWUqIHZhbHVlKQorU3R5bGVJbWFnZSog
Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NW
YWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmNhY2hlZEltYWdlKG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpOworICAgICAgICByZXR1cm4gY2FjaGVk
T3JQZW5kaW5nRnJvbVZhbHVlKHByb3BlcnR5LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4o
dmFsdWUpKTsKKwogICAgIGlmICh2YWx1ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4odmFsdWUpLT5n
ZW5lcmF0ZWRJbWFnZSgpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwRmlsbEltYWdlKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK1N0
eWxlSW1hZ2UqIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlKiB2YWx1ZSkKK3sKKyAgICBTdHlsZUlt
YWdlKiBpbWFnZSA9IHZhbHVlLT5jYWNoZWRPclBlbmRpbmdJbWFnZSgpOworICAgIGlmIChpbWFn
ZS0+aXNQZW5kaW5nSW1hZ2UoKSkKKyAgICAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmFk
ZChwcm9wZXJ0eSk7CisgICAgcmV0dXJuIGltYWdlOworfQorCit2b2lkIENTU1N0eWxlU2VsZWN0
b3I6Om1hcEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBD
U1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsKICAgICAgICAgbGF5ZXItPnNldEltYWdlKEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxJbWFnZShsYXllci0+dHlwZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBsYXllci0+c2V0SW1hZ2Uoc3R5bGVJbWFnZSh2YWx1ZSkpOworICAgIGxheWVy
LT5zZXRJbWFnZShzdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOwogfQogCi12b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRYKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+
Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CiAgICAgICAgIGxheWVy
LT5zZXRSZXBlYXRYKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYKGxheWVyLT50eXBlKCkp
KTsKQEAgLTU3NzgsNyArNTgwMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJl
cGVhdFgoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5zZXRS
ZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
RmlsbFJlcGVhdFkoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9
PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsKICAgICAgICAgbGF5ZXItPnNldFJlcGVhdFkoRmls
bExheWVyOjppbml0aWFsRmlsbFJlcGVhdFkobGF5ZXItPnR5cGUoKSkpOwpAQCAtNTc5Miw3ICs1
ODE3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WShGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgbGF5ZXItPnNldFJlcGVhdFkoKnByaW1pdGl2
ZVZhbHVlKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShGaWxsTGF5
ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZp
bGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
IHsKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXIt
PnNldFNpemVUeXBlKFNpemVOb25lKTsKQEAgLTU4NTQsNyArNTg3OSw3IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0
b3I6Om1hcEZpbGxYUG9zaXRpb24oRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQor
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmNzc1Zh
bHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfSU5JVElBTCkgewogICAgICAgICBsYXllci0+c2V0
WFBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkp
OwpAQCAtNTg3OCw3ICs1OTAzLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBv
c2l0aW9uKEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBsYXllci0+c2V0
WFBvc2l0aW9uKGwpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxZUG9zaXRp
b24oRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1Zh
bHVlOjpDU1NfSU5JVElBTCkgewogICAgICAgICBsYXllci0+c2V0WVBvc2l0aW9uKEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxZUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOwpAQCAtNjA2Niw3ICs2MDkx
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihB
bmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUKICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwTmluZVBpZWNlSW1hZ2UoQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFn
ZSYgaW1hZ2UpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdl
KQogewogICAgIC8vIElmIHdlJ3JlIGEgcHJpbWl0aXZlIHZhbHVlLCB0aGVuIHdlIGFyZSAibm9u
ZSIgYW5kIGRvbid0IG5lZWQgdG8gYWx0ZXIgdGhlIGVtcHR5IGltYWdlIGF0IGFsbC4KICAgICBp
ZiAoIXZhbHVlIHx8IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC02MDc2LDcgKzYxMDEs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlKENTU1ZhbHVlKiB2
YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogICAgIENTU0JvcmRlckltYWdlVmFsdWUqIGJv
cmRlckltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQm9yZGVySW1hZ2VWYWx1ZSo+KHZhbHVlKTsKICAg
ICAKICAgICAvLyBTZXQgdGhlIGltYWdlICh0aGlzIGtpY2tzIG9mZiB0aGUgbG9hZCkuCi0gICAg
aW1hZ2Uuc2V0SW1hZ2Uoc3R5bGVJbWFnZShib3JkZXJJbWFnZS0+aW1hZ2VWYWx1ZSgpKSk7Cisg
ICAgaW1hZ2Uuc2V0SW1hZ2Uoc3R5bGVJbWFnZShwcm9wZXJ0eSwgYm9yZGVySW1hZ2UtPmltYWdl
VmFsdWUoKSkpOwogCiAgICAgLy8gU2V0IHVwIGEgbGVuZ3RoIGJveCB0byByZXByZXNlbnQgb3Vy
IGltYWdlIHNsaWNlcy4KICAgICBMZW5ndGhCb3ggbDsKQEAgLTY2ODUsNCArNjcxMCw5MCBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUq
IGluVmFsdWUsIFJlbmRlclN0eWxlKgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmxvYWRQZW5kaW5nSW1hZ2VzKCkKK3sKKyAgICBpZiAobV9wZW5kaW5nSW1h
Z2VQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBI
YXNoU2V0PGludD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ0ltYWdlUHJvcGVydGll
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8aW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Bl
bmRpbmdJbWFnZVByb3BlcnRpZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IENTU1Byb3BlcnR5SUQgY3VycmVudFByb3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4oKml0KTsKKworICAgICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlciA9IG1fZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZG9jTG9hZGVyKCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGN1cnJlbnRQ
cm9wZXJ0eSkgeworICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZTog
eworICAgICAgICAgICAgICAgIGZvciAoRmlsbExheWVyKiBiYWNrZ3JvdW5kTGF5ZXIgPSBtX3N0
eWxlLT5hY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzKCk7IGJhY2tncm91bmRMYXllcjsgYmFja2dyb3Vu
ZExheWVyID0gYmFja2dyb3VuZExheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGJhY2tncm91bmRMYXllci0+aW1hZ2UoKSAmJiBiYWNrZ3JvdW5kTGF5ZXItPmltYWdlKCkt
PmlzUGVuZGluZ0ltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU0ltYWdlVmFs
dWUqIGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxTdHlsZVBlbmRpbmdJbWFnZSo+KGJhY2tncm91
bmRMYXllci0+aW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJhY2tncm91bmRMYXllci0+c2V0SW1hZ2UoaW1hZ2VWYWx1ZS0+Y2FjaGVkSW1hZ2UoZG9j
TG9hZGVyKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5Q29udGVudDogeworICAgICAgICAgICAgICAgIGZvciAoQ29udGVudERhdGEqIGNvbnRl
bnREYXRhID0gY29uc3RfY2FzdDxDb250ZW50RGF0YSo+KG1fc3R5bGUtPmNvbnRlbnREYXRhKCkp
OyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGNvbnRlbnREYXRh
LT5pbWFnZSgpLT5pc1BlbmRpbmdJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBD
U1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8U3R5bGVQZW5kaW5nSW1hZ2Uq
Pihjb250ZW50RGF0YS0+aW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRlbnREYXRhLT5zZXRJbWFnZShpbWFnZVZhbHVlLT5jYWNoZWRJbWFnZShk
b2NMb2FkZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlDdXJzb3I6CisgICAgICAgICAgICAgICAgLy8gQ3Vyc29yIGRvZXNuJ3QgdXNlIFN0
eWxlUGVuZGluZ0ltYWdlIHlldC4KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOiB7CisgICAgICAgICAgICAgICAgaWYg
KG1fc3R5bGUtPmxpc3RTdHlsZUltYWdlKCktPmlzUGVuZGluZ0ltYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1hZ2VWYWx1ZSA9IHN0YXRpY19jYXN0PFN0eWxl
UGVuZGluZ0ltYWdlKj4obV9zdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2UoaW1hZ2VW
YWx1ZS0+Y2FjaGVkSW1hZ2UoZG9jTG9hZGVyKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6IHsKKyAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGll
Y2VJbWFnZSYgYm9yZGVySW1hZ2UgPSBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpOworICAgICAgICAg
ICAgICAgIGlmIChib3JkZXJJbWFnZS5pbWFnZSgpLT5pc1BlbmRpbmdJbWFnZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxT
dHlsZVBlbmRpbmdJbWFnZSo+KGJvcmRlckltYWdlLmltYWdlKCkpLT5jc3NJbWFnZVZhbHVlKCk7
CisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckltYWdlKE5pbmVQaWVjZUlt
YWdlKGltYWdlVmFsdWUtPmNhY2hlZEltYWdlKGRvY0xvYWRlciksIGJvcmRlckltYWdlLnNsaWNl
cygpLCBib3JkZXJJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBib3JkZXJJbWFnZS52ZXJ0aWNhbFJ1
bGUoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveFJlZmxlY3Q6IHsKKyAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFz
a0ltYWdlID0gbV9zdHlsZS0+Ym94UmVmbGVjdCgpLT5tYXNrKCk7CisgICAgICAgICAgICAgICAg
aWYgKG1hc2tJbWFnZS5pbWFnZSgpLT5pc1BlbmRpbmdJbWFnZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxTdHlsZVBlbmRp
bmdJbWFnZSo+KG1hc2tJbWFnZS5pbWFnZSgpKS0+Y3NzSW1hZ2VWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5ib3hSZWZsZWN0KCktPnNldE1hc2soTmluZVBpZWNlSW1hZ2Uo
aW1hZ2VWYWx1ZS0+Y2FjaGVkSW1hZ2UoZG9jTG9hZGVyKSwgbWFza0ltYWdlLnNsaWNlcygpLCBt
YXNrSW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSwgbWFza0ltYWdlLnZlcnRpY2FsUnVsZSgpKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlOiB7CisgICAg
ICAgICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUt
Pm1hc2tCb3hJbWFnZSgpOworICAgICAgICAgICAgICAgIGlmIChtYXNrQm94SW1hZ2UuaW1hZ2Uo
KS0+aXNQZW5kaW5nSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVl
KiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8U3R5bGVQZW5kaW5nSW1hZ2UqPihtYXNrQm94SW1h
Z2UuaW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TWFza0JveEltYWdlKE5pbmVQaWVjZUltYWdlKGltYWdlVmFsdWUtPmNhY2hlZEltYWdl
KGRvY0xvYWRlciksIG1hc2tCb3hJbWFnZS5zbGljZXMoKSwgbWFza0JveEltYWdlLmhvcml6b250
YWxSdWxlKCksIG1hc2tCb3hJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZTogeworICAgICAgICAg
ICAgICAgIGZvciAoRmlsbExheWVyKiBtYXNrTGF5ZXIgPSBtX3N0eWxlLT5hY2Nlc3NNYXNrTGF5
ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hc2tMYXllci0+aW1hZ2UoKSAmJiBtYXNrTGF5ZXItPmltYWdl
KCktPmlzUGVuZGluZ0ltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU0ltYWdl
VmFsdWUqIGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxTdHlsZVBlbmRpbmdJbWFnZSo+KG1hc2tM
YXllci0+aW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2tMYXllci0+c2V0SW1hZ2UoaW1hZ2VWYWx1ZS0+Y2FjaGVkSW1hZ2UoZG9jTG9hZGVyKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgbV9w
ZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBiMGQ5NzdlMzY3NjE3NjVmMTJiYzE2NTY5NGY4
YjgwMmQ4YTJkMjljLi5jM2U0MjNhMDgxNWVhNzIxMzAxMjExZjJiOTZkNTg3NjM2YTk2MjE0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENTU1ByaW1pdGl2
ZVZhbHVlOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENT
U0ZvbnRGYWNlUnVsZTsKK2NsYXNzIENTU0ltYWdlVmFsdWU7CiBjbGFzcyBDU1NSdWxlRGF0YTsK
IGNsYXNzIENTU1J1bGVEYXRhTGlzdDsKIGNsYXNzIENTU1J1bGVMaXN0OwpAQCAtMjQwLDE2ICsy
NDEsMTYgQEAgcHVibGljOgogICAgICAgICB2b2lkIHVwZGF0ZUZvbnQoKTsKICAgICAgICAgdm9p
ZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIAotICAgICAgICB2b2lkIG1hcEZpbGxBdHRh
Y2htZW50KEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgICAgIHZvaWQgbWFwRmlsbENsaXAo
RmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICAgICAgdm9pZCBtYXBGaWxsQ29tcG9zaXRlKEZp
bGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgICAgIHZvaWQgbWFwRmlsbE9yaWdpbihGaWxsTGF5
ZXIqLCBDU1NWYWx1ZSopOwotICAgICAgICB2b2lkIG1hcEZpbGxJbWFnZShGaWxsTGF5ZXIqLCBD
U1NWYWx1ZSopOwotICAgICAgICB2b2lkIG1hcEZpbGxSZXBlYXRYKEZpbGxMYXllciosIENTU1Zh
bHVlKik7Ci0gICAgICAgIHZvaWQgbWFwRmlsbFJlcGVhdFkoRmlsbExheWVyKiwgQ1NTVmFsdWUq
KTsKLSAgICAgICAgdm9pZCBtYXBGaWxsU2l6ZShGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAg
ICAgICB2b2lkIG1hcEZpbGxYUG9zaXRpb24oRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICAg
ICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgICAg
IHZvaWQgbWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFs
dWUqKTsKKyAgICAgICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
LCBDU1NWYWx1ZSopOworICAgICAgICB2b2lkIG1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICAgICAgdm9pZCBtYXBGaWxsT3JpZ2luKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgICAgIHZvaWQgbWFwRmls
bEltYWdlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgICAgIHZv
aWQgbWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsK
KyAgICAgICAgdm9pZCBtYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBD
U1NWYWx1ZSopOworICAgICAgICB2b2lkIG1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciosIENTU1ZhbHVlKik7CisgICAgICAgIHZvaWQgbWFwRmlsbFhQb3NpdGlvbihDU1NQcm9w
ZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgICAgICB2b2lkIG1hcEZpbGxZUG9z
aXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKIAogICAgICAgICB2
b2lkIG1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlvbiosIENTU1ZhbHVlKik7CiAgICAgICAgIHZv
aWQgbWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7CkBAIC0yNjEs
NyArMjYyLDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIG1hcEFuaW1hdGlvblByb3BlcnR5KEFu
aW1hdGlvbiosIENTU1ZhbHVlKik7CiAgICAgICAgIHZvaWQgbWFwQW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24oQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsKIAotICAgICAgICB2b2lkIG1hcE5pbmVQaWVj
ZUltYWdlKENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKKyAgICAgICAgdm9pZCBtYXBOaW5l
UGllY2VJbWFnZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIE5pbmVQaWVjZUltYWdlJik7CiAK
ICAgICAgICAgdm9pZCBhcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUqKTsKICAgICAgICAg
dm9pZCBhcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFsdWUqKTsKQEAgLTI3Miw3ICsyNzMsMTAg
QEAgcHVibGljOgogICAgICAgICB2b2lkIGFwcGx5U1ZHUHJvcGVydHkoaW50IGlkLCBDU1NWYWx1
ZSopOwogI2VuZGlmCiAKLSAgICAgICAgU3R5bGVJbWFnZSogc3R5bGVJbWFnZShDU1NWYWx1ZSog
dmFsdWUpOworICAgICAgICB2b2lkIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CisgICAgICAgIAorICAg
ICAgICBTdHlsZUltYWdlKiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiB2YWx1
ZSk7CisgICAgICAgIFN0eWxlSW1hZ2UqIGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlKiB2YWx1ZSk7CiAKICAgICAgICAgLy8gV2Ug
Y29sbGVjdCB0aGUgc2V0IG9mIGRlY2xzIHRoYXQgbWF0Y2ggaW4gfG1fbWF0Y2hlZERlY2xzfC4g
IFdlIHRoZW4gd2FsayB0aGUKICAgICAgICAgLy8gc2V0IG9mIG1hdGNoZWQgZGVjbHMgZm91ciB0
aW1lcywgb25jZSBmb3IgdGhvc2UgcHJvcGVydGllcyB0aGF0IG90aGVycyBkZXBlbmQgb24gKGxp
a2UgZm9udC1zaXplKSwKQEAgLTI4NSw2ICsyODksOCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3Rv
cjxDU1NSdWxlRGF0YSosIDMyPiBtX21hdGNoZWRSdWxlczsKIAogICAgICAgICBSZWZQdHI8Q1NT
UnVsZUxpc3Q+IG1fcnVsZUxpc3Q7CisgICAgICAgIAorICAgICAgICBIYXNoU2V0PGludD4gbV9w
ZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzOyAvLyBIYXNoIG9mIENTU1Byb3BlcnR5SURzCiAKICAgICAg
ICAgTWVkaWFRdWVyeUV2YWx1YXRvciogbV9tZWRpdW07CiAgICAgICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gbV9yb290RGVmYXVsdFN0eWxlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlLmNwcAppbmRleCBiNTVjNWI5OGQ4YWY0MGM3YzAzMTIwZTc3YzU1OTlmN2E4
YTM4ZDAzLi4xZDdhYmE4NDE4YmNmNDY3NzE4OTY2NjNjNDQzNDZlNjJmMWYwMzMzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxl
Q2FjaGVkSW1hZ2U6OmNzc1ZhbHVlKCkKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlQ2FjaGVk
SW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShtX2ltYWdlLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCmluZGV4IDNkMjI4Njgw
YTZkMDZmM2FlN2ZmNDBmZTY4MTAwNTdhODRmZGIzNDEuLjNkNmUxYTI4ZWE3MzdhMGI1NTkxYjc0
M2NkZDZlMmJmZGE2MDQxYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
Q2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdDsKICAgICAKICAgICBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNjEwZTczZDllNmFj
YjdiMzJiY2NiODFmMzhlYmJhMTkzZDhhODY1NS4uMjMyMmY1ZmQzOTJhYTAwOGZmZmM2MzM2ZmVj
MzY5YWJiODM5YWQwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5l
cmF0ZWRJbWFnZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1ZSgpCitQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fZ2VuZXJhdG9yOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDUzMmUzODNmMDRmN2I5MmFjYWNmMTgwOGI3
OGY2MGU5MTFlMmFlMWMuLjdiZTFmNmE5YmI3YzZmM2I3MjFiMjk3MjZmNTIzNzEyMTQ3YWQ2OTkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2Uu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVkSW1h
Z2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBjc3NWYWx1ZSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y3NzVmFsdWUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoY29uc3Qg
UmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCmluZGV4IGNiOTAyODgwZjgzNDA2ZWZhOWJl
ZTQ4YjczZTc3NGQ5NDdjMjY3OTQuLmVhZDhkNGFjYTg5ZjA0M2ZlZmQ0MGUyNjViMDY1ZmNmYmMz
ZjdiMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAgLTI0LDYgKzI0LDcg
QEAKICNpZm5kZWYgU3R5bGVJbWFnZV9oCiAjZGVmaW5lIFN0eWxlSW1hZ2VfaAogCisjaW5jbHVk
ZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDEsMTIgKzQyLDEyIEBA
IGNsYXNzIFN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUltYWdlPiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U3R5bGVJbWFnZSgpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlSW1hZ2UmIG90aGVyKQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZUltYWdlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBkYXRhKCkgPT0gb3Ro
ZXIuZGF0YSgpOwogICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGNzc1ZhbHVlKCkgPSAwOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NW
YWx1ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoZmxvYXQgLypt
dWx0aXBsaWVyKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNM
b2FkZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC02MCw3ICs2MSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCopID0gMDsKICAgICB2
aXJ0dWFsIEltYWdlKiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCA9IDA7CisKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUGVuZGluZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgCiAgICAgc3RhdGljICBib29sIGltYWdlc0VxdWl2YWxlbnQoU3R5bGVJbWFnZSog
aW1hZ2UxLCBTdHlsZUltYWdlKiBpbWFnZTIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVQZW5kaW5nSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGM5YjAxNmU4NGM4YjdiMmY2OTMzMjExMmFl
NTdjN2VhNDFiNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVQZW5kaW5nSW1hZ2UuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFN0eWxlUGVuZGlu
Z0ltYWdlX2gKKyNkZWZpbmUgU3R5bGVQZW5kaW5nSW1hZ2VfaAorCisjaW5jbHVkZSAiU3R5bGVJ
bWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFN0eWxlUGVuZGluZ0ltYWdlIGlz
IGEgcGxhY2Vob2xkZXIgU3R5bGVJbWFnZSB0aGF0IGlzIGVudGVyZWQgaW50byB0aGUgUmVuZGVy
U3R5bGUgZHVyaW5nCisvLyBzdHlsZSByZXNvbHV0aW9uLCBpbiBvcmRlciB0byBhdm9pZCBsb2Fk
aW5nIGltYWdlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSB0aGUgZmluYWwgc3R5bGUuCisv
LyBUaGV5IHNob3VsZCBuZXZlciBleGlzdCBpbiBhIFJlbmRlclN0eWxlIGFmdGVyIGl0IGhhcyBi
ZWVuIHJldHVybmVkIGZyb20gdGhlIHN0eWxlIHNlbGVjdG9yLgorCitjbGFzcyBTdHlsZVBlbmRp
bmdJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHlsZVBlbmRpbmdJbWFnZT4gY3JlYXRlKENTU0ltYWdlVmFsdWUqIHZhbHVlKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVQZW5kaW5nSW1hZ2UodmFsdWUpKTsgfQorCisgICAgdmly
dHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1BlbmRpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQorICAgIENTU0ltYWdlVmFsdWUqIGNzc0ltYWdlVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgCisgICAgdmlydHVhbCBJbnRTaXplIGltYWdl
U2l6ZShjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1
c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlck9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCBJbWFnZSogaW1h
Z2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorcHJp
dmF0ZToKKyAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NJbWFnZVZhbHVlKiB2YWx1ZSkKKyAgICAg
ICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBDU1NJbWFnZVZhbHVlKiBt
X3ZhbHVlOyAvLyBOb3QgcmV0YWluZWQ7IGl0IG93bnMgdXMuCit9OworCit9CisjZW5kaWYK
</data>
<flag name="review"
          id="54444"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>