<?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>86064</bug_id>
          
          <creation_ts>2012-05-10 00:43:28 -0700</creation_ts>
          <short_desc>[Shadow DOM][Refactoring] HTMLContentSelector family should have better name</short_desc>
          <delta_ts>2012-05-14 11:53:49 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85263</blocked>
    
    <blocked>86350</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>620339</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-10 00:43:28 -0700</bug_when>
    <thetext>The name was invented before Shadow DOM spec was formally written.
There is now a concept named &quot;distribution&quot;. So that implementation should follow such terminology.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621270</commentid>
    <comment_count>1</comment_count>
      <attachid>141329</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-10 22:27:58 -0700</bug_when>
    <thetext>Created attachment 141329
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621318</commentid>
    <comment_count>2</comment_count>
      <attachid>141338</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-11 00:03:50 -0700</bug_when>
    <thetext>Created attachment 141338
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621325</commentid>
    <comment_count>3</comment_count>
      <attachid>141338</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-11 00:10:01 -0700</bug_when>
    <thetext>Comment on attachment 141338
WIP

Attachment 141338 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12666417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621326</commentid>
    <comment_count>4</comment_count>
      <attachid>141338</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-11 00:13:04 -0700</bug_when>
    <thetext>Comment on attachment 141338
WIP

Attachment 141338 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12663603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621327</commentid>
    <comment_count>5</comment_count>
      <attachid>141338</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-11 00:13:19 -0700</bug_when>
    <thetext>Comment on attachment 141338
WIP

Attachment 141338 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12675125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621330</commentid>
    <comment_count>6</comment_count>
      <attachid>141338</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-11 00:14:47 -0700</bug_when>
    <thetext>Comment on attachment 141338
WIP

Attachment 141338 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12659011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621368</commentid>
    <comment_count>7</comment_count>
      <attachid>141338</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-11 01:08:10 -0700</bug_when>
    <thetext>Comment on attachment 141338
WIP

Attachment 141338 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12670225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621370</commentid>
    <comment_count>8</comment_count>
      <attachid>141348</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-11 01:13:24 -0700</bug_when>
    <thetext>Created attachment 141348
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621485</commentid>
    <comment_count>9</comment_count>
      <attachid>141348</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-11 04:51:48 -0700</bug_when>
    <thetext>Comment on attachment 141348
WIP

Attachment 141348 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12671318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621800</commentid>
    <comment_count>10</comment_count>
      <attachid>141348</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-11 10:51:53 -0700</bug_when>
    <thetext>Comment on attachment 141348
WIP

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

Some name bikeshedding.

&gt; Source/WebCore/dom/ElementShadow.cpp:43
&gt; +    : m_needsRecalcDistribution(false)

needsRedistributing

&gt; Source/WebCore/html/shadow/ShadowDistributor.h:46
&gt; +class ShadowBoundaryDistribution {

ContentDistribution

&gt; Source/WebCore/html/shadow/ShadowDistributor.h:68
&gt; +        RefPtr&lt;Item&gt; m_next;
&gt; +        RefPtr&lt;Item&gt; m_previous;

Shouldn&apos;t be RefPtrs, right?

&gt; Source/WebCore/html/shadow/ShadowDistributor.h:88
&gt; +    RefPtr&lt;Item&gt; m_first;
&gt; +    RefPtr&lt;Item&gt; m_last;

Ditto about RefPtrs.

&gt; Source/WebCore/html/shadow/ShadowDistributor.h:91
&gt; +class ShadowDistributor {

ContentDistributor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622593</commentid>
    <comment_count>11</comment_count>
      <attachid>141622</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-13 17:55:03 -0700</bug_when>
    <thetext>Created attachment 141622
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622594</commentid>
    <comment_count>12</comment_count>
      <attachid>141623</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-13 18:16:04 -0700</bug_when>
    <thetext>Created attachment 141623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622596</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-13 18:18:53 -0700</bug_when>
    <thetext>Hi Dimitri, thanks for taking a look!
I updated the patch.

(In reply to comment #10)
&gt; (From update of attachment 141348 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141348&amp;action=review
&gt; 
&gt; Some name bikeshedding.
&gt; 
&gt; &gt; Source/WebCore/dom/ElementShadow.cpp:43
&gt; &gt; +    : m_needsRecalcDistribution(false)
&gt; 
&gt; needsRedistributing
Done.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/ShadowDistributor.h:46
&gt; &gt; +class ShadowBoundaryDistribution {
&gt; 
&gt; ContentDistribution
Done.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/ShadowDistributor.h:68
&gt; &gt; +        RefPtr&lt;Item&gt; m_next;
&gt; &gt; +        RefPtr&lt;Item&gt; m_previous;
&gt; 
&gt; Shouldn&apos;t be RefPtrs, right?
Should be. But I&apos;d like to do it in a separate patch to
isolate possible revealing of hidden bugs... 
Actually, I&apos;m thinking to kill this Item class in following patch(-es).

&gt; 
&gt; &gt; Source/WebCore/html/shadow/ShadowDistributor.h:88
&gt; &gt; +    RefPtr&lt;Item&gt; m_first;
&gt; &gt; +    RefPtr&lt;Item&gt; m_last;
&gt; 
&gt; Ditto about RefPtrs.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/ShadowDistributor.h:91
&gt; &gt; +class ShadowDistributor {
&gt; 
&gt; ContentDistributor
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622619</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-13 19:40:03 -0700</bug_when>
    <thetext>(In reply to comment #13)

&gt; &gt; Shouldn&apos;t be RefPtrs, right?
&gt; Should be. But I&apos;d like to do it in a separate patch to
&gt; isolate possible revealing of hidden bugs... 
&gt; Actually, I&apos;m thinking to kill this Item class in following patch(-es).

Sounds good. We usually add FIXMEs referencing bugs for future work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622620</commentid>
    <comment_count>15</comment_count>
      <attachid>141623</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-13 19:41:29 -0700</bug_when>
    <thetext>Comment on attachment 141623
Patch

not sure why gtk is angry at you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622708</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-13 23:54:59 -0700</bug_when>
    <thetext>Thanks for r+ing!

(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; 
&gt; &gt; &gt; Shouldn&apos;t be RefPtrs, right?
&gt; &gt; Should be. But I&apos;d like to do it in a separate patch to
&gt; &gt; isolate possible revealing of hidden bugs... 
&gt; &gt; Actually, I&apos;m thinking to kill this Item class in following patch(-es).
&gt; 
&gt; Sounds good. We usually add FIXMEs referencing bugs for future work.
True. Will add it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622802</commentid>
    <comment_count>17</comment_count>
      <attachid>141683</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-14 03:56:41 -0700</bug_when>
    <thetext>Created attachment 141683
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622804</commentid>
    <comment_count>18</comment_count>
      <attachid>141683</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-14 03:58:26 -0700</bug_when>
    <thetext>Comment on attachment 141683
Patch for landing

Rejecting attachment 141683 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12679475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623166</commentid>
    <comment_count>19</comment_count>
      <attachid>141683</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-14 11:53:42 -0700</bug_when>
    <thetext>Comment on attachment 141683
Patch for landing

Clearing flags on attachment: 141683

Committed r116974: &lt;http://trac.webkit.org/changeset/116974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623167</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-14 11:53:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141329</attachid>
            <date>2012-05-10 22:27:58 -0700</date>
            <delta_ts>2012-05-11 00:03:44 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-86064-20120511142755.patch</filename>
            <type>text/plain</type>
            <size>53939</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDYxYzg4
NDM4ODUxNzVjNGU3MDZmY2UxNjZkNDkxZWNiNTk3NWQzZjEuLmE5OTgwYThhMTlhNWQ3ZWVhZGU3
NzBhODk2N2Y4OWVjZWMwYTZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDMsMTMgKzkw
MywxMyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuY3BwCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCiAg
ICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAotICAgIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuY3BwCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
Y3BwCiAgICAgaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5jcHAKICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAorICAgIGh0bWwvc2hhZG93L1NoYWRvd0Rp
c3RyaWJ1dG9yLmNwcAogICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKICAg
ICBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDk5YjQzOTg2NmRkNDQ3NDA4MzdkMTljMWMxYjhhMTFlOTc4
MDBkMGYuLjliYThmMjkxZGFmMTdiMmVjMzBiYjMyNGZhN2Y2MTQ2ZGE5ZWU5YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjUwOCw4ICsyNTA4LDYgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBAIC0yNTIxLDcgKzI1MTksOSBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggCisJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBm
NzZhZTBiOWY0ZmQyZWE4MThhN2M1ZjVhYWVmYmQ5ZjVjY2VkMWRmLi5iNDgwNDFiMmIzNjI4MGJh
ZTI0NWNiMGYzMTg0NTI3NWNjYWUyYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg3NSwxMyArODc1LDEz
IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNw
cCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIFwKICAgICBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
IFwKICAgICBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgXAogICAgIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwIFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxl
bWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXAogICAg
IGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAorICAgIGh0bWwvc2hhZG93
L1NoYWRvd0Rpc3RyaWJ1dG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBc
CiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCkBAIC0xOTk5LDEwICsxOTk5LDEw
IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBcCiAgICAgaHRt
bC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRFbGVtZW50LmggXAotICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBc
CiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBcCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaCBcCisgICAgaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaCBcCiAgICAgaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIFwKICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5o
IFwKICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBl
Nzc0NmU2NDcxZTk0Njc2MGQ5YTU5OGYwOGRmOTliNGVlYzAyMDkyLi45NTRiMTQ3Yzk5MzU3YTBi
NWQ3MDRmNzI4NjYwYTViNDg3YTRiNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01Nzk2LDggKzU3
OTYsNiBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgn
LAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oJywKLSAgICAgICAgICAg
ICdodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcCcsCkBAIC01ODEyLDYgKzU4MTAsOCBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3Iu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwJywKICAgICAgICAg
ICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDM3MzViYzhjMDI1Nzk5ZjQ1NWZk
YjA1NTE0N2YzZDFjNjQ0NmFkMjMuLmRiNzM0MmEwYmEyYmZhNjgzOGMzN2ZlOTllYzkyM2JhZDBk
YWRmYWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC02MjczMywxNCArNjI3MzMsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXHNoYWRvd1xIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xIVE1MU2hhZG93
RWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02Mjg0OSw2
ICs2Mjg0MSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2hhZG93RGlzdHJpYnV0b3IuY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dc
U2hhZG93RGlzdHJpYnV0b3IuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFNsaWRlclRodW1iRWxlbWVudC5jcHAiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggODVjODRhNzA3OWVlNTExZTA1MGE5MDQ0MjNkNzU0ZjUw
MzQwZWE0OS4uNmQ3ZmI0NzJiMGJhNDQ0ZDM2OTIyM2I0ZGQzNDIxODU0MWUxZjNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTU4NCw4ICsxNTg0LDggQEAKIAkJNTc0MEU4M0QxNTMyREUxNzAwNzYwNjI4IC8qIFRyZWVTY29w
ZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzQwRTgzQjE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCAqLzsgfTsK
IAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzExQ0JEMzAx
MDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3
Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2Mjkw
MEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTQxNEM2
QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBI
VE1MQ29udGVudFNlbGVjdG9yLmggKi87IH07CisJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAv
KiBTaGFkb3dEaXN0cmlidXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJpYnV0
b3IuY3BwICovOyB9OworCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJp
YnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBTaGFkb3dEaXN0cmlidXRvci5oICovOyB9OwogCQk1
N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTExNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKIAkJNTdCNzkxQTYx
NEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEg
LyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJNTdCNzkxQTkxNEM2QTYzMzAwRjIw
MkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRl
bnRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTg2MDEsOCArODYwMSw4IEBACiAJCTU3M0QxMzQ2MTRD
RTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzQwRTgzQTE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRq
dXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQwRTgzQjE1MzJERTE3
MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJlZVNjb3BlQWRqdXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJE
MSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUTUxDb250ZW50U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIFNo
YWRvd0Rpc3RyaWJ1dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRv
d0Rpc3RyaWJ1dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUExMTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUEyMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50
U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50
U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTFBNzE0
QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb250ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDYyNCw4ICsxNDYyNCw2IEBACiAJCQkJNTdCNzkxQTcxNEM2
QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJNTdCNzkxQTgx
NEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oICovLAogCQkJCUE3Qjc3NDk2
MTRDRjYzNTMwMDQwNDRCQiAvKiBIVE1MQ29udGVudEVsZW1lbnQuaWRsICovLAotCQkJCTU3Qjc5
MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLywKLQkJCQk1
N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oICovLAogCQkJ
CTRBQkRGRjA3MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJ
CQkJNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi8sCiAJ
CQkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmlkbCAqLywK
QEAgLTE0NjQxLDYgKzE0NjM5LDggQEAKIAkJCQlBNzhFNTI2RTEzNDZCRDE3MDBBRDlDMzEgLyog
TWV0ZXJTaGFkb3dFbGVtZW50LmggKi8sCiAJCQkJQTcxNUU2NTAxMzRCQkJFQzAwRDhFNzEzIC8q
IFByb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTcxNUU2NTExMzRCQkJFQzAwRDhF
NzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICovLAorCQkJCTU3Qjc5MTlGMTRDNkE2Mjkw
MEYyMDJEMSAvKiBTaGFkb3dEaXN0cmlidXRvci5jcHAgKi8sCisJCQkJNTdCNzkxQTAxNEM2QTYy
OTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmggKi8sCiAJCQkJNDE1MEY5RjAxMkI2RTBF
NzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgKi8sCiAJCQkJNDE1MEY5RUYxMkI2
RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLApAQCAtMjI5
MzksNyArMjI5MzksNiBAQAogCQkJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjUxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBQTE0QzZB
NjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MjQzLDYgKzI0MjQy
LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBTaGFkb3dEaXN0
cmlidXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcwIC8q
IFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U4MEExOTg5Q0EwMDdGQjhD
NSAvKiBTaGFkb3dWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBRkZDOTQwRDAwQTVERjAw
MzAwNzREIC8qIFNoYXBlQXJhYmljLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDc0LDcgKzI2MDc0
LDYgQEAKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE5MTRDNkE2MzMwMEYy
MDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTdCNzkx
QTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAwMTZGNTQxIC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc4OTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjczODYsNiArMjcz
ODUsNyBAQAogCQkJCTQ5ODc3MEU4MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0Rh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIFNo
YWRvd0Rpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIw
MDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y0MEEx
OTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFG
RkM5MzBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuYyBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCA1
YTY5MzZjOGMyMjFmZWNhMzNlNzg2Yjg0NDkzYTYxNTI4Y2U4NTUwLi5lZjhhNTA5NDczYTU1ZWIw
MmIyYWEzNWRjYTM2YmVmZGYxMTNjN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMjksOSArMjksOCBAQAogCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKLSNpbmNsdWRlICJIVE1MQ29u
dGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKLQorI2luY2x1ZGUg
IlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE5LDkg
KzExOCw5IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOb2RlKGNv
bnN0IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvCiB7CiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSkt
PnNlbGVjdGlvbnMoKTsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBzZWxlY3Rpb25M
aXN0LT5maXJzdCgpIDogc2VsZWN0aW9uTGlzdC0+bGFzdCgpKSkKLSAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUoc2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgICAgIGNv
bnN0IFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24gPSB0b0luc2VydGlv
blBvaW50KG5vZGUpLT5kaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSAo
ZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBkaXN0cmlidXRpb24tPmZp
cnN0Tm9kZSgpIDogZGlzdHJpYnV0aW9uLT5sYXN0Tm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUobmV4dCwgZGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNl
TGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxOb2RlKj4obm9kZSk7CkBAIC0xNDcsMTIgKzE0NiwxMiBAQCBOb2RlKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZQogICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUp
OwogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJy
ZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb24gPSBzaGFkb3ctPnNlbGVjdGlvbkZvcihub2RlKTsKLSAgICBpZiAoIXNlbGVjdGlvbikK
KyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IHNoYWRvdy0+ZGlz
dHJpYnV0aW9uSXRlbUZvcihub2RlKTsKKyAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiB0
cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBuZXh0U2VsZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBzZWxlY3Rpb24tPnByZXZp
b3VzKCkpKQotICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRTZWxlY3Rpb24tPm5vZGUo
KSwgZGlyZWN0aW9uKTsKLSAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRp
b25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCksIGRpcmVjdGlvbik7CisgICAgaWYg
KFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBuZXh0SXRlbSA9IChkaXJlY3Rpb24g
PT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IGl0ZW0tPm5leHQoKSA6IGl0ZW0tPnByZXZp
b3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRJdGVtLT5ub2RlKCksIGRp
cmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9p
bnQoaXRlbS0+aW5zZXJ0aW9uUG9pbnQoKSwgZGlyZWN0aW9uKTsKIH0KIAogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5v
ZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0yMDksOCArMjA4LDgg
QEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBO
b2RlKiBub2RlKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKEVsZW1l
bnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpKSB7Ci0gICAgICAgIGlmIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93LT5zZWxlY3Rpb25Gb3Iobm9k
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoc2VsZWN0aW9uLT5pbnNlcnRp
b25Qb2ludCgpKTsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJh
dmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgIH0KICAgICByZXR1cm4gdHJhdmVyc2VQ
YXJlbnRJbkN1cnJlbnRUcmVlKG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
Y3BwCmluZGV4IDFlNjczMTc1ZDQ0NTcyZDA4ZDE5NDM2MzUwYTFmOWQ3YjM4ODA4MGMuLmNkYmRk
MTc0ODhmNjEzY2EzMWQ5NWMxYWQ0ZmU4ZmNjYTI1ZjM0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
RWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0gICAgOiBtX25lZWRzUmVjYWxjdWxhdGVD
b250ZW50KGZhbHNlKQorICAgIDogbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbihmYWxzZSkKIHsK
IH0KIApAQCAtMTIzLDE2ICsxMjMsMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpzZXRQYXJlbnRU
cmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2go
KQogewotICAgIC8vIENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBp
bgotICAgIC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQg
aXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFzZWxlY3RvcigpLmhhc1BvcHVsYXRl
ZCgpKTsKKyAgICAvLyBUaGUgcG9vbCBub2RlcyBhcmUgcG9wdWxhdGVkIGxhemlseSBpbgorICAg
IC8vIGVuc3VyZURpc3RyaWJ1dG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQg
aXMgaW4gY2xlYW4gc3RhdGUuCisgICAgQVNTRVJUKCFkaXN0cmlidXRvcigpLnBvb2xJc1JlYWR5
KCkpOwogCi0gICAgc2VsZWN0b3IoKS53aWxsU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS53
aWxsRGlzdHJpYnV0ZSgpOwogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAg
ICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CiAg
ICAgfQotICAgIHNlbGVjdG9yKCkuZGlkU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS5kaWRE
aXN0cmlidXRlKCk7CiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoSG9zdChFbGVtZW50
KiBob3N0KQpAQCAtMTY4LDE1ICsxNjgsMTIgQEAgSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFk
b3c6Omluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IHNlbGVj
dG9yKCkuZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CisgICAgcmV0dXJuIGRpc3RyaWJ1
dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKG5vZGUpOwogfQogCi1IVE1MQ29udGVudFNlbGVj
dGlvbiogRWxlbWVudFNoYWRvdzo6c2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0
CitTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogRWxlbWVudFNoYWRvdzo6ZGlzdHJp
YnV0aW9uSXRlbUZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIHJldHVybiBtX3Nl
bGVjdG9yLmZpbmRGb3Iobm9kZSk7CisgICAgcmV0dXJuIG1fZGlzdHJpYnV0b3IuZmluZEZvcihu
b2RlKTsKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZWF0dGFjaCgpCkBAIC0yMTEsNyArMjA4
LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBj
aGFuZ2UpCiAgICAgaWYgKCF5b3VuZ2VzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKKyAgICBpZiAobmVlZHNSZWNhbGNE
aXN0cmlidXRpb24oKSkKICAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
ICAgICBlbHNlIHsKICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IHlvdW5n
ZXN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CkBAIC0yMjYsMTYgKzIyMywxNiBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OnJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkK
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+cG9wUGFyZW50U2hhZG93Um9vdCh5b3VuZ2VzdCk7CiAg
ICAgfQogCi0gICAgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Cisg
ICAgY2xlYXJOZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgIGZvciAoU2hhZG93Um9vdCog
cm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFk
b3dSb290KCkpIHsKICAgICAgICAgcm9vdC0+Y2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAg
ICAgIHJvb3QtPmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogfQogCi1ib29s
IEVsZW1lbnRTaGFkb3c6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQorYm9v
bCBFbGVtZW50U2hhZG93OjpuZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpCiB7Ci0gICAgcmV0dXJu
IG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlv
dW5nZXN0U2hhZG93Um9vdCgpLT5oYXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gbV9u
ZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiB8fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdl
c3RTaGFkb3dSb290KCktPmhhc0luc2VydGlvblBvaW50KCkpOwogfQogCiB2b2lkIEVsZW1lbnRT
aGFkb3c6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQpAQCAtMjQ2LDEyICsyNDMsMTIgQEAgdm9pZCBF
bGVtZW50U2hhZG93Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBz
aGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgotICAgIHNl
dE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICBzZXROZWVkc1JlY2Fs
Y0Rpc3RyaWJ1dGlvbigpOwogfQogCi12b2lkIEVsZW1lbnRTaGFkb3c6OnNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQordm9pZCBFbGVtZW50U2hhZG93OjpzZXROZWVkc1Jl
Y2FsY0Rpc3RyaWJ1dGlvbigpCiB7Ci0gICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IHRy
dWU7CisgICAgbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiA9IHRydWU7CiAKICAgICBob3N0KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmlu
ZGV4IDljOTM4NWM3ODljM2FlYjg5ODg4NGZlYTM1YWI3OTczNGM4ODgyODEuLjg4MDE4ODVkNzc0
MTJmYzMwODBlNTM3NjA4NmQ5ZDlhMmE4M2JiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBFbGVtZW50U2hhZG93X2gKIAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisj
aW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KQEAgLTQwLDkgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2Rl
OwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIEluc2VydGlvblBvaW50OwogY2xhc3MgVHJlZVNjb3Bl
OwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb247CiAKIGNsYXNzIEVsZW1lbnRTaGFkb3cgewog
cHVibGljOgpAQCAtNjksMjMgKzY3LDIzIEBAIHB1YmxpYzoKICAgICBib29sIGNoaWxkTmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVj
YWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwotICAgIHZvaWQgc2V0TmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgYm9vbCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7Ci0gICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAg
IHZvaWQgc2V0TmVlZHNSZWNhbGNEaXN0cmlidXRpb24oKTsKKyAgICB2b2lkIGNsZWFyTmVlZHNS
ZWNhbGNEaXN0cmlidXRpb24oKTsKKyAgICBib29sIG5lZWRzUmVjYWxjRGlzdHJpYnV0aW9uKCk7
CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSopIGNvbnN0OwotICAgIEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OworICAgIFNoYWRvd0JvdW5k
YXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBkaXN0cmlidXRpb25JdGVtRm9yKGNvbnN0IE5vZGUqKSBj
b25zdDsKIAotICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCk7Ci0gICAgY29uc3Qg
SFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsKKyAgICBTaGFkb3dEaXN0cmli
dXRvciYgZGlzdHJpYnV0b3IoKTsKKyAgICBjb25zdCBTaGFkb3dEaXN0cmlidXRvciYgZGlzdHJp
YnV0b3IoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCk7CiAKICAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93
Um9vdHM7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3RvciBtX3NlbGVjdG9yOwotICAgIGJvb2wgbV9u
ZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7CisgICAgU2hhZG93RGlzdHJpYnV0b3IgbV9kaXN0
cmlidXRvcjsKKyAgICBib29sIG1fbmVlZHNSZWNhbGNEaXN0cmlidXRpb24gOiAxOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEVsZW1lbnRTaGFkb3cpOwogfTsKIApAQCAtMTA0LDE5ICsxMDIs
MTkgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6Om9sZGVzdFNoYWRvd1Jvb3Qo
KSBjb25zdAogICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLnRhaWwoKTsKIH0KIAotaW5saW5lIEhU
TUxDb250ZW50U2VsZWN0b3ImIEVsZW1lbnRTaGFkb3c6OnNlbGVjdG9yKCkKK2lubGluZSBTaGFk
b3dEaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IoKQogewotICAgIHJldHVy
biBtX3NlbGVjdG9yOworICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwogfQogCi1pbmxpbmUgY29u
c3QgSFRNTENvbnRlbnRTZWxlY3RvciYgRWxlbWVudFNoYWRvdzo6c2VsZWN0b3IoKSBjb25zdAor
aW5saW5lIGNvbnN0IFNoYWRvd0Rpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRv
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3I7CisgICAgcmV0dXJuIG1fZGlzdHJp
YnV0b3I7CiB9CiAKLWlubGluZSB2b2lkIEVsZW1lbnRTaGFkb3c6OmNsZWFyTmVlZHNSZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCitpbmxpbmUgdm9pZCBFbGVtZW50U2hhZG93OjpjbGVh
ck5lZWRzUmVjYWxjRGlzdHJpYnV0aW9uKCkKIHsKLSAgICBtX25lZWRzUmVjYWxjdWxhdGVDb250
ZW50ID0gZmFsc2U7CisgICAgbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiA9IGZhbHNlOwogfQog
CiBpbmxpbmUgRWxlbWVudCogRWxlbWVudFNoYWRvdzo6aG9zdCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyNzFmNWNhZDBiZTEwYzRi
YzJjMjFlNjk2MDgwZjIyNDVhMDM5OWRjLi4yZTFjMTliYTk4YTkyMmUyNzhkOTNhNGYyYjJmODli
NzU1ZTI3NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVk
ZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBA
IC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUg
IlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiAjaWYgRU5B
QkxFKFNWRykKQEAgLTk3LDcgKzk3LDcgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBpZiAodG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5oYXNT
ZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhh
c0Rpc3RyaWJ1dGlvbigpKQogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RG
YWxsYmFja2VkOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBB
dHRhY2hpbmdGYWxsYmFja2VkOwpAQCAtMTQyLDEyICsxNDIsMTIgQEAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTdHlsZSgpCiAKIHN0YXRpYyBp
bmxpbmUgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KEluc2VydGlv
blBvaW50KiBwYXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rp
b24qIGN1cnJlbnRTZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50
KTsKLSAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCisgICAgU2hhZG93Qm91bmRhcnlEaXN0cmli
dXRpb246Okl0ZW0qIGN1cnJlbnRJdGVtID0gcGFyZW50LT5kaXN0cmlidXRpb24oKS0+ZmluZChj
dXJyZW50KTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb24t
Pm5leHQoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgewotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5k
ZXJlcigpKQorICAgIGZvciAoU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0g
PSBjdXJyZW50SXRlbS0+bmV4dCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXRlbS0+bm9kZSgpLT5yZW5kZXJlcigp
KQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTU4LDEwICsxNTgs
MTAgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZkluc2Vy
dGlvblBvaW50KEluc2VydGlvblBvaW50KiBwYXIKIHsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RS
ZW5kZXJlciA9IDA7CiAKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBz
ZWxlY3Rpb24tPm5leHQoKSkgewotICAgICAgICBpZiAoc2VsZWN0aW9uLT5ub2RlKCkgPT0gY3Vy
cmVudCkKKyAgICBmb3IgKFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0g
cGFyZW50LT5kaXN0cmlidXRpb24oKS0+Zmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQo
KSkgeworICAgICAgICBpZiAoaXRlbS0+bm9kZSgpID09IGN1cnJlbnQpCiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5v
ZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBp
dGVtLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5k
ZXJlcjsKICAgICB9CiAKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9i
amVjdCogcHJldmlvdXNSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBh
cgogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9u
UG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkKIHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxl
Y3Rpb24oKSkgewotICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBz
ZWxlY3Rpb24tPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAocGFyZW50LT5oYXNE
aXN0cmlidXRpb24oKSkgeworICAgICAgICBmb3IgKFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9u
OjpJdGVtKiBpdGVtID0gcGFyZW50LT5kaXN0cmlidXRpb24oKS0+Zmlyc3QoKTsgaXRlbTsgaXRl
bSA9IGl0ZW0tPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBpdGVtLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyOwogICAgICAgICB9CiAKQEAgLTE4NCw5ICsxODQsOSBAQCBzdGF0aWMgaW5saW5lIFJl
bmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudAogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2ZJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhh
c1NlbGVjdGlvbigpKSB7Ci0gICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVj
dGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5sYXN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9u
ID0gc2VsZWN0aW9uLT5wcmV2aW91cygpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgIGlmIChwYXJl
bnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgIGZvciAoU2hhZG93Qm91bmRhcnlEaXN0
cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigpLT5sYXN0KCk7IGl0
ZW07IGl0ZW0gPSBpdGVtLT5wcmV2aW91cygpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CmluZGV4IGFhMDM0YmEzMDBlMjc1NjE3ZTViN2Y5NWFjYjc1N2E3MzY2OTU2ZDUuLjQxMTM3MWM5
YjEyYmZlYTNhZDA1MGY2ZGE5MjQ1NzgxOWUzOGU4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAKQEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dEaXN0cmlidXRvci5oIgogI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKaW5kZXggYzAwMjRjNzE2NzMyMzA5OTcwZjFiZTgxNzA3NTE2ODVmZjA0MTllMC4u
MjkyZjM3M2JiOGYxZjk2ODNhZjMxNWFhZDRkYmU3MzhmNmM2ZTYwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCkBAIC0zOCw4ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBET01TZWxlY3Rpb247Ci1jbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7
Ci1jbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiBjbGFz
cyBFbGVtZW50U2hhZG93OwogCkBAIC02MCw5ICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVjYWxjU2hhZG93VHJlZVN0eWxlKFN0eWxlQ2hhbmdlKTsKIAotICAgIHZvaWQgc2V0TmVlZHNS
ZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgYm9vbCBuZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCBzZXROZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigp
OworICAgIHZvaWQgY2xlYXJOZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOworICAgIGJvb2wgbmVl
ZHNSZWNhbGNEaXN0cmlidXRpb24oKTsKIAogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApp
bmRleCA1NDM2Nzk1MDYxZjkzOWEwNDhiMmY5ODY1M2M4Mzg2YTljM2VmYTdmLi5lNTE4ZTAwYTFh
NGVlNzEzNjYxYTZiZWQ2YWM2MjY2MjQ3OWUwYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAog
CiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJFbGVtZW50U2hh
ZG93LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC05MCw3
ICs5MCw3IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzZWxlY3RBdHRyKSB7CiAgICAg
ICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9k
ZSgpKSkKLSAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hp
bGRyZW5BbmRTaGFkb3coKTsKKyAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPnNldE5lZWRzUmVj
YWxjRGlzdHJpYnV0aW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEluc2VydGlvblBvaW50Ojpw
YXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMxZTQxOTRlYzVhMzdkZTAzOTRjMDNmOGU4MzhlNjViYjQ1ODc0YzQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgi
Ci0KLSNpbmNsdWRlICJDb250ZW50U2VsZWN0b3JRdWVyeS5oIgotI2luY2x1ZGUgIkhUTUxDb250
ZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rpb246OmFwcGVuZChQYXNzUmVmUHRyPEhU
TUxDb250ZW50U2VsZWN0aW9uPiBuZXh0KQotewotICAgIEFTU0VSVCghbV9uZXh0KTsKLSAgICBB
U1NFUlQoIW5leHQtPnByZXZpb3VzKCkpOwotICAgIG1fbmV4dCA9IG5leHQ7Ci0gICAgbV9uZXh0
LT5tX3ByZXZpb3VzID0gdGhpczsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbjo6dW5s
aW5rKCkKLXsKLSAgICBBU1NFUlQoIW1fcHJldmlvdXMpOyAvLyBDYW4gYmUgY2FsbGVkIG9ubHkg
Zm9yIGEgaGVhZC4KLSAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IGl0ZW0gPSB0aGlz
OwotICAgIHdoaWxlIChpdGVtKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlbS0+cHJldmlvdXMoKSk7
Ci0gICAgICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gbmV4dEl0ZW0gPSBpdGVtLT5t
X25leHQ7Ci0gICAgICAgIGl0ZW0tPm1fbmV4dC5jbGVhcigpOwotICAgICAgICBpZiAobmV4dEl0
ZW0pCi0gICAgICAgICAgICBuZXh0SXRlbS0+bV9wcmV2aW91cy5jbGVhcigpOwotICAgICAgICBp
dGVtID0gbmV4dEl0ZW07Ci0gICAgfQotfQotCi1IVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OkhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdCgpCi17Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dDo6fkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCgpCi17Ci0gICAgQVNTRVJUKGlzRW1wdHkoKSk7
Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmZp
bmQoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBp
dGVtID0gZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkgewotICAgICAgICBpZiAo
bm9kZSA9PSBpdGVtLT5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlbTsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojpj
bGVhcigpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fbGFzdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2ZpcnN0LT51bmxpbmsoKTsKLSAgICBt
X2ZpcnN0LmNsZWFyKCk7Ci0gICAgbV9sYXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgSFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4g
Y2hpbGQpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fbGFzdCk7
Ci0gICAgICAgIG1fZmlyc3QgPSBtX2xhc3QgPSBjaGlsZDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIG1fbGFzdC0+YXBwZW5kKGNoaWxkKTsKLSAgICBtX2xhc3QgPSBtX2xhc3QtPm5l
eHQoKTsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rvcjo6SFRNTENvbnRlbnRTZWxlY3RvcigpCi0g
ICAgOiBtX3BoYXNlKFNlbGVjdGlvblByZXZlbnRlZCkKLXsKLX0KLQotSFRNTENvbnRlbnRTZWxl
Y3Rvcjo6fkhUTUxDb250ZW50U2VsZWN0b3IoKQotewotICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMu
aXNFbXB0eSgpKTsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpzZWxlY3QoSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIHNlbGVj
dGlvbnMpCi17Ci0gICAgQVNTRVJUKG1fcGhhc2UgPT0gSG9zdENoaWxkcmVuUG9wdWxhdGVkKTsK
LSAgICBBU1NFUlQoc2VsZWN0aW9ucy0+aXNFbXB0eSgpKTsKLQotICAgIENvbnRlbnRTZWxlY3Rv
clF1ZXJ5IHF1ZXJ5KGluc2VydGlvblBvaW50KTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jYW5kaWRhdGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIGNoaWxkID0gbV9j
YW5kaWRhdGVzW2ldLmdldCgpOwotICAgICAgICBpZiAoIWNoaWxkKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IHNlbGVjdGlv
biA9IEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUoaW5zZXJ0aW9uUG9pbnQsIGNoaWxkKTsK
LQotICAgICAgICBzZWxlY3Rpb25zLT5hcHBlbmQoc2VsZWN0aW9uKTsKLSAgICAgICAgbV9zZWxl
Y3Rpb25TZXQuYWRkKHNlbGVjdGlvbi5nZXQoKSk7Ci0gICAgICAgIG1fY2FuZGlkYXRlc1tpXSA9
IDA7Ci0gICAgfQotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnVuc2VsZWN0KEhUTUxD
b250ZW50U2VsZWN0aW9uTGlzdCogbGlzdCkKLXsKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBsaXN0LT5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNl
bGVjdGlvbi0+bmV4dCgpKQotICAgICAgICBtX3NlbGVjdGlvblNldC5yZW1vdmUoc2VsZWN0aW9u
KTsKLSAgICBsaXN0LT5jbGVhcigpOwotfQotCi1IVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENv
bnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fc2VsZWN0aW9uU2V0LmZpbmQoa2V5KTsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVj
dG9yOjp3aWxsU2VsZWN0KCkKLXsKLSAgICBtX3BoYXNlID0gU2VsZWN0aW9uU3RhcnRlZDsKLX0K
LQotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpkaWRTZWxlY3QoKQotewotICAgIEFTU0VSVCht
X3BoYXNlICE9IFNlbGVjdGlvblByZXZlbnRlZCk7Ci0gICAgbV9waGFzZSA9IFNlbGVjdGlvblBy
ZXZlbnRlZDsKLSAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKLX0KLQotdm9pZCBIVE1MQ29udGVu
dFNlbGVjdG9yOjpwb3B1bGF0ZUlmTmVjZXNzYXJ5KEVsZW1lbnQqIHNoYWRvd0hvc3QpCi17Ci0g
ICAgaWYgKGhhc1BvcHVsYXRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9j
YW5kaWRhdGVzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHNoYWRvd0hvc3QpOwotICAgIEFTU0VS
VChtX3BoYXNlID09IFNlbGVjdGlvblN0YXJ0ZWQpOwotCi0gICAgbV9waGFzZSA9IEhvc3RDaGls
ZHJlblBvcHVsYXRlZDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBtX2NhbmRp
ZGF0ZXMuYXBwZW5kKG5vZGUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJjZmJkZGJiZDg4MjczODVhN2M5YWZjMTFjMjRmNmZlY2E2ZTM2MjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEhUTUxDb250ZW50U2VsZWN0b3JfaAotI2RlZmluZSBIVE1MQ29udGVudFNlbGVjdG9y
X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbGVtZW50OwotY2xhc3MgSFRNTENvbnRlbnRF
bGVtZW50OwotY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7Ci1jbGFzcyBOb2RlOwotY2xhc3MgU2hhZG93
Um9vdDsKLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxI
VE1MQ29udGVudFNlbGVjdGlvbj4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxDb250ZW50U2VsZWN0aW9uPiBjcmVhdGUoSW5zZXJ0aW9uUG9pbnQqLCBOb2RlKik7Ci0KLSAg
ICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2luc2Vy
dGlvblBvaW50OyB9Ci0gICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQo
KTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9u
ZXh0LmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHByZXZpb3VzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0
cjxIVE1MQ29udGVudFNlbGVjdGlvbj4pOwotICAgIHZvaWQgdW5saW5rKCk7Ci0KLXByaXZhdGU6
Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24oSW5zZXJ0aW9uUG9pbnQqLCBOb2RlKik7Ci0KLSAg
ICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsKLSAgICBSZWZQdHI8Tm9kZT4gbV9u
b2RlOwotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gbV9uZXh0OwotICAgIFJlZlB0
cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gbV9wcmV2aW91czsKLX07Ci0KLWlubGluZSBIVE1MQ29u
dGVudFNlbGVjdGlvbjo6SFRNTENvbnRlbnRTZWxlY3Rpb24oSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50LCBOb2RlKiBub2RlKQotICAgIDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Q
b2ludCksIG1fbm9kZShub2RlKQoteyB9Ci0KLWlubGluZSBQYXNzUmVmUHRyPEhUTUxDb250ZW50
U2VsZWN0aW9uPiBIVE1MQ29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxDb250ZW50U2VsZWN0aW9uKGluc2VydGlvblBvaW50LCBub2RlKSk7Ci19Ci0KLWNsYXNzIEhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdCB7Ci1wdWJsaWM6Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rp
b25MaXN0KCk7Ci0gICAgfkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCgpOwotCi0gICAgSFRNTENv
bnRlbnRTZWxlY3Rpb24qIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdC5nZXQoKTsgfQot
ICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Lmdl
dCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoTm9kZSopIGNvbnN0OwotICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpcnN0OyB9Ci0KLSAgICB2b2lkIGNs
ZWFyKCk7Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4p
OwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gbV9maXJzdDsK
LSAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IG1fbGFzdDsKLX07Ci0KLQotY2xhc3Mg
SFRNTENvbnRlbnRTZWxlY3Rpb25TZXQgewotcHVibGljOgotICAgIHZvaWQgYWRkKEhUTUxDb250
ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUpOyB9Ci0gICAgdm9pZCByZW1v
dmUoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LnJlbW92ZSh2YWx1ZSk7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc0VtcHR5KCk7IH0KLSAg
ICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwotCi1w
cml2YXRlOgotICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGUqIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25z
dCBOb2RlKj46Omhhc2goa2V5KTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uLCBjb25zdCBOb2RlKiBub2RlKSB7IHJldHVy
biBzZWxlY3Rpb24tPm5vZGUoKSA9PSBub2RlOyB9Ci0gICAgfTsKLQotICAgIHN0cnVjdCBIYXNo
IHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSFRNTENvbnRlbnRTZWxlY3Rpb24qIGtl
eSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5LT5ub2RlKCkpOyB9Ci0g
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKEhUTUxDb250ZW50U2VsZWN0aW9uKiBhLCBIVE1MQ29u
dGVudFNlbGVjdGlvbiogYikgeyByZXR1cm4gYS0+bm9kZSgpID09IGItPm5vZGUoKTsgfQotICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hTZXQ8SFRNTENvbnRlbnRTZWxlY3Rpb24q
LCBIYXNoPiBQb2ludGVyU2V0OwotCi0gICAgUG9pbnRlclNldCBtX3NldDsKLX07Ci0KLWlubGlu
ZSBIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoY29u
c3QgTm9kZSoga2V5KSBjb25zdAotewotICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0g
bV9zZXQuZmluZDxjb25zdCBOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0
b3I+KGtleSk7Ci0gICAgcmV0dXJuIGZvdW5kICE9IG1fc2V0LmVuZCgpID8gKmZvdW5kIDogMDsK
LX0KLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSFRNTENvbnRlbnRTZWxlY3Rvcik7Ci1wdWJsaWM6Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rv
cigpOwotICAgIH5IVE1MQ29udGVudFNlbGVjdG9yKCk7Ci0KLSAgICB2b2lkIHNlbGVjdChJbnNl
cnRpb25Qb2ludCosIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwotICAgIHZvaWQgdW5zZWxl
Y3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24q
IGZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKLQotICAgIHZvaWQgd2lsbFNlbGVjdCgp
OwotICAgIGJvb2wgaXNTZWxlY3RpbmcoKSBjb25zdDsKLSAgICB2b2lkIGRpZFNlbGVjdCgpOwot
Ci0gICAgdm9pZCBwb3B1bGF0ZUlmTmVjZXNzYXJ5KEVsZW1lbnQqIHNoYWRvd0hvc3QpOwotICAg
IGJvb2wgaGFzUG9wdWxhdGVkKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBTZWxlY3Rp
bmdQaGFzZSB7Ci0gICAgICAgIFNlbGVjdGlvblByZXZlbnRlZCwKLSAgICAgICAgU2VsZWN0aW9u
U3RhcnRlZCwKLSAgICAgICAgSG9zdENoaWxkcmVuUG9wdWxhdGVkLAotICAgIH07Ci0KLSAgICB2
b2lkIHJlbW92ZUZyb21TZXQoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAgdm9pZCBh
ZGRUb1NldChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
Tm9kZT4gPiBtX2NhbmRpZGF0ZXM7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQgbV9zZWxl
Y3Rpb25TZXQ7Ci0gICAgU2VsZWN0aW5nUGhhc2UgbV9waGFzZTsKLX07Ci0KLWlubGluZSBib29s
IEhUTUxDb250ZW50U2VsZWN0b3I6OmlzU2VsZWN0aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9waGFzZSAhPSBTZWxlY3Rpb25QcmV2ZW50ZWQ7Ci19Ci0KLWlubGluZSBib29sIEhUTUxDb250
ZW50U2VsZWN0b3I6Omhhc1BvcHVsYXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGhhc2Ug
PT0gSG9zdENoaWxkcmVuUG9wdWxhdGVkOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IDM3ZTUxMDFjMzdiMjA5
N2U0NDFmOGE0NDEyODgyZWVmM2Y1Mjk1MTQuLjZjNDUyNDE3NjI2NTQ4YTM4NWE5MTQ2M2VhNGFl
ZmQxY2FmMzliMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNlcnRp
b25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0g
ICAgLCBtX3NlbGVjdGlvbnMoKQorICAgICwgbV9kaXN0cmlidXRpb24oKQogewogfQogCkBAIC03
NiwxMCArNzYsMTAgQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKCkKIAogICAgICAgICAv
LyBXaGVuIHNoYWRvdyBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUg
cmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKICAgICAgICAgLy8gb3RoZXIg
aW5zZXJ0aW9uIHBvaW50cy4KLSAgICAgICAgc2hhZG93LT5zZXROZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgIHNoYWRvdy0+c2V0TmVlZHNSZWNhbGNEaXN0cmli
dXRpb24oKTsKICAgICB9CiAKLSAgICBBU1NFUlQobV9zZWxlY3Rpb25zLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSk7CiAgICAgSFRNTEVsZW1lbnQ6OmRl
dGFjaCgpOwogfQogCkBAIC0xMTksNDEgKzExOSw0MSBAQCBib29sIEluc2VydGlvblBvaW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogCiBp
bmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6ZGlzdHJpYnV0ZUhvc3RDaGlsZHJlbihFbGVtZW50
U2hhZG93KiBzaGFkb3cpCiB7Ci0gICAgaWYgKCFzaGFkb3ctPnNlbGVjdG9yKCkuaXNTZWxlY3Rp
bmcoKSkgewotICAgICAgICAvLyBJZiBIVE1MQ29udGVudFNlbGVjdG9yIGlzIG5vdCBpbnQgc2Vs
ZWN0aW5nIHBoYXNlLCBpdCBtZWFucyBJbnNlcnRpb25Qb2ludCBpcyBhdHRhY2hlZCBmcm9tCisg
ICAgaWYgKCFzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuaW5EaXN0cmlidXRpb24oKSkgeworICAgICAg
ICAvLyBJZiBTaGFkb3dEaXN0cmlidXRvciBpcyBub3QgaW50IHNlbGVjdGluZyBwaGFzZSwgaXQg
bWVhbnMgSW5zZXJ0aW9uUG9pbnQgaXMgYXR0YWNoZWQgZnJvbQogICAgICAgICAvLyBub24tRWxl
bWVudFNoYWRvdyBub2RlLiBUbyBydW4gZGlzdHJpYnV0ZSBhbGdvcml0aG0sIHdlIGhhdmUgdG8g
cmVhdHRhY2ggRWxlbWVudFNoYWRvdy4KLSAgICAgICAgc2hhZG93LT5zZXROZWVkc1JlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgIHNoYWRvdy0+c2V0TmVlZHNSZWNhbGNE
aXN0cmlidXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNoYWRvdy0+c2Vs
ZWN0b3IoKS5wb3B1bGF0ZUlmTmVjZXNzYXJ5KHNoYWRvdy0+aG9zdCgpKTsKLSAgICBzaGFkb3ct
PnNlbGVjdG9yKCkudW5zZWxlY3QoJm1fc2VsZWN0aW9ucyk7Ci0gICAgc2hhZG93LT5zZWxlY3Rv
cigpLnNlbGVjdCh0aGlzLCAmbV9zZWxlY3Rpb25zKTsKKyAgICBzaGFkb3ctPmRpc3RyaWJ1dG9y
KCkucHJlcGFyZVBvb2xGb3Ioc2hhZG93LT5ob3N0KCkpOworICAgIHNoYWRvdy0+ZGlzdHJpYnV0
b3IoKS5jbGVhckRpc3RyaWJ1dGlvbigmbV9kaXN0cmlidXRpb24pOworICAgIHNoYWRvdy0+ZGlz
dHJpYnV0b3IoKS5kaXN0cmlidXRlKHRoaXMsICZtX2Rpc3RyaWJ1dGlvbik7CiB9CiAKIGlubGlu
ZSB2b2lkIEluc2VydGlvblBvaW50OjpjbGVhckRpc3RyaWJ1dGlvbihFbGVtZW50U2hhZG93KiBz
aGFkb3cpCiB7Ci0gICAgc2hhZG93LT5zZWxlY3RvcigpLnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMp
OworICAgIHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5jbGVhckRpc3RyaWJ1dGlvbigmbV9kaXN0cmli
dXRpb24pOwogfQogCiBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoRGlzdHJpYnV0
ZWROb2RlKCkKIHsKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBt
X3NlbGVjdGlvbnMuZmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5l
eHQoKSkKLSAgICAgICAgc2VsZWN0aW9uLT5ub2RlKCktPmF0dGFjaCgpOworICAgIGZvciAoU2hh
ZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBtX2Rpc3RyaWJ1dGlvbi5maXJz
dCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKQorICAgICAgICBpdGVtLT5ub2RlKCktPmF0
dGFjaCgpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9v
dChTaGFkb3dSb290KiBzaGFkb3dSb290KQogewogICAgIHNoYWRvd1Jvb3QtPnNldEFzc2lnbmVk
VG8odGhpcyk7Ci0gICAgbV9zZWxlY3Rpb25zLmNsZWFyKCk7CisgICAgbV9kaXN0cmlidXRpb24u
Y2xlYXIoKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dSb290LT5maXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBtX3NlbGVjdGlvbnMu
YXBwZW5kKEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUodGhpcywgbm9kZSkpOworICAgICAg
ICBtX2Rpc3RyaWJ1dGlvbi5hcHBlbmQodGhpcywgbm9kZSk7CiB9CiAKIGlubGluZSB2b2lkIElu
c2VydGlvblBvaW50OjpjbGVhckFzc2lnbm1lbnQoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsK
ICAgICBzaGFkb3dSb290LT5zZXRBc3NpZ25lZFRvKDApOwotICAgIG1fc2VsZWN0aW9ucy5jbGVh
cigpOworICAgIG1fZGlzdHJpYnV0aW9uLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4
IDg0MGRkMDY0NzkwZmNkOTM2ZmVkMmM0MmI3MDI4M2E5MjE0MDlmZTIuLmQzMDYyNWVkNzZlMWQ5
ZmNlODQ0YjkzMTNjNTQ5ZjM5ZDU3YmEzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lmbmRlZiBJbnNlcnRpb25Q
b2ludF9oCiAjZGVmaW5lIEluc2VydGlvblBvaW50X2gKIAotI2luY2x1ZGUgIkhUTUxDb250ZW50
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBJbnNl
cnRpb25Qb2ludCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SW5zZXJ0aW9uUG9pbnQoKTsKIAotICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCog
c2VsZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICZtX3NlbGVjdGlvbnM7IH0KLSAgICBib29sIGhh
c1NlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9ucy5maXJzdCgpOyB9CisgICAg
Y29uc3QgU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb24qIGRpc3RyaWJ1dGlvbigpIGNvbnN0IHsg
cmV0dXJuICZtX2Rpc3RyaWJ1dGlvbjsgfQorICAgIGJvb2wgaGFzRGlzdHJpYnV0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb24uZmlyc3QoKTsgfQogICAgIGJvb2wgaXNTaGFkb3dC
b3VuZGFyeSgpIGNvbnN0OwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXNzaWduU2hhZG93Um9vdChTaGFkb3dSb290Kik7
CiAgICAgdm9pZCBjbGVhckFzc2lnbm1lbnQoU2hhZG93Um9vdCopOwogCi0gICAgSFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0IG1fc2VsZWN0aW9uczsKKyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1
dGlvbiBtX2Rpc3RyaWJ1dGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NoYWRvd0Rpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRv
d0Rpc3RyaWJ1dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDY2MjFkZTQxNWViNjk0ZDQyYjQ3NmZiOGQ0
ZGJkMGIxYjI2MWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCisKKyNpbmNsdWRlICJDb250
ZW50U2VsZWN0b3JRdWVyeS5oIgorI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRvd0Jv
dW5kYXJ5RGlzdHJpYnV0aW9uOjpTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbigpCit7Cit9CisK
K1NoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjp+U2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb24o
KQoreworICAgIEFTU0VSVChpc0VtcHR5KCkpOworfQorCitTaGFkb3dCb3VuZGFyeURpc3RyaWJ1
dGlvbjo6SXRlbSogU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246OmZpbmQoTm9kZSogbm9kZSkg
Y29uc3QKK3sKKyAgICBmb3IgKFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVt
ID0gZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkgeworICAgICAgICBpZiAobm9k
ZSA9PSBpdGVtLT5ub2RlKCkpCisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246OmNs
ZWFyKCkKK3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxTaGFkb3dCb3VuZGFyeURpc3Ry
aWJ1dGlvbjo6SXRlbT4gaXRlbSA9IG1fZmlyc3Q7CisgICAgd2hpbGUgKGl0ZW0pIHsKKyAgICAg
ICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKKyAgICAgICAgUmVmUHRyPFNoYWRvd0JvdW5k
YXJ5RGlzdHJpYnV0aW9uOjpJdGVtPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKKyAgICAgICAg
aXRlbS0+bV9uZXh0LmNsZWFyKCk7CisgICAgICAgIGlmIChuZXh0SXRlbSkKKyAgICAgICAgICAg
IG5leHRJdGVtLT5tX3ByZXZpb3VzLmNsZWFyKCk7CisgICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsK
KyAgICB9CisKKyAgICBtX2ZpcnN0LmNsZWFyKCk7CisgICAgbV9sYXN0LmNsZWFyKCk7Cit9CisK
K3ZvaWQgU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246OmFwcGVuZChJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5vZGUpCit7CisgICAgUmVmUHRyPEl0ZW0+IGNoaWxkID0g
SXRlbTo6Y3JlYXRlKGluc2VydGlvblBvaW50LCBub2RlKTsKKworICAgIGlmIChpc0VtcHR5KCkp
IHsKKyAgICAgICAgQVNTRVJUKCFtX2xhc3QpOworICAgICAgICBtX2ZpcnN0ID0gbV9sYXN0ID0g
Y2hpbGQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fbGFzdC0+bmV4
dCgpKTsKKyAgICBBU1NFUlQoIWNoaWxkLT5wcmV2aW91cygpKTsKKyAgICBtX2xhc3QtPm1fbmV4
dCA9IGNoaWxkOworICAgIGNoaWxkLT5tX3ByZXZpb3VzID0gbV9sYXN0OworICAgIG1fbGFzdCA9
IG1fbGFzdC0+bmV4dCgpOworfQorCitTaGFkb3dEaXN0cmlidXRvcjo6U2hhZG93RGlzdHJpYnV0
b3IoKQorICAgIDogbV9waGFzZShQcmV2ZW50ZWQpCit7Cit9CisKK1NoYWRvd0Rpc3RyaWJ1dG9y
Ojp+U2hhZG93RGlzdHJpYnV0b3IoKQoreworICAgIEFTU0VSVChtX3Bvb2wuaXNFbXB0eSgpKTsK
K30KKwordm9pZCBTaGFkb3dEaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnQsIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24p
Cit7CisgICAgQVNTRVJUKG1fcGhhc2UgPT0gUHJlcGFyZWQpOworICAgIEFTU0VSVChkaXN0cmli
dXRpb24tPmlzRW1wdHkoKSk7CisKKyAgICBDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShpbnNl
cnRpb25Qb2ludCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7
ICsraSkgeworICAgICAgICBOb2RlKiBjaGlsZCA9IG1fcG9vbFtpXS5nZXQoKTsKKyAgICAgICAg
aWYgKCFjaGlsZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXF1ZXJ5Lm1h
dGNoZXMoY2hpbGQpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZGlzdHJpYnV0
aW9uLT5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQsIGNoaWxkKTsKKyAgICAgICAgbV9ub2RlVG9JbnNl
cnRpb25Qb2ludC5hZGQoZGlzdHJpYnV0aW9uLT5sYXN0KCkpOworICAgICAgICBtX3Bvb2xbaV0g
PSAwOworICAgIH0KK30KKwordm9pZCBTaGFkb3dEaXN0cmlidXRvcjo6Y2xlYXJEaXN0cmlidXRp
b24oU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb24qIGxpc3QpCit7CisgICAgZm9yIChTaGFkb3dC
b3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IGxpc3QtPmZpcnN0KCk7IGl0ZW07IGl0
ZW0gPSBpdGVtLT5uZXh0KCkpCisgICAgICAgIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQucmVtb3Zl
KGl0ZW0pOworCisgICAgbGlzdC0+Y2xlYXIoKTsKK30KKworU2hhZG93Qm91bmRhcnlEaXN0cmli
dXRpb246Okl0ZW0qIFNoYWRvd0Rpc3RyaWJ1dG9yOjpmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkg
Y29uc3QKK3sKKyAgICBJbnZlcnRlZFRhYmxlOjppdGVyYXRvciBmb3VuZCA9IG1fbm9kZVRvSW5z
ZXJ0aW9uUG9pbnQuZmluZDxjb25zdCBOb2RlKiwgVHJhbnNsYXRvcj4oa2V5KTsKKyAgICByZXR1
cm4gZm91bmQgIT0gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5lbmQoKSA/ICpmb3VuZCA6IDA7Cit9
CisKK0luc2VydGlvblBvaW50KiBTaGFkb3dEaXN0cmlidXRvcjo6ZmluZEluc2VydGlvblBvaW50
Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKK3sKKyAgICBJbnZlcnRlZFRhYmxlOjppdGVyYXRv
ciBmb3VuZCA9IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuZmluZDxjb25zdCBOb2RlKiwgVHJhbnNs
YXRvcj4oa2V5KTsKKyAgICByZXR1cm4gZm91bmQgIT0gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5l
bmQoKSA/ICgqZm91bmQpLT5pbnNlcnRpb25Qb2ludCgpIDogMDsKK30KKwordm9pZCBTaGFkb3dE
aXN0cmlidXRvcjo6d2lsbERpc3RyaWJ1dGUoKQoreworICAgIG1fcGhhc2UgPSBTdGFydGVkOwor
fQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dG9yOjpkaWREaXN0cmlidXRlKCkKK3sKKyAgICBBU1NF
UlQobV9waGFzZSAhPSBQcmV2ZW50ZWQpOworICAgIG1fcGhhc2UgPSBQcmV2ZW50ZWQ7CisgICAg
bV9wb29sLmNsZWFyKCk7Cit9CisKK3ZvaWQgU2hhZG93RGlzdHJpYnV0b3I6OnByZXBhcmVQb29s
Rm9yKEVsZW1lbnQqIHNoYWRvd0hvc3QpCit7CisgICAgaWYgKHBvb2xJc1JlYWR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3Bvb2wuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQo
c2hhZG93SG9zdCk7CisgICAgQVNTRVJUKG1fcGhhc2UgPT0gU3RhcnRlZCk7CisKKyAgICBtX3Bo
YXNlID0gUHJlcGFyZWQ7CisgICAgZm9yIChOb2RlKiBub2RlID0gc2hhZG93SG9zdC0+Zmlyc3RD
aGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbV9wb29s
LmFwcGVuZChub2RlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1No
YWRvd0Rpc3RyaWJ1dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVmYTg1NzM0YmIzYjVhZjZiOGZhODcwNTIx
Y2NkZGNlOWQ1ZTFlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NoYWRvd0Rpc3RyaWJ1dG9yLmgKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYWRvd0Rp
c3RyaWJ1dG9yX2gKKyNkZWZpbmUgU2hhZG93RGlzdHJpYnV0b3JfaAorCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNlcnRpb25Qb2ludDsKK2NsYXNzIE5vZGU7Citj
bGFzcyBTaGFkb3dSb290OworCitjbGFzcyBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbiB7Citw
dWJsaWM6CisgICAgY2xhc3MgSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPEl0ZW0+IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjsK
KworICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVy
biBtX2luc2VydGlvblBvaW50OyB9CisgICAgICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVy
biBtX25vZGUuZ2V0KCk7IH0KKyAgICAgICAgSXRlbSogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmV4dC5nZXQoKTsgfQorICAgICAgICBJdGVtKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJldmlvdXMuZ2V0KCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEl0ZW0+IGNyZWF0ZShJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5v
ZGUpIHsgIHJldHVybiBhZG9wdFJlZihuZXcgSXRlbShpbnNlcnRpb25Qb2ludCwgbm9kZSkpOyB9
CisKKyAgICAgICAgSXRlbShJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5v
ZGUpCisgICAgICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCisgICAg
ICAgICAgICAsIG1fbm9kZShub2RlKQorICAgICAgICB7IH0KKworICAgICAgICBJbnNlcnRpb25Q
b2ludCogbV9pbnNlcnRpb25Qb2ludDsKKyAgICAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAg
ICAgICAgUmVmUHRyPEl0ZW0+IG1fbmV4dDsKKyAgICAgICAgUmVmUHRyPEl0ZW0+IG1fcHJldmlv
dXM7CisgICAgfTsKKyAgICAKKyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbigpOworICAg
IH5TaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbigpOworCisgICAgSXRlbSogZmlyc3QoKSBjb25z
dCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9CisgICAgSXRlbSogbGFzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdC5nZXQoKTsgfQorICAgIE5vZGUqIGZpcnN0Tm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3QgPyBtX2ZpcnN0LT5ub2RlKCkgOiAwOyB9CisgICAgTm9kZSogbGFzdE5vZGUoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0ID8gbV9sYXN0LT5ub2RlKCkgOiAwOyB9CisgICAgCisgICAg
SXRlbSogZmluZChOb2RlKikgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fZmlyc3Q7IH0KKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGFwcGVuZChJbnNl
cnRpb25Qb2ludCosIE5vZGUqKTsKKworcHJpdmF0ZToKKworICAgIFJlZlB0cjxJdGVtPiBtX2Zp
cnN0OworICAgIFJlZlB0cjxJdGVtPiBtX2xhc3Q7Cit9OworCitjbGFzcyBTaGFkb3dEaXN0cmli
dXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhZG93RGlzdHJpYnV0b3IpOworcHVi
bGljOgorICAgIFNoYWRvd0Rpc3RyaWJ1dG9yKCk7CisgICAgflNoYWRvd0Rpc3RyaWJ1dG9yKCk7
CisKKyAgICB2b2lkIGRpc3RyaWJ1dGUoSW5zZXJ0aW9uUG9pbnQqLCBTaGFkb3dCb3VuZGFyeURp
c3RyaWJ1dGlvbiopOworICAgIHZvaWQgY2xlYXJEaXN0cmlidXRpb24oU2hhZG93Qm91bmRhcnlE
aXN0cmlidXRpb24qKTsKKyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogZmlu
ZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OworICAgIEluc2VydGlvblBvaW50KiBmaW5kSW5z
ZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKKworICAgIHZvaWQgd2lsbERp
c3RyaWJ1dGUoKTsKKyAgICBib29sIGluRGlzdHJpYnV0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBk
aWREaXN0cmlidXRlKCk7CisKKyAgICB2b2lkIHByZXBhcmVQb29sRm9yKEVsZW1lbnQqIHNoYWRv
d0hvc3QpOworICAgIGJvb2wgcG9vbElzUmVhZHkoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgVHJhbnNsYXRvciB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBOb2RlKiBrZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29uc3QgTm9kZSo+OjpoYXNo
KGtleSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU2hhZG93Qm91bmRhcnlE
aXN0cmlidXRpb246Okl0ZW0qIGl0ZW0sIGNvbnN0IE5vZGUqIG5vZGUpIHsgcmV0dXJuIGl0ZW0t
Pm5vZGUoKSA9PSBub2RlOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGtl
eSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5LT5ub2RlKCkpOyB9Cisg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVt
KiBhLCBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogYikgeyByZXR1cm4gYS0+bm9k
ZSgpID09IGItPm5vZGUoKTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAgICAvLyBVc2VkIGFzIGEg
dGFibGUgZnJvbSBOb2RlIHRvIEluc2VyZXRpb25Qb2ludAorICAgIHR5cGVkZWYgSGFzaFNldDxT
aGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSosIEhhc2g+IEludmVydGVkVGFibGU7CisK
KyAgICBlbnVtIERpc3RyaWJ1dGlvblBoYXNlIHsKKyAgICAgICAgUHJldmVudGVkLAorICAgICAg
ICBTdGFydGVkLAorICAgICAgICBQcmVwYXJlZCwKKyAgICB9OworCisgICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG1fcG9vbDsKKyAgICBEaXN0cmlidXRpb25QaGFzZSBtX3BoYXNlOworICAgIElu
dmVydGVkVGFibGUgbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKK307CisKK2lubGluZSBib29sIFNo
YWRvd0Rpc3RyaWJ1dG9yOjppbkRpc3RyaWJ1dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cGhhc2UgIT0gUHJldmVudGVkOworfQorCitpbmxpbmUgYm9vbCBTaGFkb3dEaXN0cmlidXRvcjo6
cG9vbElzUmVhZHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3BoYXNlID09IFByZXBhcmVkOwor
fQorCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141338</attachid>
            <date>2012-05-11 00:03:50 -0700</date>
            <delta_ts>2012-05-11 01:13:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-86064-20120511160348.patch</filename>
            <type>text/plain</type>
            <size>54007</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDYxYzg4
NDM4ODUxNzVjNGU3MDZmY2UxNjZkNDkxZWNiNTk3NWQzZjEuLmE5OTgwYThhMTlhNWQ3ZWVhZGU3
NzBhODk2N2Y4OWVjZWMwYTZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDMsMTMgKzkw
MywxMyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuY3BwCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCiAg
ICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAotICAgIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuY3BwCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
Y3BwCiAgICAgaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5jcHAKICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAorICAgIGh0bWwvc2hhZG93L1NoYWRvd0Rp
c3RyaWJ1dG9yLmNwcAogICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKICAg
ICBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDk5YjQzOTg2NmRkNDQ3NDA4MzdkMTljMWMxYjhhMTFlOTc4
MDBkMGYuLjliYThmMjkxZGFmMTdiMmVjMzBiYjMyNGZhN2Y2MTQ2ZGE5ZWU5YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjUwOCw4ICsyNTA4LDYgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBAIC0yNTIxLDcgKzI1MTksOSBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggCisJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBm
NzZhZTBiOWY0ZmQyZWE4MThhN2M1ZjVhYWVmYmQ5ZjVjY2VkMWRmLi5iNDgwNDFiMmIzNjI4MGJh
ZTI0NWNiMGYzMTg0NTI3NWNjYWUyYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg3NSwxMyArODc1LDEz
IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNw
cCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIFwKICAgICBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
IFwKICAgICBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgXAogICAgIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwIFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxl
bWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXAogICAg
IGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAorICAgIGh0bWwvc2hhZG93
L1NoYWRvd0Rpc3RyaWJ1dG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBc
CiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCkBAIC0xOTk5LDEwICsxOTk5LDEw
IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBcCiAgICAgaHRt
bC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRFbGVtZW50LmggXAotICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBc
CiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBcCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaCBcCisgICAgaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaCBcCiAgICAgaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIFwKICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5o
IFwKICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBl
Nzc0NmU2NDcxZTk0Njc2MGQ5YTU5OGYwOGRmOTliNGVlYzAyMDkyLi45NTRiMTQ3Yzk5MzU3YTBi
NWQ3MDRmNzI4NjYwYTViNDg3YTRiNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01Nzk2LDggKzU3
OTYsNiBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgn
LAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oJywKLSAgICAgICAgICAg
ICdodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcCcsCkBAIC01ODEyLDYgKzU4MTAsOCBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3Iu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwJywKICAgICAgICAg
ICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDM3MzViYzhjMDI1Nzk5ZjQ1NWZk
YjA1NTE0N2YzZDFjNjQ0NmFkMjMuLmRiNzM0MmEwYmEyYmZhNjgzOGMzN2ZlOTllYzkyM2JhZDBk
YWRmYWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC02MjczMywxNCArNjI3MzMsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXHNoYWRvd1xIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xIVE1MU2hhZG93
RWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02Mjg0OSw2
ICs2Mjg0MSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2hhZG93RGlzdHJpYnV0b3IuY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dc
U2hhZG93RGlzdHJpYnV0b3IuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFNsaWRlclRodW1iRWxlbWVudC5jcHAiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggODVjODRhNzA3OWVlNTExZTA1MGE5MDQ0MjNkNzU0ZjUw
MzQwZWE0OS4uNmQ3ZmI0NzJiMGJhNDQ0ZDM2OTIyM2I0ZGQzNDIxODU0MWUxZjNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTU4NCw4ICsxNTg0LDggQEAKIAkJNTc0MEU4M0QxNTMyREUxNzAwNzYwNjI4IC8qIFRyZWVTY29w
ZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzQwRTgzQjE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCAqLzsgfTsK
IAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzExQ0JEMzAx
MDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3
Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2Mjkw
MEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTQxNEM2
QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBI
VE1MQ29udGVudFNlbGVjdG9yLmggKi87IH07CisJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAv
KiBTaGFkb3dEaXN0cmlidXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJpYnV0
b3IuY3BwICovOyB9OworCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJp
YnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBTaGFkb3dEaXN0cmlidXRvci5oICovOyB9OwogCQk1
N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTExNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKIAkJNTdCNzkxQTYx
NEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEg
LyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJNTdCNzkxQTkxNEM2QTYzMzAwRjIw
MkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRl
bnRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTg2MDEsOCArODYwMSw4IEBACiAJCTU3M0QxMzQ2MTRD
RTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzQwRTgzQTE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRq
dXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQwRTgzQjE1MzJERTE3
MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJlZVNjb3BlQWRqdXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJE
MSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUTUxDb250ZW50U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIFNo
YWRvd0Rpc3RyaWJ1dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRv
d0Rpc3RyaWJ1dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUExMTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUEyMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50
U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50
U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTFBNzE0
QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb250ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDYyNCw4ICsxNDYyNCw2IEBACiAJCQkJNTdCNzkxQTcxNEM2
QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJNTdCNzkxQTgx
NEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oICovLAogCQkJCUE3Qjc3NDk2
MTRDRjYzNTMwMDQwNDRCQiAvKiBIVE1MQ29udGVudEVsZW1lbnQuaWRsICovLAotCQkJCTU3Qjc5
MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLywKLQkJCQk1
N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oICovLAogCQkJ
CTRBQkRGRjA3MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJ
CQkJNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi8sCiAJ
CQkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmlkbCAqLywK
QEAgLTE0NjQxLDYgKzE0NjM5LDggQEAKIAkJCQlBNzhFNTI2RTEzNDZCRDE3MDBBRDlDMzEgLyog
TWV0ZXJTaGFkb3dFbGVtZW50LmggKi8sCiAJCQkJQTcxNUU2NTAxMzRCQkJFQzAwRDhFNzEzIC8q
IFByb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTcxNUU2NTExMzRCQkJFQzAwRDhF
NzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICovLAorCQkJCTU3Qjc5MTlGMTRDNkE2Mjkw
MEYyMDJEMSAvKiBTaGFkb3dEaXN0cmlidXRvci5jcHAgKi8sCisJCQkJNTdCNzkxQTAxNEM2QTYy
OTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmggKi8sCiAJCQkJNDE1MEY5RjAxMkI2RTBF
NzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgKi8sCiAJCQkJNDE1MEY5RUYxMkI2
RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLApAQCAtMjI5
MzksNyArMjI5MzksNiBAQAogCQkJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjUxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBQTE0QzZB
NjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MjQzLDYgKzI0MjQy
LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBTaGFkb3dEaXN0
cmlidXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcwIC8q
IFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U4MEExOTg5Q0EwMDdGQjhD
NSAvKiBTaGFkb3dWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBRkZDOTQwRDAwQTVERjAw
MzAwNzREIC8qIFNoYXBlQXJhYmljLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDc0LDcgKzI2MDc0
LDYgQEAKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE5MTRDNkE2MzMwMEYy
MDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTdCNzkx
QTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAwMTZGNTQxIC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc4OTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjczODYsNiArMjcz
ODUsNyBAQAogCQkJCTQ5ODc3MEU4MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0Rh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIFNo
YWRvd0Rpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIw
MDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y0MEEx
OTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFG
RkM5MzBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuYyBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBk
MWE4ODllNjc4ZGY4YTIzMjdmZjZkMzZmZTM3MTAwOWI1OGQ2NmZmLi5kMGM0YzEzMmUyMTY5MWQ5
NDUyNGQ3YjIzYTk3YjUyZjU0NzE1NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMjksOSArMjksOCBAQAogCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKLSNpbmNsdWRlICJIVE1MQ29u
dGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKLQorI2luY2x1ZGUg
IlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE0LDkg
KzExMyw5IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOb2RlKGNv
bnN0IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvCiB7CiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSkt
PnNlbGVjdGlvbnMoKTsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBzZWxlY3Rpb25M
aXN0LT5maXJzdCgpIDogc2VsZWN0aW9uTGlzdC0+bGFzdCgpKSkKLSAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUoc2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgICAgIGNv
bnN0IFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24gPSB0b0luc2VydGlv
blBvaW50KG5vZGUpLT5kaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSAo
ZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBkaXN0cmlidXRpb24tPmZp
cnN0Tm9kZSgpIDogZGlzdHJpYnV0aW9uLT5sYXN0Tm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUobmV4dCwgZGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNl
TGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxOb2RlKj4obm9kZSk7CkBAIC0xNDIsMTIgKzE0MSwxMiBAQCBOb2RlKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZQogICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUp
OwogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJy
ZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb24gPSBzaGFkb3ctPnNlbGVjdGlvbkZvcihub2RlKTsKLSAgICBpZiAoIXNlbGVjdGlvbikK
KyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IHNoYWRvdy0+ZGlz
dHJpYnV0aW9uSXRlbUZvcihub2RlKTsKKyAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiB0
cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBuZXh0U2VsZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBzZWxlY3Rpb24tPnByZXZp
b3VzKCkpKQotICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRTZWxlY3Rpb24tPm5vZGUo
KSwgZGlyZWN0aW9uKTsKLSAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRp
b25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCksIGRpcmVjdGlvbik7CisgICAgaWYg
KFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBuZXh0SXRlbSA9IChkaXJlY3Rpb24g
PT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IGl0ZW0tPm5leHQoKSA6IGl0ZW0tPnByZXZp
b3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRJdGVtLT5ub2RlKCksIGRp
cmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9p
bnQoaXRlbS0+aW5zZXJ0aW9uUG9pbnQoKSwgZGlyZWN0aW9uKTsKIH0KIAogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5v
ZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0yMDQsOCArMjAzLDgg
QEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBO
b2RlKiBub2RlKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKEVsZW1l
bnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpKSB7Ci0gICAgICAgIGlmIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93LT5zZWxlY3Rpb25Gb3Iobm9k
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoc2VsZWN0aW9uLT5pbnNlcnRp
b25Qb2ludCgpKTsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJh
dmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgIH0KICAgICByZXR1cm4gdHJhdmVyc2VQ
YXJlbnRJbkN1cnJlbnRUcmVlKG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
Y3BwCmluZGV4IGNjNmM4NmUxNjUyNTQwM2RlNDY4YWEyNDFmNzJlMjkzODU2ZmIzMTcuLmEzMmIw
MTkxOTMwNmE2ODFhOTNmYTE2NjVmNWM3OGJlNmIxOTQ1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
RWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0gICAgOiBtX25lZWRzUmVjYWxjdWxhdGVD
b250ZW50KGZhbHNlKQorICAgIDogbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbihmYWxzZSkKIHsK
IH0KIApAQCAtMTE5LDE2ICsxMTksMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpzZXRQYXJlbnRU
cmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2go
KQogewotICAgIC8vIENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBp
bgotICAgIC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQg
aXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFzZWxlY3RvcigpLmhhc1BvcHVsYXRl
ZCgpKTsKKyAgICAvLyBUaGUgcG9vbCBub2RlcyBhcmUgcG9wdWxhdGVkIGxhemlseSBpbgorICAg
IC8vIGVuc3VyZURpc3RyaWJ1dG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQg
aXMgaW4gY2xlYW4gc3RhdGUuCisgICAgQVNTRVJUKCFkaXN0cmlidXRvcigpLnBvb2xJc1JlYWR5
KCkpOwogCi0gICAgc2VsZWN0b3IoKS53aWxsU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS53
aWxsRGlzdHJpYnV0ZSgpOwogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAg
ICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CiAg
ICAgfQotICAgIHNlbGVjdG9yKCkuZGlkU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS5kaWRE
aXN0cmlidXRlKCk7CiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoSG9zdChFbGVtZW50
KiBob3N0KQpAQCAtMTY0LDE1ICsxNjQsMTIgQEAgSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFk
b3c6Omluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IHNlbGVj
dG9yKCkuZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CisgICAgcmV0dXJuIGRpc3RyaWJ1
dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKG5vZGUpOwogfQogCi1IVE1MQ29udGVudFNlbGVj
dGlvbiogRWxlbWVudFNoYWRvdzo6c2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0
CitTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogRWxlbWVudFNoYWRvdzo6ZGlzdHJp
YnV0aW9uSXRlbUZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIHJldHVybiBtX3Nl
bGVjdG9yLmZpbmRGb3Iobm9kZSk7CisgICAgcmV0dXJuIG1fZGlzdHJpYnV0b3IuZmluZEZvcihu
b2RlKTsKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZWF0dGFjaCgpCkBAIC0yMDcsNyArMjA0
LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBj
aGFuZ2UpCiAgICAgaWYgKCF5b3VuZ2VzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKKyAgICBpZiAobmVlZHNSZWNhbGNE
aXN0cmlidXRpb24oKSkKICAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
ICAgICBlbHNlIHsKICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IHlvdW5n
ZXN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CkBAIC0yMjIsMTYgKzIxOSwxNiBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OnJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkK
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+cG9wUGFyZW50U2hhZG93Um9vdCh5b3VuZ2VzdCk7CiAg
ICAgfQogCi0gICAgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Cisg
ICAgY2xlYXJOZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgIGZvciAoU2hhZG93Um9vdCog
cm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFk
b3dSb290KCkpIHsKICAgICAgICAgcm9vdC0+Y2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAg
ICAgIHJvb3QtPmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogfQogCi1ib29s
IEVsZW1lbnRTaGFkb3c6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQorYm9v
bCBFbGVtZW50U2hhZG93OjpuZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpCiB7Ci0gICAgcmV0dXJu
IG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlv
dW5nZXN0U2hhZG93Um9vdCgpLT5oYXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gbV9u
ZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiB8fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdl
c3RTaGFkb3dSb290KCktPmhhc0luc2VydGlvblBvaW50KCkpOwogfQogCiB2b2lkIEVsZW1lbnRT
aGFkb3c6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQpAQCAtMjQyLDEyICsyMzksMTIgQEAgdm9pZCBF
bGVtZW50U2hhZG93Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBz
aGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgotICAgIHNl
dE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICBzZXROZWVkc1JlY2Fs
Y0Rpc3RyaWJ1dGlvbigpOwogfQogCi12b2lkIEVsZW1lbnRTaGFkb3c6OnNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQordm9pZCBFbGVtZW50U2hhZG93OjpzZXROZWVkc1Jl
Y2FsY0Rpc3RyaWJ1dGlvbigpCiB7Ci0gICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IHRy
dWU7CisgICAgbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiA9IHRydWU7CiAKICAgICBob3N0KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmlu
ZGV4IDRjMDdhMjdlMDRlMjIzYTkzZGM3MzZjZTk1MDE4NjU3ZmZmN2RiMDAuLmFmYzIxYzQwNjg5
MjQ0MTI4NWRjNzQ0NTk4MThmYWFmNzJjYjhkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBFbGVtZW50U2hhZG93X2gKIAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisj
aW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KQEAgLTQwLDkgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2Rl
OwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIEluc2VydGlvblBvaW50OwogY2xhc3MgVHJlZVNjb3Bl
OwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb247CiAKIGNsYXNzIEVsZW1lbnRTaGFkb3cgewog
cHVibGljOgpAQCAtNjYsMjQgKzY0LDI3IEBAIHB1YmxpYzoKICAgICBib29sIGNoaWxkTmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVj
YWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwotICAgIHZvaWQgc2V0TmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgYm9vbCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7Ci0gICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAg
IHZvaWQgc2V0TmVlZHNSZWNhbGNEaXN0cmlidXRpb24oKTsKKyAgICB2b2lkIGNsZWFyTmVlZHNS
ZWNhbGNEaXN0cmlidXRpb24oKTsKKyAgICBib29sIG5lZWRzUmVjYWxjRGlzdHJpYnV0aW9uKCk7
CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSopIGNvbnN0OwotICAgIEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OworICAgIFNoYWRvd0JvdW5k
YXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBkaXN0cmlidXRpb25JdGVtRm9yKGNvbnN0IE5vZGUqKSBj
b25zdDsKIAotICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCk7Ci0gICAgY29uc3Qg
SFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsKKyAgICBTaGFkb3dEaXN0cmli
dXRvciYgZGlzdHJpYnV0b3IoKTsKKyAgICBjb25zdCBTaGFkb3dEaXN0cmlidXRvciYgZGlzdHJp
YnV0b3IoKSBjb25zdDsKIAogcHJpdmF0ZToKKzw8PDw8PDwgSEVBRAogICAgIHZvaWQgcmVtb3Zl
QWxsU2hhZG93Um9vdHMoKTsKKz09PT09PT0KKyAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCk7Cis+Pj4+Pj4+IFdJUAogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dS
b290PiBtX3NoYWRvd1Jvb3RzOwotICAgIEhUTUxDb250ZW50U2VsZWN0b3IgbV9zZWxlY3RvcjsK
LSAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgOiAxOworICAgIFNoYWRvd0Rpc3Ry
aWJ1dG9yIG1fZGlzdHJpYnV0b3I7CisgICAgYm9vbCBtX25lZWRzUmVjYWxjRGlzdHJpYnV0aW9u
IDogMTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbGVtZW50U2hhZG93KTsKIH07CiAKQEAg
LTk3LDE5ICs5OCwxOSBAQCBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0
U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQog
Ci1pbmxpbmUgSFRNTENvbnRlbnRTZWxlY3RvciYgRWxlbWVudFNoYWRvdzo6c2VsZWN0b3IoKQor
aW5saW5lIFNoYWRvd0Rpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpCiB7
Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3I7CisgICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7CiB9CiAK
LWlubGluZSBjb25zdCBIVE1MQ29udGVudFNlbGVjdG9yJiBFbGVtZW50U2hhZG93OjpzZWxlY3Rv
cigpIGNvbnN0CitpbmxpbmUgY29uc3QgU2hhZG93RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6
OmRpc3RyaWJ1dG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZWxlY3RvcjsKKyAgICByZXR1
cm4gbV9kaXN0cmlidXRvcjsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudFNoYWRvdzo6Y2xlYXJO
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK2lubGluZSB2b2lkIEVsZW1lbnRT
aGFkb3c6OmNsZWFyTmVlZHNSZWNhbGNEaXN0cmlidXRpb24oKQogewotICAgIG1fbmVlZHNSZWNh
bGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsKKyAgICBtX25lZWRzUmVjYWxjRGlzdHJpYnV0aW9uID0g
ZmFsc2U7CiB9CiAKIGlubGluZSBFbGVtZW50KiBFbGVtZW50U2hhZG93Ojpob3N0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDU4OTg0
MTlhNmE1ZDQzZTA0MWZmMGI5ZWZiYTQ3NDI2NjE4NDA0YTYuLmZhMmM1Y2NlZmE0M2YwMDg4YmU1
MzkxY2VkZDE4MzI3MTU2NDA1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cu
aCIKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxDb250
ZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUg
Ik5vZGUuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CisjaW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAtOTcsNyArOTcsNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBh
cmVudCktPmhhc1NlbGVjdGlvbigpKQorICAgICAgICAgICAgaWYgKHRvSW5zZXJ0aW9uUG9pbnQo
cGFyZW50KS0+aGFzRGlzdHJpYnV0aW9uKCkpCiAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0
dGFjaGluZ05vdEZhbGxiYWNrZWQ7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
bV9waGFzZSA9IEF0dGFjaGluZ0ZhbGxiYWNrZWQ7CkBAIC0xNDIsMTIgKzE0MiwxMiBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkK
IAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlck9mSW5zZXJ0aW9uUG9p
bnQoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5m
aW5kKGN1cnJlbnQpOwotICAgIGlmICghY3VycmVudFNlbGVjdGlvbikKKyAgICBTaGFkb3dCb3Vu
ZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogY3VycmVudEl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlv
bigpLT5maW5kKGN1cnJlbnQpOworICAgIGlmICghY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gY3VycmVu
dFNlbGVjdGlvbi0+bmV4dCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4
dCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5u
b2RlKCktPnJlbmRlcmVyKCkpCisgICAgZm9yIChTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6
SXRlbSogaXRlbSA9IGN1cnJlbnRJdGVtLT5uZXh0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0
KCkpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdGVtLT5ub2RlKCkt
PnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgfQogCkBAIC0x
NTgsMTAgKzE1OCwxMCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5k
ZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBhcgogewogICAgIFJlbmRlck9i
amVjdCogbGFzdFJlbmRlcmVyID0gMDsKIAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24tPm5v
ZGUoKSA9PSBjdXJyZW50KQorICAgIGZvciAoU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0
ZW0qIGl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigpLT5maXJzdCgpOyBpdGVtOyBpdGVtID0g
aXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChpdGVtLT5ub2RlKCkgPT0gY3VycmVudCkKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNl
bGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGxhc3RSZW5k
ZXJlciA9IHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBpbmxp
bmUgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRp
b25Qb2ludCogcGFyCiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVy
T2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJl
bnQtPmhhc1NlbGVjdGlvbigpKSB7Ci0gICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgIGlmIChw
YXJlbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgIGZvciAoU2hhZG93Qm91bmRhcnlE
aXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigpLT5maXJzdCgp
OyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIH0KIApAQCAtMTg0LDkgKzE4NCw5IEBAIHN0YXRp
YyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNl
cnRpb25Qb2ludCogcGFyZW50CiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBsYXN0UmVu
ZGVyZXJPZkluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgaWYg
KHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVj
dGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxhc3QoKTsgc2VsZWN0aW9u
OyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKLSAgICAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisg
ICAgaWYgKHBhcmVudC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKKyAgICAgICAgZm9yIChTaGFkb3dC
b3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IHBhcmVudC0+ZGlzdHJpYnV0aW9uKCkt
Pmxhc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXRlbS0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKaW5kZXggN2IyNDZjMGIxMmZiMTg3MmQzZTlkYzZjZDRmODk3YjVlZDVkYTYw
ZS4uMmRlNTliNzgxNTU4ZGU1MzdjZThiMzJhNTM4OTM4MDhmNmE5YjIyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcApAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1l
bnQuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURh
dGEuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd0Rpc3RyaWJ1dG9y
LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBjMDAyNGM3MTY3MzIzMDk5NzBmMWJlODE3MDc1MTY4
NWZmMDQxOWUwLi4yOTJmMzczYmI4ZjFmOTY4M2FmMzE1YWFkNGRiZTczOGY2YzZlNjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTM4LDggKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTVNlbGVjdGlvbjsKLWNsYXNzIEhUTUxDb250
ZW50RWxlbWVudDsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CiBjbGFzcyBJbnNlcnRpb25Q
b2ludDsKIGNsYXNzIEVsZW1lbnRTaGFkb3c7CiAKQEAgLTYwLDkgKzU4LDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZWNhbGNTaGFkb3dUcmVlU3R5bGUoU3R5bGVDaGFuZ2UpOwogCi0gICAgdm9p
ZCBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgdm9pZCBjbGVh
ck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLSAgICBib29sIG5lZWRzUmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICB2b2lkIHNldE5lZWRzUmVjYWxjRGlz
dHJpYnV0aW9uKCk7CisgICAgdm9pZCBjbGVhck5lZWRzUmVjYWxjRGlzdHJpYnV0aW9uKCk7Cisg
ICAgYm9vbCBuZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogCiAgICAgSW5zZXJ0aW9uUG9pbnQq
IGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGhvc3RDaGlsZHJlbkNo
YW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVs
ZW1lbnQuY3BwCmluZGV4IDU0MzY3OTUwNjFmOTM5YTA0OGIyZjk4NjUzYzgzODZhOWMzZWZhN2Yu
LmU1MThlMDBhMWE0ZWU3MTM2NjFhNmJlZDZhYzYyNjYyNDc5ZTBiYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjksMTAg
KzI5LDEwIEBACiAKICNpbmNsdWRlICJDb250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUg
IkVsZW1lbnRTaGFkb3cuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dEaXN0cmlidXRvci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNlbGVjdEF0
dHIpIHsKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93
VHJlZVJvb3ROb2RlKCkpKQotICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+c2V0TmVlZHNSZWF0
dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+
c2V0TmVlZHNSZWNhbGNEaXN0cmlidXRpb24oKTsKICAgICB9IGVsc2UKICAgICAgICAgSW5zZXJ0
aW9uUG9pbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzFlNDE5NGVjNWEzN2RlMDM5NGMwM2Y4ZTgzOGU2NWJiNDU4NzRjNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50
U2VsZWN0b3IuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCi0jaW5jbHVk
ZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbjo6YXBwZW5kKFBh
c3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IG5leHQpCi17Ci0gICAgQVNTRVJUKCFtX25l
eHQpOwotICAgIEFTU0VSVCghbmV4dC0+cHJldmlvdXMoKSk7Ci0gICAgbV9uZXh0ID0gbmV4dDsK
LSAgICBtX25leHQtPm1fcHJldmlvdXMgPSB0aGlzOwotfQotCi12b2lkIEhUTUxDb250ZW50U2Vs
ZWN0aW9uOjp1bmxpbmsoKQotewotICAgIEFTU0VSVCghbV9wcmV2aW91cyk7IC8vIENhbiBiZSBj
YWxsZWQgb25seSBmb3IgYSBoZWFkLgotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4g
aXRlbSA9IHRoaXM7Ci0gICAgd2hpbGUgKGl0ZW0pIHsKLSAgICAgICAgQVNTRVJUKCFpdGVtLT5w
cmV2aW91cygpKTsKLSAgICAgICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBuZXh0SXRl
bSA9IGl0ZW0tPm1fbmV4dDsKLSAgICAgICAgaXRlbS0+bV9uZXh0LmNsZWFyKCk7Ci0gICAgICAg
IGlmIChuZXh0SXRlbSkKLSAgICAgICAgICAgIG5leHRJdGVtLT5tX3ByZXZpb3VzLmNsZWFyKCk7
Ci0gICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKLSAgICB9Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdDo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkKLXsKLX0KLQotSFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0Ojp+SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkKLXsKLSAgICBBU1NFUlQo
aXNFbXB0eSgpKTsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdDo6ZmluZChOb2RlKiBub2RlKSBjb25zdAotewotICAgIGZvciAoSFRNTENvbnRlbnRT
ZWxlY3Rpb24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7Ci0g
ICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBpdGVt
OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVj
dGlvbkxpc3Q6OmNsZWFyKCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9sYXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fZmlyc3QtPnVubGlu
aygpOwotICAgIG1fZmlyc3QuY2xlYXIoKTsKLSAgICBtX2xhc3QuY2xlYXIoKTsKLX0KLQotdm9p
ZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50
U2VsZWN0aW9uPiBjaGlsZCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9sYXN0KTsKLSAgICAgICAgbV9maXJzdCA9IG1fbGFzdCA9IGNoaWxkOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9sYXN0LT5hcHBlbmQoY2hpbGQpOwotICAgIG1fbGFzdCA9
IG1fbGFzdC0+bmV4dCgpOwotfQotCi1IVE1MQ29udGVudFNlbGVjdG9yOjpIVE1MQ29udGVudFNl
bGVjdG9yKCkKLSAgICA6IG1fcGhhc2UoU2VsZWN0aW9uUHJldmVudGVkKQotewotfQotCi1IVE1M
Q29udGVudFNlbGVjdG9yOjp+SFRNTENvbnRlbnRTZWxlY3RvcigpCi17Ci0gICAgQVNTRVJUKG1f
Y2FuZGlkYXRlcy5pc0VtcHR5KCkpOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnNl
bGVjdChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIEhUTUxDb250ZW50U2VsZWN0aW9u
TGlzdCogc2VsZWN0aW9ucykKLXsKLSAgICBBU1NFUlQobV9waGFzZSA9PSBIb3N0Q2hpbGRyZW5Q
b3B1bGF0ZWQpOwotICAgIEFTU0VSVChzZWxlY3Rpb25zLT5pc0VtcHR5KCkpOwotCi0gICAgQ29u
dGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoaW5zZXJ0aW9uUG9pbnQpOwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTm9kZSog
Y2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghY2hpbGQpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlv
bj4gc2VsZWN0aW9uID0gSFRNTENvbnRlbnRTZWxlY3Rpb246OmNyZWF0ZShpbnNlcnRpb25Qb2lu
dCwgY2hpbGQpOwotCi0gICAgICAgIHNlbGVjdGlvbnMtPmFwcGVuZChzZWxlY3Rpb24pOwotICAg
ICAgICBtX3NlbGVjdGlvblNldC5hZGQoc2VsZWN0aW9uLmdldCgpKTsKLSAgICAgICAgbV9jYW5k
aWRhdGVzW2ldID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6dW5z
ZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBsaXN0KQotewotICAgIGZvciAoSFRNTENv
bnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGxpc3QtPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2Vs
ZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCi0gICAgICAgIG1fc2VsZWN0aW9uU2V0LnJlbW92
ZShzZWxlY3Rpb24pOwotICAgIGxpc3QtPmNsZWFyKCk7Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0
aW9uKiBIVE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zZWxlY3Rpb25TZXQuZmluZChrZXkpOwotfQotCi12b2lkIEhUTUxD
b250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3QoKQotewotICAgIG1fcGhhc2UgPSBTZWxlY3Rpb25T
dGFydGVkOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdCgpCi17Ci0g
ICAgQVNTRVJUKG1fcGhhc2UgIT0gU2VsZWN0aW9uUHJldmVudGVkKTsKLSAgICBtX3BoYXNlID0g
U2VsZWN0aW9uUHJldmVudGVkOwotICAgIG1fY2FuZGlkYXRlcy5jbGVhcigpOwotfQotCi12b2lk
IEhUTUxDb250ZW50U2VsZWN0b3I6OnBvcHVsYXRlSWZOZWNlc3NhcnkoRWxlbWVudCogc2hhZG93
SG9zdCkKLXsKLSAgICBpZiAoaGFzUG9wdWxhdGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQoc2hhZG93SG9zdCk7
Ci0gICAgQVNTRVJUKG1fcGhhc2UgPT0gU2VsZWN0aW9uU3RhcnRlZCk7Ci0KLSAgICBtX3BoYXNl
ID0gSG9zdENoaWxkcmVuUG9wdWxhdGVkOwotICAgIGZvciAoTm9kZSogbm9kZSA9IHNoYWRvd0hv
c3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCi0gICAg
ICAgIG1fY2FuZGlkYXRlcy5hcHBlbmQobm9kZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmNmYmRkYmJkODgyNzM4NWE3YzlhZmMxMWMyNGY2ZmVjYTZlMzYyOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgSFRNTENvbnRlbnRTZWxlY3Rvcl9oCi0jZGVmaW5lIEhUTUxDb250
ZW50U2VsZWN0b3JfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBI
VE1MQ29udGVudEVsZW1lbnQ7Ci1jbGFzcyBJbnNlcnRpb25Qb2ludDsKLWNsYXNzIE5vZGU7Ci1j
bGFzcyBTaGFkb3dSb290OwotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVjdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPEhUTUxDb250ZW50U2VsZWN0aW9uPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IGNyZWF0ZShJbnNlcnRpb25Qb2ludCosIE5v
ZGUqKTsKLQotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4g
bV9ub2RlLmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIG5leHQoKSBjb25zdCB7
IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogcHJldmlv
dXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9Ci0KLSAgICB2b2lkIGFwcGVu
ZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPik7Ci0gICAgdm9pZCB1bmxpbmsoKTsK
LQotcHJpdmF0ZToKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbihJbnNlcnRpb25Qb2ludCosIE5v
ZGUqKTsKLQotICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50OwotICAgIFJlZlB0
cjxOb2RlPiBtX25vZGU7Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBtX25leHQ7
Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBtX3ByZXZpb3VzOwotfTsKLQotaW5s
aW5lIEhUTUxDb250ZW50U2VsZWN0aW9uOjpIVE1MQ29udGVudFNlbGVjdGlvbihJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5vZGUpCi0gICAgOiBtX2luc2VydGlvblBvaW50
KGluc2VydGlvblBvaW50KSwgbV9ub2RlKG5vZGUpCi17IH0KLQotaW5saW5lIFBhc3NSZWZQdHI8
SFRNTENvbnRlbnRTZWxlY3Rpb24+IEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUoSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBOb2RlKiBub2RlKQotewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTENvbnRlbnRTZWxlY3Rpb24oaW5zZXJ0aW9uUG9pbnQsIG5vZGUpKTsKLX0K
LQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IHsKLXB1YmxpYzoKLSAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3QoKTsKLSAgICB+SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCk7Ci0K
LSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0
LmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGxhc3QoKSBjb25zdCB7IHJldHVy
biBtX2xhc3QuZ2V0KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChOb2RlKikg
Y29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZmlyc3Q7IH0KLQot
ICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50
U2VsZWN0aW9uPik7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9u
PiBtX2ZpcnN0OwotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gbV9sYXN0OwotfTsK
LQotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVjdGlvblNldCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBh
ZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LmFkZCh2YWx1ZSk7IH0KLSAg
ICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQucmVtb3Zl
KHZhbHVlKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0LmlzRW1w
dHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKGNvbnN0IE5vZGUqIGtleSkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRyYW5zbGF0b3IgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQ
dHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24sIGNvbnN0IE5vZGUqIG5v
ZGUpIHsgcmV0dXJuIHNlbGVjdGlvbi0+bm9kZSgpID09IG5vZGU7IH0KLSAgICB9OwotCi0gICAg
c3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChIVE1MQ29udGVudFNl
bGVjdGlvbioga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXktPm5v
ZGUoKSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IGEsIEhUTUxDb250ZW50U2VsZWN0aW9uKiBiKSB7IHJldHVybiBhLT5ub2RlKCkgPT0gYi0+bm9k
ZSgpOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgSGFzaFNldDxIVE1MQ29udGVu
dFNlbGVjdGlvbiosIEhhc2g+IFBvaW50ZXJTZXQ7Ci0KLSAgICBQb2ludGVyU2V0IG1fc2V0Owot
fTsKLQotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNl
dDo6ZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0Ci17Ci0gICAgUG9pbnRlclNldDo6aXRlcmF0
b3IgZm91bmQgPSBtX3NldC5maW5kPGNvbnN0IE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNl
dDo6VHJhbnNsYXRvcj4oa2V5KTsKLSAgICByZXR1cm4gZm91bmQgIT0gbV9zZXQuZW5kKCkgPyAq
Zm91bmQgOiAwOwotfQotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShIVE1MQ29udGVudFNlbGVjdG9yKTsKLXB1YmxpYzoKLSAgICBIVE1MQ29u
dGVudFNlbGVjdG9yKCk7Ci0gICAgfkhUTUxDb250ZW50U2VsZWN0b3IoKTsKLQotICAgIHZvaWQg
c2VsZWN0KEluc2VydGlvblBvaW50KiwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAg
dm9pZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKLSAgICBIVE1MQ29udGVu
dFNlbGVjdGlvbiogZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwotCi0gICAgdm9pZCB3
aWxsU2VsZWN0KCk7Ci0gICAgYm9vbCBpc1NlbGVjdGluZygpIGNvbnN0OwotICAgIHZvaWQgZGlk
U2VsZWN0KCk7Ci0KLSAgICB2b2lkIHBvcHVsYXRlSWZOZWNlc3NhcnkoRWxlbWVudCogc2hhZG93
SG9zdCk7Ci0gICAgYm9vbCBoYXNQb3B1bGF0ZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBl
bnVtIFNlbGVjdGluZ1BoYXNlIHsKLSAgICAgICAgU2VsZWN0aW9uUHJldmVudGVkLAotICAgICAg
ICBTZWxlY3Rpb25TdGFydGVkLAotICAgICAgICBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQsCi0gICAg
fTsKLQotICAgIHZvaWQgcmVtb3ZlRnJvbVNldChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsK
LSAgICB2b2lkIGFkZFRvU2V0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwotCi0gICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG1fY2FuZGlkYXRlczsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlv
blNldCBtX3NlbGVjdGlvblNldDsKLSAgICBTZWxlY3RpbmdQaGFzZSBtX3BoYXNlOwotfTsKLQot
aW5saW5lIGJvb2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6aXNTZWxlY3RpbmcoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3BoYXNlICE9IFNlbGVjdGlvblByZXZlbnRlZDsKLX0KLQotaW5saW5lIGJv
b2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6aGFzUG9wdWxhdGVkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9waGFzZSA9PSBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQ7Ci19Ci0KLX0KLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggMzdl
NTEwMWMzN2IyMDk3ZTQ0MWY4YTQ0MTI4ODJlZWYzZjUyOTUxNC4uNmM0NTI0MTc2MjY1NDhhMzg1
YTkxNDYzZWE0YWVmZDFjYWYzOWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKLSAgICAsIG1fc2VsZWN0aW9ucygpCisgICAgLCBtX2Rpc3RyaWJ1dGlvbigpCiB7
CiB9CiAKQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIEluc2VydGlvblBvaW50OjpkZXRhY2goKQog
CiAgICAgICAgIC8vIFdoZW4gc2hhZG93IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVl
IHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9yIGZvcgogICAgICAg
ICAvLyBvdGhlciBpbnNlcnRpb24gcG9pbnRzLgotICAgICAgICBzaGFkb3ctPnNldE5lZWRzUmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICAgICAgc2hhZG93LT5zZXROZWVkc1Jl
Y2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgIH0KIAotICAgIEFTU0VSVChtX3NlbGVjdGlvbnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9kaXN0cmlidXRpb24uaXNFbXB0eSgpKTsKICAgICBIVE1M
RWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKQEAgLTExOSw0MSArMTE5LDQxIEBAIGJvb2wgSW5zZXJ0
aW9uUG9pbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNv
bnRleHQpCiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50OjpkaXN0cmlidXRlSG9zdENoaWxk
cmVuKEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKLSAgICBpZiAoIXNoYWRvdy0+c2VsZWN0b3Io
KS5pc1NlbGVjdGluZygpKSB7Ci0gICAgICAgIC8vIElmIEhUTUxDb250ZW50U2VsZWN0b3IgaXMg
bm90IGludCBzZWxlY3RpbmcgcGhhc2UsIGl0IG1lYW5zIEluc2VydGlvblBvaW50IGlzIGF0dGFj
aGVkIGZyb20KKyAgICBpZiAoIXNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5pbkRpc3RyaWJ1dGlvbigp
KSB7CisgICAgICAgIC8vIElmIFNoYWRvd0Rpc3RyaWJ1dG9yIGlzIG5vdCBpbnQgc2VsZWN0aW5n
IHBoYXNlLCBpdCBtZWFucyBJbnNlcnRpb25Qb2ludCBpcyBhdHRhY2hlZCBmcm9tCiAgICAgICAg
IC8vIG5vbi1FbGVtZW50U2hhZG93IG5vZGUuIFRvIHJ1biBkaXN0cmlidXRlIGFsZ29yaXRobSwg
d2UgaGF2ZSB0byByZWF0dGFjaCBFbGVtZW50U2hhZG93LgotICAgICAgICBzaGFkb3ctPnNldE5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICAgICAgc2hhZG93LT5zZXRO
ZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
c2hhZG93LT5zZWxlY3RvcigpLnBvcHVsYXRlSWZOZWNlc3Nhcnkoc2hhZG93LT5ob3N0KCkpOwot
ICAgIHNoYWRvdy0+c2VsZWN0b3IoKS51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKLSAgICBzaGFk
b3ctPnNlbGVjdG9yKCkuc2VsZWN0KHRoaXMsICZtX3NlbGVjdGlvbnMpOworICAgIHNoYWRvdy0+
ZGlzdHJpYnV0b3IoKS5wcmVwYXJlUG9vbEZvcihzaGFkb3ctPmhvc3QoKSk7CisgICAgc2hhZG93
LT5kaXN0cmlidXRvcigpLmNsZWFyRGlzdHJpYnV0aW9uKCZtX2Rpc3RyaWJ1dGlvbik7CisgICAg
c2hhZG93LT5kaXN0cmlidXRvcigpLmRpc3RyaWJ1dGUodGhpcywgJm1fZGlzdHJpYnV0aW9uKTsK
IH0KIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNsZWFyRGlzdHJpYnV0aW9uKEVsZW1l
bnRTaGFkb3cqIHNoYWRvdykKIHsKLSAgICBzaGFkb3ctPnNlbGVjdG9yKCkudW5zZWxlY3QoJm1f
c2VsZWN0aW9ucyk7CisgICAgc2hhZG93LT5kaXN0cmlidXRvcigpLmNsZWFyRGlzdHJpYnV0aW9u
KCZtX2Rpc3RyaWJ1dGlvbik7CiB9CiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50OjphdHRh
Y2hEaXN0cmlidXRlZE5vZGUoKQogewotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNl
bGVjdGlvbiA9IG1fc2VsZWN0aW9ucy5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNl
bGVjdGlvbi0+bmV4dCgpKQotICAgICAgICBzZWxlY3Rpb24tPm5vZGUoKS0+YXR0YWNoKCk7Cisg
ICAgZm9yIChTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IG1fZGlzdHJp
YnV0aW9uLmZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KCkpCisgICAgICAgIGl0ZW0t
Pm5vZGUoKS0+YXR0YWNoKCk7CiB9CiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50Ojphc3Np
Z25TaGFkb3dSb290KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCiB7CiAgICAgc2hhZG93Um9vdC0+
c2V0QXNzaWduZWRUbyh0aGlzKTsKLSAgICBtX3NlbGVjdGlvbnMuY2xlYXIoKTsKKyAgICBtX2Rp
c3RyaWJ1dGlvbi5jbGVhcigpOwogICAgIGZvciAoTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3QtPmZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1f
c2VsZWN0aW9ucy5hcHBlbmQoSFRNTENvbnRlbnRTZWxlY3Rpb246OmNyZWF0ZSh0aGlzLCBub2Rl
KSk7CisgICAgICAgIG1fZGlzdHJpYnV0aW9uLmFwcGVuZCh0aGlzLCBub2RlKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNsZWFyQXNzaWdubWVudChTaGFkb3dSb290KiBzaGFk
b3dSb290KQogewogICAgIHNoYWRvd1Jvb3QtPnNldEFzc2lnbmVkVG8oMCk7Ci0gICAgbV9zZWxl
Y3Rpb25zLmNsZWFyKCk7CisgICAgbV9kaXN0cmlidXRpb24uY2xlYXIoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgKaW5kZXggODQwZGQwNjQ3OTBmY2Q5MzZmZWQyYzQyYjcwMjgzYTkyMTQwOWZlMi4uZDMw
NjI1ZWQ3NmUxZDlmY2U4NDRiOTMxM2M1NDlmMzlkNTdiYTNlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaWZuZGVm
IEluc2VydGlvblBvaW50X2gKICNkZWZpbmUgSW5zZXJ0aW9uUG9pbnRfaAogCi0jaW5jbHVkZSAi
SFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw4ICs0Miw4IEBA
IGNsYXNzIEluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JbnNlcnRpb25Qb2ludCgpOwogCi0gICAgY29uc3QgSFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0KiBzZWxlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gJm1fc2VsZWN0aW9uczsgfQot
ICAgIGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25zLmZpcnN0
KCk7IH0KKyAgICBjb25zdCBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbiogZGlzdHJpYnV0aW9u
KCkgY29uc3QgeyByZXR1cm4gJm1fZGlzdHJpYnV0aW9uOyB9CisgICAgYm9vbCBoYXNEaXN0cmli
dXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5maXJzdCgpOyB9CiAgICAgYm9v
bCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0Owog
CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhc3NpZ25TaGFkb3dSb290KFNo
YWRvd1Jvb3QqKTsKICAgICB2b2lkIGNsZWFyQXNzaWdubWVudChTaGFkb3dSb290Kik7CiAKLSAg
ICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxlY3Rpb25zOworICAgIFNoYWRvd0JvdW5k
YXJ5RGlzdHJpYnV0aW9uIG1fZGlzdHJpYnV0aW9uOwogfTsKIAogaW5saW5lIGJvb2wgaXNJbnNl
cnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NjYyMWRlNDE1ZWI2OTRk
NDJiNDc2ZmI4ZDRkYmQwYjFiMjYxZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5jcHAKQEAgLTAsMCArMSwxNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKKworI2lu
Y2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246OlNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9u
KCkKK3sKK30KKworU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246On5TaGFkb3dCb3VuZGFyeURp
c3RyaWJ1dGlvbigpCit7CisgICAgQVNTRVJUKGlzRW1wdHkoKSk7Cit9CisKK1NoYWRvd0JvdW5k
YXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6ZmluZChO
b2RlKiBub2RlKSBjb25zdAoreworICAgIGZvciAoU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246
Okl0ZW0qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAg
ICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVtOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTaGFkb3dCb3VuZGFyeURpc3Ry
aWJ1dGlvbjo6Y2xlYXIoKQoreworICAgIGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJU
KCFtX2xhc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFNoYWRvd0Jv
dW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtPiBpdGVtID0gbV9maXJzdDsKKyAgICB3aGlsZSAoaXRl
bSkgeworICAgICAgICBBU1NFUlQoIWl0ZW0tPnByZXZpb3VzKCkpOworICAgICAgICBSZWZQdHI8
U2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0+IG5leHRJdGVtID0gaXRlbS0+bV9uZXh0
OworICAgICAgICBpdGVtLT5tX25leHQuY2xlYXIoKTsKKyAgICAgICAgaWYgKG5leHRJdGVtKQor
ICAgICAgICAgICAgbmV4dEl0ZW0tPm1fcHJldmlvdXMuY2xlYXIoKTsKKyAgICAgICAgaXRlbSA9
IG5leHRJdGVtOworICAgIH0KKworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAgICBtX2xhc3QuY2xl
YXIoKTsKK30KKwordm9pZCBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6YXBwZW5kKEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkKK3sKKyAgICBSZWZQdHI8SXRl
bT4gY2hpbGQgPSBJdGVtOjpjcmVhdGUoaW5zZXJ0aW9uUG9pbnQsIG5vZGUpOworCisgICAgaWYg
KGlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQoIW1fbGFzdCk7CisgICAgICAgIG1fZmlyc3Qg
PSBtX2xhc3QgPSBjaGlsZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCgh
bV9sYXN0LT5uZXh0KCkpOworICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzKCkpOworICAgIG1f
bGFzdC0+bV9uZXh0ID0gY2hpbGQ7CisgICAgY2hpbGQtPm1fcHJldmlvdXMgPSBtX2xhc3Q7Cisg
ICAgbV9sYXN0ID0gbV9sYXN0LT5uZXh0KCk7Cit9CisKK1NoYWRvd0Rpc3RyaWJ1dG9yOjpTaGFk
b3dEaXN0cmlidXRvcigpCisgICAgOiBtX3BoYXNlKFByZXZlbnRlZCkKK3sKK30KKworU2hhZG93
RGlzdHJpYnV0b3I6On5TaGFkb3dEaXN0cmlidXRvcigpCit7CisgICAgQVNTRVJUKG1fcG9vbC5p
c0VtcHR5KCkpOworfQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb24qIGRp
c3RyaWJ1dGlvbikKK3sKKyAgICBBU1NFUlQobV9waGFzZSA9PSBQcmVwYXJlZCk7CisgICAgQVNT
RVJUKGRpc3RyaWJ1dGlvbi0+aXNFbXB0eSgpKTsKKworICAgIENvbnRlbnRTZWxlY3RvclF1ZXJ5
IHF1ZXJ5KGluc2VydGlvblBvaW50KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
b29sLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5vZGUqIGNoaWxkID0gbV9wb29sW2ldLmdldCgp
OworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
ICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBkaXN0cmlidXRpb24tPmFwcGVuZChpbnNlcnRpb25Qb2ludCwgY2hpbGQpOworICAgICAgICBt
X25vZGVUb0luc2VydGlvblBvaW50LmFkZChkaXN0cmlidXRpb24tPmxhc3QoKSk7CisgICAgICAg
IG1fcG9vbFtpXSA9IDA7CisgICAgfQorfQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dG9yOjpjbGVh
ckRpc3RyaWJ1dGlvbihTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbiogbGlzdCkKK3sKKyAgICBm
b3IgKFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0gbGlzdC0+Zmlyc3Qo
KTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkKKyAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Q
b2ludC5yZW1vdmUoaXRlbSk7CisKKyAgICBsaXN0LT5jbGVhcigpOworfQorCitTaGFkb3dCb3Vu
ZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogU2hhZG93RGlzdHJpYnV0b3I6OmZpbmRGb3IoY29uc3Qg
Tm9kZSoga2V5KSBjb25zdAoreworICAgIEludmVydGVkVGFibGU6Oml0ZXJhdG9yIGZvdW5kID0g
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5maW5kPGNvbnN0IE5vZGUqLCBUcmFuc2xhdG9yPihrZXkp
OworICAgIHJldHVybiBmb3VuZCAhPSBtX25vZGVUb0luc2VydGlvblBvaW50LmVuZCgpID8gKmZv
dW5kIDogMDsKK30KKworSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd0Rpc3RyaWJ1dG9yOjpmaW5kSW5z
ZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAoreworICAgIEludmVydGVkVGFi
bGU6Oml0ZXJhdG9yIGZvdW5kID0gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5maW5kPGNvbnN0IE5v
ZGUqLCBUcmFuc2xhdG9yPihrZXkpOworICAgIHJldHVybiBmb3VuZCAhPSBtX25vZGVUb0luc2Vy
dGlvblBvaW50LmVuZCgpID8gKCpmb3VuZCktPmluc2VydGlvblBvaW50KCkgOiAwOworfQorCit2
b2lkIFNoYWRvd0Rpc3RyaWJ1dG9yOjp3aWxsRGlzdHJpYnV0ZSgpCit7CisgICAgbV9waGFzZSA9
IFN0YXJ0ZWQ7Cit9CisKK3ZvaWQgU2hhZG93RGlzdHJpYnV0b3I6OmRpZERpc3RyaWJ1dGUoKQor
eworICAgIEFTU0VSVChtX3BoYXNlICE9IFByZXZlbnRlZCk7CisgICAgbV9waGFzZSA9IFByZXZl
bnRlZDsKKyAgICBtX3Bvb2wuY2xlYXIoKTsKK30KKwordm9pZCBTaGFkb3dEaXN0cmlidXRvcjo6
cHJlcGFyZVBvb2xGb3IoRWxlbWVudCogc2hhZG93SG9zdCkKK3sKKyAgICBpZiAocG9vbElzUmVh
ZHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcG9vbC5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVChzaGFkb3dIb3N0KTsKKyAgICBBU1NFUlQobV9waGFzZSA9PSBTdGFydGVkKTsK
KworICAgIG1fcGhhc2UgPSBQcmVwYXJlZDsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dI
b3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAg
ICAgICBtX3Bvb2wuYXBwZW5kKG5vZGUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWZhODU3MzRiYjNiNWFm
NmI4ZmE4NzA1MjFjY2RkY2U5ZDVlMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaApAQCAtMCwwICsxLDE0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU2hhZG93RGlzdHJpYnV0b3JfaAorI2RlZmluZSBTaGFkb3dEaXN0cmlidXRvcl9oCisKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEluc2VydGlvblBvaW50OworY2xh
c3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2NsYXNzIFNoYWRvd0JvdW5kYXJ5RGlzdHJp
YnV0aW9uIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8SXRl
bT4geworICAgIHB1YmxpYzoKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNoYWRvd0JvdW5kYXJ5RGlz
dHJpYnV0aW9uOworCisgICAgICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICAgICAgTm9kZSogbm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQorICAgICAgICBJdGVtKiBuZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CisgICAgICAgIEl0ZW0qIHByZXZpb3VzKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SXRlbT4gY3JlYXRlKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCwgTm9kZSogbm9kZSkgeyAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJdGVtKGluc2VydGlvblBvaW50
LCBub2RlKSk7IH0KKworICAgICAgICBJdGVtKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCwgTm9kZSogbm9kZSkKKyAgICAgICAgICAgIDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Q
b2ludCkKKyAgICAgICAgICAgICwgbV9ub2RlKG5vZGUpCisgICAgICAgIHsgfQorCisgICAgICAg
IEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50OworICAgICAgICBSZWZQdHI8Tm9kZT4g
bV9ub2RlOworICAgICAgICBSZWZQdHI8SXRlbT4gbV9uZXh0OworICAgICAgICBSZWZQdHI8SXRl
bT4gbV9wcmV2aW91czsKKyAgICB9OworICAgIAorICAgIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0
aW9uKCk7CisgICAgflNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKCk7CisKKyAgICBJdGVtKiBm
aXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QuZ2V0KCk7IH0KKyAgICBJdGVtKiBsYXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9CisgICAgTm9kZSogZmlyc3ROb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdCA/IG1fZmlyc3QtPm5vZGUoKSA6IDA7IH0KKyAgICBOb2RlKiBs
YXN0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPyBtX2xhc3QtPm5vZGUoKSA6IDA7IH0K
KyAgICAKKyAgICBJdGVtKiBmaW5kKE5vZGUqKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9maXJzdDsgfQorCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQg
YXBwZW5kKEluc2VydGlvblBvaW50KiwgTm9kZSopOworCitwcml2YXRlOgorCisgICAgUmVmUHRy
PEl0ZW0+IG1fZmlyc3Q7CisgICAgUmVmUHRyPEl0ZW0+IG1fbGFzdDsKK307CisKK2NsYXNzIFNo
YWRvd0Rpc3RyaWJ1dG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dEaXN0cmli
dXRvcik7CitwdWJsaWM6CisgICAgU2hhZG93RGlzdHJpYnV0b3IoKTsKKyAgICB+U2hhZG93RGlz
dHJpYnV0b3IoKTsKKworICAgIHZvaWQgZGlzdHJpYnV0ZShJbnNlcnRpb25Qb2ludCosIFNoYWRv
d0JvdW5kYXJ5RGlzdHJpYnV0aW9uKik7CisgICAgdm9pZCBjbGVhckRpc3RyaWJ1dGlvbihTaGFk
b3dCb3VuZGFyeURpc3RyaWJ1dGlvbiopOworICAgIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9u
OjpJdGVtKiBmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7CisgICAgSW5zZXJ0aW9uUG9p
bnQqIGZpbmRJbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OworCisgICAg
dm9pZCB3aWxsRGlzdHJpYnV0ZSgpOworICAgIGJvb2wgaW5EaXN0cmlidXRpb24oKSBjb25zdDsK
KyAgICB2b2lkIGRpZERpc3RyaWJ1dGUoKTsKKworICAgIHZvaWQgcHJlcGFyZVBvb2xGb3IoRWxl
bWVudCogc2hhZG93SG9zdCk7CisgICAgYm9vbCBwb29sSXNSZWFkeSgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGUqIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBO
b2RlKj46Omhhc2goa2V5KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTaGFk
b3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSwgY29uc3QgTm9kZSogbm9kZSkgeyBy
ZXR1cm4gaXRlbS0+bm9kZSgpID09IG5vZGU7IH0KKyAgICB9OworCisgICAgc3RydWN0IEhhc2gg
eworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlv
bjo6SXRlbSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXktPm5v
ZGUoKSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoU2hhZG93Qm91bmRhcnlEaXN0cmli
dXRpb246Okl0ZW0qIGEsIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBiKSB7IHJl
dHVybiBhLT5ub2RlKCkgPT0gYi0+bm9kZSgpOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIC8v
IFVzZWQgYXMgYSB0YWJsZSBmcm9tIE5vZGUgdG8gSW5zZXJldGlvblBvaW50CisgICAgdHlwZWRl
ZiBIYXNoU2V0PFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiwgSGFzaD4gSW52ZXJ0
ZWRUYWJsZTsKKworICAgIGVudW0gRGlzdHJpYnV0aW9uUGhhc2UgeworICAgICAgICBQcmV2ZW50
ZWQsCisgICAgICAgIFN0YXJ0ZWQsCisgICAgICAgIFByZXBhcmVkLAorICAgIH07CisKKyAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9wb29sOworICAgIERpc3RyaWJ1dGlvblBoYXNlIG1fcGhh
c2U7CisgICAgSW52ZXJ0ZWRUYWJsZSBtX25vZGVUb0luc2VydGlvblBvaW50OworfTsKKworaW5s
aW5lIGJvb2wgU2hhZG93RGlzdHJpYnV0b3I6OmluRGlzdHJpYnV0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9waGFzZSAhPSBQcmV2ZW50ZWQ7Cit9CisKK2lubGluZSBib29sIFNoYWRvd0Rp
c3RyaWJ1dG9yOjpwb29sSXNSZWFkeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGhhc2UgPT0g
UHJlcGFyZWQ7Cit9CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141348</attachid>
            <date>2012-05-11 01:13:24 -0700</date>
            <delta_ts>2012-05-13 17:54:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-86064-20120511171322.patch</filename>
            <type>text/plain</type>
            <size>53971</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDYxYzg4
NDM4ODUxNzVjNGU3MDZmY2UxNjZkNDkxZWNiNTk3NWQzZjEuLmE5OTgwYThhMTlhNWQ3ZWVhZGU3
NzBhODk2N2Y4OWVjZWMwYTZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDMsMTMgKzkw
MywxMyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuY3BwCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCiAg
ICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAotICAgIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuY3BwCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
Y3BwCiAgICAgaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5jcHAKICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAorICAgIGh0bWwvc2hhZG93L1NoYWRvd0Rp
c3RyaWJ1dG9yLmNwcAogICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKICAg
ICBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDk5YjQzOTg2NmRkNDQ3NDA4MzdkMTljMWMxYjhhMTFlOTc4
MDBkMGYuLjliYThmMjkxZGFmMTdiMmVjMzBiYjMyNGZhN2Y2MTQ2ZGE5ZWU5YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjUwOCw4ICsyNTA4LDYgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBAIC0yNTIxLDcgKzI1MTksOSBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggCisJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBm
NzZhZTBiOWY0ZmQyZWE4MThhN2M1ZjVhYWVmYmQ5ZjVjY2VkMWRmLi5iNDgwNDFiMmIzNjI4MGJh
ZTI0NWNiMGYzMTg0NTI3NWNjYWUyYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg3NSwxMyArODc1LDEz
IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNw
cCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIFwKICAgICBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
IFwKICAgICBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgXAogICAgIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwIFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxl
bWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXAogICAg
IGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAorICAgIGh0bWwvc2hhZG93
L1NoYWRvd0Rpc3RyaWJ1dG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBc
CiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCkBAIC0xOTk5LDEwICsxOTk5LDEw
IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBcCiAgICAgaHRt
bC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRFbGVtZW50LmggXAotICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBc
CiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBcCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaCBcCisgICAgaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaCBcCiAgICAgaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIFwKICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5o
IFwKICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBl
Nzc0NmU2NDcxZTk0Njc2MGQ5YTU5OGYwOGRmOTliNGVlYzAyMDkyLi45NTRiMTQ3Yzk5MzU3YTBi
NWQ3MDRmNzI4NjYwYTViNDg3YTRiNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01Nzk2LDggKzU3
OTYsNiBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgn
LAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oJywKLSAgICAgICAgICAg
ICdodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcCcsCkBAIC01ODEyLDYgKzU4MTAsOCBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3Iu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwJywKICAgICAgICAg
ICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDM3MzViYzhjMDI1Nzk5ZjQ1NWZk
YjA1NTE0N2YzZDFjNjQ0NmFkMjMuLmRiNzM0MmEwYmEyYmZhNjgzOGMzN2ZlOTllYzkyM2JhZDBk
YWRmYWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC02MjczMywxNCArNjI3MzMsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXHNoYWRvd1xIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xIVE1MU2hhZG93
RWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02Mjg0OSw2
ICs2Mjg0MSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcU2hhZG93RGlzdHJpYnV0b3IuY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dc
U2hhZG93RGlzdHJpYnV0b3IuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XFNsaWRlclRodW1iRWxlbWVudC5jcHAiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggODVjODRhNzA3OWVlNTExZTA1MGE5MDQ0MjNkNzU0ZjUw
MzQwZWE0OS4uNmQ3ZmI0NzJiMGJhNDQ0ZDM2OTIyM2I0ZGQzNDIxODU0MWUxZjNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTU4NCw4ICsxNTg0LDggQEAKIAkJNTc0MEU4M0QxNTMyREUxNzAwNzYwNjI4IC8qIFRyZWVTY29w
ZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzQwRTgzQjE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCAqLzsgfTsK
IAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzExQ0JEMzAx
MDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3
Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2Mjkw
MEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTQxNEM2
QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBI
VE1MQ29udGVudFNlbGVjdG9yLmggKi87IH07CisJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAv
KiBTaGFkb3dEaXN0cmlidXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJpYnV0
b3IuY3BwICovOyB9OworCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJp
YnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBTaGFkb3dEaXN0cmlidXRvci5oICovOyB9OwogCQk1
N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTExNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKIAkJNTdCNzkxQTYx
NEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEg
LyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJNTdCNzkxQTkxNEM2QTYzMzAwRjIw
MkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRl
bnRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTg2MDEsOCArODYwMSw4IEBACiAJCTU3M0QxMzQ2MTRD
RTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzQwRTgzQTE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRq
dXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQwRTgzQjE1MzJERTE3
MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJlZVNjb3BlQWRqdXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJE
MSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUTUxDb250ZW50U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIFNo
YWRvd0Rpc3RyaWJ1dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRv
d0Rpc3RyaWJ1dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUExMTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUEyMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50
U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50
U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTFBNzE0
QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb250ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDYyNCw4ICsxNDYyNCw2IEBACiAJCQkJNTdCNzkxQTcxNEM2
QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJNTdCNzkxQTgx
NEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oICovLAogCQkJCUE3Qjc3NDk2
MTRDRjYzNTMwMDQwNDRCQiAvKiBIVE1MQ29udGVudEVsZW1lbnQuaWRsICovLAotCQkJCTU3Qjc5
MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLywKLQkJCQk1
N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oICovLAogCQkJ
CTRBQkRGRjA3MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJ
CQkJNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi8sCiAJ
CQkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmlkbCAqLywK
QEAgLTE0NjQxLDYgKzE0NjM5LDggQEAKIAkJCQlBNzhFNTI2RTEzNDZCRDE3MDBBRDlDMzEgLyog
TWV0ZXJTaGFkb3dFbGVtZW50LmggKi8sCiAJCQkJQTcxNUU2NTAxMzRCQkJFQzAwRDhFNzEzIC8q
IFByb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTcxNUU2NTExMzRCQkJFQzAwRDhF
NzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICovLAorCQkJCTU3Qjc5MTlGMTRDNkE2Mjkw
MEYyMDJEMSAvKiBTaGFkb3dEaXN0cmlidXRvci5jcHAgKi8sCisJCQkJNTdCNzkxQTAxNEM2QTYy
OTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmggKi8sCiAJCQkJNDE1MEY5RjAxMkI2RTBF
NzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgKi8sCiAJCQkJNDE1MEY5RUYxMkI2
RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLApAQCAtMjI5
MzksNyArMjI5MzksNiBAQAogCQkJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjUxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBQTE0QzZB
NjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MjQzLDYgKzI0MjQy
LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBTaGFkb3dEaXN0
cmlidXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcwIC8q
IFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U4MEExOTg5Q0EwMDdGQjhD
NSAvKiBTaGFkb3dWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBRkZDOTQwRDAwQTVERjAw
MzAwNzREIC8qIFNoYXBlQXJhYmljLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDc0LDcgKzI2MDc0
LDYgQEAKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE5MTRDNkE2MzMwMEYy
MDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTdCNzkx
QTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAwMTZGNTQxIC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc4OTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjczODYsNiArMjcz
ODUsNyBAQAogCQkJCTQ5ODc3MEU4MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0Rh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIFNo
YWRvd0Rpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIw
MDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y0MEEx
OTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFG
RkM5MzBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuYyBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBk
MWE4ODllNjc4ZGY4YTIzMjdmZjZkMzZmZTM3MTAwOWI1OGQ2NmZmLi5kMGM0YzEzMmUyMTY5MWQ5
NDUyNGQ3YjIzYTk3YjUyZjU0NzE1NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMjksOSArMjksOCBAQAogCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKLSNpbmNsdWRlICJIVE1MQ29u
dGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKLQorI2luY2x1ZGUg
IlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE0LDkg
KzExMyw5IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOb2RlKGNv
bnN0IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvCiB7CiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSkt
PnNlbGVjdGlvbnMoKTsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBzZWxlY3Rpb25M
aXN0LT5maXJzdCgpIDogc2VsZWN0aW9uTGlzdC0+bGFzdCgpKSkKLSAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUoc2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgICAgIGNv
bnN0IFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24gPSB0b0luc2VydGlv
blBvaW50KG5vZGUpLT5kaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSAo
ZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBkaXN0cmlidXRpb24tPmZp
cnN0Tm9kZSgpIDogZGlzdHJpYnV0aW9uLT5sYXN0Tm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUobmV4dCwgZGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNl
TGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxOb2RlKj4obm9kZSk7CkBAIC0xNDIsMTIgKzE0MSwxMiBAQCBOb2RlKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZQogICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUp
OwogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJy
ZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb24gPSBzaGFkb3ctPnNlbGVjdGlvbkZvcihub2RlKTsKLSAgICBpZiAoIXNlbGVjdGlvbikK
KyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IHNoYWRvdy0+ZGlz
dHJpYnV0aW9uSXRlbUZvcihub2RlKTsKKyAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiB0
cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBuZXh0U2VsZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBzZWxlY3Rpb24tPnByZXZp
b3VzKCkpKQotICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRTZWxlY3Rpb24tPm5vZGUo
KSwgZGlyZWN0aW9uKTsKLSAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRp
b25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCksIGRpcmVjdGlvbik7CisgICAgaWYg
KFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBuZXh0SXRlbSA9IChkaXJlY3Rpb24g
PT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IGl0ZW0tPm5leHQoKSA6IGl0ZW0tPnByZXZp
b3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRJdGVtLT5ub2RlKCksIGRp
cmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9p
bnQoaXRlbS0+aW5zZXJ0aW9uUG9pbnQoKSwgZGlyZWN0aW9uKTsKIH0KIAogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5v
ZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0yMDQsOCArMjAzLDgg
QEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBO
b2RlKiBub2RlKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKEVsZW1l
bnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpKSB7Ci0gICAgICAgIGlmIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93LT5zZWxlY3Rpb25Gb3Iobm9k
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoc2VsZWN0aW9uLT5pbnNlcnRp
b25Qb2ludCgpKTsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJh
dmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgIH0KICAgICByZXR1cm4gdHJhdmVyc2VQ
YXJlbnRJbkN1cnJlbnRUcmVlKG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
Y3BwCmluZGV4IGNjNmM4NmUxNjUyNTQwM2RlNDY4YWEyNDFmNzJlMjkzODU2ZmIzMTcuLmEzMmIw
MTkxOTMwNmE2ODFhOTNmYTE2NjVmNWM3OGJlNmIxOTQ1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
RWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0gICAgOiBtX25lZWRzUmVjYWxjdWxhdGVD
b250ZW50KGZhbHNlKQorICAgIDogbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbihmYWxzZSkKIHsK
IH0KIApAQCAtMTE5LDE2ICsxMTksMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpzZXRQYXJlbnRU
cmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2go
KQogewotICAgIC8vIENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBp
bgotICAgIC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQg
aXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFzZWxlY3RvcigpLmhhc1BvcHVsYXRl
ZCgpKTsKKyAgICAvLyBUaGUgcG9vbCBub2RlcyBhcmUgcG9wdWxhdGVkIGxhemlseSBpbgorICAg
IC8vIGVuc3VyZURpc3RyaWJ1dG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQg
aXMgaW4gY2xlYW4gc3RhdGUuCisgICAgQVNTRVJUKCFkaXN0cmlidXRvcigpLnBvb2xJc1JlYWR5
KCkpOwogCi0gICAgc2VsZWN0b3IoKS53aWxsU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS53
aWxsRGlzdHJpYnV0ZSgpOwogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAg
ICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CiAg
ICAgfQotICAgIHNlbGVjdG9yKCkuZGlkU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS5kaWRE
aXN0cmlidXRlKCk7CiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoSG9zdChFbGVtZW50
KiBob3N0KQpAQCAtMTY0LDE1ICsxNjQsMTIgQEAgSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFk
b3c6Omluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IHNlbGVj
dG9yKCkuZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CisgICAgcmV0dXJuIGRpc3RyaWJ1
dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKG5vZGUpOwogfQogCi1IVE1MQ29udGVudFNlbGVj
dGlvbiogRWxlbWVudFNoYWRvdzo6c2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0
CitTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogRWxlbWVudFNoYWRvdzo6ZGlzdHJp
YnV0aW9uSXRlbUZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIHJldHVybiBtX3Nl
bGVjdG9yLmZpbmRGb3Iobm9kZSk7CisgICAgcmV0dXJuIG1fZGlzdHJpYnV0b3IuZmluZEZvcihu
b2RlKTsKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZWF0dGFjaCgpCkBAIC0yMDcsNyArMjA0
LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBj
aGFuZ2UpCiAgICAgaWYgKCF5b3VuZ2VzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKKyAgICBpZiAobmVlZHNSZWNhbGNE
aXN0cmlidXRpb24oKSkKICAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
ICAgICBlbHNlIHsKICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IHlvdW5n
ZXN0LT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CkBAIC0yMjIsMTYgKzIxOSwxNiBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OnJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkK
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+cG9wUGFyZW50U2hhZG93Um9vdCh5b3VuZ2VzdCk7CiAg
ICAgfQogCi0gICAgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Cisg
ICAgY2xlYXJOZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgIGZvciAoU2hhZG93Um9vdCog
cm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFk
b3dSb290KCkpIHsKICAgICAgICAgcm9vdC0+Y2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAg
ICAgIHJvb3QtPmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogfQogCi1ib29s
IEVsZW1lbnRTaGFkb3c6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQorYm9v
bCBFbGVtZW50U2hhZG93OjpuZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpCiB7Ci0gICAgcmV0dXJu
IG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlv
dW5nZXN0U2hhZG93Um9vdCgpLT5oYXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gbV9u
ZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiB8fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdl
c3RTaGFkb3dSb290KCktPmhhc0luc2VydGlvblBvaW50KCkpOwogfQogCiB2b2lkIEVsZW1lbnRT
aGFkb3c6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQpAQCAtMjQyLDEyICsyMzksMTIgQEAgdm9pZCBF
bGVtZW50U2hhZG93Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBz
aGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgotICAgIHNl
dE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICBzZXROZWVkc1JlY2Fs
Y0Rpc3RyaWJ1dGlvbigpOwogfQogCi12b2lkIEVsZW1lbnRTaGFkb3c6OnNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQordm9pZCBFbGVtZW50U2hhZG93OjpzZXROZWVkc1Jl
Y2FsY0Rpc3RyaWJ1dGlvbigpCiB7Ci0gICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IHRy
dWU7CisgICAgbV9uZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbiA9IHRydWU7CiAKICAgICBob3N0KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmlu
ZGV4IDRjMDdhMjdlMDRlMjIzYTkzZGM3MzZjZTk1MDE4NjU3ZmZmN2RiMDAuLmIzM2M5ZWM4NjJm
OGM2ZjViZjZiNjQzNjA5ZWI2NTk2YjgxZWExMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBFbGVtZW50U2hhZG93X2gKIAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisj
aW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KQEAgLTQwLDkgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2Rl
OwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIEluc2VydGlvblBvaW50OwogY2xhc3MgVHJlZVNjb3Bl
OwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb247CiAKIGNsYXNzIEVsZW1lbnRTaGFkb3cgewog
cHVibGljOgpAQCAtNjYsMjQgKzY0LDI0IEBAIHB1YmxpYzoKICAgICBib29sIGNoaWxkTmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVj
YWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwotICAgIHZvaWQgc2V0TmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgYm9vbCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7Ci0gICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAg
IHZvaWQgc2V0TmVlZHNSZWNhbGNEaXN0cmlidXRpb24oKTsKKyAgICB2b2lkIGNsZWFyTmVlZHNS
ZWNhbGNEaXN0cmlidXRpb24oKTsKKyAgICBib29sIG5lZWRzUmVjYWxjRGlzdHJpYnV0aW9uKCk7
CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSopIGNvbnN0OwotICAgIEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OworICAgIFNoYWRvd0JvdW5k
YXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBkaXN0cmlidXRpb25JdGVtRm9yKGNvbnN0IE5vZGUqKSBj
b25zdDsKIAotICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCk7Ci0gICAgY29uc3Qg
SFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsKKyAgICBTaGFkb3dEaXN0cmli
dXRvciYgZGlzdHJpYnV0b3IoKTsKKyAgICBjb25zdCBTaGFkb3dEaXN0cmlidXRvciYgZGlzdHJp
YnV0b3IoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbFNoYWRvd1Jvb3Rz
KCk7CisgICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogCiAgICAgRG91
Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOwotICAgIEhUTUxDb250ZW50
U2VsZWN0b3IgbV9zZWxlY3RvcjsKLSAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQg
OiAxOworICAgIFNoYWRvd0Rpc3RyaWJ1dG9yIG1fZGlzdHJpYnV0b3I7CisgICAgYm9vbCBtX25l
ZWRzUmVjYWxjRGlzdHJpYnV0aW9uIDogMTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbGVt
ZW50U2hhZG93KTsKIH07CiAKQEAgLTk3LDE5ICs5NSwxOSBAQCBpbmxpbmUgU2hhZG93Um9vdCog
RWxlbWVudFNoYWRvdzo6b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hh
ZG93Um9vdHMudGFpbCgpOwogfQogCi1pbmxpbmUgSFRNTENvbnRlbnRTZWxlY3RvciYgRWxlbWVu
dFNoYWRvdzo6c2VsZWN0b3IoKQoraW5saW5lIFNoYWRvd0Rpc3RyaWJ1dG9yJiBFbGVtZW50U2hh
ZG93OjpkaXN0cmlidXRvcigpCiB7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3I7CisgICAgcmV0dXJu
IG1fZGlzdHJpYnV0b3I7CiB9CiAKLWlubGluZSBjb25zdCBIVE1MQ29udGVudFNlbGVjdG9yJiBF
bGVtZW50U2hhZG93OjpzZWxlY3RvcigpIGNvbnN0CitpbmxpbmUgY29uc3QgU2hhZG93RGlzdHJp
YnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zZWxlY3RvcjsKKyAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKIH0KIAotaW5saW5lIHZvaWQg
RWxlbWVudFNoYWRvdzo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkK
K2lubGluZSB2b2lkIEVsZW1lbnRTaGFkb3c6OmNsZWFyTmVlZHNSZWNhbGNEaXN0cmlidXRpb24o
KQogewotICAgIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsKKyAgICBtX25lZWRz
UmVjYWxjRGlzdHJpYnV0aW9uID0gZmFsc2U7CiB9CiAKIGlubGluZSBFbGVtZW50KiBFbGVtZW50
U2hhZG93Ojpob3N0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IDU4OTg0MTlhNmE1ZDQzZTA0MWZmMGI5ZWZiYTQ3NDI2NjE4NDA0YTYu
LmZhMmM1Y2NlZmE0M2YwMDg4YmU1MzkxY2VkZDE4MzI3MTU2NDA1YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU2hhZG93
RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2hhZG93RGlzdHJpYnV0b3IuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAtOTcsNyArOTcsNyBA
QCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
ICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhhc1NlbGVjdGlvbigpKQorICAgICAgICAgICAg
aWYgKHRvSW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+aGFzRGlzdHJpYnV0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQ7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0ZhbGxiYWNrZWQ7CkBAIC0x
NDIsMTIgKzE0MiwxMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cmVsZWFzZVN0eWxlKCkKIAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIG5leHRS
ZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3Vy
cmVudCkKIHsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBh
cmVudC0+c2VsZWN0aW9ucygpLT5maW5kKGN1cnJlbnQpOwotICAgIGlmICghY3VycmVudFNlbGVj
dGlvbikKKyAgICBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogY3VycmVudEl0ZW0g
PSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigpLT5maW5kKGN1cnJlbnQpOworICAgIGlmICghY3VycmVu
dEl0ZW0pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlv
biogc2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbi0+bmV4dCgpOyBzZWxlY3Rpb247IHNlbGVj
dGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgZm9yIChTaGFkb3dC
b3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IGN1cnJlbnRJdGVtLT5uZXh0KCk7IGl0
ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBpdGVtLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVu
ZGVyZXI7CiAgICAgfQogCkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBzdGF0aWMgaW5saW5lIFJlbmRl
ck9iamVjdCogcHJldmlvdXNSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcgogewogICAgIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyID0gMDsKIAotICAgIGZvciAo
SFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5m
aXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAg
ICAgIGlmIChzZWxlY3Rpb24tPm5vZGUoKSA9PSBjdXJyZW50KQorICAgIGZvciAoU2hhZG93Qm91
bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigpLT5m
aXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChpdGVtLT5u
b2RlKCkgPT0gY3VycmVudCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVyZXIoKSkK
ICAgICAgICAgICAgIGxhc3RSZW5kZXJlciA9IHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTcwLDkg
KzE3MCw5IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2ZJ
bnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyCiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVy
T2JqZWN0KiBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFy
ZW50KQogewotICAgIGlmIChwYXJlbnQtPmhhc1NlbGVjdGlvbigpKSB7Ci0gICAgICAgIGZvciAo
SFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5m
aXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAg
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5y
ZW5kZXJlcigpKQorICAgIGlmIChwYXJlbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAg
IGZvciAoU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQtPmRp
c3RyaWJ1dGlvbigpLT5maXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAg
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIH0KIApAQCAt
MTg0LDkgKzE4NCw5IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVy
T2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50CiAKIHN0YXRpYyBpbmxpbmUg
UmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50
KiBwYXJlbnQpCiB7Ci0gICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsKLSAgICAgICAg
Zm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25z
KCktPmxhc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkp
IHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5u
b2RlKCktPnJlbmRlcmVyKCkpCisgICAgaWYgKHBhcmVudC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsK
KyAgICAgICAgZm9yIChTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IHBh
cmVudC0+ZGlzdHJpYnV0aW9uKCktPmxhc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPnByZXZpb3Vz
KCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXRlbS0+bm9k
ZSgpLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggN2IyNDZjMGIxMmZiMTg3MmQz
ZTlkYzZjZDRmODk3YjVlZDVkYTYwZS4uMmRlNTliNzgxNTU4ZGU1MzdjZThiMzJhNTM4OTM4MDhm
NmE5YjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMzQsMTEgKzM0LDExIEBA
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNs
dWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9y
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIK
ICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1
ZGUgIlNoYWRvd0Rpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBjMDAyNGM3MTY3
MzIzMDk5NzBmMWJlODE3MDc1MTY4NWZmMDQxOWUwLi4yOTJmMzczYmI4ZjFmOTY4M2FmMzE1YWFk
NGRiZTczOGY2YzZlNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTM4LDggKzM4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTVNlbGVj
dGlvbjsKLWNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0
b3I7CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKIGNsYXNzIEVsZW1lbnRTaGFkb3c7CiAKQEAgLTYw
LDkgKzU4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWNhbGNTaGFkb3dUcmVlU3R5bGUoU3R5
bGVDaGFuZ2UpOwogCi0gICAgdm9pZCBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hh
ZG93KCk7Ci0gICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3co
KTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICB2
b2lkIHNldE5lZWRzUmVjYWxjRGlzdHJpYnV0aW9uKCk7CisgICAgdm9pZCBjbGVhck5lZWRzUmVj
YWxjRGlzdHJpYnV0aW9uKCk7CisgICAgYm9vbCBuZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwog
CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAg
ICB2b2lkIGhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCmluZGV4IDU0MzY3OTUwNjFmOTM5YTA0OGIy
Zjk4NjUzYzgzODZhOWMzZWZhN2YuLmU1MThlMDBhMWE0ZWU3MTM2NjFhNmJlZDZhYzYyNjYyNDc5
ZTBiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpbmNsdWRlICJDb250ZW50U2VsZWN0
b3JRdWVyeS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKLSNpbmNsdWRlICJIVE1MQ29u
dGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlm
aWVkTmFtZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRl
ICJTaGFkb3dEaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBIVE1MQ29udGVu
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IHNlbGVjdEF0dHIpIHsKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKQotICAgICAgICAgICAgcm9vdC0+
b3duZXIoKS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgICAg
ICAgICAgcm9vdC0+b3duZXIoKS0+c2V0TmVlZHNSZWNhbGNEaXN0cmlidXRpb24oKTsKICAgICB9
IGVsc2UKICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFlNDE5NGVjNWEzN2RlMDM5NGMwM2Y4
ZTgzOGU2NWJiNDU4NzRjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBIVE1MQ29udGVu
dFNlbGVjdGlvbjo6YXBwZW5kKFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IG5leHQp
Ci17Ci0gICAgQVNTRVJUKCFtX25leHQpOwotICAgIEFTU0VSVCghbmV4dC0+cHJldmlvdXMoKSk7
Ci0gICAgbV9uZXh0ID0gbmV4dDsKLSAgICBtX25leHQtPm1fcHJldmlvdXMgPSB0aGlzOwotfQot
Ci12b2lkIEhUTUxDb250ZW50U2VsZWN0aW9uOjp1bmxpbmsoKQotewotICAgIEFTU0VSVCghbV9w
cmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBmb3IgYSBoZWFkLgotICAgIFJlZlB0cjxI
VE1MQ29udGVudFNlbGVjdGlvbj4gaXRlbSA9IHRoaXM7Ci0gICAgd2hpbGUgKGl0ZW0pIHsKLSAg
ICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKLSAgICAgICAgUmVmUHRyPEhUTUxDb250
ZW50U2VsZWN0aW9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKLSAgICAgICAgaXRlbS0+bV9u
ZXh0LmNsZWFyKCk7Ci0gICAgICAgIGlmIChuZXh0SXRlbSkKLSAgICAgICAgICAgIG5leHRJdGVt
LT5tX3ByZXZpb3VzLmNsZWFyKCk7Ci0gICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKLSAgICB9Ci19
Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkK
LXsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojp+SFRNTENvbnRlbnRTZWxlY3Rpb25M
aXN0KCkKLXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rp
b24qIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6ZmluZChOb2RlKiBub2RlKSBjb25zdAotewot
ICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVt
ID0gaXRlbS0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiBpdGVtOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQot
dm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmNsZWFyKCkKLXsKLSAgICBpZiAoaXNFbXB0
eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fZmlyc3QtPnVubGluaygpOwotICAgIG1fZmlyc3QuY2xlYXIoKTsKLSAgICBtX2xh
c3QuY2xlYXIoKTsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmFwcGVuZChQ
YXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBjaGlsZCkKLXsKLSAgICBpZiAoaXNFbXB0
eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAgICAgICAgbV9maXJzdCA9IG1fbGFz
dCA9IGNoaWxkOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9sYXN0LT5hcHBlbmQo
Y2hpbGQpOwotICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgpOwotfQotCi1IVE1MQ29udGVudFNl
bGVjdG9yOjpIVE1MQ29udGVudFNlbGVjdG9yKCkKLSAgICA6IG1fcGhhc2UoU2VsZWN0aW9uUHJl
dmVudGVkKQotewotfQotCi1IVE1MQ29udGVudFNlbGVjdG9yOjp+SFRNTENvbnRlbnRTZWxlY3Rv
cigpCi17Ci0gICAgQVNTRVJUKG1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpOwotfQotCi12b2lkIEhU
TUxDb250ZW50U2VsZWN0b3I6OnNlbGVjdChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQs
IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9ucykKLXsKLSAgICBBU1NFUlQobV9w
aGFzZSA9PSBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQpOwotICAgIEFTU0VSVChzZWxlY3Rpb25zLT5p
c0VtcHR5KCkpOwotCi0gICAgQ29udGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoaW5zZXJ0aW9uUG9p
bnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7Ci0gICAg
ICAgIGlmICghY2hpbGQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVy
eS5tYXRjaGVzKGNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFJlZlB0
cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gc2VsZWN0aW9uID0gSFRNTENvbnRlbnRTZWxlY3Rpb246
OmNyZWF0ZShpbnNlcnRpb25Qb2ludCwgY2hpbGQpOwotCi0gICAgICAgIHNlbGVjdGlvbnMtPmFw
cGVuZChzZWxlY3Rpb24pOwotICAgICAgICBtX3NlbGVjdGlvblNldC5hZGQoc2VsZWN0aW9uLmdl
dCgpKTsKLSAgICAgICAgbV9jYW5kaWRhdGVzW2ldID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENvbnRlbnRTZWxlY3Rvcjo6dW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBsaXN0
KQotewotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGxpc3QtPmZp
cnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCi0gICAgICAg
IG1fc2VsZWN0aW9uU2V0LnJlbW92ZShzZWxlY3Rpb24pOwotICAgIGxpc3QtPmNsZWFyKCk7Ci19
Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKGNv
bnN0IE5vZGUqIGtleSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3Rpb25TZXQuZmluZChr
ZXkpOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3QoKQotewotICAg
IG1fcGhhc2UgPSBTZWxlY3Rpb25TdGFydGVkOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0
b3I6OmRpZFNlbGVjdCgpCi17Ci0gICAgQVNTRVJUKG1fcGhhc2UgIT0gU2VsZWN0aW9uUHJldmVu
dGVkKTsKLSAgICBtX3BoYXNlID0gU2VsZWN0aW9uUHJldmVudGVkOwotICAgIG1fY2FuZGlkYXRl
cy5jbGVhcigpOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnBvcHVsYXRlSWZOZWNl
c3NhcnkoRWxlbWVudCogc2hhZG93SG9zdCkKLXsKLSAgICBpZiAoaGFzUG9wdWxhdGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpKTsKLSAg
ICBBU1NFUlQoc2hhZG93SG9zdCk7Ci0gICAgQVNTRVJUKG1fcGhhc2UgPT0gU2VsZWN0aW9uU3Rh
cnRlZCk7Ci0KLSAgICBtX3BoYXNlID0gSG9zdENoaWxkcmVuUG9wdWxhdGVkOwotICAgIGZvciAo
Tm9kZSogbm9kZSA9IHNoYWRvd0hvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
Pm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1fY2FuZGlkYXRlcy5hcHBlbmQobm9kZSk7Ci19Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNmYmRkYmJkODgyNzM4NWE3YzlhZmMx
MWMyNGY2ZmVjYTZlMzYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSFRNTENvbnRlbnRTZWxlY3Rv
cl9oCi0jZGVmaW5lIEhUTUxDb250ZW50U2VsZWN0b3JfaAotCi0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7Ci1jbGFzcyBJbnNlcnRpb25Q
b2ludDsKLWNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFkb3dSb290OwotCi1jbGFzcyBIVE1MQ29udGVu
dFNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEhUTUxDb250ZW50U2VsZWN0aW9uPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IGNyZWF0
ZShJbnNlcnRpb25Qb2ludCosIE5vZGUqKTsKLQotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBOb2RlKiBu
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbiogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgp
OyB9Ci0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPik7
Ci0gICAgdm9pZCB1bmxpbmsoKTsKLQotcHJpdmF0ZToKLSAgICBIVE1MQ29udGVudFNlbGVjdGlv
bihJbnNlcnRpb25Qb2ludCosIE5vZGUqKTsKLQotICAgIEluc2VydGlvblBvaW50KiBtX2luc2Vy
dGlvblBvaW50OwotICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7Ci0gICAgUmVmUHRyPEhUTUxDb250
ZW50U2VsZWN0aW9uPiBtX25leHQ7Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBt
X3ByZXZpb3VzOwotfTsKLQotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uOjpIVE1MQ29udGVu
dFNlbGVjdGlvbihJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5vZGUpCi0g
ICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KSwgbV9ub2RlKG5vZGUpCi17IH0K
LQotaW5saW5lIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IEhUTUxDb250ZW50U2Vs
ZWN0aW9uOjpjcmVhdGUoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBOb2RlKiBub2Rl
KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENvbnRlbnRTZWxlY3Rpb24oaW5zZXJ0
aW9uUG9pbnQsIG5vZGUpKTsKLX0KLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IHsK
LXB1YmxpYzoKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QoKTsKLSAgICB+SFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0KCk7Ci0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmlyc3QoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24q
IGxhc3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3QuZ2V0KCk7IH0KLSAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogZmluZChOb2RlKikgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fZmlyc3Q7IH0KLQotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPik7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRy
PEhUTUxDb250ZW50U2VsZWN0aW9uPiBtX2ZpcnN0OwotICAgIFJlZlB0cjxIVE1MQ29udGVudFNl
bGVjdGlvbj4gbV9sYXN0OwotfTsKLQotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVjdGlvblNldCB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1f
c2V0LmFkZCh2YWx1ZSk7IH0KLSAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiog
dmFsdWUpIHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBm
aW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRyYW5z
bGF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
Tm9kZSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9Ci0g
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb24sIGNvbnN0IE5vZGUqIG5vZGUpIHsgcmV0dXJuIHNlbGVjdGlvbi0+bm9kZSgpID09IG5v
ZGU7IH0KLSAgICB9OwotCi0gICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChIVE1MQ29udGVudFNlbGVjdGlvbioga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0
IE5vZGUqPjo6aGFzaChrZXktPm5vZGUoKSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
SFRNTENvbnRlbnRTZWxlY3Rpb24qIGEsIEhUTUxDb250ZW50U2VsZWN0aW9uKiBiKSB7IHJldHVy
biBhLT5ub2RlKCkgPT0gYi0+bm9kZSgpOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHR5cGVk
ZWYgSGFzaFNldDxIVE1MQ29udGVudFNlbGVjdGlvbiosIEhhc2g+IFBvaW50ZXJTZXQ7Ci0KLSAg
ICBQb2ludGVyU2V0IG1fc2V0OwotfTsKLQotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBI
VE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0Ci17Ci0g
ICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPGNvbnN0IE5vZGUqLCBI
VE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKLSAgICByZXR1cm4gZm91
bmQgIT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOwotfQotCi1jbGFzcyBIVE1MQ29udGVudFNl
bGVjdG9yIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MQ29udGVudFNlbGVjdG9yKTsK
LXB1YmxpYzoKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKCk7Ci0gICAgfkhUTUxDb250ZW50U2Vs
ZWN0b3IoKTsKLQotICAgIHZvaWQgc2VsZWN0KEluc2VydGlvblBvaW50KiwgSFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0Kik7Ci0gICAgdm9pZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxp
c3QqKTsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihjb25zdCBOb2RlKiBrZXkp
IGNvbnN0OwotCi0gICAgdm9pZCB3aWxsU2VsZWN0KCk7Ci0gICAgYm9vbCBpc1NlbGVjdGluZygp
IGNvbnN0OwotICAgIHZvaWQgZGlkU2VsZWN0KCk7Ci0KLSAgICB2b2lkIHBvcHVsYXRlSWZOZWNl
c3NhcnkoRWxlbWVudCogc2hhZG93SG9zdCk7Ci0gICAgYm9vbCBoYXNQb3B1bGF0ZWQoKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBlbnVtIFNlbGVjdGluZ1BoYXNlIHsKLSAgICAgICAgU2VsZWN0
aW9uUHJldmVudGVkLAotICAgICAgICBTZWxlY3Rpb25TdGFydGVkLAotICAgICAgICBIb3N0Q2hp
bGRyZW5Qb3B1bGF0ZWQsCi0gICAgfTsKLQotICAgIHZvaWQgcmVtb3ZlRnJvbVNldChIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3QqKTsKLSAgICB2b2lkIGFkZFRvU2V0KEhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdCopOwotCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fY2FuZGlkYXRlczsKLSAg
ICBIVE1MQ29udGVudFNlbGVjdGlvblNldCBtX3NlbGVjdGlvblNldDsKLSAgICBTZWxlY3RpbmdQ
aGFzZSBtX3BoYXNlOwotfTsKLQotaW5saW5lIGJvb2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6aXNT
ZWxlY3RpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX3BoYXNlICE9IFNlbGVjdGlvblByZXZl
bnRlZDsKLX0KLQotaW5saW5lIGJvb2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6aGFzUG9wdWxhdGVk
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9waGFzZSA9PSBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQ7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5jcHAKaW5kZXggMzdlNTEwMWMzN2IyMDk3ZTQ0MWY4YTQ0MTI4ODJlZWYzZjUyOTUx
NC4uNmM0NTI0MTc2MjY1NDhhMzg1YTkxNDYzZWE0YWVmZDFjYWYzOWIwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fc2VsZWN0aW9ucygpCisgICAg
LCBtX2Rpc3RyaWJ1dGlvbigpCiB7CiB9CiAKQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIEluc2Vy
dGlvblBvaW50OjpkZXRhY2goKQogCiAgICAgICAgIC8vIFdoZW4gc2hhZG93IGVsZW1lbnQgaXMg
ZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRl
IHNlbGVjdG9yIGZvcgogICAgICAgICAvLyBvdGhlciBpbnNlcnRpb24gcG9pbnRzLgotICAgICAg
ICBzaGFkb3ctPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICAg
ICAgc2hhZG93LT5zZXROZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgIH0KIAotICAgIEFT
U0VSVChtX3NlbGVjdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9kaXN0cmlidXRpb24u
aXNFbXB0eSgpKTsKICAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKQEAgLTExOSw0MSAr
MTE5LDQxIEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50
OjpkaXN0cmlidXRlSG9zdENoaWxkcmVuKEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKLSAgICBp
ZiAoIXNoYWRvdy0+c2VsZWN0b3IoKS5pc1NlbGVjdGluZygpKSB7Ci0gICAgICAgIC8vIElmIEhU
TUxDb250ZW50U2VsZWN0b3IgaXMgbm90IGludCBzZWxlY3RpbmcgcGhhc2UsIGl0IG1lYW5zIElu
c2VydGlvblBvaW50IGlzIGF0dGFjaGVkIGZyb20KKyAgICBpZiAoIXNoYWRvdy0+ZGlzdHJpYnV0
b3IoKS5pbkRpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgIC8vIElmIFNoYWRvd0Rpc3RyaWJ1dG9y
IGlzIG5vdCBpbnQgc2VsZWN0aW5nIHBoYXNlLCBpdCBtZWFucyBJbnNlcnRpb25Qb2ludCBpcyBh
dHRhY2hlZCBmcm9tCiAgICAgICAgIC8vIG5vbi1FbGVtZW50U2hhZG93IG5vZGUuIFRvIHJ1biBk
aXN0cmlidXRlIGFsZ29yaXRobSwgd2UgaGF2ZSB0byByZWF0dGFjaCBFbGVtZW50U2hhZG93Lgot
ICAgICAgICBzaGFkb3ctPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
KyAgICAgICAgc2hhZG93LT5zZXROZWVkc1JlY2FsY0Rpc3RyaWJ1dGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgc2hhZG93LT5zZWxlY3RvcigpLnBvcHVsYXRlSWZOZWNlc3Nh
cnkoc2hhZG93LT5ob3N0KCkpOwotICAgIHNoYWRvdy0+c2VsZWN0b3IoKS51bnNlbGVjdCgmbV9z
ZWxlY3Rpb25zKTsKLSAgICBzaGFkb3ctPnNlbGVjdG9yKCkuc2VsZWN0KHRoaXMsICZtX3NlbGVj
dGlvbnMpOworICAgIHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5wcmVwYXJlUG9vbEZvcihzaGFkb3ct
Pmhvc3QoKSk7CisgICAgc2hhZG93LT5kaXN0cmlidXRvcigpLmNsZWFyRGlzdHJpYnV0aW9uKCZt
X2Rpc3RyaWJ1dGlvbik7CisgICAgc2hhZG93LT5kaXN0cmlidXRvcigpLmRpc3RyaWJ1dGUodGhp
cywgJm1fZGlzdHJpYnV0aW9uKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNs
ZWFyRGlzdHJpYnV0aW9uKEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKLSAgICBzaGFkb3ctPnNl
bGVjdG9yKCkudW5zZWxlY3QoJm1fc2VsZWN0aW9ucyk7CisgICAgc2hhZG93LT5kaXN0cmlidXRv
cigpLmNsZWFyRGlzdHJpYnV0aW9uKCZtX2Rpc3RyaWJ1dGlvbik7CiB9CiAKIGlubGluZSB2b2lk
IEluc2VydGlvblBvaW50OjphdHRhY2hEaXN0cmlidXRlZE5vZGUoKQogewotICAgIGZvciAoSFRN
TENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9ucy5maXJzdCgpOyBzZWxl
Y3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKQotICAgICAgICBzZWxlY3Rpb24t
Pm5vZGUoKS0+YXR0YWNoKCk7CisgICAgZm9yIChTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6
SXRlbSogaXRlbSA9IG1fZGlzdHJpYnV0aW9uLmZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5u
ZXh0KCkpCisgICAgICAgIGl0ZW0tPm5vZGUoKS0+YXR0YWNoKCk7CiB9CiAKIGlubGluZSB2b2lk
IEluc2VydGlvblBvaW50Ojphc3NpZ25TaGFkb3dSb290KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qp
CiB7CiAgICAgc2hhZG93Um9vdC0+c2V0QXNzaWduZWRUbyh0aGlzKTsKLSAgICBtX3NlbGVjdGlv
bnMuY2xlYXIoKTsKKyAgICBtX2Rpc3RyaWJ1dGlvbi5jbGVhcigpOwogICAgIGZvciAoTm9kZSog
bm9kZSA9IHNoYWRvd1Jvb3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRT
aWJsaW5nKCkpCi0gICAgICAgIG1fc2VsZWN0aW9ucy5hcHBlbmQoSFRNTENvbnRlbnRTZWxlY3Rp
b246OmNyZWF0ZSh0aGlzLCBub2RlKSk7CisgICAgICAgIG1fZGlzdHJpYnV0aW9uLmFwcGVuZCh0
aGlzLCBub2RlKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNsZWFyQXNzaWdu
bWVudChTaGFkb3dSb290KiBzaGFkb3dSb290KQogewogICAgIHNoYWRvd1Jvb3QtPnNldEFzc2ln
bmVkVG8oMCk7Ci0gICAgbV9zZWxlY3Rpb25zLmNsZWFyKCk7CisgICAgbV9kaXN0cmlidXRpb24u
Y2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggODQwZGQwNjQ3OTBmY2Q5MzZmZWQyYzQy
YjcwMjgzYTkyMTQwOWZlMi4uZDMwNjI1ZWQ3NmUxZDlmY2U4NDRiOTMxM2M1NDlmMzlkNTdiYTNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0z
MSw5ICszMSw5IEBACiAjaWZuZGVmIEluc2VydGlvblBvaW50X2gKICNkZWZpbmUgSW5zZXJ0aW9u
UG9pbnRfaAogCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiU2hhZG93RGlz
dHJpYnV0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIEluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxF
bGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNlcnRpb25Qb2ludCgpOwogCi0gICAg
Y29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gJm1fc2VsZWN0aW9uczsgfQotICAgIGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rpb25zLmZpcnN0KCk7IH0KKyAgICBjb25zdCBTaGFkb3dCb3VuZGFyeURpc3Ry
aWJ1dGlvbiogZGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gJm1fZGlzdHJpYnV0aW9uOyB9
CisgICAgYm9vbCBoYXNEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3RyaWJ1dGlv
bi5maXJzdCgpOyB9CiAgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0OwogCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhc3NpZ25TaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsKICAgICB2b2lkIGNsZWFyQXNzaWdubWVu
dChTaGFkb3dSb290Kik7CiAKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxlY3Rp
b25zOworICAgIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uIG1fZGlzdHJpYnV0aW9uOwogfTsK
IAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ0NjYyMWRlNDE1ZWI2OTRkNDJiNDc2ZmI4ZDRkYmQwYjFiMjYxZDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5jcHAK
QEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93
RGlzdHJpYnV0b3IuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisjaW5j
bHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246OlNoYWRv
d0JvdW5kYXJ5RGlzdHJpYnV0aW9uKCkKK3sKK30KKworU2hhZG93Qm91bmRhcnlEaXN0cmlidXRp
b246On5TaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbigpCit7CisgICAgQVNTRVJUKGlzRW1wdHko
KSk7Cit9CisKK1NoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBTaGFkb3dCb3VuZGFy
eURpc3RyaWJ1dGlvbjo6ZmluZChOb2RlKiBub2RlKSBjb25zdAoreworICAgIGZvciAoU2hhZG93
Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0g
aXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9p
ZCBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6Y2xlYXIoKQoreworICAgIGlmIChpc0VtcHR5
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2xhc3QpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmVmUHRyPFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtPiBpdGVtID0gbV9m
aXJzdDsKKyAgICB3aGlsZSAoaXRlbSkgeworICAgICAgICBBU1NFUlQoIWl0ZW0tPnByZXZpb3Vz
KCkpOworICAgICAgICBSZWZQdHI8U2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0+IG5l
eHRJdGVtID0gaXRlbS0+bV9uZXh0OworICAgICAgICBpdGVtLT5tX25leHQuY2xlYXIoKTsKKyAg
ICAgICAgaWYgKG5leHRJdGVtKQorICAgICAgICAgICAgbmV4dEl0ZW0tPm1fcHJldmlvdXMuY2xl
YXIoKTsKKyAgICAgICAgaXRlbSA9IG5leHRJdGVtOworICAgIH0KKworICAgIG1fZmlyc3QuY2xl
YXIoKTsKKyAgICBtX2xhc3QuY2xlYXIoKTsKK30KKwordm9pZCBTaGFkb3dCb3VuZGFyeURpc3Ry
aWJ1dGlvbjo6YXBwZW5kKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9k
ZSkKK3sKKyAgICBSZWZQdHI8SXRlbT4gY2hpbGQgPSBJdGVtOjpjcmVhdGUoaW5zZXJ0aW9uUG9p
bnQsIG5vZGUpOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQoIW1fbGFz
dCk7CisgICAgICAgIG1fZmlyc3QgPSBtX2xhc3QgPSBjaGlsZDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVCghbV9sYXN0LT5uZXh0KCkpOworICAgIEFTU0VSVCghY2hpbGQt
PnByZXZpb3VzKCkpOworICAgIG1fbGFzdC0+bV9uZXh0ID0gY2hpbGQ7CisgICAgY2hpbGQtPm1f
cHJldmlvdXMgPSBtX2xhc3Q7CisgICAgbV9sYXN0ID0gbV9sYXN0LT5uZXh0KCk7Cit9CisKK1No
YWRvd0Rpc3RyaWJ1dG9yOjpTaGFkb3dEaXN0cmlidXRvcigpCisgICAgOiBtX3BoYXNlKFByZXZl
bnRlZCkKK3sKK30KKworU2hhZG93RGlzdHJpYnV0b3I6On5TaGFkb3dEaXN0cmlidXRvcigpCit7
CisgICAgQVNTRVJUKG1fcG9vbC5pc0VtcHR5KCkpOworfQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1
dG9yOjpkaXN0cmlidXRlKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgU2hhZG93Qm91
bmRhcnlEaXN0cmlidXRpb24qIGRpc3RyaWJ1dGlvbikKK3sKKyAgICBBU1NFUlQobV9waGFzZSA9
PSBQcmVwYXJlZCk7CisgICAgQVNTRVJUKGRpc3RyaWJ1dGlvbi0+aXNFbXB0eSgpKTsKKworICAg
IENvbnRlbnRTZWxlY3RvclF1ZXJ5IHF1ZXJ5KGluc2VydGlvblBvaW50KTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5vZGUqIGNo
aWxkID0gbV9wb29sW2ldLmdldCgpOworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBkaXN0cmlidXRpb24tPmFwcGVuZChpbnNlcnRpb25Qb2lu
dCwgY2hpbGQpOworICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LmFkZChkaXN0cmlidXRp
b24tPmxhc3QoKSk7CisgICAgICAgIG1fcG9vbFtpXSA9IDA7CisgICAgfQorfQorCit2b2lkIFNo
YWRvd0Rpc3RyaWJ1dG9yOjpjbGVhckRpc3RyaWJ1dGlvbihTaGFkb3dCb3VuZGFyeURpc3RyaWJ1
dGlvbiogbGlzdCkKK3sKKyAgICBmb3IgKFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVt
KiBpdGVtID0gbGlzdC0+Zmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkKKyAgICAg
ICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5yZW1vdmUoaXRlbSk7CisKKyAgICBsaXN0LT5jbGVh
cigpOworfQorCitTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogU2hhZG93RGlzdHJp
YnV0b3I6OmZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAoreworICAgIEludmVydGVkVGFi
bGU6Oml0ZXJhdG9yIGZvdW5kID0gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5maW5kPGNvbnN0IE5v
ZGUqLCBUcmFuc2xhdG9yPihrZXkpOworICAgIHJldHVybiBmb3VuZCAhPSBtX25vZGVUb0luc2Vy
dGlvblBvaW50LmVuZCgpID8gKmZvdW5kIDogMDsKK30KKworSW5zZXJ0aW9uUG9pbnQqIFNoYWRv
d0Rpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25z
dAoreworICAgIEludmVydGVkVGFibGU6Oml0ZXJhdG9yIGZvdW5kID0gbV9ub2RlVG9JbnNlcnRp
b25Qb2ludC5maW5kPGNvbnN0IE5vZGUqLCBUcmFuc2xhdG9yPihrZXkpOworICAgIHJldHVybiBm
b3VuZCAhPSBtX25vZGVUb0luc2VydGlvblBvaW50LmVuZCgpID8gKCpmb3VuZCktPmluc2VydGlv
blBvaW50KCkgOiAwOworfQorCit2b2lkIFNoYWRvd0Rpc3RyaWJ1dG9yOjp3aWxsRGlzdHJpYnV0
ZSgpCit7CisgICAgbV9waGFzZSA9IFN0YXJ0ZWQ7Cit9CisKK3ZvaWQgU2hhZG93RGlzdHJpYnV0
b3I6OmRpZERpc3RyaWJ1dGUoKQoreworICAgIEFTU0VSVChtX3BoYXNlICE9IFByZXZlbnRlZCk7
CisgICAgbV9waGFzZSA9IFByZXZlbnRlZDsKKyAgICBtX3Bvb2wuY2xlYXIoKTsKK30KKwordm9p
ZCBTaGFkb3dEaXN0cmlidXRvcjo6cHJlcGFyZVBvb2xGb3IoRWxlbWVudCogc2hhZG93SG9zdCkK
K3sKKyAgICBpZiAocG9vbElzUmVhZHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KG1fcG9vbC5pc0VtcHR5KCkpOworICAgIEFTU0VSVChzaGFkb3dIb3N0KTsKKyAgICBBU1NFUlQo
bV9waGFzZSA9PSBTdGFydGVkKTsKKworICAgIG1fcGhhc2UgPSBQcmVwYXJlZDsKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT5uZXh0U2libGluZygpKQorICAgICAgICBtX3Bvb2wuYXBwZW5kKG5vZGUpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dEaXN0cmlidXRvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wZWZhODU3MzRiYjNiNWFmNmI4ZmE4NzA1MjFjY2RkY2U5ZDVlMWU5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93RGlzdHJpYnV0b3IuaApA
QCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhZG93RGlzdHJpYnV0b3JfaAorI2RlZmluZSBTaGFk
b3dEaXN0cmlidXRvcl9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IEluc2VydGlvblBvaW50OworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2NsYXNz
IFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBJdGVtIDog
cHVibGljIFJlZkNvdW50ZWQ8SXRlbT4geworICAgIHB1YmxpYzoKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uOworCisgICAgICAgIEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAg
ICAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQorICAgICAg
ICBJdGVtKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CisgICAgICAgIEl0
ZW0qIHByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SXRlbT4gY3JlYXRlKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkgeyAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJdGVtKGluc2VydGlvblBvaW50LCBub2RlKSk7IH0KKworICAgICAgICBJdGVtKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkKKyAgICAgICAgICAgIDogbV9pbnNl
cnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgICwgbV9ub2RlKG5vZGUpCisg
ICAgICAgIHsgfQorCisgICAgICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50Owor
ICAgICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgICAgICBSZWZQdHI8SXRlbT4gbV9uZXh0
OworICAgICAgICBSZWZQdHI8SXRlbT4gbV9wcmV2aW91czsKKyAgICB9OworICAgIAorICAgIFNo
YWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKCk7CisgICAgflNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0
aW9uKCk7CisKKyAgICBJdGVtKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QuZ2V0KCk7
IH0KKyAgICBJdGVtKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9CisgICAg
Tm9kZSogZmlyc3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdCA/IG1fZmlyc3QtPm5vZGUo
KSA6IDA7IH0KKyAgICBOb2RlKiBsYXN0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPyBt
X2xhc3QtPm5vZGUoKSA6IDA7IH0KKyAgICAKKyAgICBJdGVtKiBmaW5kKE5vZGUqKSBjb25zdDsK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQorCisgICAgdm9p
ZCBjbGVhcigpOworICAgIHZvaWQgYXBwZW5kKEluc2VydGlvblBvaW50KiwgTm9kZSopOworCitw
cml2YXRlOgorCisgICAgUmVmUHRyPEl0ZW0+IG1fZmlyc3Q7CisgICAgUmVmUHRyPEl0ZW0+IG1f
bGFzdDsKK307CisKK2NsYXNzIFNoYWRvd0Rpc3RyaWJ1dG9yIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTaGFkb3dEaXN0cmlidXRvcik7CitwdWJsaWM6CisgICAgU2hhZG93RGlzdHJpYnV0
b3IoKTsKKyAgICB+U2hhZG93RGlzdHJpYnV0b3IoKTsKKworICAgIHZvaWQgZGlzdHJpYnV0ZShJ
bnNlcnRpb25Qb2ludCosIFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9uKik7CisgICAgdm9pZCBj
bGVhckRpc3RyaWJ1dGlvbihTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbiopOworICAgIFNoYWRv
d0JvdW5kYXJ5RGlzdHJpYnV0aW9uOjpJdGVtKiBmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29u
c3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2Rl
KiBrZXkpIGNvbnN0OworCisgICAgdm9pZCB3aWxsRGlzdHJpYnV0ZSgpOworICAgIGJvb2wgaW5E
aXN0cmlidXRpb24oKSBjb25zdDsKKyAgICB2b2lkIGRpZERpc3RyaWJ1dGUoKTsKKworICAgIHZv
aWQgcHJlcGFyZVBvb2xGb3IoRWxlbWVudCogc2hhZG93SG9zdCk7CisgICAgYm9vbCBwb29sSXNS
ZWFkeSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGUqIGtleSkgeyBy
ZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5KTsgfQorICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBTaGFkb3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSwg
Y29uc3QgTm9kZSogbm9kZSkgeyByZXR1cm4gaXRlbS0+bm9kZSgpID09IG5vZGU7IH0KKyAgICB9
OworCisgICAgc3RydWN0IEhhc2ggeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTaGFk
b3dCb3VuZGFyeURpc3RyaWJ1dGlvbjo6SXRlbSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0
IE5vZGUqPjo6aGFzaChrZXktPm5vZGUoKSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
U2hhZG93Qm91bmRhcnlEaXN0cmlidXRpb246Okl0ZW0qIGEsIFNoYWRvd0JvdW5kYXJ5RGlzdHJp
YnV0aW9uOjpJdGVtKiBiKSB7IHJldHVybiBhLT5ub2RlKCkgPT0gYi0+bm9kZSgpOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7CisgICAgfTsKKworICAgIC8vIFVzZWQgYXMgYSB0YWJsZSBmcm9tIE5vZGUgdG8gSW5zZXJl
dGlvblBvaW50CisgICAgdHlwZWRlZiBIYXNoU2V0PFNoYWRvd0JvdW5kYXJ5RGlzdHJpYnV0aW9u
OjpJdGVtKiwgSGFzaD4gSW52ZXJ0ZWRUYWJsZTsKKworICAgIGVudW0gRGlzdHJpYnV0aW9uUGhh
c2UgeworICAgICAgICBQcmV2ZW50ZWQsCisgICAgICAgIFN0YXJ0ZWQsCisgICAgICAgIFByZXBh
cmVkLAorICAgIH07CisKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9wb29sOworICAgIERp
c3RyaWJ1dGlvblBoYXNlIG1fcGhhc2U7CisgICAgSW52ZXJ0ZWRUYWJsZSBtX25vZGVUb0luc2Vy
dGlvblBvaW50OworfTsKKworaW5saW5lIGJvb2wgU2hhZG93RGlzdHJpYnV0b3I6OmluRGlzdHJp
YnV0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9waGFzZSAhPSBQcmV2ZW50ZWQ7Cit9CisK
K2lubGluZSBib29sIFNoYWRvd0Rpc3RyaWJ1dG9yOjpwb29sSXNSZWFkeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGhhc2UgPT0gUHJlcGFyZWQ7Cit9CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141622</attachid>
            <date>2012-05-13 17:55:03 -0700</date>
            <delta_ts>2012-05-13 18:15:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-86064-20120514095502.patch</filename>
            <type>text/plain</type>
            <size>53763</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDYxYzg4
NDM4ODUxNzVjNGU3MDZmY2UxNjZkNDkxZWNiNTk3NWQzZjEuLmZhNjRiZjlkZDNkZGI4NWY4ZWVm
N2EzNmVmOGRkNTBjZjc2MWU2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MDAsMTAgKzkw
MCwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3Vy
Y2VQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKIAorICAgIGh0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKICAgICBodG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAKICAgICBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAK
ICAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCi0gICAgaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVu
dC5jcHAKICAgICBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKICAgICBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTli
NDM5ODY2ZGQ0NDc0MDgzN2QxOWMxYzFiOGExMWU5NzgwMGQwZi4uYTY3NDY3YzBkOGIxOWMyY2My
ZGUzODYxMjViM2QwMWI3ZDJlMzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yNTAyLDE0ICsyNTAyLDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtl
ckNvbnRyb2wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2Vy
Q29udHJvbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
aCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBAIC0yNTIxLDcgKzI1MjEsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93
RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxl
bWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1l
bnQuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1l
bnQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50
LmggCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggZjc2YWUwYjlmNGZkMmVhODE4YTdjNWY1YWFlZmJkOWY1Y2NlZDFkZi4u
NWU2ZDM1YWYyZGYwNmVlMTM1M2M2NGVlNmFjYWU5NTdlN2FjNzIyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC04NzIsMTAgKzg3MiwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5j
cHAgXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIFwKKyAgICBodG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwIFwKICAgICBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JR
dWVyeS5jcHAgXAogICAgIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCBcCiAg
ICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCBcCi0gICAgaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAogICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVt
ZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIFwKICAgICBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBAIC0xOTk3LDkgKzE5OTcsOSBAQCBIRUFERVJT
ICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBcCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5o
IFwKKyAgICBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaCBcCiAgICAgaHRtbC9zaGFk
b3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmggXAotICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBcCiAgICAg
aHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTc3NDZlNjQ3MWU5NDY3NjBkOWE1OThmMDhkZjk5YjRl
ZWMwMjA5Mi4uNDQ4YmMxZWI1M2E3NjgyMTVkMjZiOGFmMzNlZWY3ZDM2MGY5NmQwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNTc5MCwxNCArNTc5MCwxNCBAQAogICAgICAgICAgICAgJ2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNr
ZXJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5j
cHAnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAg
J2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmgnLAotICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50
U2VsZWN0b3IuY3BwJywKLSAgICAgICAgICAgICdodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMzczNWJjOGMwMjU3OTlmNDU1ZmRi
MDU1MTQ3ZjNkMWM2NDQ2YWQyMy4uZGI4NjkxYzVhNzkxNzE2Mzg5ODA5N2FjYjQ1MzA2YzEyODY2
ZDQ0NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTYyNzMzLDE0ICs2MjczMyw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xIVE1MQ29udGVudFNlbGVjdG9yLmNw
cCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcc2hhZG93XEhUTUxDb250ZW50U2VsZWN0b3IuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4K
LQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XEhUTUxTaGFkb3dF
bGVtZW50LmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTYyNzkzLDYg
KzYyNzg1LDE0IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcQ29udGVudERpc3RyaWJ1
dG9yLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcc2hhZG93XENvbnRlbnREaXN0cmlidXRvci5oIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTFNo
YWRvd0VsZW1lbnQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NWM4NGE3MDc5ZWU1MTFl
MDUwYTkwNDQyM2Q3NTRmNTAzNDBlYTQ5Li42ZDdmYjQ3MmIwYmE0NDRkMzY5MjIzYjRkZDM0MjE4
NTQxZTFmM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNTg0LDggKzE1ODQsOCBAQAogCQk1NzQwRTgzRDE1MzJERTE3MDA3
NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDBFODNCMTUzMkRFMTcwMDc2MDYyOCAvKiBUcmVlU2NvcGVB
ZGp1c3Rlci5oICovOyB9OwogCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVjdG9y
RnJvbnRlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3OERBMjBGMTUyMEVC
QTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIElu
c3BlY3RvclR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2Vs
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwICovOyB9
OwotCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2
QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCAqLzsgfTsKKwkJNTdCNzkxQTMx
NEM2QTYyOTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAv
KiBTaGFkb3dEaXN0cmlidXRvci5jcHAgKi87IH07CisJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJE
MSAvKiBTaGFkb3dEaXN0cmlidXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1
dG9yLmggKi87IH07CiAJCTU3Qjc5MUE1MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0I3OTFBMTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwICov
OyB9OwogCQk1N0I3OTFBNjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEy
MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQk1N0I3
OTFBOTE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUE3MTRDNkE2MzMwMEYy
MDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwICovOyB9OwpAQCAtODYwMSw4ICs4NjAxLDgg
QEAKIAkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NDBFODNBMTUzMkRFMTcwMDc2MDYyOCAv
KiBUcmVlU2NvcGVBZGp1c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUcmVlU2NvcGVBZGp1c3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3NDBFODNCMTUzMkRFMTcwMDc2MDYyOCAvKiBUcmVlU2NvcGVBZGp1c3Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmVlU2NvcGVBZGp1c3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRl
bnRTZWxlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1M
Q29udGVudFNlbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTdCNzkx
QTAxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENvbnRlbnRTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJp
YnV0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93RGlz
dHJpYnV0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I3OTFBMDE0QzZB
NjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJpYnV0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2hhZG93RGlzdHJpYnV0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRTZWxlY3RvclF1
ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxQTIxNEM2QTYyOTAw
RjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3Qjc5MUE3MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbnRlbnRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjI0LDggKzE0NjI0LDYgQEAK
IAkJCQk1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAq
LywKIAkJCQk1N0I3OTFBODE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50Lmgg
Ki8sCiAJCQkJQTdCNzc0OTYxNENGNjM1MzAwNDA0NEJCIC8qIEhUTUxDb250ZW50RWxlbWVudC5p
ZGwgKi8sCi0JCQkJNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0
b3IuY3BwICovLAotCQkJCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNl
bGVjdG9yLmggKi8sCiAJCQkJNEFCREZGMDcxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dF
bGVtZW50LmNwcCAqLywKIAkJCQk0QUJERkYwODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRv
d0VsZW1lbnQuaCAqLywKIAkJCQk0QUJERkYwOTE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRv
d0VsZW1lbnQuaWRsICovLApAQCAtMTQ2NDEsNiArMTQ2MzksOCBAQAogCQkJCUE3OEU1MjZFMTM0
NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQlBNzE1RTY1MDEz
NEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywKIAkJCQlBNzE1
RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi8sCisJCQkJ
NTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmNwcCAqLywKKwkJ
CQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJpYnV0b3IuaCAqLywKIAkJ
CQk0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAqLywK
IAkJCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi8s
CiAJCQkJMTQyQjk3QzcxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAgKi8sCkBAIC0yMjkzOSw3ICsyMjkzOSw2IEBACiAJCQkJQThERjNGRDAwOTdGQTBGQzAw
NTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg2NTEy
Mjg4M0U5MDBCODFGRjggLyogSFRNTENvbnN0cnVjdGlvblNpdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3Qjc5MUFBMTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNl
bGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEzMTY2MzEzNEJDQUU4MDA3QzlBNEYgLyog
SFRNTENvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVDMDQxREIwRkZDQTdDRTAwODM5
RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzNTlENzhB
MTI5Q0EyNzEwMDA2RTVEMiAvKiBIVE1MRGV0YWlsc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQyNDMsNiArMjQyNDIsNyBAQAogCQkJCTQ5ODc3MEU5MTI0MkM1MzUwMDIyMjZCQSAvKiBT
aGFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBT
aGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUg
LyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCNzkxQTQxNEM2QTYyOTAwRjIw
MkQxIC8qIFNoYWRvd0Rpc3RyaWJ1dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQxNjk2NDEz
NDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZD
RTgwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkFGRkM5NDBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYwNzQsNyArMjYwNzQsNiBAQAogCQkJCUE4REYzRkQxMDk3RkEwRkMwMDUyOTgxQiAvKiBI
VE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg2NDEyMjg4M0U5MDBC
ODFGRjggLyogSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdC
NzkxQTkxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1N0I3OTFBMzE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDRGNTFERjEzMjcyNTQ4MDAxNkY1NDEgLyogSFRN
TENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY1QzA0MURBMEZGQ0E3Q0UwMDgzOUQ0
QSAvKiBIVE1MRGF0YUxpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzNTlENzg5
MTI5Q0EyNzEwMDA2RTVEMiAvKiBIVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yNzM4Niw2ICsyNzM4NSw3IEBACiAJCQkJNDk4NzcwRTgxMjQyQzUzNTAwMjIyNkJBIC8q
IFNoYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAg
LyogU2hhZG93Qmx1ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjhDMzBFODIwMzFCMDBC
MjU5NjUgLyogU2hhZG93RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0I3OTFBMzE0QzZB
NjI5MDBGMjAyRDEgLyogU2hhZG93RGlzdHJpYnV0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTZEMTY5NjIxMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgwRTZDRjQwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyQUZGQzkzMEQwMEE1REYwMDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5jIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuY3BwCmluZGV4IGQxYTg4OWU2NzhkZjhhMjMyN2ZmNmQzNmZlMzcxMDA5YjU4ZDY2ZmYu
LjA5YjkzNzZiNWQwODNjMmU1NWM2OTFkYTUzNjI2ZjBlMWUwOTgzNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0yNywxMiArMjcs
MTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRl
bnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd0Zvcihjb25z
dCBOb2RlKiBub2RlKQpAQCAtMTE0LDkgKzExMyw5IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlv
CiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7
Ci0gICAgICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9
IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPnNlbGVjdGlvbnMoKTsKLSAgICAgICAgaWYgKEhUTUxD
b250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVj
dGlvbkZvcndhcmQgPyBzZWxlY3Rpb25MaXN0LT5maXJzdCgpIDogc2VsZWN0aW9uTGlzdC0+bGFz
dCgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZU5vZGUoc2VsZWN0aW9uLT5ub2RlKCks
IGRpcmVjdGlvbik7CisgICAgICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRpb24qIGRpc3RyaWJ1
dGlvbiA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmRpc3RyaWJ1dGlvbigpOworICAgICAgICBp
ZiAoTm9kZSogbmV4dCA9IChkaXJlY3Rpb24gPT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/
IGRpc3RyaWJ1dGlvbi0+Zmlyc3ROb2RlKCkgOiBkaXN0cmlidXRpb24tPmxhc3ROb2RlKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlTm9kZShuZXh0LCBkaXJlY3Rpb24pOwogICAgICAg
ICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CiAgICAgfQog
ICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsKQEAgLTE0MiwxMiArMTQxLDEyIEBA
IE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9J
bnNlcnRpb25Qb2ludChjb25zdCBOb2RlCiAgICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnQobm9kZSk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiB0cmF2
ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgSFRNTENvbnRl
bnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvdy0+c2VsZWN0aW9uRm9yKG5vZGUpOwotICAg
IGlmICghc2VsZWN0aW9uKQorICAgIENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBz
aGFkb3ctPmRpc3RyaWJ1dGlvbkl0ZW1Gb3Iobm9kZSk7CisgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwot
ICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiogbmV4dFNlbGVjdGlvbiA9IChkaXJlY3Rpb24g
PT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlvbi0+bmV4dCgpIDogc2VsZWN0
aW9uLT5wcmV2aW91cygpKSkKLSAgICAgICAgcmV0dXJuIHRyYXZlcnNlTm9kZShuZXh0U2VsZWN0
aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7Ci0gICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFj
a1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rpb24p
OworICAgIGlmIChDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBuZXh0SXRlbSA9IChkaXJlY3Rp
b24gPT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IGl0ZW0tPm5leHQoKSA6IGl0ZW0tPnBy
ZXZpb3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRJdGVtLT5ub2RlKCks
IGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9u
UG9pbnQoaXRlbS0+aW5zZXJ0aW9uUG9pbnQoKSwgZGlyZWN0aW9uKTsKIH0KIAogTm9kZSogQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0
IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0yMDQsOCArMjAz
LDggQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25z
dCBOb2RlKiBub2RlKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKEVs
ZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpKSB7Ci0gICAgICAgIGlm
IChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93LT5zZWxlY3Rpb25Gb3Io
bm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoc2VsZWN0aW9uLT5pbnNl
cnRpb25Qb2ludCgpKTsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4g
dHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgIH0KICAgICByZXR1cm4gdHJhdmVy
c2VQYXJlbnRJbkN1cnJlbnRUcmVlKG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwCmluZGV4IGNjNmM4NmUxNjUyNTQwM2RlNDY4YWEyNDFmNzJlMjkzODU2ZmIzMTcuLmZm
ODUxOTg0ZDRhMzIwYjAxZjFmMWVkNGRkMTY0YTM2NjdhY2U5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFNoYWRvdy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0gICAgOiBtX25lZWRzUmVjYWxjdWxh
dGVDb250ZW50KGZhbHNlKQorICAgIDogbV9uZWVkc1JlZGlzdHJpYnV0aW5nKGZhbHNlKQogewog
fQogCkBAIC0xMTksMTYgKzExOSwxNiBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnNldFBhcmVudFRy
ZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgp
CiB7Ci0gICAgLy8gQ2hpbGRyZW4gb2YgbV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6aWx5IGlu
Ci0gICAgLy8gZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdCBp
dCBpcyBpbiBjbGVhbiBzdGF0ZS4KLSAgICBBU1NFUlQoIXNlbGVjdG9yKCkuaGFzUG9wdWxhdGVk
KCkpOworICAgIC8vIFRoZSBwb29sIG5vZGVzIGFyZSBwb3B1bGF0ZWQgbGF6aWx5IGluCisgICAg
Ly8gZW5zdXJlRGlzdHJpYnV0b3IoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdCBpdCBp
cyBpbiBjbGVhbiBzdGF0ZS4KKyAgICBBU1NFUlQoIWRpc3RyaWJ1dG9yKCkucG9vbElzUmVhZHko
KSk7CiAKLSAgICBzZWxlY3RvcigpLndpbGxTZWxlY3QoKTsKKyAgICBkaXN0cmlidXRvcigpLndp
bGxEaXN0cmlidXRlKCk7CiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFk
b3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAg
ICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKICAg
ICB9Ci0gICAgc2VsZWN0b3IoKS5kaWRTZWxlY3QoKTsKKyAgICBkaXN0cmlidXRvcigpLmRpZERp
c3RyaWJ1dGUoKTsKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2hIb3N0KEVsZW1lbnQq
IGhvc3QpCkBAIC0xNjQsMTUgKzE2NCwxMiBAQCBJbnNlcnRpb25Qb2ludCogRWxlbWVudFNoYWRv
dzo6aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gc2VsZWN0
b3IoKS5maW5kRm9yKG5vZGUpOwotICAgIGlmICghZm91bmQpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKKyAgICByZXR1cm4gZGlzdHJpYnV0
b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSk7CiB9CiAKLUhUTUxDb250ZW50U2VsZWN0
aW9uKiBFbGVtZW50U2hhZG93OjpzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QK
K0NvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dGlvbkl0
ZW1Gb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZWxlY3Rvci5m
aW5kRm9yKG5vZGUpOworICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yLmZpbmRGb3Iobm9kZSk7CiB9
CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVhdHRhY2goKQpAQCAtMjA3LDcgKzIwNCw3IEBAIHZv
aWQgRWxlbWVudFNoYWRvdzo6cmVjYWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UgY2hhbmdlKQog
ICAgIGlmICgheW91bmdlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChuZWVkc1JlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkpCisgICAgaWYgKG5lZWRzUmVkaXN0cmlidXRpbmco
KSkKICAgICAgICAgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICBlbHNlIHsK
ICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IHlvdW5nZXN0LT5kb2N1bWVu
dCgpLT5zdHlsZVJlc29sdmVyKCk7CkBAIC0yMjIsMTYgKzIxOSwxNiBAQCB2b2lkIEVsZW1lbnRT
aGFkb3c6OnJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgc3R5
bGVSZXNvbHZlci0+cG9wUGFyZW50U2hhZG93Um9vdCh5b3VuZ2VzdCk7CiAgICAgfQogCi0gICAg
Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgY2xlYXJOZWVk
c1JlZGlzdHJpYnV0aW5nKCk7CiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RT
aGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICByb290LT5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgcm9vdC0+Y2xlYXJD
aGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9CiB9CiAKLWJvb2wgRWxlbWVudFNoYWRvdzo6
bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCitib29sIEVsZW1lbnRTaGFkb3c6
Om5lZWRzUmVkaXN0cmlidXRpbmcoKQogewotICAgIHJldHVybiBtX25lZWRzUmVjYWxjdWxhdGVD
b250ZW50IHx8ICh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSAmJiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+
aGFzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIG1fbmVlZHNSZWRpc3RyaWJ1dGluZyB8
fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdlc3RTaGFkb3dSb290KCktPmhhc0luc2Vy
dGlvblBvaW50KCkpOwogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6Omhvc3RDaGlsZHJlbkNoYW5n
ZWQoKQpAQCAtMjQyLDEyICsyMzksMTIgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpob3N0Q2hpbGRy
ZW5DaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyByZXN1bHRzIGluIGZv
cmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBzaGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBT
aGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgotICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3coKTsKKyAgICBzZXROZWVkc1JlZGlzdHJpYnV0aW5nKCk7CiB9CiAKLXZvaWQg
RWxlbWVudFNoYWRvdzo6c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCit2
b2lkIEVsZW1lbnRTaGFkb3c6OnNldE5lZWRzUmVkaXN0cmlidXRpbmcoKQogewotICAgIG1fbmVl
ZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSB0cnVlOworICAgIG1fbmVlZHNSZWRpc3RyaWJ1dGluZyA9
IHRydWU7CiAKICAgICBob3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFNoYWRvdy5oCmluZGV4IDRjMDdhMjdlMDRlMjIzYTkzZGM3MzZjZTk1MDE4NjU3
ZmZmN2RiMDAuLmQ0ZDdkNDMwY2I3YTQzMzUzYTVlZmVjYzc1MDY2NThhYzg1MGIwNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAtMjcsOCArMjcsOCBAQAogI2lmbmRlZiBFbGVt
ZW50U2hhZG93X2gKICNkZWZpbmUgRWxlbWVudFNoYWRvd19oCiAKKyNpbmNsdWRlICJDb250ZW50
RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSFRN
TENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3
dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAt
NDAsOSArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vZGU7CiBjbGFzcyBF
bGVtZW50OwotY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiBjbGFzcyBUcmVlU2NvcGU7Ci1jbGFzcyBI
VE1MQ29udGVudFNlbGVjdGlvbjsKIAogY2xhc3MgRWxlbWVudFNoYWRvdyB7CiBwdWJsaWM6CkBA
IC02NiwyNCArNjQsMjQgQEAgcHVibGljOgogICAgIGJvb2wgY2hpbGROZWVkc1N0eWxlUmVjYWxj
KCk7CiAgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCByZWNhbGNTdHlsZShO
b2RlOjpTdHlsZUNoYW5nZSk7Ci0gICAgdm9pZCBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCk7Ci0gICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
LSAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCBzZXRO
ZWVkc1JlZGlzdHJpYnV0aW5nKCk7CisgICAgdm9pZCBjbGVhck5lZWRzUmVkaXN0cmlidXRpbmco
KTsKKyAgICBib29sIG5lZWRzUmVkaXN0cmlidXRpbmcoKTsKICAgICB2b2lkIGhvc3RDaGlsZHJl
bkNoYW5nZWQoKTsKIAogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihjb25z
dCBOb2RlKikgY29uc3Q7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbkZvcihj
b25zdCBOb2RlKikgY29uc3Q7CisgICAgQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogZGlzdHJp
YnV0aW9uSXRlbUZvcihjb25zdCBOb2RlKikgY29uc3Q7CiAKLSAgICBIVE1MQ29udGVudFNlbGVj
dG9yJiBzZWxlY3RvcigpOwotICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9y
KCkgY29uc3Q7CisgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOworICAgIGNv
bnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CisgICAgdm9pZCByZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpOwogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBt
X3NoYWRvd1Jvb3RzOwotICAgIEhUTUxDb250ZW50U2VsZWN0b3IgbV9zZWxlY3RvcjsKLSAgICBi
b29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgOiAxOworICAgIENvbnRlbnREaXN0cmlidXRv
ciBtX2Rpc3RyaWJ1dG9yOworICAgIGJvb2wgbV9uZWVkc1JlZGlzdHJpYnV0aW5nIDogMTsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbGVtZW50U2hhZG93KTsKIH07CiAKQEAgLTk3LDE5ICs5
NSwxOSBAQCBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0U2hhZG93Um9v
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCi1pbmxpbmUg
SFRNTENvbnRlbnRTZWxlY3RvciYgRWxlbWVudFNoYWRvdzo6c2VsZWN0b3IoKQoraW5saW5lIENv
bnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IoKQogewotICAgIHJl
dHVybiBtX3NlbGVjdG9yOworICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwogfQogCi1pbmxpbmUg
Y29uc3QgSFRNTENvbnRlbnRTZWxlY3RvciYgRWxlbWVudFNoYWRvdzo6c2VsZWN0b3IoKSBjb25z
dAoraW5saW5lIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJp
YnV0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NlbGVjdG9yOworICAgIHJldHVybiBtX2Rp
c3RyaWJ1dG9yOwogfQogCi1pbmxpbmUgdm9pZCBFbGVtZW50U2hhZG93OjpjbGVhck5lZWRzUmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQoraW5saW5lIHZvaWQgRWxlbWVudFNoYWRvdzo6
Y2xlYXJOZWVkc1JlZGlzdHJpYnV0aW5nKCkKIHsKLSAgICBtX25lZWRzUmVjYWxjdWxhdGVDb250
ZW50ID0gZmFsc2U7CisgICAgbV9uZWVkc1JlZGlzdHJpYnV0aW5nID0gZmFsc2U7CiB9CiAKIGlu
bGluZSBFbGVtZW50KiBFbGVtZW50U2hhZG93Ojpob3N0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDU4OTg0MTlhNmE1ZDQzZTA0MWZm
MGI5ZWZiYTQ3NDI2NjE4NDA0YTYuLjNkOThhNmY2YTVlYjdmMWE1ZGFmZDk0Y2U2Zjk4MDk0NjZj
NGVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKIAog
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3Iu
aCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1M
Q29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC05Nyw3ICs5Nyw3IEBAIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHRv
SW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+aGFzU2VsZWN0aW9uKCkpCisgICAgICAgICAgICBpZiAo
dG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5oYXNEaXN0cmlidXRpb24oKSkKICAgICAgICAgICAg
ICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RmFsbGJhY2tlZDsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRmFsbGJhY2tlZDsKQEAgLTE0Miwx
MiArMTQyLDEyIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpyZWxlYXNlU3R5bGUoKQogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogbmV4dFJlbmRl
cmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50LCBOb2RlKiBjdXJyZW50
KQogewotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBjdXJyZW50U2VsZWN0aW9uID0gcGFyZW50
LT5zZWxlY3Rpb25zKCktPmZpbmQoY3VycmVudCk7Ci0gICAgaWYgKCFjdXJyZW50U2VsZWN0aW9u
KQorICAgIENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGN1cnJlbnRJdGVtID0gcGFyZW50LT5k
aXN0cmlidXRpb24oKS0+ZmluZChjdXJyZW50KTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IGN1cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxl
Y3Rpb24tPm5leHQoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNl
bGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgIGZvciAoQ29udGVudERpc3RyaWJ1dGlv
bjo6SXRlbSogaXRlbSA9IGN1cnJlbnRJdGVtLT5uZXh0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5u
ZXh0KCkpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdGVtLT5ub2Rl
KCktPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgfQogCkBA
IC0xNTgsMTAgKzE1OCwxMCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcHJldmlvdXNS
ZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBhcgogewogICAgIFJlbmRl
ck9iamVjdCogbGFzdFJlbmRlcmVyID0gMDsKIAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rp
b24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247
IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24t
Pm5vZGUoKSA9PSBjdXJyZW50KQorICAgIGZvciAoQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSog
aXRlbSA9IHBhcmVudC0+ZGlzdHJpYnV0aW9uKCktPmZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVt
LT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGl0ZW0tPm5vZGUoKSA9PSBjdXJyZW50KQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0
aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gaXRlbS0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgbGFzdFJlbmRlcmVy
ID0gcmVuZGVyZXI7CiAgICAgfQogCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIGlubGluZSBS
ZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZkluc2VydGlvblBvaW50KEluc2VydGlvblBv
aW50KiBwYXIKIAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZklu
c2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgaWYgKHBhcmVudC0+
aGFzU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2Vs
ZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0
aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgaWYgKHBhcmVu
dC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKKyAgICAgICAgZm9yIChDb250ZW50RGlzdHJpYnV0aW9u
OjpJdGVtKiBpdGVtID0gcGFyZW50LT5kaXN0cmlidXRpb24oKS0+Zmlyc3QoKTsgaXRlbTsgaXRl
bSA9IGl0ZW0tPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBpdGVtLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyOwogICAgICAgICB9CiAKQEAgLTE4NCw5ICsxODQsOSBAQCBzdGF0aWMgaW5saW5lIFJl
bmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudAogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2ZJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhh
c1NlbGVjdGlvbigpKSB7Ci0gICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVj
dGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5sYXN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9u
ID0gc2VsZWN0aW9uLT5wcmV2aW91cygpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgIGlmIChwYXJl
bnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgIGZvciAoQ29udGVudERpc3RyaWJ1dGlv
bjo6SXRlbSogaXRlbSA9IHBhcmVudC0+ZGlzdHJpYnV0aW9uKCktPmxhc3QoKTsgaXRlbTsgaXRl
bSA9IGl0ZW0tPnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gaXRlbS0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIHJldHVy
biByZW5kZXJlcjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
N2IyNDZjMGIxMmZiMTg3MmQzZTlkYzZjZDRmODk3YjVlZDVkYTYwZS4uOGZhN2UwZTk1NjlkMmY5
YWU3YmVkODA4NTI5MWMxYTkwMjc5YmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkRPTVNl
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CkBAIC0zNCw3ICszNSw2IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1l
bnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKLSNpbmNsdWRlICJI
VE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCmluZGV4IGMwMDI0YzcxNjczMjMwOTk3MGYxYmU4MTcwNzUxNjg1ZmYwNDE5ZTAu
LmQyYWQwZGZiYzZjM2RjZmU0NDI3NDRlOThkNTA4NGVlZWM3YmRkNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaApAQCAtMzgsOCArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRE9NU2VsZWN0aW9uOwotY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50
OwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKIGNsYXNzIEluc2VydGlvblBvaW50OwogY2xh
c3MgRWxlbWVudFNoYWRvdzsKIApAQCAtNjAsOSArNTgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlY2FsY1NoYWRvd1RyZWVTdHlsZShTdHlsZUNoYW5nZSk7CiAKLSAgICB2b2lkIHNldE5lZWRz
UmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLSAgICB2b2lkIGNsZWFyTmVlZHNSZWF0
dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpOworICAgIHZvaWQgc2V0TmVlZHNSZWRpc3RyaWJ1dGluZygpOwor
ICAgIHZvaWQgY2xlYXJOZWVkc1JlZGlzdHJpYnV0aW5nKCk7CisgICAgYm9vbCBuZWVkc1JlZGlz
dHJpYnV0aW5nKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9k
ZSopIGNvbnN0OwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzcyMGEwM2ViZWQzZDEwNWVmOTJmMzA1NGUyYTc4MDg5ZTQ1YTEwYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAg
LTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGVudERp
c3RyaWJ1dG9yLmgiCisKKyNpbmNsdWRlICJDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorI2luY2x1
ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbnRlbnREaXN0cmlidXRpb246OkNvbnRlbnREaXN0cmli
dXRpb24oKQoreworfQorCitDb250ZW50RGlzdHJpYnV0aW9uOjp+Q29udGVudERpc3RyaWJ1dGlv
bigpCit7CisgICAgQVNTRVJUKGlzRW1wdHkoKSk7Cit9CisKK0NvbnRlbnREaXN0cmlidXRpb246
Okl0ZW0qIENvbnRlbnREaXN0cmlidXRpb246OmZpbmQoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAg
ICBmb3IgKENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBp
dGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkK
KyAgICAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBDb250ZW50RGlzdHJpYnV0aW9uOjpjbGVhcigpCit7CisgICAgaWYgKGlzRW1wdHko
KSkgeworICAgICAgICBBU1NFUlQoIW1fbGFzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBSZWZQdHI8Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbT4gaXRlbSA9IG1fZmlyc3Q7Cisg
ICAgd2hpbGUgKGl0ZW0pIHsKKyAgICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKKyAg
ICAgICAgUmVmUHRyPENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0+IG5leHRJdGVtID0gaXRlbS0+
bV9uZXh0OworICAgICAgICBpdGVtLT5tX25leHQuY2xlYXIoKTsKKyAgICAgICAgaWYgKG5leHRJ
dGVtKQorICAgICAgICAgICAgbmV4dEl0ZW0tPm1fcHJldmlvdXMuY2xlYXIoKTsKKyAgICAgICAg
aXRlbSA9IG5leHRJdGVtOworICAgIH0KKworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAgICBtX2xh
c3QuY2xlYXIoKTsKK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0aW9uOjphcHBlbmQoSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBOb2RlKiBub2RlKQoreworICAgIFJlZlB0cjxJdGVt
PiBjaGlsZCA9IEl0ZW06OmNyZWF0ZShpbnNlcnRpb25Qb2ludCwgbm9kZSk7CisKKyAgICBpZiAo
aXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgbV9maXJzdCA9
IG1fbGFzdCA9IGNoaWxkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFt
X2xhc3QtPm5leHQoKSk7CisgICAgQVNTRVJUKCFjaGlsZC0+cHJldmlvdXMoKSk7CisgICAgbV9s
YXN0LT5tX25leHQgPSBjaGlsZDsKKyAgICBjaGlsZC0+bV9wcmV2aW91cyA9IG1fbGFzdDsKKyAg
ICBtX2xhc3QgPSBtX2xhc3QtPm5leHQoKTsKK30KKworQ29udGVudERpc3RyaWJ1dG9yOjpDb250
ZW50RGlzdHJpYnV0b3IoKQorICAgIDogbV9waGFzZShQcmV2ZW50ZWQpCit7Cit9CisKK0NvbnRl
bnREaXN0cmlidXRvcjo6fkNvbnRlbnREaXN0cmlidXRvcigpCit7CisgICAgQVNTRVJUKG1fcG9v
bC5pc0VtcHR5KCkpOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIENvbnRlbnREaXN0cmlidXRpb24qIGRpc3Ry
aWJ1dGlvbikKK3sKKyAgICBBU1NFUlQobV9waGFzZSA9PSBQcmVwYXJlZCk7CisgICAgQVNTRVJU
KGRpc3RyaWJ1dGlvbi0+aXNFbXB0eSgpKTsKKworICAgIENvbnRlbnRTZWxlY3RvclF1ZXJ5IHF1
ZXJ5KGluc2VydGlvblBvaW50KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29s
LnNpemUoKTsgKytpKSB7CisgICAgICAgIE5vZGUqIGNoaWxkID0gbV9wb29sW2ldLmdldCgpOwor
ICAgICAgICBpZiAoIWNoaWxkKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgh
cXVlcnkubWF0Y2hlcyhjaGlsZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBk
aXN0cmlidXRpb24tPmFwcGVuZChpbnNlcnRpb25Qb2ludCwgY2hpbGQpOworICAgICAgICBtX25v
ZGVUb0luc2VydGlvblBvaW50LmFkZChkaXN0cmlidXRpb24tPmxhc3QoKSk7CisgICAgICAgIG1f
cG9vbFtpXSA9IDA7CisgICAgfQorfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6Y2xlYXJE
aXN0cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvbiogbGlzdCkKK3sKKyAgICBmb3IgKENvbnRl
bnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBsaXN0LT5maXJzdCgpOyBpdGVtOyBpdGVtID0g
aXRlbS0+bmV4dCgpKQorICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LnJlbW92ZShpdGVt
KTsKKworICAgIGxpc3QtPmNsZWFyKCk7Cit9CisKK0NvbnRlbnREaXN0cmlidXRpb246Okl0ZW0q
IENvbnRlbnREaXN0cmlidXRvcjo6ZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0Cit7Cisg
ICAgSW52ZXJ0ZWRUYWJsZTo6aXRlcmF0b3IgZm91bmQgPSBtX25vZGVUb0luc2VydGlvblBvaW50
LmZpbmQ8Y29uc3QgTm9kZSosIFRyYW5zbGF0b3I+KGtleSk7CisgICAgcmV0dXJuIGZvdW5kICE9
IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuZW5kKCkgPyAqZm91bmQgOiAwOworfQorCitJbnNlcnRp
b25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3Qg
Tm9kZSoga2V5KSBjb25zdAoreworICAgIEludmVydGVkVGFibGU6Oml0ZXJhdG9yIGZvdW5kID0g
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5maW5kPGNvbnN0IE5vZGUqLCBUcmFuc2xhdG9yPihrZXkp
OworICAgIHJldHVybiBmb3VuZCAhPSBtX25vZGVUb0luc2VydGlvblBvaW50LmVuZCgpID8gKCpm
b3VuZCktPmluc2VydGlvblBvaW50KCkgOiAwOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRv
cjo6d2lsbERpc3RyaWJ1dGUoKQoreworICAgIG1fcGhhc2UgPSBTdGFydGVkOworfQorCit2b2lk
IENvbnRlbnREaXN0cmlidXRvcjo6ZGlkRGlzdHJpYnV0ZSgpCit7CisgICAgQVNTRVJUKG1fcGhh
c2UgIT0gUHJldmVudGVkKTsKKyAgICBtX3BoYXNlID0gUHJldmVudGVkOworICAgIG1fcG9vbC5j
bGVhcigpOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6cHJlcGFyZVBvb2xGb3IoRWxl
bWVudCogc2hhZG93SG9zdCkKK3sKKyAgICBpZiAocG9vbElzUmVhZHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKG1fcG9vbC5pc0VtcHR5KCkpOworICAgIEFTU0VSVChzaGFkb3dI
b3N0KTsKKyAgICBBU1NFUlQobV9waGFzZSA9PSBTdGFydGVkKTsKKworICAgIG1fcGhhc2UgPSBQ
cmVwYXJlZDsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICBtX3Bvb2wuYXBwZW5k
KG5vZGUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MDZkMjNjZDc0NjBkZjZiZmQ5MzBjNDljZGQzMWY2
ODgxNzg5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGVudERpc3Ry
aWJ1dG9yX2gKKyNkZWZpbmUgQ29udGVudERpc3RyaWJ1dG9yX2gKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBFbGVtZW50OworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CitjbGFzcyBOb2RlOworY2xh
c3MgU2hhZG93Um9vdDsKKworY2xhc3MgQ29udGVudERpc3RyaWJ1dGlvbiB7CitwdWJsaWM6Cisg
ICAgY2xhc3MgSXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPEl0ZW0+IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBDb250ZW50RGlzdHJpYnV0aW9uOworCisgICAgICAgIEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9p
bnQ7IH0KKyAgICAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsg
fQorICAgICAgICBJdGVtKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Cisg
ICAgICAgIEl0ZW0qIHByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SXRlbT4gY3JlYXRl
KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkgeyAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJdGVtKGluc2VydGlvblBvaW50LCBub2RlKSk7IH0KKworICAgICAgICBJdGVt
KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkKKyAgICAgICAgICAg
IDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgICwgbV9ub2Rl
KG5vZGUpCisgICAgICAgIHsgfQorCisgICAgICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlv
blBvaW50OworICAgICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgICAgICBSZWZQdHI8SXRl
bT4gbV9uZXh0OworICAgICAgICBSZWZQdHI8SXRlbT4gbV9wcmV2aW91czsKKyAgICB9OworICAg
IAorICAgIENvbnRlbnREaXN0cmlidXRpb24oKTsKKyAgICB+Q29udGVudERpc3RyaWJ1dGlvbigp
OworCisgICAgSXRlbSogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9Cisg
ICAgSXRlbSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdC5nZXQoKTsgfQorICAgIE5vZGUq
IGZpcnN0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPyBtX2ZpcnN0LT5ub2RlKCkgOiAw
OyB9CisgICAgTm9kZSogbGFzdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0ID8gbV9sYXN0
LT5ub2RlKCkgOiAwOyB9CisgICAgCisgICAgSXRlbSogZmluZChOb2RlKikgY29uc3Q7CisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZmlyc3Q7IH0KKworICAgIHZvaWQgY2xl
YXIoKTsKKyAgICB2b2lkIGFwcGVuZChJbnNlcnRpb25Qb2ludCosIE5vZGUqKTsKKworcHJpdmF0
ZToKKworICAgIFJlZlB0cjxJdGVtPiBtX2ZpcnN0OworICAgIFJlZlB0cjxJdGVtPiBtX2xhc3Q7
Cit9OworCitjbGFzcyBDb250ZW50RGlzdHJpYnV0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENvbnRlbnREaXN0cmlidXRvcik7CitwdWJsaWM6CisgICAgQ29udGVudERpc3RyaWJ1dG9y
KCk7CisgICAgfkNvbnRlbnREaXN0cmlidXRvcigpOworCisgICAgdm9pZCBkaXN0cmlidXRlKElu
c2VydGlvblBvaW50KiwgQ29udGVudERpc3RyaWJ1dGlvbiopOworICAgIHZvaWQgY2xlYXJEaXN0
cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvbiopOworICAgIENvbnRlbnREaXN0cmlidXRpb246
Okl0ZW0qIGZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKKyAgICBJbnNlcnRpb25Qb2lu
dCogZmluZEluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7CisKKyAgICB2
b2lkIHdpbGxEaXN0cmlidXRlKCk7CisgICAgYm9vbCBpbkRpc3RyaWJ1dGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgZGlkRGlzdHJpYnV0ZSgpOworCisgICAgdm9pZCBwcmVwYXJlUG9vbEZvcihFbGVt
ZW50KiBzaGFkb3dIb3N0KTsKKyAgICBib29sIHBvb2xJc1JlYWR5KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5v
ZGUqPjo6aGFzaChrZXkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvbnRl
bnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0sIGNvbnN0IE5vZGUqIG5vZGUpIHsgcmV0dXJuIGl0
ZW0tPm5vZGUoKSA9PSBub2RlOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSoga2V5KSB7
IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXktPm5vZGUoKSk7IH0KKyAgICAg
ICAgc3RhdGljIGJvb2wgZXF1YWwoQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogYSwgQ29udGVu
dERpc3RyaWJ1dGlvbjo6SXRlbSogYikgeyByZXR1cm4gYS0+bm9kZSgpID09IGItPm5vZGUoKTsg
fQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOworICAgIH07CisKKyAgICAvLyBVc2VkIGFzIGEgdGFibGUgZnJvbSBOb2RlIHRv
IEluc2VyZXRpb25Qb2ludAorICAgIHR5cGVkZWYgSGFzaFNldDxDb250ZW50RGlzdHJpYnV0aW9u
OjpJdGVtKiwgSGFzaD4gSW52ZXJ0ZWRUYWJsZTsKKworICAgIGVudW0gRGlzdHJpYnV0aW9uUGhh
c2UgeworICAgICAgICBQcmV2ZW50ZWQsCisgICAgICAgIFN0YXJ0ZWQsCisgICAgICAgIFByZXBh
cmVkLAorICAgIH07CisKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9wb29sOworICAgIERp
c3RyaWJ1dGlvblBoYXNlIG1fcGhhc2U7CisgICAgSW52ZXJ0ZWRUYWJsZSBtX25vZGVUb0luc2Vy
dGlvblBvaW50OworfTsKKworaW5saW5lIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjppbkRpc3Ry
aWJ1dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGhhc2UgIT0gUHJldmVudGVkOworfQor
CitpbmxpbmUgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6OnBvb2xJc1JlYWR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9waGFzZSA9PSBQcmVwYXJlZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCmluZGV4
IDU0MzY3OTUwNjFmOTM5YTA0OGIyZjk4NjUzYzgzODZhOWMzZWZhN2YuLjI0MmZlNzU3MjAyNmZm
ZTEyZTYxZGMyNzI2OTQ2YzA5YzRmZDgzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgogCisjaW5jbHVk
ZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnku
aCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxl
Y3Rvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
CiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzZWxlY3RBdHRyKSB7CiAgICAgICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkKLSAg
ICAgICAgICAgIHJvb3QtPm93bmVyKCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKKyAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPnNldE5lZWRzUmVkaXN0cmlidXRp
bmcoKTsKICAgICB9IGVsc2UKICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmlidXRl
KGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFlNDE5NGVjNWEz
N2RlMDM5NGMwM2Y4ZTgzOGU2NWJiNDU4NzRjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKLQotI2luY2x1ZGUg
IkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9p
ZCBIVE1MQ29udGVudFNlbGVjdGlvbjo6YXBwZW5kKFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxl
Y3Rpb24+IG5leHQpCi17Ci0gICAgQVNTRVJUKCFtX25leHQpOwotICAgIEFTU0VSVCghbmV4dC0+
cHJldmlvdXMoKSk7Ci0gICAgbV9uZXh0ID0gbmV4dDsKLSAgICBtX25leHQtPm1fcHJldmlvdXMg
PSB0aGlzOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0aW9uOjp1bmxpbmsoKQotewotICAg
IEFTU0VSVCghbV9wcmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBmb3IgYSBoZWFkLgot
ICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gaXRlbSA9IHRoaXM7Ci0gICAgd2hpbGUg
KGl0ZW0pIHsKLSAgICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKLSAgICAgICAgUmVm
UHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKLSAgICAg
ICAgaXRlbS0+bV9uZXh0LmNsZWFyKCk7Ci0gICAgICAgIGlmIChuZXh0SXRlbSkKLSAgICAgICAg
ICAgIG5leHRJdGVtLT5tX3ByZXZpb3VzLmNsZWFyKCk7Ci0gICAgICAgIGl0ZW0gPSBuZXh0SXRl
bTsKLSAgICB9Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6SFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0KCkKLXsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojp+SFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0KCkKLXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLX0KLQotSFRNTENv
bnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6ZmluZChOb2RlKiBub2Rl
KSBjb25zdAotewotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIGl0ZW0gPSBmaXJzdCgp
OyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChub2RlID09IGl0ZW0t
Pm5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBpdGVtOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gMDsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmNsZWFyKCkKLXsKLSAg
ICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fZmlyc3QtPnVubGluaygpOwotICAgIG1fZmlyc3QuY2xlYXIo
KTsKLSAgICBtX2xhc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxp
c3Q6OmFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBjaGlsZCkKLXsKLSAg
ICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAgICAgICAgbV9m
aXJzdCA9IG1fbGFzdCA9IGNoaWxkOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9s
YXN0LT5hcHBlbmQoY2hpbGQpOwotICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgpOwotfQotCi1I
VE1MQ29udGVudFNlbGVjdG9yOjpIVE1MQ29udGVudFNlbGVjdG9yKCkKLSAgICA6IG1fcGhhc2Uo
U2VsZWN0aW9uUHJldmVudGVkKQotewotfQotCi1IVE1MQ29udGVudFNlbGVjdG9yOjp+SFRNTENv
bnRlbnRTZWxlY3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpOwot
fQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnNlbGVjdChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQsIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9ucykKLXsKLSAg
ICBBU1NFUlQobV9waGFzZSA9PSBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQpOwotICAgIEFTU0VSVChz
ZWxlY3Rpb25zLT5pc0VtcHR5KCkpOwotCi0gICAgQ29udGVudFNlbGVjdG9yUXVlcnkgcXVlcnko
aW5zZXJ0aW9uUG9pbnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0u
Z2V0KCk7Ci0gICAgICAgIGlmICghY2hpbGQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gc2VsZWN0aW9uID0gSFRNTENvbnRl
bnRTZWxlY3Rpb246OmNyZWF0ZShpbnNlcnRpb25Qb2ludCwgY2hpbGQpOwotCi0gICAgICAgIHNl
bGVjdGlvbnMtPmFwcGVuZChzZWxlY3Rpb24pOwotICAgICAgICBtX3NlbGVjdGlvblNldC5hZGQo
c2VsZWN0aW9uLmdldCgpKTsKLSAgICAgICAgbV9jYW5kaWRhdGVzW2ldID0gMDsKLSAgICB9Ci19
Ci0KLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6dW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rp
b25MaXN0KiBsaXN0KQotewotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IGxpc3QtPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0
KCkpCi0gICAgICAgIG1fc2VsZWN0aW9uU2V0LnJlbW92ZShzZWxlY3Rpb24pOwotICAgIGxpc3Qt
PmNsZWFyKCk7Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdG9y
OjpmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3Rp
b25TZXQuZmluZChrZXkpOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxl
Y3QoKQotewotICAgIG1fcGhhc2UgPSBTZWxlY3Rpb25TdGFydGVkOwotfQotCi12b2lkIEhUTUxD
b250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdCgpCi17Ci0gICAgQVNTRVJUKG1fcGhhc2UgIT0gU2Vs
ZWN0aW9uUHJldmVudGVkKTsKLSAgICBtX3BoYXNlID0gU2VsZWN0aW9uUHJldmVudGVkOwotICAg
IG1fY2FuZGlkYXRlcy5jbGVhcigpOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnBv
cHVsYXRlSWZOZWNlc3NhcnkoRWxlbWVudCogc2hhZG93SG9zdCkKLXsKLSAgICBpZiAoaGFzUG9w
dWxhdGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNF
bXB0eSgpKTsKLSAgICBBU1NFUlQoc2hhZG93SG9zdCk7Ci0gICAgQVNTRVJUKG1fcGhhc2UgPT0g
U2VsZWN0aW9uU3RhcnRlZCk7Ci0KLSAgICBtX3BoYXNlID0gSG9zdENoaWxkcmVuUG9wdWxhdGVk
OwotICAgIGZvciAoTm9kZSogbm9kZSA9IHNoYWRvd0hvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1fY2FuZGlkYXRlcy5hcHBlbmQo
bm9kZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNmYmRkYmJkODgy
NzM4NWE3YzlhZmMxMWMyNGY2ZmVjYTZlMzYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSFRNTENv
bnRlbnRTZWxlY3Rvcl9oCi0jZGVmaW5lIEhUTUxDb250ZW50U2VsZWN0b3JfaAotCi0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7Ci1jbGFz
cyBJbnNlcnRpb25Qb2ludDsKLWNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFkb3dSb290OwotCi1jbGFz
cyBIVE1MQ29udGVudFNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEhUTUxDb250ZW50U2Vs
ZWN0aW9uPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxl
Y3Rpb24+IGNyZWF0ZShJbnNlcnRpb25Qb2ludCosIE5vZGUqKTsKLQotICAgIEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0K
LSAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9Ci0gICAgSFRN
TENvbnRlbnRTZWxlY3Rpb24qIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0K
LSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3By
ZXZpb3VzLmdldCgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50
U2VsZWN0aW9uPik7Ci0gICAgdm9pZCB1bmxpbmsoKTsKLQotcHJpdmF0ZToKLSAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbihJbnNlcnRpb25Qb2ludCosIE5vZGUqKTsKLQotICAgIEluc2VydGlvblBv
aW50KiBtX2luc2VydGlvblBvaW50OwotICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7Ci0gICAgUmVm
UHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBtX25leHQ7Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50
U2VsZWN0aW9uPiBtX3ByZXZpb3VzOwotfTsKLQotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9u
OjpIVE1MQ29udGVudFNlbGVjdGlvbihJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIE5v
ZGUqIG5vZGUpCi0gICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KSwgbV9ub2Rl
KG5vZGUpCi17IH0KLQotaW5saW5lIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IEhU
TUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
LCBOb2RlKiBub2RlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENvbnRlbnRTZWxl
Y3Rpb24oaW5zZXJ0aW9uUG9pbnQsIG5vZGUpKTsKLX0KLQotY2xhc3MgSFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0IHsKLXB1YmxpYzoKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QoKTsKLSAg
ICB+SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCk7Ci0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlv
biogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9Ci0gICAgSFRNTENvbnRl
bnRTZWxlY3Rpb24qIGxhc3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3QuZ2V0KCk7IH0KLSAgICBI
VE1MQ29udGVudFNlbGVjdGlvbiogZmluZChOb2RlKikgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIW1fZmlyc3Q7IH0KLQotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2
b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPik7Ci0KLXByaXZhdGU6
Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBtX2ZpcnN0OwotICAgIFJlZlB0cjxI
VE1MQ29udGVudFNlbGVjdGlvbj4gbV9sYXN0OwotfTsKLQotCi1jbGFzcyBIVE1MQ29udGVudFNl
bGVjdGlvblNldCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHZhbHVlKSB7IG1fc2V0LmFkZCh2YWx1ZSk7IH0KLSAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVu
dFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50
U2VsZWN0aW9uKiBmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAg
c3RydWN0IFRyYW5zbGF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFz
aChrZXkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBzZWxlY3Rpb24sIGNvbnN0IE5vZGUqIG5vZGUpIHsgcmV0dXJuIHNlbGVjdGlvbi0+
bm9kZSgpID09IG5vZGU7IH0KLSAgICB9OwotCi0gICAgc3RydWN0IEhhc2ggewotICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChIVE1MQ29udGVudFNlbGVjdGlvbioga2V5KSB7IHJldHVybiBQ
dHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXktPm5vZGUoKSk7IH0KLSAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoSFRNTENvbnRlbnRTZWxlY3Rpb24qIGEsIEhUTUxDb250ZW50U2VsZWN0aW9u
KiBiKSB7IHJldHVybiBhLT5ub2RlKCkgPT0gYi0+bm9kZSgpOyB9Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsK
LQotICAgIHR5cGVkZWYgSGFzaFNldDxIVE1MQ29udGVudFNlbGVjdGlvbiosIEhhc2g+IFBvaW50
ZXJTZXQ7Ci0KLSAgICBQb2ludGVyU2V0IG1fc2V0OwotfTsKLQotaW5saW5lIEhUTUxDb250ZW50
U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZChjb25zdCBOb2RlKiBrZXkp
IGNvbnN0Ci17Ci0gICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPGNv
bnN0IE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKLSAg
ICByZXR1cm4gZm91bmQgIT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOwotfQotCi1jbGFzcyBI
VE1MQ29udGVudFNlbGVjdG9yIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MQ29udGVu
dFNlbGVjdG9yKTsKLXB1YmxpYzoKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKCk7Ci0gICAgfkhU
TUxDb250ZW50U2VsZWN0b3IoKTsKLQotICAgIHZvaWQgc2VsZWN0KEluc2VydGlvblBvaW50Kiwg
SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAgdm9pZCB1bnNlbGVjdChIVE1MQ29udGVu
dFNlbGVjdGlvbkxpc3QqKTsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihjb25z
dCBOb2RlKiBrZXkpIGNvbnN0OwotCi0gICAgdm9pZCB3aWxsU2VsZWN0KCk7Ci0gICAgYm9vbCBp
c1NlbGVjdGluZygpIGNvbnN0OwotICAgIHZvaWQgZGlkU2VsZWN0KCk7Ci0KLSAgICB2b2lkIHBv
cHVsYXRlSWZOZWNlc3NhcnkoRWxlbWVudCogc2hhZG93SG9zdCk7Ci0gICAgYm9vbCBoYXNQb3B1
bGF0ZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBlbnVtIFNlbGVjdGluZ1BoYXNlIHsKLSAg
ICAgICAgU2VsZWN0aW9uUHJldmVudGVkLAotICAgICAgICBTZWxlY3Rpb25TdGFydGVkLAotICAg
ICAgICBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQsCi0gICAgfTsKLQotICAgIHZvaWQgcmVtb3ZlRnJv
bVNldChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKLSAgICB2b2lkIGFkZFRvU2V0KEhUTUxD
b250ZW50U2VsZWN0aW9uTGlzdCopOwotCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fY2Fu
ZGlkYXRlczsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvblNldCBtX3NlbGVjdGlvblNldDsKLSAg
ICBTZWxlY3RpbmdQaGFzZSBtX3BoYXNlOwotfTsKLQotaW5saW5lIGJvb2wgSFRNTENvbnRlbnRT
ZWxlY3Rvcjo6aXNTZWxlY3RpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX3BoYXNlICE9IFNl
bGVjdGlvblByZXZlbnRlZDsKLX0KLQotaW5saW5lIGJvb2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6
aGFzUG9wdWxhdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9waGFzZSA9PSBIb3N0Q2hpbGRy
ZW5Qb3B1bGF0ZWQ7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggMzdlNTEwMWMzN2IyMDk3ZTQ0MWY4YTQ0MTI4
ODJlZWYzZjUyOTUxNC4uNzIzYjQ1OTkwY2YyOTVlMzI0MjA4NWI1ZTMwM2VhMzNlZTFhYzk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc2VydGlvblBvaW50OjpJbnNl
cnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fc2VsZWN0
aW9ucygpCisgICAgLCBtX2Rpc3RyaWJ1dGlvbigpCiB7CiB9CiAKQEAgLTc2LDEwICs3NiwxMCBA
QCB2b2lkIEluc2VydGlvblBvaW50OjpkZXRhY2goKQogCiAgICAgICAgIC8vIFdoZW4gc2hhZG93
IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8g
cmUtY2FsY3VsYXRlIHNlbGVjdG9yIGZvcgogICAgICAgICAvLyBvdGhlciBpbnNlcnRpb24gcG9p
bnRzLgotICAgICAgICBzaGFkb3ctPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKKyAgICAgICAgc2hhZG93LT5zZXROZWVkc1JlZGlzdHJpYnV0aW5nKCk7CiAgICAgfQog
Ci0gICAgQVNTRVJUKG1fc2VsZWN0aW9ucy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2Rpc3Ry
aWJ1dGlvbi5pc0VtcHR5KCkpOwogICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKIH0KIApAQCAt
MTE5LDQxICsxMTksNDEgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIAogaW5saW5lIHZvaWQgSW5zZXJ0
aW9uUG9pbnQ6OmRpc3RyaWJ1dGVIb3N0Q2hpbGRyZW4oRWxlbWVudFNoYWRvdyogc2hhZG93KQog
ewotICAgIGlmICghc2hhZG93LT5zZWxlY3RvcigpLmlzU2VsZWN0aW5nKCkpIHsKLSAgICAgICAg
Ly8gSWYgSFRNTENvbnRlbnRTZWxlY3RvciBpcyBub3QgaW50IHNlbGVjdGluZyBwaGFzZSwgaXQg
bWVhbnMgSW5zZXJ0aW9uUG9pbnQgaXMgYXR0YWNoZWQgZnJvbQorICAgIGlmICghc2hhZG93LT5k
aXN0cmlidXRvcigpLmluRGlzdHJpYnV0aW9uKCkpIHsKKyAgICAgICAgLy8gSWYgQ29udGVudERp
c3RyaWJ1dG9yIGlzIG5vdCBpbnQgc2VsZWN0aW5nIHBoYXNlLCBpdCBtZWFucyBJbnNlcnRpb25Q
b2ludCBpcyBhdHRhY2hlZCBmcm9tCiAgICAgICAgIC8vIG5vbi1FbGVtZW50U2hhZG93IG5vZGUu
IFRvIHJ1biBkaXN0cmlidXRlIGFsZ29yaXRobSwgd2UgaGF2ZSB0byByZWF0dGFjaCBFbGVtZW50
U2hhZG93LgotICAgICAgICBzaGFkb3ctPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKKyAgICAgICAgc2hhZG93LT5zZXROZWVkc1JlZGlzdHJpYnV0aW5nKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaGFkb3ctPnNlbGVjdG9yKCkucG9wdWxhdGVJZk5l
Y2Vzc2FyeShzaGFkb3ctPmhvc3QoKSk7Ci0gICAgc2hhZG93LT5zZWxlY3RvcigpLnVuc2VsZWN0
KCZtX3NlbGVjdGlvbnMpOwotICAgIHNoYWRvdy0+c2VsZWN0b3IoKS5zZWxlY3QodGhpcywgJm1f
c2VsZWN0aW9ucyk7CisgICAgc2hhZG93LT5kaXN0cmlidXRvcigpLnByZXBhcmVQb29sRm9yKHNo
YWRvdy0+aG9zdCgpKTsKKyAgICBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuY2xlYXJEaXN0cmlidXRp
b24oJm1fZGlzdHJpYnV0aW9uKTsKKyAgICBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZGlzdHJpYnV0
ZSh0aGlzLCAmbV9kaXN0cmlidXRpb24pOwogfQogCiBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2lu
dDo6Y2xlYXJEaXN0cmlidXRpb24oRWxlbWVudFNoYWRvdyogc2hhZG93KQogewotICAgIHNoYWRv
dy0+c2VsZWN0b3IoKS51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKKyAgICBzaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkuY2xlYXJEaXN0cmlidXRpb24oJm1fZGlzdHJpYnV0aW9uKTsKIH0KIAogaW5saW5l
IHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaERpc3RyaWJ1dGVkTm9kZSgpCiB7Ci0gICAgZm9y
IChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLmZpcnN0KCk7
IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCi0gICAgICAgIHNlbGVj
dGlvbi0+bm9kZSgpLT5hdHRhY2goKTsKKyAgICBmb3IgKENvbnRlbnREaXN0cmlidXRpb246Okl0
ZW0qIGl0ZW0gPSBtX2Rpc3RyaWJ1dGlvbi5maXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4
dCgpKQorICAgICAgICBpdGVtLT5ub2RlKCktPmF0dGFjaCgpOwogfQogCiBpbmxpbmUgdm9pZCBJ
bnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9vdChTaGFkb3dSb290KiBzaGFkb3dSb290KQog
ewogICAgIHNoYWRvd1Jvb3QtPnNldEFzc2lnbmVkVG8odGhpcyk7Ci0gICAgbV9zZWxlY3Rpb25z
LmNsZWFyKCk7CisgICAgbV9kaXN0cmlidXRpb24uY2xlYXIoKTsKICAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBzaGFkb3dSb290LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKQotICAgICAgICBtX3NlbGVjdGlvbnMuYXBwZW5kKEhUTUxDb250ZW50U2VsZWN0aW9u
OjpjcmVhdGUodGhpcywgbm9kZSkpOworICAgICAgICBtX2Rpc3RyaWJ1dGlvbi5hcHBlbmQodGhp
cywgbm9kZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50OjpjbGVhckFzc2lnbm1l
bnQoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsKICAgICBzaGFkb3dSb290LT5zZXRBc3NpZ25l
ZFRvKDApOwotICAgIG1fc2VsZWN0aW9ucy5jbGVhcigpOworICAgIG1fZGlzdHJpYnV0aW9uLmNs
ZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDg0MGRkMDY0NzkwZmNkOTM2ZmVkMmM0MmI3
MDI4M2E5MjE0MDlmZTIuLjdkMWRkMTI4NTI3NmJmNGNjNDI3NGZiNzAwM2Y5MTliMjk2ODllYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzEs
NyArMzEsNyBAQAogI2lmbmRlZiBJbnNlcnRpb25Qb2ludF9oCiAjZGVmaW5lIEluc2VydGlvblBv
aW50X2gKIAotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDb250
ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00Miw4ICs0Miw4IEBAIGNs
YXNzIEluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbnNlcnRpb25Qb2ludCgpOwogCi0gICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rp
b25MaXN0KiBzZWxlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gJm1fc2VsZWN0aW9uczsgfQotICAg
IGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25zLmZpcnN0KCk7
IH0KKyAgICBjb25zdCBDb250ZW50RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24oKSBjb25zdCB7
IHJldHVybiAmbV9kaXN0cmlidXRpb247IH0KKyAgICBib29sIGhhc0Rpc3RyaWJ1dGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpcnN0KCk7IH0KICAgICBib29sIGlzU2hhZG93
Qm91bmRhcnkoKSBjb25zdDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKQEAgLTY5LDcg
KzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFzc2lnblNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
OwogICAgIHZvaWQgY2xlYXJBc3NpZ25tZW50KFNoYWRvd1Jvb3QqKTsKIAotICAgIEhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdCBtX3NlbGVjdGlvbnM7CisgICAgQ29udGVudERpc3RyaWJ1dGlvbiBt
X2Rpc3RyaWJ1dGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
Tm9kZSogbm9kZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141623</attachid>
            <date>2012-05-13 18:16:04 -0700</date>
            <delta_ts>2012-05-14 03:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86064-20120514101603.patch</filename>
            <type>text/plain</type>
            <size>59041</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg1OTljOGY3NmIwOTBh
MDU3MjhkYWJiMmYzY2RhODgwNDZhZDVmZi4uYjRjMTVjZTQ4OTc2ZmI5MzBhZmVjZDU3ZDAyN2E0
MDRhOThkNTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0wNS0xMyAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV1b
UmVmYWN0b3JpbmddIEhUTUxDb250ZW50U2VsZWN0b3IgZmFtaWx5IHNob3VsZCBoYXZlIGJldHRl
ciBuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NjA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIHJlbmFtZXMgY2xhc3NlcyBhcm91bmQgc2hhZG93IGNvbnRlbnQgZGlzdHJpYnV0
aW9uLgorICAgICAgICAtIFJlbmFtZWQgSFRNTENvbnRlbnRTZWxlY3RvciB0byBDb250ZW50RGlz
dHJpYnV0b3IKKyAgICAgICAgLSBSZW5hbWVkIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCB0byBD
b250ZW50RGlzdHJpYnV0aW9uCisgICAgICAgIC0gUmVuYW1lZCBIVE1MQ29udGVudFNlbGVjdGlv
biB0byBDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtCisgICAgICAgIC0gSW5saW5lZCBIVE1MQ29u
dGVudFNlbGVjdGlvblNldCBpbnRvIENvbnRlbnREaXN0cmlidXRvcgorCisgICAgICAgIEFzc29j
aWF0ZWQgcmVuYW1lIGFuZCBpbmxpbmluZyBhcmUgYWxzbyBoYXBwZW5pbmcgZm9yIG1ldGhvZCBu
YW1lcy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAqIGRv
bS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OkVs
ZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YXR0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBvaW50Rm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dGlvbkl0ZW1Gb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFNoYWRvdzo6bmVlZHNSZWRpc3RyaWJ1dGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRTaGFkb3c6OnNldE5lZWRzUmVkaXN0cmlidXRpbmcpOgorICAgICAgICAqIGRv
bS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Y2xlYXJOZWVkc1JlZGlzdHJpYnV0aW5n
KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Zmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6bGFz
dFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3Bw
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRpb246OkNvbnRl
bnREaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6
fkNvbnRlbnREaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1
dGlvbjo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjp+Q29udGVudERpc3RyaWJ1dG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmNsZWFyRGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZmluZEZvcik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmZpbmRJbnNlcnRpb25Qb2ludEZvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OndpbGxEaXN0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlkRGlzdHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OnByZXBhcmVQb29sRm9yKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENvbnRlbnREaXN0cmlidXRpb24pOgorICAgICAgICAoSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtOjppbnNlcnRpb25Q
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtOjpub2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRpb246Okl0ZW06Om5leHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbTo6cHJldmlvdXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRpb246Okl0ZW06Okl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RGlzdHJpYnV0aW9uOjpmaXJzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3Ry
aWJ1dGlvbjo6bGFzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlv
bjo6aXNFbXB0eSk6CisgICAgICAgIChDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAoVHJh
bnNsYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OlRyYW5zbGF0
b3I6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpUcmFuc2xh
dG9yOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6Okhhc2g6
Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpIYXNoOjplcXVh
bCk6CisgICAgICAgIChIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRv
cjo6aW5EaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb29sSXNSZWFkeSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Q
b2ludDo6ZGlzdHJpYnV0ZUhvc3RDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRp
b25Qb2ludDo6Y2xlYXJEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9u
UG9pbnQ6OmF0dGFjaERpc3RyaWJ1dGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRp
b25Qb2ludDo6YXNzaWduU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Q
b2ludDo6Y2xlYXJBc3NpZ25tZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmRpc3RyaWJ1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aGFzRGlzdHJpYnV0aW9uKToKKwog
MjAxMi0wNS0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9s
bCBvdXQgbG9jYWwgY2hhbmdlcyBhY2NpZGVudGFsbHkgbGFuZGVkIGluIHIxMTY5MDUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDFlZjdkYTQ3YTBlYWY5NjgyMWJkZGE5MzAzYmQyMzIxN2JmNmU1
MDguLjQ4ZTRiYWMzMjRiOWZjNjFmNzZlOTk1NDJjOTZhOGIzYjk5NGNkMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC05MDEsMTAgKzkwMSwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAKIAorICAgIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKICAg
ICBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKICAgICBodG1sL3NoYWRvdy9E
ZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKICAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuY3BwCi0gICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKICAgICBodG1s
L3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNTc1MTBkMzA3MTNkNDc2Nzg5YjQ5YjVhNGUwYzBlMTYyZDg3
YzJkNy4uYzgzNzc4YWQzMmJiY2Q4ZWM1ZWVjNjViMjMzMzM0OGIxMWI0MzJiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTAyLDE0ICsyNTAyLDE0IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuaCBcCisJU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBA
IC0yNTIxLDcgKzI1MjEsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNDUzOGUwMjc0Y2QzYzZiNzIy
NTIwOGU1YWYzNTA2YjQ2OTA1OTk5Ny4uNjYzZWU1MTAxOTllYjMxMWI3YzQyNDk4OTBkMGJiNjE1
YzNjZThiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC04NzIsMTAgKzg3MiwxMCBAQCBTT1VSQ0VTICs9IFwK
ICAgICBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNl
ci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAgXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
Y3BwIFwKKyAgICBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIFwKICAgICBodG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGh0bWwvc2hhZG93L0RldGFp
bHNNYXJrZXJDb250cm9sLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50
LmNwcCBcCi0gICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAogICAgIGh0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCkBAIC0x
OTk4LDkgKzE5OTgsOSBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAgICAg
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIFwKKyAgICBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuaCBcCiAgICAgaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAg
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggXAotICAgIGh0bWwvc2hhZG93L0hUTUxD
b250ZW50U2VsZWN0b3IuaCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBc
CiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAgICAgaHRtbC9zaGFk
b3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGI2YWFiOTY2
NTRlNTk2ZGE4ZjU2YmI1OGU2NWM5OTY2Y2RkYzI4NS4uZTEzMzA3YjgxYjAyMGNmOTY4ZTA3MGRm
ZmQ4YzEzMmY1OTg0YWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTc5MiwxNCArNTc5MiwxNCBA
QAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCcsCiAgICAgICAgICAgICAn
aHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9s
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCcs
CiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgnLAotICAgICAgICAgICAg
J2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwJywKLSAgICAgICAgICAgICdodG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggNDE1NWFiNjFiZTczMDI0NWY3ODM3YWUwY2RkZjQ1MmEyNTVhOGE5NS4uYTc1MGE2YzBjMjUw
MjJiYjc5NTI3NTVhMjBkZWVjODNmZWE5NWM5OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTYyNzQxLDE0ICs2Mjc0MSw2IEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRv
d1xIVE1MQ29udGVudFNlbGVjdG9yLmNwcCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8Rmls
ZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XEhUTUxDb250ZW50U2VsZWN0b3Iu
aCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcc2hhZG93XEhUTUxTaGFkb3dFbGVtZW50LmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KQEAgLTYyODAxLDYgKzYyNzkzLDE0IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxzaGFkb3dcQ29udGVudERpc3RyaWJ1dG9yLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XENvbnRlbnREaXN0cmli
dXRvci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxzaGFkb3dcSFRNTFNoYWRvd0VsZW1lbnQuaCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmZTgxMGE2NTM2ZmZmNDMzM2FkZmJiODc2NDI4MzFmMDMyMWUxZGJkLi40NGRmMWY1
YmNlMzY4MjlkMzA4MTQ1OTg0NDRkNzI2ZDZkN2FiMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTg0LDggKzE1ODQsOCBA
QAogCQk1NzQwRTgzRDE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDBFODNCMTUzMkRF
MTcwMDc2MDYyOCAvKiBUcmVlU2NvcGVBZGp1c3Rlci5oICovOyB9OwogCQk1NzhEQTIwRTE1MjBF
QjhDMDA2MTQxQzEgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNw
ZWN0b3JGcm9udGVuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEz
NDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTdCNzkxQTMxNEM2QTYyOTAw
RjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxD
b250ZW50U2VsZWN0b3IuY3BwICovOyB9OwotCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyog
SFRNTENvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0
b3IuaCAqLzsgfTsKKwkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmli
dXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCAqLzsgfTsK
KwkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oICovOyB9OwogCQk1N0I3OTFBNTE0QzZB
NjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8q
IENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKIAkJNTdCNzkxQTYxNEM2QTYyOTAwRjIw
MkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNl
bGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJNTdCNzkxQTkxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxD
b250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNw
cCAqLzsgfTsKQEAgLTg2MDEsOCArODYwMSw4IEBACiAJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJD
QSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzQwRTgzQTE1MzJERTE3MDA3NjA2MjggLyogVHJlZVNjb3BlQWRqdXN0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRqdXN0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQwRTgzQjE1MzJERTE3MDA3NjA2MjggLyog
VHJlZVNjb3BlQWRqdXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJl
ZVNjb3BlQWRqdXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTdCNzkxOUYx
NEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbnRlbnRTZWxlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29u
dGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxDb250
ZW50U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCNzkxOUYxNEM2
QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3Ry
aWJ1dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnREaXN0cmli
dXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTFBMTE0QzZBNjI5MDBG
MjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9y
UXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFNlbGVjdG9y
UXVlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxQTcxNEM2QTYzMzAw
RjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIVE1MQ29udGVudEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ2MTcsNiArMTQ2MTcsOCBAQAogCQk0MTUwRjlFRDEyQjZFMDk5MDAwOEM4
NjAgLyogc2hhZG93ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCAq
LywKKwkJCQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmgg
Ki8sCiAJCQkJNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5
LmNwcCAqLywKIAkJCQk1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9y
UXVlcnkuaCAqLywKIAkJCQlBN0M5QUJGNjEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtl
ckNvbnRyb2wuY3BwICovLApAQCAtMTQ2MjQsOCArMTQ2MjYsNiBAQAogCQkJCTU3Qjc5MUE3MTRD
NkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwICovLAogCQkJCTU3Qjc5MUE4
MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuaCAqLywKIAkJCQlBN0I3NzQ5
NjE0Q0Y2MzUzMDA0MDQ0QkIgLyogSFRNTENvbnRlbnRFbGVtZW50LmlkbCAqLywKLQkJCQk1N0I3
OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgKi8sCi0JCQkJ
NTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCAqLywKIAkJ
CQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuY3BwICovLAog
CQkJCTRBQkRGRjA4MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oICovLAog
CQkJCTRBQkRGRjA5MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5pZGwgKi8s
CkBAIC0yMTkwMCw2ICsyMTkwMCw3IEBACiAJCQkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8q
IENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTE0NzA4MTExMDJCMTUwMEVF
QzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
RUI5ODEwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1OTEwMkZCQzE0MzI3RDNCMDAzQzlEMDQgLyogQ29udGVudFNlYXJjaFV0
aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBNjE0QzZBNjI5
MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjI5
NDEsNyArMjI5NDIsNiBAQAogCQkJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjUxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBQTE0QzZB
NjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIg
LyogSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDA3LDYgKzI1NDA3
LDcgQEAKIAkJCQlBODE4NzIxRjA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0E3OENENTE1MzJCQTYyMDA2QzIxRTQgLyogQ29udGFpbmVy
Tm9kZUFsZ29yaXRobXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI5ODAwRTgyMDcyNTAw
QjI1OTY1IC8qIENvbnRlbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3Qjc5MUEzMTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTkxMDJGQkIxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hVdGlscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE1MTRDNkE2MjkwMEYyMDJE
MSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MDc3LDcg
KzI2MDc4LDYgQEAKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjQxMjI4ODNFOTAwQjgxRkY4IC8qIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE5MTRDNkE2
MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAwMTZGNTQxIC8qIEhUTUxDb252ZXJ0ZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERh
dGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc4OTEyOUNBMjcxMDAw
NkU1RDIgLyogSFRNTERldGFpbHNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBkMWE4ODll
Njc4ZGY4YTIzMjdmZjZkMzZmZTM3MTAwOWI1OGQ2NmZmLi4wOWI5Mzc2YjVkMDgzYzJlNTVjNjkx
ZGE1MzYyNmYwZTFlMDk4MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMjcsMTIgKzI3LDExIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAKKyNpbmNsdWRlICJD
b250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudFNoYWRvdy5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJJbnNlcnRpb25Qb2ludC5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlu
bGluZSBFbGVtZW50U2hhZG93KiBzaGFkb3dGb3IoY29uc3QgTm9kZSogbm9kZSkKQEAgLTExNCw5
ICsxMTMsOSBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTm9kZShj
b25zdCBOb2RlKiBub2RlLCBUcmF2ZXJzYWxEaXJlY3RpbwogewogICAgIEFTU0VSVChub2RlKTsK
ICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSkgewotICAgICAgICBjb25zdCBIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3QqIHNlbGVjdGlvbkxpc3QgPSB0b0luc2VydGlvblBvaW50KG5vZGUp
LT5zZWxlY3Rpb25zKCk7Ci0gICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0
aW9uID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9u
TGlzdC0+Zmlyc3QoKSA6IHNlbGVjdGlvbkxpc3QtPmxhc3QoKSkpCi0gICAgICAgICAgICByZXR1
cm4gdHJhdmVyc2VOb2RlKHNlbGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24pOworICAgICAgICBj
b25zdCBDb250ZW50RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24gPSB0b0luc2VydGlvblBvaW50
KG5vZGUpLT5kaXN0cmlidXRpb24oKTsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSAoZGlyZWN0
aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBkaXN0cmlidXRpb24tPmZpcnN0Tm9k
ZSgpIDogZGlzdHJpYnV0aW9uLT5sYXN0Tm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cmF2
ZXJzZU5vZGUobmV4dCwgZGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlTGlnaHRD
aGlsZHJlbihub2RlLCBkaXJlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gY29uc3RfY2FzdDxO
b2RlKj4obm9kZSk7CkBAIC0xNDIsMTIgKzE0MSwxMiBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9k
ZQogICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpOwogICAg
IGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJl
ZShub2RlLCBkaXJlY3Rpb24pOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSBzaGFkb3ctPnNlbGVjdGlvbkZvcihub2RlKTsKLSAgICBpZiAoIXNlbGVjdGlvbikKKyAgICBD
b250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0gc2hhZG93LT5kaXN0cmlidXRpb25JdGVt
Rm9yKG5vZGUpOworICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGlu
Z0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKLSAgICBpZiAoSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIG5leHRTZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZv
cndhcmQgPyBzZWxlY3Rpb24tPm5leHQoKSA6IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkpCi0gICAg
ICAgIHJldHVybiB0cmF2ZXJzZU5vZGUobmV4dFNlbGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24p
OwotICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KHNlbGVj
dGlvbi0+aW5zZXJ0aW9uUG9pbnQoKSwgZGlyZWN0aW9uKTsKKyAgICBpZiAoQ29udGVudERpc3Ry
aWJ1dGlvbjo6SXRlbSogbmV4dEl0ZW0gPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlv
bkZvcndhcmQgPyBpdGVtLT5uZXh0KCkgOiBpdGVtLT5wcmV2aW91cygpKSkKKyAgICAgICAgcmV0
dXJuIHRyYXZlcnNlTm9kZShuZXh0SXRlbS0+bm9kZSgpLCBkaXJlY3Rpb24pOworICAgIHJldHVy
biB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KGl0ZW0tPmluc2VydGlvblBv
aW50KCksIGRpcmVjdGlvbik7CiB9CiAKIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6
dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiBub2RlLCBUcmF2ZXJzYWxE
aXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMjA0LDggKzIwMyw4IEBAIE5vZGUqIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBz
aGFkb3dPZlBhcmVudChub2RlKSkgewotICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IHNoYWRvdy0+c2VsZWN0aW9uRm9yKG5vZGUpKQotICAgICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlUGFyZW50KHNlbGVjdGlvbi0+aW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3ctPmluc2VydGlvblBv
aW50Rm9yKG5vZGUpKQorICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGluc2VydGlv
blBvaW50KTsKICAgICB9CiAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50SW5DdXJyZW50VHJlZShu
b2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCBjYzZjODZlMTY1
MjU0MDNkZTQ2OGFhMjQxZjcyZTI5Mzg1NmZiMzE3Li5mZjg1MTk4NGQ0YTMyMGIwMWYxZjFlZDRk
ZDE2NGEzNjY3YWNlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC00
MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEVsZW1lbnRTaGFkb3c6OkVsZW1l
bnRTaGFkb3coKQotICAgIDogbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudChmYWxzZSkKKyAgICA6
IG1fbmVlZHNSZWRpc3RyaWJ1dGluZyhmYWxzZSkKIHsKIH0KIApAQCAtMTE5LDE2ICsxMTksMTYg
QEAgdm9pZCBFbGVtZW50U2hhZG93OjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29w
ZSkKIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogewotICAgIC8vIENoaWxkcmVuIG9m
IG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgotICAgIC8vIGVuc3VyZVNlbGVjdG9y
KCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0g
ICAgQVNTRVJUKCFzZWxlY3RvcigpLmhhc1BvcHVsYXRlZCgpKTsKKyAgICAvLyBUaGUgcG9vbCBu
b2RlcyBhcmUgcG9wdWxhdGVkIGxhemlseSBpbgorICAgIC8vIGVuc3VyZURpc3RyaWJ1dG9yKCks
IGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQgaXMgaW4gY2xlYW4gc3RhdGUuCisgICAg
QVNTRVJUKCFkaXN0cmlidXRvcigpLnBvb2xJc1JlYWR5KCkpOwogCi0gICAgc2VsZWN0b3IoKS53
aWxsU2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS53aWxsRGlzdHJpYnV0ZSgpOwogICAgIGZv
ciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0g
cm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgp
KQogICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CiAgICAgfQotICAgIHNlbGVjdG9yKCkuZGlk
U2VsZWN0KCk7CisgICAgZGlzdHJpYnV0b3IoKS5kaWREaXN0cmlidXRlKCk7CiB9CiAKIHZvaWQg
RWxlbWVudFNoYWRvdzo6YXR0YWNoSG9zdChFbGVtZW50KiBob3N0KQpAQCAtMTY0LDE1ICsxNjQs
MTIgQEAgSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBvaW50Rm9yKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEhU
TUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IHNlbGVjdG9yKCkuZmluZEZvcihub2RlKTsKLSAg
ICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZm91bmQtPmluc2Vy
dGlvblBvaW50KCk7CisgICAgcmV0dXJuIGRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50
Rm9yKG5vZGUpOwogfQogCi1IVE1MQ29udGVudFNlbGVjdGlvbiogRWxlbWVudFNoYWRvdzo6c2Vs
ZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CitDb250ZW50RGlzdHJpYnV0aW9uOjpJ
dGVtKiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRpb25JdGVtRm9yKGNvbnN0IE5vZGUqIG5vZGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZmluZEZvcihub2RlKTsKKyAgICByZXR1
cm4gbV9kaXN0cmlidXRvci5maW5kRm9yKG5vZGUpOwogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6
OnJlYXR0YWNoKCkKQEAgLTIwNyw3ICsyMDQsNyBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlY2Fs
Y1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAoIXlvdW5nZXN0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpKQorICAgIGlmIChuZWVkc1JlZGlzdHJpYnV0aW5nKCkpCiAgICAgICAgIHJlYXR0YWNoSG9z
dENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIgPSB5b3VuZ2VzdC0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwpA
QCAtMjIyLDE2ICsyMTksMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNhbGNTdHlsZShOb2Rl
OjpTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnBvcFBhcmVudFNo
YWRvd1Jvb3QoeW91bmdlc3QpOwogICAgIH0KIAotICAgIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpOworICAgIGNsZWFyTmVlZHNSZWRpc3RyaWJ1dGluZygpOwogICAg
IGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290
ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAgICAgcm9vdC0+Y2xlYXJOZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgICAgIHJvb3QtPmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7
CiAgICAgfQogfQogCi1ib29sIEVsZW1lbnRTaGFkb3c6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3coKQorYm9vbCBFbGVtZW50U2hhZG93OjpuZWVkc1JlZGlzdHJpYnV0aW5nKCkK
IHsKLSAgICByZXR1cm4gbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCB8fCAoeW91bmdlc3RTaGFk
b3dSb290KCkgJiYgeW91bmdlc3RTaGFkb3dSb290KCktPmhhc0luc2VydGlvblBvaW50KCkpOwor
ICAgIHJldHVybiBtX25lZWRzUmVkaXN0cmlidXRpbmcgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgp
ICYmIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5oYXNJbnNlcnRpb25Qb2ludCgpKTsKIH0KIAogdm9p
ZCBFbGVtZW50U2hhZG93Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKQEAgLTI0MiwxMiArMjM5LDEy
IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFRoaXMgcmVzdWx0cyBpbiBmb3JjZWQgZGV0YWNoaW5nL2F0dGFjaGlu
ZyBvZiB0aGUgc2hhZG93IHJlbmRlciB0cmVlLiBTZWUgU2hhZG93Um9vdDo6cmVjYWxjU3R5bGUo
KS4KLSAgICBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgc2V0
TmVlZHNSZWRpc3RyaWJ1dGluZygpOwogfQogCi12b2lkIEVsZW1lbnRTaGFkb3c6OnNldE5lZWRz
UmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQordm9pZCBFbGVtZW50U2hhZG93OjpzZXRO
ZWVkc1JlZGlzdHJpYnV0aW5nKCkKIHsKLSAgICBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50ID0g
dHJ1ZTsKKyAgICBtX25lZWRzUmVkaXN0cmlidXRpbmcgPSB0cnVlOwogCiAgICAgaG9zdCgpLT5z
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRl
eCA0YzA3YTI3ZTA0ZTIyM2E5M2RjNzM2Y2U5NTAxODY1N2ZmZjdkYjAwLi5kNGQ3ZDQzMGNiN2E0
MzM1M2E1ZWZlY2M3NTA2NjU4YWM4NTBiMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFNoYWRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmgKQEAgLTI3LDggKzI3LDggQEAKICNpZm5kZWYgRWxlbWVudFNoYWRvd19oCiAjZGVmaW5lIEVs
ZW1lbnRTaGFkb3dfaAogCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQwLDkgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBOb2RlOwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIEluc2VydGlv
blBvaW50OwogY2xhc3MgVHJlZVNjb3BlOwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb247CiAK
IGNsYXNzIEVsZW1lbnRTaGFkb3cgewogcHVibGljOgpAQCAtNjYsMjQgKzY0LDI0IEBAIHB1Ymxp
YzoKICAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgIGJvb2wgbmVlZHNTdHls
ZVJlY2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwotICAg
IHZvaWQgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQg
Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgYm9vbCBuZWVk
c1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgdm9pZCByZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpOworICAgIHZvaWQgc2V0TmVlZHNSZWRpc3RyaWJ1dGluZygpOwor
ICAgIHZvaWQgY2xlYXJOZWVkc1JlZGlzdHJpYnV0aW5nKCk7CisgICAgYm9vbCBuZWVkc1JlZGlz
dHJpYnV0aW5nKCk7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICBJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSopIGNvbnN0OwotICAgIEhU
TUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OworICAg
IENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGRpc3RyaWJ1dGlvbkl0ZW1Gb3IoY29uc3QgTm9k
ZSopIGNvbnN0OwogCi0gICAgSFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKTsKLSAgICBj
b25zdCBIVE1MQ29udGVudFNlbGVjdG9yJiBzZWxlY3RvcigpIGNvbnN0OworICAgIENvbnRlbnRE
aXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKTsKKyAgICBjb25zdCBDb250ZW50RGlzdHJpYnV0b3Im
IGRpc3RyaWJ1dG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxTaGFk
b3dSb290cygpOworICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIAog
ICAgIERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKLSAgICBIVE1M
Q29udGVudFNlbGVjdG9yIG1fc2VsZWN0b3I7Ci0gICAgYm9vbCBtX25lZWRzUmVjYWxjdWxhdGVD
b250ZW50IDogMTsKKyAgICBDb250ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKKyAgICBi
b29sIG1fbmVlZHNSZWRpc3RyaWJ1dGluZyA6IDE7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RWxlbWVudFNoYWRvdyk7CiB9OwogCkBAIC05NywxOSArOTUsMTkgQEAgaW5saW5lIFNoYWRvd1Jv
b3QqIEVsZW1lbnRTaGFkb3c6Om9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBt
X3NoYWRvd1Jvb3RzLnRhaWwoKTsKIH0KIAotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0b3ImIEVs
ZW1lbnRTaGFkb3c6OnNlbGVjdG9yKCkKK2lubGluZSBDb250ZW50RGlzdHJpYnV0b3ImIEVsZW1l
bnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkKIHsKLSAgICByZXR1cm4gbV9zZWxlY3RvcjsKKyAgICBy
ZXR1cm4gbV9kaXN0cmlidXRvcjsKIH0KIAotaW5saW5lIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0
b3ImIEVsZW1lbnRTaGFkb3c6OnNlbGVjdG9yKCkgY29uc3QKK2lubGluZSBjb25zdCBDb250ZW50
RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9zZWxlY3RvcjsKKyAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKIH0KIAotaW5saW5l
IHZvaWQgRWxlbWVudFNoYWRvdzo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hh
ZG93KCkKK2lubGluZSB2b2lkIEVsZW1lbnRTaGFkb3c6OmNsZWFyTmVlZHNSZWRpc3RyaWJ1dGlu
ZygpCiB7Ci0gICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IGZhbHNlOworICAgIG1fbmVl
ZHNSZWRpc3RyaWJ1dGluZyA9IGZhbHNlOwogfQogCiBpbmxpbmUgRWxlbWVudCogRWxlbWVudFNo
YWRvdzo6aG9zdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCA1ODk4NDE5YTZhNWQ0M2UwNDFmZjBiOWVmYmE0NzQyNjYxODQwNGE2Li4z
ZDk4YTZmNmE1ZWI3ZjFhNWRhZmQ5NGNlNmY5ODA5NDY2YzRlY2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAKICNpbmNsdWRlICJDb250YWluZXJOb2Rl
LmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFNo
YWRvdy5oIgogI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgpAQCAtOTcsNyArOTcsNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCkt
Pmhhc1NlbGVjdGlvbigpKQorICAgICAgICAgICAgaWYgKHRvSW5zZXJ0aW9uUG9pbnQocGFyZW50
KS0+aGFzRGlzdHJpYnV0aW9uKCkpCiAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGlu
Z05vdEZhbGxiYWNrZWQ7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9waGFz
ZSA9IEF0dGFjaGluZ0ZhbGxiYWNrZWQ7CkBAIC0xNDIsMTIgKzE0MiwxMiBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkKIAogc3Rh
dGljIGlubGluZSBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5z
ZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maW5kKGN1
cnJlbnQpOwotICAgIGlmICghY3VycmVudFNlbGVjdGlvbikKKyAgICBDb250ZW50RGlzdHJpYnV0
aW9uOjpJdGVtKiBjdXJyZW50SXRlbSA9IHBhcmVudC0+ZGlzdHJpYnV0aW9uKCktPmZpbmQoY3Vy
cmVudCk7CisgICAgaWYgKCFjdXJyZW50SXRlbSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBm
b3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uLT5u
ZXh0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVy
ZXIoKSkKKyAgICBmb3IgKENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBjdXJyZW50
SXRlbS0+bmV4dCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXRlbS0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTU4LDEwICsxNTgsMTAgQEAgc3Rh
dGljIGlubGluZSBSZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZkluc2VydGlvblBvaW50
KEluc2VydGlvblBvaW50KiBwYXIKIHsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlciA9
IDA7CiAKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQt
PnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
Pm5leHQoKSkgewotICAgICAgICBpZiAoc2VsZWN0aW9uLT5ub2RlKCkgPT0gY3VycmVudCkKKyAg
ICBmb3IgKENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1
dGlvbigpLT5maXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChpdGVtLT5ub2RlKCkgPT0gY3VycmVudCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigp
KQorICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVu
ZGVyZXIoKSkKICAgICAgICAgICAgIGxhc3RSZW5kZXJlciA9IHJlbmRlcmVyOwogICAgIH0KIApA
QCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1Jl
bmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcGFyCiAKIHN0YXRpYyBpbmxp
bmUgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Q
b2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhhc1NlbGVjdGlvbigpKSB7Ci0gICAg
ICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0
aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgp
KSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+
bm9kZSgpLT5yZW5kZXJlcigpKQorICAgIGlmIChwYXJlbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7
CisgICAgICAgIGZvciAoQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IHBhcmVudC0+
ZGlzdHJpYnV0aW9uKCktPmZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KCkpIHsKKyAg
ICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXRlbS0+bm9kZSgpLT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICAgICAgfQogCkBA
IC0xODQsOSArMTg0LDkgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVy
ZXJPZkluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBwYXJlbnQKIAogc3RhdGljIGlubGlu
ZSBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9p
bnQqIHBhcmVudCkKIHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgewotICAgICAg
ICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlv
bnMoKS0+bGFzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+cHJldmlvdXMo
KSkgewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24t
Pm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAocGFyZW50LT5oYXNEaXN0cmlidXRpb24oKSkg
eworICAgICAgICBmb3IgKENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQt
PmRpc3RyaWJ1dGlvbigpLT5sYXN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5wcmV2aW91cygpKSB7
CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGZkMzE4ZDBiNDFjYmQ0N2VmNGZiZmRi
ODA0N2Q1MzdlNDJjMmI4ZWIuLjMyZGRiMzgzMzRmZWNkYmZmYjI0M2ZiODQwMTg0MDBiNjMwZTlm
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKKyNpbmNsdWRlICJDb250
ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJET01TZWxlY3Rpb24uaCIKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzQsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAi
SFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5j
bHVkZSAiTm9kZVJhcmVEYXRhLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBjMDAyNGM3
MTY3MzIzMDk5NzBmMWJlODE3MDc1MTY4NWZmMDQxOWUwLi5kMmFkMGRmYmM2YzNkY2ZlNDQyNzQ0
ZTk4ZDUwODRlZWVjN2JkZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTM4LDggKzM4
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTVNl
bGVjdGlvbjsKLWNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKLWNsYXNzIEhUTUxDb250ZW50U2Vs
ZWN0b3I7CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKIGNsYXNzIEVsZW1lbnRTaGFkb3c7CiAKQEAg
LTYwLDkgKzU4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWNhbGNTaGFkb3dUcmVlU3R5bGUo
U3R5bGVDaGFuZ2UpOwogCi0gICAgdm9pZCBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7Ci0gICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAg
ICB2b2lkIHNldE5lZWRzUmVkaXN0cmlidXRpbmcoKTsKKyAgICB2b2lkIGNsZWFyTmVlZHNSZWRp
c3RyaWJ1dGluZygpOworICAgIGJvb2wgbmVlZHNSZWRpc3RyaWJ1dGluZygpOwogCiAgICAgSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGhv
c3RDaGlsZHJlbkNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MjBhMDNlYmVkM2QxMDVlZjkyZjMw
NTRlMmE3ODA4OWU0NWExMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgorCisjaW5jbHVk
ZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
b250ZW50RGlzdHJpYnV0aW9uOjpDb250ZW50RGlzdHJpYnV0aW9uKCkKK3sKK30KKworQ29udGVu
dERpc3RyaWJ1dGlvbjo6fkNvbnRlbnREaXN0cmlidXRpb24oKQoreworICAgIEFTU0VSVChpc0Vt
cHR5KCkpOworfQorCitDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBDb250ZW50RGlzdHJpYnV0
aW9uOjpmaW5kKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgZm9yIChDb250ZW50RGlzdHJpYnV0
aW9uOjpJdGVtKiBpdGVtID0gZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkgewor
ICAgICAgICBpZiAobm9kZSA9PSBpdGVtLT5ub2RlKCkpCisgICAgICAgICAgICByZXR1cm4gaXRl
bTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1
dGlvbjo6Y2xlYXIoKQoreworICAgIGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFt
X2xhc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPENvbnRlbnREaXN0
cmlidXRpb246Okl0ZW0+IGl0ZW0gPSBtX2ZpcnN0OworICAgIHdoaWxlIChpdGVtKSB7CisgICAg
ICAgIEFTU0VSVCghaXRlbS0+cHJldmlvdXMoKSk7CisgICAgICAgIFJlZlB0cjxDb250ZW50RGlz
dHJpYnV0aW9uOjpJdGVtPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKKyAgICAgICAgaXRlbS0+
bV9uZXh0LmNsZWFyKCk7CisgICAgICAgIGlmIChuZXh0SXRlbSkKKyAgICAgICAgICAgIG5leHRJ
dGVtLT5tX3ByZXZpb3VzLmNsZWFyKCk7CisgICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKKyAgICB9
CisKKyAgICBtX2ZpcnN0LmNsZWFyKCk7CisgICAgbV9sYXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQg
Q29udGVudERpc3RyaWJ1dGlvbjo6YXBwZW5kKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCwgTm9kZSogbm9kZSkKK3sKKyAgICBSZWZQdHI8SXRlbT4gY2hpbGQgPSBJdGVtOjpjcmVhdGUo
aW5zZXJ0aW9uUG9pbnQsIG5vZGUpOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICBB
U1NFUlQoIW1fbGFzdCk7CisgICAgICAgIG1fZmlyc3QgPSBtX2xhc3QgPSBjaGlsZDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV9sYXN0LT5uZXh0KCkpOworICAgIEFT
U0VSVCghY2hpbGQtPnByZXZpb3VzKCkpOworICAgIG1fbGFzdC0+bV9uZXh0ID0gY2hpbGQ7Cisg
ICAgY2hpbGQtPm1fcHJldmlvdXMgPSBtX2xhc3Q7CisgICAgbV9sYXN0ID0gbV9sYXN0LT5uZXh0
KCk7Cit9CisKK0NvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkKKyAgICA6
IG1fcGhhc2UoUHJldmVudGVkKQoreworfQorCitDb250ZW50RGlzdHJpYnV0b3I6On5Db250ZW50
RGlzdHJpYnV0b3IoKQoreworICAgIEFTU0VSVChtX3Bvb2wuaXNFbXB0eSgpKTsKK30KKwordm9p
ZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50LCBDb250ZW50RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24pCit7CisgICAgQVNTRVJU
KG1fcGhhc2UgPT0gUHJlcGFyZWQpOworICAgIEFTU0VSVChkaXN0cmlidXRpb24tPmlzRW1wdHko
KSk7CisKKyAgICBDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShpbnNlcnRpb25Qb2ludCk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkgeworICAgICAg
ICBOb2RlKiBjaGlsZCA9IG1fcG9vbFtpXS5nZXQoKTsKKyAgICAgICAgaWYgKCFjaGlsZCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXF1ZXJ5Lm1hdGNoZXMoY2hpbGQpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZGlzdHJpYnV0aW9uLT5hcHBlbmQoaW5z
ZXJ0aW9uUG9pbnQsIGNoaWxkKTsKKyAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQo
ZGlzdHJpYnV0aW9uLT5sYXN0KCkpOworICAgICAgICBtX3Bvb2xbaV0gPSAwOworICAgIH0KK30K
Kwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmNsZWFyRGlzdHJpYnV0aW9uKENvbnRlbnREaXN0
cmlidXRpb24qIGxpc3QpCit7CisgICAgZm9yIChDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBp
dGVtID0gbGlzdC0+Zmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkKKyAgICAgICAg
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5yZW1vdmUoaXRlbSk7CisKKyAgICBsaXN0LT5jbGVhcigp
OworfQorCitDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBDb250ZW50RGlzdHJpYnV0b3I6OmZp
bmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAoreworICAgIEludmVydGVkVGFibGU6Oml0ZXJh
dG9yIGZvdW5kID0gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5maW5kPGNvbnN0IE5vZGUqLCBUcmFu
c2xhdG9yPihrZXkpOworICAgIHJldHVybiBmb3VuZCAhPSBtX25vZGVUb0luc2VydGlvblBvaW50
LmVuZCgpID8gKmZvdW5kIDogMDsKK30KKworSW5zZXJ0aW9uUG9pbnQqIENvbnRlbnREaXN0cmli
dXRvcjo6ZmluZEluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKK3sKKyAg
ICBJbnZlcnRlZFRhYmxlOjppdGVyYXRvciBmb3VuZCA9IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQu
ZmluZDxjb25zdCBOb2RlKiwgVHJhbnNsYXRvcj4oa2V5KTsKKyAgICByZXR1cm4gZm91bmQgIT0g
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5lbmQoKSA/ICgqZm91bmQpLT5pbnNlcnRpb25Qb2ludCgp
IDogMDsKK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OndpbGxEaXN0cmlidXRlKCkKK3sK
KyAgICBtX3BoYXNlID0gU3RhcnRlZDsKK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRp
ZERpc3RyaWJ1dGUoKQoreworICAgIEFTU0VSVChtX3BoYXNlICE9IFByZXZlbnRlZCk7CisgICAg
bV9waGFzZSA9IFByZXZlbnRlZDsKKyAgICBtX3Bvb2wuY2xlYXIoKTsKK30KKwordm9pZCBDb250
ZW50RGlzdHJpYnV0b3I6OnByZXBhcmVQb29sRm9yKEVsZW1lbnQqIHNoYWRvd0hvc3QpCit7Cisg
ICAgaWYgKHBvb2xJc1JlYWR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3Bv
b2wuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoc2hhZG93SG9zdCk7CisgICAgQVNTRVJUKG1fcGhh
c2UgPT0gU3RhcnRlZCk7CisKKyAgICBtX3BoYXNlID0gUHJlcGFyZWQ7CisgICAgZm9yIChOb2Rl
KiBub2RlID0gc2hhZG93SG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgbV9wb29sLmFwcGVuZChub2RlKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NjA2ZDIzY2Q3NDYwZGY2YmZkOTMwYzQ5Y2RkMzFmNjg4MTc4OWZlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAg
LTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRlbnREaXN0cmlidXRvcl9oCisjZGVmaW5lIENvbnRl
bnREaXN0cmlidXRvcl9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IEluc2VydGlvblBvaW50OworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2NsYXNz
IENvbnRlbnREaXN0cmlidXRpb24geworcHVibGljOgorICAgIGNsYXNzIEl0ZW0gOiBwdWJsaWMg
UmVmQ291bnRlZDxJdGVtPiB7CisgICAgcHVibGljOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29u
dGVudERpc3RyaWJ1dGlvbjsKKworICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9CisgICAgICAgIE5vZGUqIG5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUuZ2V0KCk7IH0KKyAgICAgICAgSXRlbSogbmV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQorICAgICAgICBJdGVtKiBwcmV2aW91cygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEl0ZW0+IGNyZWF0ZShJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQsIE5vZGUqIG5vZGUpIHsgIHJldHVybiBhZG9wdFJlZihuZXcgSXRlbShpbnNlcnRp
b25Qb2ludCwgbm9kZSkpOyB9CisKKyAgICAgICAgSXRlbShJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQsIE5vZGUqIG5vZGUpCisgICAgICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5z
ZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICAsIG1fbm9kZShub2RlKQorICAgICAgICB7IH0KKwor
ICAgICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsKKyAgICAgICAgUmVmUHRy
PE5vZGU+IG1fbm9kZTsKKyAgICAgICAgUmVmUHRyPEl0ZW0+IG1fbmV4dDsKKyAgICAgICAgUmVm
UHRyPEl0ZW0+IG1fcHJldmlvdXM7CisgICAgfTsKKyAgICAKKyAgICBDb250ZW50RGlzdHJpYnV0
aW9uKCk7CisgICAgfkNvbnRlbnREaXN0cmlidXRpb24oKTsKKworICAgIEl0ZW0qIGZpcnN0KCkg
Y29uc3QgeyByZXR1cm4gbV9maXJzdC5nZXQoKTsgfQorICAgIEl0ZW0qIGxhc3QoKSBjb25zdCB7
IHJldHVybiBtX2xhc3QuZ2V0KCk7IH0KKyAgICBOb2RlKiBmaXJzdE5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZpcnN0ID8gbV9maXJzdC0+bm9kZSgpIDogMDsgfQorICAgIE5vZGUqIGxhc3ROb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdCA/IG1fbGFzdC0+bm9kZSgpIDogMDsgfQorICAgIAor
ICAgIEl0ZW0qIGZpbmQoTm9kZSopIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX2ZpcnN0OyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBhcHBlbmQo
SW5zZXJ0aW9uUG9pbnQqLCBOb2RlKik7CisKK3ByaXZhdGU6CisKKyAgICBSZWZQdHI8SXRlbT4g
bV9maXJzdDsKKyAgICBSZWZQdHI8SXRlbT4gbV9sYXN0OworfTsKKworY2xhc3MgQ29udGVudERp
c3RyaWJ1dG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50RGlzdHJpYnV0b3Ip
OworcHVibGljOgorICAgIENvbnRlbnREaXN0cmlidXRvcigpOworICAgIH5Db250ZW50RGlzdHJp
YnV0b3IoKTsKKworICAgIHZvaWQgZGlzdHJpYnV0ZShJbnNlcnRpb25Qb2ludCosIENvbnRlbnRE
aXN0cmlidXRpb24qKTsKKyAgICB2b2lkIGNsZWFyRGlzdHJpYnV0aW9uKENvbnRlbnREaXN0cmli
dXRpb24qKTsKKyAgICBDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBmaW5kRm9yKGNvbnN0IE5v
ZGUqIGtleSkgY29uc3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludEZv
cihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OworCisgICAgdm9pZCB3aWxsRGlzdHJpYnV0ZSgpOwor
ICAgIGJvb2wgaW5EaXN0cmlidXRpb24oKSBjb25zdDsKKyAgICB2b2lkIGRpZERpc3RyaWJ1dGUo
KTsKKworICAgIHZvaWQgcHJlcGFyZVBvb2xGb3IoRWxlbWVudCogc2hhZG93SG9zdCk7CisgICAg
Ym9vbCBwb29sSXNSZWFkeSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVjdCBUcmFuc2xh
dG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5v
ZGUqIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5KTsgfQorICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBp
dGVtLCBjb25zdCBOb2RlKiBub2RlKSB7IHJldHVybiBpdGVtLT5ub2RlKCkgPT0gbm9kZTsgfQor
ICAgIH07CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBO
b2RlKj46Omhhc2goa2V5LT5ub2RlKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKENv
bnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGEsIENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGIp
IHsgcmV0dXJuIGEtPm5vZGUoKSA9PSBiLT5ub2RlKCk7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisg
ICAgLy8gVXNlZCBhcyBhIHRhYmxlIGZyb20gTm9kZSB0byBJbnNlcmV0aW9uUG9pbnQKKyAgICB0
eXBlZGVmIEhhc2hTZXQ8Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSosIEhhc2g+IEludmVydGVk
VGFibGU7CisKKyAgICBlbnVtIERpc3RyaWJ1dGlvblBoYXNlIHsKKyAgICAgICAgUHJldmVudGVk
LAorICAgICAgICBTdGFydGVkLAorICAgICAgICBQcmVwYXJlZCwKKyAgICB9OworCisgICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG1fcG9vbDsKKyAgICBEaXN0cmlidXRpb25QaGFzZSBtX3BoYXNl
OworICAgIEludmVydGVkVGFibGUgbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKK307CisKK2lubGlu
ZSBib29sIENvbnRlbnREaXN0cmlidXRvcjo6aW5EaXN0cmlidXRpb24oKSBjb25zdAoreworICAg
IHJldHVybiBtX3BoYXNlICE9IFByZXZlbnRlZDsKK30KKworaW5saW5lIGJvb2wgQ29udGVudERp
c3RyaWJ1dG9yOjpwb29sSXNSZWFkeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGhhc2UgPT0g
UHJlcGFyZWQ7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRleCA1NDM2Nzk1MDYxZjkzOWEwNDhiMmY5
ODY1M2M4Mzg2YTljM2VmYTdmLi4yNDJmZTc1NzIwMjZmZmUxMmU2MWRjMjcyNjk0NmMwOWM0ZmQ4
MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxl
bWVudC5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJIVE1MQ29udGVudEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5o
IgogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNo
YWRvdy5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gc2VsZWN0QXR0cikgewogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hh
ZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpCi0gICAgICAgICAgICByb290LT5vd25lcigp
LT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgICAgICBy
b290LT5vd25lcigpLT5zZXROZWVkc1JlZGlzdHJpYnV0aW5nKCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIEluc2VydGlvblBvaW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZTQxOTRlYzVhMzdkZTAzOTRjMDNmOGU4MzhlNjViYjQ1
ODc0YzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJI
VE1MQ29udGVudFNlbGVjdG9yLmgiCi0KLSNpbmNsdWRlICJDb250ZW50U2VsZWN0b3JRdWVyeS5o
IgotI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rpb246
OmFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBuZXh0KQotewotICAgIEFT
U0VSVCghbV9uZXh0KTsKLSAgICBBU1NFUlQoIW5leHQtPnByZXZpb3VzKCkpOwotICAgIG1fbmV4
dCA9IG5leHQ7Ci0gICAgbV9uZXh0LT5tX3ByZXZpb3VzID0gdGhpczsKLX0KLQotdm9pZCBIVE1M
Q29udGVudFNlbGVjdGlvbjo6dW5saW5rKCkKLXsKLSAgICBBU1NFUlQoIW1fcHJldmlvdXMpOyAv
LyBDYW4gYmUgY2FsbGVkIG9ubHkgZm9yIGEgaGVhZC4KLSAgICBSZWZQdHI8SFRNTENvbnRlbnRT
ZWxlY3Rpb24+IGl0ZW0gPSB0aGlzOwotICAgIHdoaWxlIChpdGVtKSB7Ci0gICAgICAgIEFTU0VS
VCghaXRlbS0+cHJldmlvdXMoKSk7Ci0gICAgICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlv
bj4gbmV4dEl0ZW0gPSBpdGVtLT5tX25leHQ7Ci0gICAgICAgIGl0ZW0tPm1fbmV4dC5jbGVhcigp
OwotICAgICAgICBpZiAobmV4dEl0ZW0pCi0gICAgICAgICAgICBuZXh0SXRlbS0+bV9wcmV2aW91
cy5jbGVhcigpOwotICAgICAgICBpdGVtID0gbmV4dEl0ZW07Ci0gICAgfQotfQotCi1IVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3Q6OkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCgpCi17Ci19Ci0KLUhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdDo6fkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCgpCi17Ci0g
ICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3Q6OmZpbmQoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBmb3IgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBpdGVtID0gZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5l
eHQoKSkgewotICAgICAgICBpZiAobm9kZSA9PSBpdGVtLT5ub2RlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gaXRlbTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgSFRNTENv
bnRlbnRTZWxlY3Rpb25MaXN0OjpjbGVhcigpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAg
ICAgICBBU1NFUlQoIW1fbGFzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2Zp
cnN0LT51bmxpbmsoKTsKLSAgICBtX2ZpcnN0LmNsZWFyKCk7Ci0gICAgbV9sYXN0LmNsZWFyKCk7
Ci19Ci0KLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxI
VE1MQ29udGVudFNlbGVjdGlvbj4gY2hpbGQpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAg
ICAgICBBU1NFUlQoIW1fbGFzdCk7Ci0gICAgICAgIG1fZmlyc3QgPSBtX2xhc3QgPSBjaGlsZDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbGFzdC0+YXBwZW5kKGNoaWxkKTsKLSAg
ICBtX2xhc3QgPSBtX2xhc3QtPm5leHQoKTsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rvcjo6SFRN
TENvbnRlbnRTZWxlY3RvcigpCi0gICAgOiBtX3BoYXNlKFNlbGVjdGlvblByZXZlbnRlZCkKLXsK
LX0KLQotSFRNTENvbnRlbnRTZWxlY3Rvcjo6fkhUTUxDb250ZW50U2VsZWN0b3IoKQotewotICAg
IEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpKTsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNl
bGVjdG9yOjpzZWxlY3QoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBIVE1MQ29udGVu
dFNlbGVjdGlvbkxpc3QqIHNlbGVjdGlvbnMpCi17Ci0gICAgQVNTRVJUKG1fcGhhc2UgPT0gSG9z
dENoaWxkcmVuUG9wdWxhdGVkKTsKLSAgICBBU1NFUlQoc2VsZWN0aW9ucy0+aXNFbXB0eSgpKTsK
LQotICAgIENvbnRlbnRTZWxlY3RvclF1ZXJ5IHF1ZXJ5KGluc2VydGlvblBvaW50KTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYW5kaWRhdGVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIE5vZGUqIGNoaWxkID0gbV9jYW5kaWRhdGVzW2ldLmdldCgpOwotICAgICAgICBpZiAoIWNo
aWxkKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhj
aGlsZCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBSZWZQdHI8SFRNTENvbnRl
bnRTZWxlY3Rpb24+IHNlbGVjdGlvbiA9IEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUoaW5z
ZXJ0aW9uUG9pbnQsIGNoaWxkKTsKLQotICAgICAgICBzZWxlY3Rpb25zLT5hcHBlbmQoc2VsZWN0
aW9uKTsKLSAgICAgICAgbV9zZWxlY3Rpb25TZXQuYWRkKHNlbGVjdGlvbi5nZXQoKSk7Ci0gICAg
ICAgIG1fY2FuZGlkYXRlc1tpXSA9IDA7Ci0gICAgfQotfQotCi12b2lkIEhUTUxDb250ZW50U2Vs
ZWN0b3I6OnVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogbGlzdCkKLXsKLSAgICBm
b3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBsaXN0LT5maXJzdCgpOyBzZWxl
Y3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKQotICAgICAgICBtX3NlbGVjdGlv
blNldC5yZW1vdmUoc2VsZWN0aW9uKTsKLSAgICBsaXN0LT5jbGVhcigpOwotfQotCi1IVE1MQ29u
dGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihjb25zdCBOb2RlKiBr
ZXkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0aW9uU2V0LmZpbmQoa2V5KTsKLX0KLQot
dm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0KCkKLXsKLSAgICBtX3BoYXNlID0g
U2VsZWN0aW9uU3RhcnRlZDsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpkaWRTZWxl
Y3QoKQotewotICAgIEFTU0VSVChtX3BoYXNlICE9IFNlbGVjdGlvblByZXZlbnRlZCk7Ci0gICAg
bV9waGFzZSA9IFNlbGVjdGlvblByZXZlbnRlZDsKLSAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsK
LX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpwb3B1bGF0ZUlmTmVjZXNzYXJ5KEVsZW1l
bnQqIHNoYWRvd0hvc3QpCi17Ci0gICAgaWYgKGhhc1BvcHVsYXRlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBBU1NFUlQobV9jYW5kaWRhdGVzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHNo
YWRvd0hvc3QpOwotICAgIEFTU0VSVChtX3BoYXNlID09IFNlbGVjdGlvblN0YXJ0ZWQpOwotCi0g
ICAgbV9waGFzZSA9IEhvc3RDaGlsZHJlblBvcHVsYXRlZDsKLSAgICBmb3IgKE5vZGUqIG5vZGUg
PSBzaGFkb3dIb3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpKQotICAgICAgICBtX2NhbmRpZGF0ZXMuYXBwZW5kKG5vZGUpOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZmJkZGJiZDg4MjczODVhN2M5YWZjMTFjMjRmNmZlY2E2
ZTM2MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhUTUxDb250ZW50U2VsZWN0b3JfaAotI2RlZmlu
ZSBIVE1MQ29udGVudFNlbGVjdG9yX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbGVtZW50
OwotY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwotY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7Ci1jbGFz
cyBOb2RlOwotY2xhc3MgU2hhZG93Um9vdDsKLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxIVE1MQ29udGVudFNlbGVjdGlvbj4gewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBjcmVhdGUoSW5zZXJ0aW9u
UG9pbnQqLCBOb2RlKik7Ci0KLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBj
b25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9Ci0gICAgTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBuZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rp
b24qIHByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQotCi0gICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4pOwotICAgIHZvaWQg
dW5saW5rKCk7Ci0KLXByaXZhdGU6Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24oSW5zZXJ0aW9u
UG9pbnQqLCBOb2RlKik7Ci0KLSAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsK
LSAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlv
bj4gbV9uZXh0OwotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gbV9wcmV2aW91czsK
LX07Ci0KLWlubGluZSBIVE1MQ29udGVudFNlbGVjdGlvbjo6SFRNTENvbnRlbnRTZWxlY3Rpb24o
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBOb2RlKiBub2RlKQotICAgIDogbV9pbnNl
cnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCksIG1fbm9kZShub2RlKQoteyB9Ci0KLWlubGluZSBQ
YXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBIVE1MQ29udGVudFNlbGVjdGlvbjo6Y3Jl
YXRlKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxDb250ZW50U2VsZWN0aW9uKGluc2VydGlvblBvaW50LCBu
b2RlKSk7Ci19Ci0KLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCB7Ci1wdWJsaWM6Ci0g
ICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCk7Ci0gICAgfkhUTUxDb250ZW50U2VsZWN0aW9u
TGlzdCgpOwotCi0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpcnN0KCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdC5nZXQoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBsYXN0KCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZp
bmQoTm9kZSopIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2Zp
cnN0OyB9Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxI
VE1MQ29udGVudFNlbGVjdGlvbj4pOwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxIVE1MQ29udGVu
dFNlbGVjdGlvbj4gbV9maXJzdDsKLSAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IG1f
bGFzdDsKLX07Ci0KLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQgewotcHVibGljOgot
ICAgIHZvaWQgYWRkKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5hZGQodmFs
dWUpOyB9Ci0gICAgdm9pZCByZW1vdmUoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1f
c2V0LnJlbW92ZSh2YWx1ZSk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3NldC5pc0VtcHR5KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChjb25zdCBO
b2RlKiBrZXkpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGUqIGtleSkg
eyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5KTsgfQotICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uLCBjb25z
dCBOb2RlKiBub2RlKSB7IHJldHVybiBzZWxlY3Rpb24tPm5vZGUoKSA9PSBub2RlOyB9Ci0gICAg
fTsKLQotICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSFRN
TENvbnRlbnRTZWxlY3Rpb24qIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhh
c2goa2V5LT5ub2RlKCkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKEhUTUxDb250ZW50
U2VsZWN0aW9uKiBhLCBIVE1MQ29udGVudFNlbGVjdGlvbiogYikgeyByZXR1cm4gYS0+bm9kZSgp
ID09IGItPm5vZGUoKTsgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hTZXQ8
SFRNTENvbnRlbnRTZWxlY3Rpb24qLCBIYXNoPiBQb2ludGVyU2V0OwotCi0gICAgUG9pbnRlclNl
dCBtX3NldDsKLX07Ci0KLWlubGluZSBIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRT
ZWxlY3Rpb25TZXQ6OmZpbmQoY29uc3QgTm9kZSoga2V5KSBjb25zdAotewotICAgIFBvaW50ZXJT
ZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxjb25zdCBOb2RlKiwgSFRNTENvbnRlbnRT
ZWxlY3Rpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7Ci0gICAgcmV0dXJuIGZvdW5kICE9IG1fc2V0
LmVuZCgpID8gKmZvdW5kIDogMDsKLX0KLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvciB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnRlbnRTZWxlY3Rvcik7Ci1wdWJsaWM6Ci0g
ICAgSFRNTENvbnRlbnRTZWxlY3RvcigpOwotICAgIH5IVE1MQ29udGVudFNlbGVjdG9yKCk7Ci0K
LSAgICB2b2lkIHNlbGVjdChJbnNlcnRpb25Qb2ludCosIEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCopOwotICAgIHZvaWQgdW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAg
SFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKLQot
ICAgIHZvaWQgd2lsbFNlbGVjdCgpOwotICAgIGJvb2wgaXNTZWxlY3RpbmcoKSBjb25zdDsKLSAg
ICB2b2lkIGRpZFNlbGVjdCgpOwotCi0gICAgdm9pZCBwb3B1bGF0ZUlmTmVjZXNzYXJ5KEVsZW1l
bnQqIHNoYWRvd0hvc3QpOwotICAgIGJvb2wgaGFzUG9wdWxhdGVkKCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgZW51bSBTZWxlY3RpbmdQaGFzZSB7Ci0gICAgICAgIFNlbGVjdGlvblByZXZlbnRl
ZCwKLSAgICAgICAgU2VsZWN0aW9uU3RhcnRlZCwKLSAgICAgICAgSG9zdENoaWxkcmVuUG9wdWxh
dGVkLAotICAgIH07Ci0KLSAgICB2b2lkIHJlbW92ZUZyb21TZXQoSFRNTENvbnRlbnRTZWxlY3Rp
b25MaXN0Kik7Ci0gICAgdm9pZCBhZGRUb1NldChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsK
LQotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2NhbmRpZGF0ZXM7Ci0gICAgSFRNTENvbnRl
bnRTZWxlY3Rpb25TZXQgbV9zZWxlY3Rpb25TZXQ7Ci0gICAgU2VsZWN0aW5nUGhhc2UgbV9waGFz
ZTsKLX07Ci0KLWlubGluZSBib29sIEhUTUxDb250ZW50U2VsZWN0b3I6OmlzU2VsZWN0aW5nKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9waGFzZSAhPSBTZWxlY3Rpb25QcmV2ZW50ZWQ7Ci19Ci0K
LWlubGluZSBib29sIEhUTUxDb250ZW50U2VsZWN0b3I6Omhhc1BvcHVsYXRlZCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcGhhc2UgPT0gSG9zdENoaWxkcmVuUG9wdWxhdGVkOwotfQotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3Bw
CmluZGV4IDM3ZTUxMDFjMzdiMjA5N2U0NDFmOGE0NDEyODgyZWVmM2Y1Mjk1MTQuLjcyM2I0NTk5
MGNmMjk1ZTMyNDIwODViNWUzMDNlYTMzZWUxYWM5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX3NlbGVjdGlvbnMoKQorICAgICwgbV9kaXN0cmli
dXRpb24oKQogewogfQogCkBAIC03NiwxMCArNzYsMTAgQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6
ZGV0YWNoKCkKIAogICAgICAgICAvLyBXaGVuIHNoYWRvdyBlbGVtZW50IGlzIGRldGFjaGVkLCBz
aGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBm
b3IKICAgICAgICAgLy8gb3RoZXIgaW5zZXJ0aW9uIHBvaW50cy4KLSAgICAgICAgc2hhZG93LT5z
ZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgIHNoYWRvdy0+
c2V0TmVlZHNSZWRpc3RyaWJ1dGluZygpOwogICAgIH0KIAotICAgIEFTU0VSVChtX3NlbGVjdGlv
bnMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9kaXN0cmlidXRpb24uaXNFbXB0eSgpKTsKICAg
ICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKQEAgLTExOSw0MSArMTE5LDQxIEBAIGJvb2wg
SW5zZXJ0aW9uUG9pbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50OjpkaXN0cmlidXRlSG9z
dENoaWxkcmVuKEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKLSAgICBpZiAoIXNoYWRvdy0+c2Vs
ZWN0b3IoKS5pc1NlbGVjdGluZygpKSB7Ci0gICAgICAgIC8vIElmIEhUTUxDb250ZW50U2VsZWN0
b3IgaXMgbm90IGludCBzZWxlY3RpbmcgcGhhc2UsIGl0IG1lYW5zIEluc2VydGlvblBvaW50IGlz
IGF0dGFjaGVkIGZyb20KKyAgICBpZiAoIXNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5pbkRpc3RyaWJ1
dGlvbigpKSB7CisgICAgICAgIC8vIElmIENvbnRlbnREaXN0cmlidXRvciBpcyBub3QgaW50IHNl
bGVjdGluZyBwaGFzZSwgaXQgbWVhbnMgSW5zZXJ0aW9uUG9pbnQgaXMgYXR0YWNoZWQgZnJvbQog
ICAgICAgICAvLyBub24tRWxlbWVudFNoYWRvdyBub2RlLiBUbyBydW4gZGlzdHJpYnV0ZSBhbGdv
cml0aG0sIHdlIGhhdmUgdG8gcmVhdHRhY2ggRWxlbWVudFNoYWRvdy4KLSAgICAgICAgc2hhZG93
LT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgIHNoYWRv
dy0+c2V0TmVlZHNSZWRpc3RyaWJ1dGluZygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgc2hhZG93LT5zZWxlY3RvcigpLnBvcHVsYXRlSWZOZWNlc3Nhcnkoc2hhZG93LT5ob3N0KCkp
OwotICAgIHNoYWRvdy0+c2VsZWN0b3IoKS51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKLSAgICBz
aGFkb3ctPnNlbGVjdG9yKCkuc2VsZWN0KHRoaXMsICZtX3NlbGVjdGlvbnMpOworICAgIHNoYWRv
dy0+ZGlzdHJpYnV0b3IoKS5wcmVwYXJlUG9vbEZvcihzaGFkb3ctPmhvc3QoKSk7CisgICAgc2hh
ZG93LT5kaXN0cmlidXRvcigpLmNsZWFyRGlzdHJpYnV0aW9uKCZtX2Rpc3RyaWJ1dGlvbik7Cisg
ICAgc2hhZG93LT5kaXN0cmlidXRvcigpLmRpc3RyaWJ1dGUodGhpcywgJm1fZGlzdHJpYnV0aW9u
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNsZWFyRGlzdHJpYnV0aW9uKEVs
ZW1lbnRTaGFkb3cqIHNoYWRvdykKIHsKLSAgICBzaGFkb3ctPnNlbGVjdG9yKCkudW5zZWxlY3Qo
Jm1fc2VsZWN0aW9ucyk7CisgICAgc2hhZG93LT5kaXN0cmlidXRvcigpLmNsZWFyRGlzdHJpYnV0
aW9uKCZtX2Rpc3RyaWJ1dGlvbik7CiB9CiAKIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50Ojph
dHRhY2hEaXN0cmlidXRlZE5vZGUoKQogewotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9ucy5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9
IHNlbGVjdGlvbi0+bmV4dCgpKQotICAgICAgICBzZWxlY3Rpb24tPm5vZGUoKS0+YXR0YWNoKCk7
CisgICAgZm9yIChDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0gbV9kaXN0cmlidXRp
b24uZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkKKyAgICAgICAgaXRlbS0+bm9k
ZSgpLT5hdHRhY2goKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmFzc2lnblNo
YWRvd1Jvb3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsKICAgICBzaGFkb3dSb290LT5zZXRB
c3NpZ25lZFRvKHRoaXMpOwotICAgIG1fc2VsZWN0aW9ucy5jbGVhcigpOworICAgIG1fZGlzdHJp
YnV0aW9uLmNsZWFyKCk7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2hhZG93Um9vdC0+Zmlyc3RD
aGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbV9zZWxl
Y3Rpb25zLmFwcGVuZChIVE1MQ29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIG5vZGUpKTsK
KyAgICAgICAgbV9kaXN0cmlidXRpb24uYXBwZW5kKHRoaXMsIG5vZGUpOwogfQogCiBpbmxpbmUg
dm9pZCBJbnNlcnRpb25Qb2ludDo6Y2xlYXJBc3NpZ25tZW50KFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QpCiB7CiAgICAgc2hhZG93Um9vdC0+c2V0QXNzaWduZWRUbygwKTsKLSAgICBtX3NlbGVjdGlv
bnMuY2xlYXIoKTsKKyAgICBtX2Rpc3RyaWJ1dGlvbi5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAppbmRleCA4NDBkZDA2NDc5MGZjZDkzNmZlZDJjNDJiNzAyODNhOTIxNDA5ZmUyLi43ZDFkZDEy
ODUyNzZiZjRjYzQyNzRmYjcwMDNmOTE5YjI5Njg5ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgSW5z
ZXJ0aW9uUG9pbnRfaAogI2RlZmluZSBJbnNlcnRpb25Qb2ludF9oCiAKLSNpbmNsdWRlICJIVE1M
Q29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zZXJ0aW9uUG9pbnQo
KTsKIAotICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9ucygpIGNv
bnN0IHsgcmV0dXJuICZtX3NlbGVjdGlvbnM7IH0KLSAgICBib29sIGhhc1NlbGVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9ucy5maXJzdCgpOyB9CisgICAgY29uc3QgQ29udGVudERp
c3RyaWJ1dGlvbiogZGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gJm1fZGlzdHJpYnV0aW9u
OyB9CisgICAgYm9vbCBoYXNEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3RyaWJ1
dGlvbi5maXJzdCgpOyB9CiAgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhc3NpZ25TaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsKICAgICB2b2lkIGNsZWFyQXNzaWdu
bWVudChTaGFkb3dSb290Kik7CiAKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxl
Y3Rpb25zOworICAgIENvbnRlbnREaXN0cmlidXRpb24gbV9kaXN0cmlidXRpb247CiB9OwogCiBp
bmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141683</attachid>
            <date>2012-05-14 03:56:41 -0700</date>
            <delta_ts>2012-05-14 11:53:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-86064-20120514195639.patch</filename>
            <type>text/plain</type>
            <size>58704</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM5YjQ4YzQ4NWI4N2Nk
MmIyNDQxMDU0NDAwY2Y0M2ZmZWFkNDVjZi4uY2M4MmRhODY4MGE0YjljNjQzYjEwY2RmYzk4Y2Fm
MzRlYThlNTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0wNS0xMyAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV1b
UmVmYWN0b3JpbmddIEhUTUxDb250ZW50U2VsZWN0b3IgZmFtaWx5IHNob3VsZCBoYXZlIGJldHRl
ciBuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NjA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIHJlbmFtZXMgY2xhc3NlcyBhcm91bmQgc2hhZG93IGNvbnRlbnQgZGlzdHJpYnV0
aW9uLgorICAgICAgICAtIFJlbmFtZWQgSFRNTENvbnRlbnRTZWxlY3RvciB0byBDb250ZW50RGlz
dHJpYnV0b3IKKyAgICAgICAgLSBSZW5hbWVkIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCB0byBD
b250ZW50RGlzdHJpYnV0aW9uCisgICAgICAgIC0gUmVuYW1lZCBIVE1MQ29udGVudFNlbGVjdGlv
biB0byBDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtCisgICAgICAgIC0gSW5saW5lZCBIVE1MQ29u
dGVudFNlbGVjdGlvblNldCBpbnRvIENvbnRlbnREaXN0cmlidXRvcgorCisgICAgICAgIEFzc29j
aWF0ZWQgcmVuYW1lIGFuZCBpbmxpbmluZyBhcmUgYWxzbyBoYXBwZW5pbmcgZm9yIG1ldGhvZCBu
YW1lcy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAqIGRv
bS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OkVs
ZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YXR0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBvaW50Rm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dGlvbkl0ZW1Gb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFNoYWRvdzo6bmVlZHNSZWRpc3RyaWJ1dGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRTaGFkb3c6OnNldE5lZWRzUmVkaXN0cmlidXRpbmcpOgorICAgICAgICAqIGRv
bS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Y2xlYXJOZWVkc1JlZGlzdHJpYnV0aW5n
KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Zmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6bGFz
dFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3Bw
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRpb246OkNvbnRl
bnREaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6
fkNvbnRlbnREaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1
dGlvbjo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjp+Q29udGVudERpc3RyaWJ1dG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmNsZWFyRGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZmluZEZvcik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmZpbmRJbnNlcnRpb25Qb2ludEZvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OndpbGxEaXN0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlkRGlzdHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OnByZXBhcmVQb29sRm9yKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENvbnRlbnREaXN0cmlidXRpb24pOgorICAgICAgICAoSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtOjppbnNlcnRpb25Q
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtOjpub2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRpb246Okl0ZW06Om5leHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbTo6cHJldmlvdXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRpb246Okl0ZW06Okl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudERpc3RyaWJ1dGlvbjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RGlzdHJpYnV0aW9uOjpmaXJzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3Ry
aWJ1dGlvbjo6bGFzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dGlv
bjo6aXNFbXB0eSk6CisgICAgICAgIChDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAoVHJh
bnNsYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OlRyYW5zbGF0
b3I6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpUcmFuc2xh
dG9yOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6Okhhc2g6
Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpIYXNoOjplcXVh
bCk6CisgICAgICAgIChIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRv
cjo6aW5EaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb29sSXNSZWFkeSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Q
b2ludDo6ZGlzdHJpYnV0ZUhvc3RDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRp
b25Qb2ludDo6Y2xlYXJEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9u
UG9pbnQ6OmF0dGFjaERpc3RyaWJ1dGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRp
b25Qb2ludDo6YXNzaWduU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Q
b2ludDo6Y2xlYXJBc3NpZ25tZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmRpc3RyaWJ1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aGFzRGlzdHJpYnV0aW9uKToKKwog
MjAxMi0wNS0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgdGFicyByZW9yZGVyaW5nIHZpYSBkcmFnJ24n
ZHJvcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWVmN2RhNDdhMGVhZjk2ODIxYmRkYTkzMDNi
ZDIzMjE3YmY2ZTUwOC4uNDhlNGJhYzMyNGI5ZmM2MWY3NmU5OTU0MmM5NmE4YjNiOTk0Y2QzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkwMSwxMCArOTAxLDEwIEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAKICAgICBodG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcAogCisgICAgaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAogICAgIGh0
bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAogICAgIGh0bWwvc2hhZG93L0hUTUxD
b250ZW50RWxlbWVudC5jcHAKLSAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNw
cAogICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1NzUxMGQzMDcxM2Q0NzY3ODliNDliNWE0
ZTBjMGUxNjJkODdjMmQ3Li5mZmUzMDg3ZWE3MDM5Y2E5ZmZlZjA0YTQ2ODkzZTE5NGFmMjg2OTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI1MDIsMTQgKzI1MDIsMTQgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDQ1MzhlMDI3NGNkM2M2YjcyMjUyMDhlNWFmMzUwNmI0
NjkwNTk5OTcuLjY2M2VlNTEwMTk5ZWIzMTFiN2M0MjQ5ODkwZDBiYjYxNWMzY2U4YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtODcyLDEwICs4NzIsMTAgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9wYXJz
ZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3Vy
Y2VQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBcCisgICAgaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvQ29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5jcHAgXAogICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgXAotICAgIGh0
bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIFwKICAgICBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBc
CiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXApAQCAtMTk5OCw5ICsxOTk4LDkg
QEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggXAogICAg
IGh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmggXAogICAgIGh0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuaCBcCisgICAgaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggXAogICAg
IGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggXAogICAgIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5oIFwKLSAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9y
LmggXAogICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggXAogICAgIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggXAogICAgIGh0bWwvc2hhZG93L0RldGFpbHNNYXJr
ZXJDb250cm9sLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRiNmFhYjk2NjU0ZTU5NmRhOGY1NmJi
NThlNjVjOTk2NmNkZGMyODUuLmUxMzMwN2I4MWIwMjBjZjk2OGUwNzBkZmZkOGMxMzJmNTk4NGFj
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU3OTIsMTQgKzU3OTIsMTQgQEAKICAgICAgICAgICAg
ICdodG1sL3BhcnNlci9YU1NBdWRpdG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0Nh
bGVuZGFyUGlja2VyRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0NhbGVu
ZGFyUGlja2VyRWxlbWVudC5oJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0
b3IuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
JywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgnLAogICAgICAgICAgICAg
J2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
c2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oJywKLSAgICAgICAgICAgICdodG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRTZWxlY3Rvci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxl
bWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50Lmgn
LAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDQxNTVhYjYxYmU3
MzAyNDVmNzgzN2FlMGNkZGY0NTJhMjU1YThhOTUuLmE3NTBhNmMwYzI1MDIyYmI3OTUyNzU1YTIw
ZGVlYzgzZmVhOTVjOTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02Mjc0MSwxNCArNjI3NDEsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgog
CQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTENvbnRlbnRT
ZWxlY3Rvci5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHNoYWRvd1xIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0JCQkJCT4KLQkJ
CQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xI
VE1MU2hhZG93RWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBA
IC02MjgwMSw2ICs2Mjc5MywxNCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XENvbnRl
bnREaXN0cmlidXRvci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xDb250ZW50RGlzdHJpYnV0b3IuaCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hh
ZG93XEhUTUxTaGFkb3dFbGVtZW50LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmU4MTBh
NjUzNmZmZjQzMzNhZGZiYjg3NjQyODMxZjAzMjFlMWRiZC4uNDRkZjFmNWJjZTM2ODI5ZDMwODE0
NTk4NDQ0ZDcyNmQ2ZDdhYjA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU4NCw4ICsxNTg0LDggQEAKIAkJNTc0MEU4M0Qx
NTMyREUxNzAwNzYwNjI4IC8qIFRyZWVTY29wZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQwRTgzQjE1MzJERTE3MDA3NjA2MjggLyog
VHJlZVNjb3BlQWRqdXN0ZXIuaCAqLzsgfTsKIAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8q
IEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzhE
QTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3
QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1M
Q29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9y
LmNwcCAqLzsgfTsKLQkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2Vs
ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi87IH07CisJ
CTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxOUYxNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi87IH07CisJCTU3Qjc5MUE0MTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBD
b250ZW50RGlzdHJpYnV0b3IuaCAqLzsgfTsKIAkJNTdCNzkxQTUxNEM2QTYyOTAwRjIwMkQxIC8q
IENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUExMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAgKi87IH07CiAJCTU3Qjc5MUE2MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50
U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdCNzkxQTIxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgg
Ki87IH07CiAJCTU3Qjc5MUE5MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkx
QTcxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgKi87IH07CkBAIC04
NjAxLDggKzg2MDEsOCBAQAogCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0MEU4M0ExNTMy
REUxNzAwNzYwNjI4IC8qIFRyZWVTY29wZUFkanVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRyZWVTY29wZUFkanVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTc0MEU4M0IxNTMyREUxNzAwNzYwNjI4IC8qIFRyZWVTY29wZUFkanVz
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVTY29wZUFkanVzdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJE
MSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxDb250ZW50U2VsZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29udGVudFNlbGVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAv
KiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdCNzkxQTIxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUE3MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1M
Q29udGVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTENvbnRlbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
NjE3LDYgKzE0NjE3LDggQEAKIAkJNDE1MEY5RUQxMkI2RTA5OTAwMDhDODYwIC8qIHNoYWRvdyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTdCNzkxOUYx
NEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi8sCisJCQkJNTdCNzkx
QTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oICovLAogCQkJCTU3Qjc5
MUExMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8sCiAJCQkJ
NTdCNzkxQTIxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi8sCiAJ
CQkJQTdDOUFCRjYxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmNwcCAq
LywKQEAgLTE0NjI0LDggKzE0NjI2LDYgQEAKIAkJCQk1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEg
LyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLywKIAkJCQk1N0I3OTFBODE0QzZBNjMzMDBGMjAy
RDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggKi8sCiAJCQkJQTdCNzc0OTYxNENGNjM1MzAwNDA0
NEJCIC8qIEhUTUxDb250ZW50RWxlbWVudC5pZGwgKi8sCi0JCQkJNTdCNzkxOUYxNEM2QTYyOTAw
RjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwICovLAotCQkJCTU3Qjc5MUEwMTRDNkE2
MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi8sCiAJCQkJNEFCREZGMDcxNERC
RTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCAqLywKIAkJCQk0QUJERkYwODE0
REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQk0QUJERkYwOTE0
REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaWRsICovLApAQCAtMjE5MDAsNiAr
MjE5MDAsNyBAQAogCQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTgxMEU4MjA3MjUw
MEIyNTk2NSAvKiBDb250ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCNzkxQTQxNEM2
QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTkxMDJGQkMxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hVdGlscy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdDNDcxREMxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCNzkxQTYxNEM2QTYyOTAwRjIwMkQxIC8qIENv
bnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTIyOTQxLDcgKzIyOTQyLDYg
QEAKIAkJCQlBOERGM0ZEMDA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3N0IzODY1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MQ29uc3RydWN0
aW9uU2l0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCNzkxQUExNEM2QTYzMzAwRjIwMkQxIC8q
IEhUTUxDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTdCNzkxQTQxNEM2QTYy
OTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QTMxNjYzMTM0QkNBRTgwMDdDOUE0RiAvKiBIVE1MQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNUMwNDFEQjBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRDM1OUQ3OEExMjlDQTI3MTAwMDZFNUQyIC8qIEhUTUxEZXRhaWxz
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNyw2ICsyNTQwNyw3IEBACiAJCQkJQTgx
ODcyMUYwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdBNzhDRDUxNTMyQkE2MjAwNkMyMUU0IC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCOTgwMEU4MjA3MjUwMEIyNTk2NSAvKiBDb250
ZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0I3OTFBMzE0QzZBNjI5MDBGMjAyRDEg
LyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5MTAyRkJCMTQz
MjdEM0IwMDNDOUQwNCAvKiBDb250ZW50U2VhcmNoVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdDNDcxREIxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjA3Nyw3ICsyNjA3OCw2IEBACiAJ
CQkJQThERjNGRDEwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3N0IzODY0MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0I3OTFBOTE0QzZBNjMzMDBGMjAyRDEgLyog
SFRNTENvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3Qjc5MUEzMTRDNkE2
MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVENEY1MURGMTMyNzI1NDgwMDE2RjU0MSAvKiBIVE1MQ29udmVydGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjVDMDQxREEwRkZDQTdDRTAwODM5RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDM1OUQ3ODkxMjlDQTI3MTAwMDZFNUQyIC8qIEhUTUxE
ZXRhaWxzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggZDFhODg5ZTY3OGRmOGEyMzI3ZmY2
ZDM2ZmUzNzEwMDliNThkNjZmZi4uMDliOTM3NmI1ZDA4M2MyZTU1YzY5MWRhNTM2MjZmMGUxZTA5
ODM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAKQEAgLTI3LDEyICsyNywxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgogCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIK
LSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9p
bnQuaCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgRWxlbWVudFNo
YWRvdyogc2hhZG93Rm9yKGNvbnN0IE5vZGUqIG5vZGUpCkBAIC0xMTQsOSArMTEzLDkgQEAgTm9k
ZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5vZGUoY29uc3QgTm9kZSogbm9k
ZSwgVHJhdmVyc2FsRGlyZWN0aW8KIHsKICAgICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKGlzSW5z
ZXJ0aW9uUG9pbnQobm9kZSkpIHsKLSAgICAgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25M
aXN0KiBzZWxlY3Rpb25MaXN0ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+c2VsZWN0aW9ucygp
OwotICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IChkaXJlY3Rp
b24gPT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlvbkxpc3QtPmZpcnN0KCkg
OiBzZWxlY3Rpb25MaXN0LT5sYXN0KCkpKQotICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlTm9k
ZShzZWxlY3Rpb24tPm5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgY29uc3QgQ29udGVudERp
c3RyaWJ1dGlvbiogZGlzdHJpYnV0aW9uID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+ZGlzdHJp
YnV0aW9uKCk7CisgICAgICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkID8gZGlzdHJpYnV0aW9uLT5maXJzdE5vZGUoKSA6IGRpc3RyaWJ1
dGlvbi0+bGFzdE5vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHQs
IGRpcmVjdGlvbik7CiAgICAgICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwg
ZGlyZWN0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOwpA
QCAtMTQyLDEyICsxNDEsMTIgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUKICAgICBFbGVtZW50
U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudChub2RlKTsKICAgICBpZiAoIXNoYWRvdykK
ICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0
aW9uKTsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93LT5zZWxl
Y3Rpb25Gb3Iobm9kZSk7Ci0gICAgaWYgKCFzZWxlY3Rpb24pCisgICAgQ29udGVudERpc3RyaWJ1
dGlvbjo6SXRlbSogaXRlbSA9IHNoYWRvdy0+ZGlzdHJpYnV0aW9uSXRlbUZvcihub2RlKTsKKyAg
ICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVl
KG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBuZXh0U2Vs
ZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0
aW9uLT5uZXh0KCkgOiBzZWxlY3Rpb24tPnByZXZpb3VzKCkpKQotICAgICAgICByZXR1cm4gdHJh
dmVyc2VOb2RlKG5leHRTZWxlY3Rpb24tPm5vZGUoKSwgZGlyZWN0aW9uKTsKLSAgICByZXR1cm4g
dHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlv
blBvaW50KCksIGRpcmVjdGlvbik7CisgICAgaWYgKENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0q
IG5leHRJdGVtID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gaXRl
bS0+bmV4dCgpIDogaXRlbS0+cHJldmlvdXMoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU5v
ZGUobmV4dEl0ZW0tPm5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gdHJhdmVyc2VTaWJs
aW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChpdGVtLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rp
b24pOwogfQogCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGlu
Z0luQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVj
dGlvbikKQEAgLTIwNCw4ICsyMDMsOCBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQo
bm9kZSkpIHsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBz
aGFkb3ctPnNlbGVjdGlvbkZvcihub2RlKSkKLSAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBh
cmVudChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCkpOworICAgICAgICBpZiAoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkK
KyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChpbnNlcnRpb25Qb2ludCk7CiAgICAg
fQogICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUobm9kZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggY2M2Yzg2ZTE2NTI1NDAzZGU0NjhhYTI0
MWY3MmUyOTM4NTZmYjMxNy4uZmY4NTE5ODRkNGEzMjBiMDFmMWYxZWQ0ZGQxNjRhMzY2N2FjZTkx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtNDAsNyArNDAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBFbGVtZW50U2hhZG93OjpFbGVtZW50U2hhZG93KCkKLSAg
ICA6IG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQoZmFsc2UpCisgICAgOiBtX25lZWRzUmVkaXN0
cmlidXRpbmcoZmFsc2UpCiB7CiB9CiAKQEAgLTExOSwxNiArMTE5LDE2IEBAIHZvaWQgRWxlbWVu
dFNoYWRvdzo6c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCiAKIHZvaWQgRWxl
bWVudFNoYWRvdzo6YXR0YWNoKCkKIHsKLSAgICAvLyBDaGlsZHJlbiBvZiBtX3NlbGVjdG9yIGlz
IHBvcHVsYXRlZCBsYXppbHkgaW4KLSAgICAvLyBlbnN1cmVTZWxlY3RvcigpLCBhbmQgaGVyZSB3
ZSBqdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGluIGNsZWFuIHN0YXRlLgotICAgIEFTU0VSVCghc2Vs
ZWN0b3IoKS5oYXNQb3B1bGF0ZWQoKSk7CisgICAgLy8gVGhlIHBvb2wgbm9kZXMgYXJlIHBvcHVs
YXRlZCBsYXppbHkgaW4KKyAgICAvLyBlbnN1cmVEaXN0cmlidXRvcigpLCBhbmQgaGVyZSB3ZSBq
dXN0IGVuc3VyZSB0aGF0IGl0IGlzIGluIGNsZWFuIHN0YXRlLgorICAgIEFTU0VSVCghZGlzdHJp
YnV0b3IoKS5wb29sSXNSZWFkeSgpKTsKIAotICAgIHNlbGVjdG9yKCkud2lsbFNlbGVjdCgpOwor
ICAgIGRpc3RyaWJ1dG9yKCkud2lsbERpc3RyaWJ1dGUoKTsKICAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hh
ZG93Um9vdCgpKSB7CiAgICAgICAgIGlmICghcm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAg
IHJvb3QtPmF0dGFjaCgpOwogICAgIH0KLSAgICBzZWxlY3RvcigpLmRpZFNlbGVjdCgpOworICAg
IGRpc3RyaWJ1dG9yKCkuZGlkRGlzdHJpYnV0ZSgpOwogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6
OmF0dGFjaEhvc3QoRWxlbWVudCogaG9zdCkKQEAgLTE2NCwxNSArMTY0LDEyIEBAIEluc2VydGlv
blBvaW50KiBFbGVtZW50U2hhZG93OjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2Rl
KSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBIVE1MQ29udGVudFNlbGVj
dGlvbiogZm91bmQgPSBzZWxlY3RvcigpLmZpbmRGb3Iobm9kZSk7Ci0gICAgaWYgKCFmb3VuZCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwor
ICAgIHJldHVybiBkaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihub2RlKTsKIH0K
IAotSFRNTENvbnRlbnRTZWxlY3Rpb24qIEVsZW1lbnRTaGFkb3c6OnNlbGVjdGlvbkZvcihjb25z
dCBOb2RlKiBub2RlKSBjb25zdAorQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogRWxlbWVudFNo
YWRvdzo6ZGlzdHJpYnV0aW9uSXRlbUZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAg
IHJldHVybiBtX3NlbGVjdG9yLmZpbmRGb3Iobm9kZSk7CisgICAgcmV0dXJuIG1fZGlzdHJpYnV0
b3IuZmluZEZvcihub2RlKTsKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZWF0dGFjaCgpCkBA
IC0yMDcsNyArMjA0LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNhbGNTdHlsZShOb2RlOjpT
dHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgaWYgKCF5b3VuZ2VzdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKKyAgICBpZiAo
bmVlZHNSZWRpc3RyaWJ1dGluZygpKQogICAgICAgICByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNo
YWRvdygpOwogICAgIGVsc2UgewogICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
ID0geW91bmdlc3QtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsKQEAgLTIyMiwxNiArMjE5
LDE2IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVjYWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2Ug
Y2hhbmdlKQogICAgICAgICBzdHlsZVJlc29sdmVyLT5wb3BQYXJlbnRTaGFkb3dSb290KHlvdW5n
ZXN0KTsKICAgICB9CiAKLSAgICBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKKyAgICBjbGVhck5lZWRzUmVkaXN0cmlidXRpbmcoKTsKICAgICBmb3IgKFNoYWRvd1Jv
b3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKSB7CiAgICAgICAgIHJvb3QtPmNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOwog
ICAgICAgICByb290LT5jbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KIH0KIAot
Ym9vbCBFbGVtZW50U2hhZG93OjpuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkK
K2Jvb2wgRWxlbWVudFNoYWRvdzo6bmVlZHNSZWRpc3RyaWJ1dGluZygpCiB7Ci0gICAgcmV0dXJu
IG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlv
dW5nZXN0U2hhZG93Um9vdCgpLT5oYXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gbV9u
ZWVkc1JlZGlzdHJpYnV0aW5nIHx8ICh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSAmJiB5b3VuZ2VzdFNo
YWRvd1Jvb3QoKS0+aGFzSW5zZXJ0aW9uUG9pbnQoKSk7CiB9CiAKIHZvaWQgRWxlbWVudFNoYWRv
dzo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCkBAIC0yNDIsMTIgKzIzOSwxMiBAQCB2b2lkIEVsZW1l
bnRTaGFkb3c6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBUaGlzIHJlc3VsdHMgaW4gZm9yY2VkIGRldGFjaGluZy9hdHRhY2hpbmcgb2YgdGhlIHNoYWRv
dyByZW5kZXIgdHJlZS4gU2VlIFNoYWRvd1Jvb3Q6OnJlY2FsY1N0eWxlKCkuCi0gICAgc2V0TmVl
ZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgIHNldE5lZWRzUmVkaXN0cmli
dXRpbmcoKTsKIH0KIAotdm9pZCBFbGVtZW50U2hhZG93OjpzZXROZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCkKK3ZvaWQgRWxlbWVudFNoYWRvdzo6c2V0TmVlZHNSZWRpc3RyaWJ1
dGluZygpCiB7Ci0gICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IHRydWU7CisgICAgbV9u
ZWVkc1JlZGlzdHJpYnV0aW5nID0gdHJ1ZTsKIAogICAgIGhvc3QoKS0+c2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKaW5kZXggNGMwN2EyN2UwNGUy
MjNhOTNkYzczNmNlOTUwMTg2NTdmZmY3ZGIwMC4uZDRkN2Q0MzBjYjdhNDMzNTNhNWVmZWNjNzUw
NjY1OGFjODUwYjA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC0yNyw4ICsy
Nyw4IEBACiAjaWZuZGVmIEVsZW1lbnRTaGFkb3dfaAogI2RlZmluZSBFbGVtZW50U2hhZG93X2gK
IAorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CkBAIC00MCw5ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBJbnNlcnRpb25Qb2ludDsKIGNsYXNz
IFRyZWVTY29wZTsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0aW9uOwogCiBjbGFzcyBFbGVtZW50
U2hhZG93IHsKIHB1YmxpYzoKQEAgLTY2LDI0ICs2NCwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
aGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICBib29sIG5lZWRzU3R5bGVSZWNhbGMoKTsKICAg
ICB2b2lkIHJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlKTsKLSAgICB2b2lkIHNldE5lZWRz
UmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLSAgICB2b2lkIGNsZWFyTmVlZHNSZWF0
dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKKyAgICB2b2lkIHNldE5lZWRzUmVkaXN0cmlidXRpbmcoKTsKKyAgICB2b2lkIGNsZWFy
TmVlZHNSZWRpc3RyaWJ1dGluZygpOworICAgIGJvb2wgbmVlZHNSZWRpc3RyaWJ1dGluZygpOwog
ICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogCiAgICAgSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKLSAgICBIVE1MQ29udGVudFNlbGVj
dGlvbiogc2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKKyAgICBDb250ZW50RGlzdHJp
YnV0aW9uOjpJdGVtKiBkaXN0cmlidXRpb25JdGVtRm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKIAot
ICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCk7Ci0gICAgY29uc3QgSFRNTENvbnRl
bnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsKKyAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRp
c3RyaWJ1dG9yKCk7CisgICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsKKyAg
ICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAKICAgICBEb3VibHlMaW5r
ZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rv
ciBtX3NlbGVjdG9yOwotICAgIGJvb2wgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7Cisg
ICAgQ29udGVudERpc3RyaWJ1dG9yIG1fZGlzdHJpYnV0b3I7CisgICAgYm9vbCBtX25lZWRzUmVk
aXN0cmlidXRpbmcgOiAxOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVsZW1lbnRTaGFkb3cp
OwogfTsKIApAQCAtOTcsMTkgKzk1LDE5IEBAIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hh
ZG93OjpvbGRlc3RTaGFkb3dSb290KCkgY29uc3QKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50
YWlsKCk7CiB9CiAKLWlubGluZSBIVE1MQ29udGVudFNlbGVjdG9yJiBFbGVtZW50U2hhZG93Ojpz
ZWxlY3RvcigpCitpbmxpbmUgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0
cmlidXRvcigpCiB7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3I7CisgICAgcmV0dXJuIG1fZGlzdHJp
YnV0b3I7CiB9CiAKLWlubGluZSBjb25zdCBIVE1MQ29udGVudFNlbGVjdG9yJiBFbGVtZW50U2hh
ZG93OjpzZWxlY3RvcigpIGNvbnN0CitpbmxpbmUgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBF
bGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VsZWN0
b3I7CisgICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7CiB9CiAKLWlubGluZSB2b2lkIEVsZW1lbnRT
aGFkb3c6OmNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCitpbmxpbmUg
dm9pZCBFbGVtZW50U2hhZG93OjpjbGVhck5lZWRzUmVkaXN0cmlidXRpbmcoKQogewotICAgIG1f
bmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsKKyAgICBtX25lZWRzUmVkaXN0cmlidXRp
bmcgPSBmYWxzZTsKIH0KIAogaW5saW5lIEVsZW1lbnQqIEVsZW1lbnRTaGFkb3c6Omhvc3QoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
NTg5ODQxOWE2YTVkNDNlMDQxZmYwYjllZmJhNDc0MjY2MTg0MDRhNi4uM2Q5OGE2ZjZhNWViN2Yx
YTVkYWZkOTRjZTZmOTgwOTQ2NmM0ZWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJOb2RlUmVu
ZGVyaW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgorI2luY2x1ZGUg
IkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNs
dWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
QEAgLTk3LDcgKzk3LDcgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAodG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5oYXNTZWxlY3Rpb24o
KSkKKyAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhhc0Rpc3RyaWJ1
dGlvbigpKQogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2Vk
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdG
YWxsYmFja2VkOwpAQCAtMTQyLDEyICsxNDIsMTIgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTdHlsZSgpCiAKIHN0YXRpYyBpbmxpbmUgUmVu
ZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBw
YXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGN1cnJl
bnRTZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50KTsKLSAgICBp
ZiAoIWN1cnJlbnRTZWxlY3Rpb24pCisgICAgQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogY3Vy
cmVudEl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigpLT5maW5kKGN1cnJlbnQpOworICAgIGlm
ICghY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZm9yIChIVE1MQ29udGVu
dFNlbGVjdGlvbiogc2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbi0+bmV4dCgpOyBzZWxlY3Rp
b247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgZm9y
IChDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0gY3VycmVudEl0ZW0tPm5leHQoKTsg
aXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJlcjsKICAgICB9CiAKQEAgLTE1OCwxMCArMTU4LDEwIEBAIHN0YXRpYyBpbmxpbmUgUmVu
ZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2lu
dCogcGFyCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXIgPSAwOwogCi0gICAgZm9y
IChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCkt
PmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAg
ICAgICAgaWYgKHNlbGVjdGlvbi0+bm9kZSgpID09IGN1cnJlbnQpCisgICAgZm9yIChDb250ZW50
RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0gcGFyZW50LT5kaXN0cmlidXRpb24oKS0+Zmlyc3Qo
KTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkgeworICAgICAgICBpZiAoaXRlbS0+bm9kZSgp
ID09IGN1cnJlbnQpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdGVtLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5kZXJlcjsKICAgICB9CiAKQEAgLTE3MCw5ICsxNzAs
OSBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlck9mSW5zZXJ0
aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBhcgogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVj
dCogZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkK
IHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgewotICAgICAgICBmb3IgKEhUTUxD
b250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3Qo
KTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgewotICAgICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVy
ZXIoKSkKKyAgICBpZiAocGFyZW50LT5oYXNEaXN0cmlidXRpb24oKSkgeworICAgICAgICBmb3Ig
KENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBwYXJlbnQtPmRpc3RyaWJ1dGlvbigp
LT5maXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZW0tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIH0KIApAQCAtMTg0LDkgKzE4NCw5
IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Q
b2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50CiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0
KiBsYXN0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7
Ci0gICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgZm9yIChIVE1MQ29u
dGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxhc3QoKTsg
c2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKLSAgICAgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRl
cmVyKCkpCisgICAgaWYgKHBhcmVudC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKKyAgICAgICAgZm9y
IChDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiBpdGVtID0gcGFyZW50LT5kaXN0cmlidXRpb24o
KS0+bGFzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+cHJldmlvdXMoKSkgeworICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdGVtLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCBmZDMxOGQwYjQxY2JkNDdlZjRmYmZkYjgwNDdkNTM3ZTQyYzJi
OGViLi4zMmRkYjM4MzM0ZmVjZGJmZmIyNDNmYjg0MDE4NDAwYjYzMGU5ZmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9y
LmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIk5vZGVSYXJl
RGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYzAwMjRjNzE2NzMyMzA5OTcwZjFi
ZTgxNzA3NTE2ODVmZjA0MTllMC4uZDJhZDBkZmJjNmMzZGNmZTQ0Mjc0NGU5OGQ1MDg0ZWVlYzdi
ZGQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0zOCw4ICszOCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01TZWxlY3Rpb247Ci1jbGFz
cyBIVE1MQ29udGVudEVsZW1lbnQ7Ci1jbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOwogY2xhc3Mg
SW5zZXJ0aW9uUG9pbnQ7CiBjbGFzcyBFbGVtZW50U2hhZG93OwogCkBAIC02MCw5ICs1OCw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmVjYWxjU2hhZG93VHJlZVN0eWxlKFN0eWxlQ2hhbmdlKTsK
IAotICAgIHZvaWQgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAg
IHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgYm9v
bCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCBzZXROZWVk
c1JlZGlzdHJpYnV0aW5nKCk7CisgICAgdm9pZCBjbGVhck5lZWRzUmVkaXN0cmlidXRpbmcoKTsK
KyAgICBib29sIG5lZWRzUmVkaXN0cmlidXRpbmcoKTsKIAogICAgIEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFu
Z2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNzIwYTAzZWJlZDNkMTA1ZWY5MmYzMDU0ZTJhNzgwODllNDVh
MTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmNwcApAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29udGVudERpc3RyaWJ1
dGlvbjo6Q29udGVudERpc3RyaWJ1dGlvbigpCit7Cit9CisKK0NvbnRlbnREaXN0cmlidXRpb246
On5Db250ZW50RGlzdHJpYnV0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNFbXB0eSgpKTsKK30KKwor
Q29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogQ29udGVudERpc3RyaWJ1dGlvbjo6ZmluZChOb2Rl
KiBub2RlKSBjb25zdAoreworICAgIGZvciAoQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogaXRl
bSA9IGZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKG5v
ZGUgPT0gaXRlbS0+bm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAg
IAorICAgIHJldHVybiAwOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRpb246OmNsZWFyKCkK
K3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVt
PiBpdGVtID0gbV9maXJzdDsKKyAgICB3aGlsZSAoaXRlbSkgeworICAgICAgICBBU1NFUlQoIWl0
ZW0tPnByZXZpb3VzKCkpOworICAgICAgICBSZWZQdHI8Q29udGVudERpc3RyaWJ1dGlvbjo6SXRl
bT4gbmV4dEl0ZW0gPSBpdGVtLT5tX25leHQ7CisgICAgICAgIGl0ZW0tPm1fbmV4dC5jbGVhcigp
OworICAgICAgICBpZiAobmV4dEl0ZW0pCisgICAgICAgICAgICBuZXh0SXRlbS0+bV9wcmV2aW91
cy5jbGVhcigpOworICAgICAgICBpdGVtID0gbmV4dEl0ZW07CisgICAgfQorCisgICAgbV9maXJz
dC5jbGVhcigpOworICAgIG1fbGFzdC5jbGVhcigpOworfQorCit2b2lkIENvbnRlbnREaXN0cmli
dXRpb246OmFwcGVuZChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5vZGUp
Cit7CisgICAgUmVmUHRyPEl0ZW0+IGNoaWxkID0gSXRlbTo6Y3JlYXRlKGluc2VydGlvblBvaW50
LCBub2RlKTsKKworICAgIGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2xhc3Qp
OworICAgICAgICBtX2ZpcnN0ID0gbV9sYXN0ID0gY2hpbGQ7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoIW1fbGFzdC0+bmV4dCgpKTsKKyAgICBBU1NFUlQoIWNoaWxkLT5w
cmV2aW91cygpKTsKKyAgICBtX2xhc3QtPm1fbmV4dCA9IGNoaWxkOworICAgIGNoaWxkLT5tX3By
ZXZpb3VzID0gbV9sYXN0OworICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgpOworfQorCitDb250
ZW50RGlzdHJpYnV0b3I6OkNvbnRlbnREaXN0cmlidXRvcigpCisgICAgOiBtX3BoYXNlKFByZXZl
bnRlZCkKK3sKK30KKworQ29udGVudERpc3RyaWJ1dG9yOjp+Q29udGVudERpc3RyaWJ1dG9yKCkK
K3sKKyAgICBBU1NFUlQobV9wb29sLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQ29udGVudERpc3Ry
aWJ1dG9yOjpkaXN0cmlidXRlKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgQ29udGVu
dERpc3RyaWJ1dGlvbiogZGlzdHJpYnV0aW9uKQoreworICAgIEFTU0VSVChtX3BoYXNlID09IFBy
ZXBhcmVkKTsKKyAgICBBU1NFUlQoZGlzdHJpYnV0aW9uLT5pc0VtcHR5KCkpOworCisgICAgQ29u
dGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoaW5zZXJ0aW9uUG9pbnQpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3Bvb2wuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTm9kZSogY2hpbGQg
PSBtX3Bvb2xbaV0uZ2V0KCk7CisgICAgICAgIGlmICghY2hpbGQpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGRpc3RyaWJ1dGlvbi0+YXBwZW5kKGluc2VydGlvblBvaW50LCBj
aGlsZCk7CisgICAgICAgIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuYWRkKGRpc3RyaWJ1dGlvbi0+
bGFzdCgpKTsKKyAgICAgICAgbV9wb29sW2ldID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGVu
dERpc3RyaWJ1dG9yOjpjbGVhckRpc3RyaWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9uKiBsaXN0
KQoreworICAgIGZvciAoQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogaXRlbSA9IGxpc3QtPmZp
cnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KCkpCisgICAgICAgIG1fbm9kZVRvSW5zZXJ0
aW9uUG9pbnQucmVtb3ZlKGl0ZW0pOworCisgICAgbGlzdC0+Y2xlYXIoKTsKK30KKworQ29udGVu
dERpc3RyaWJ1dGlvbjo6SXRlbSogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kRm9yKGNvbnN0IE5v
ZGUqIGtleSkgY29uc3QKK3sKKyAgICBJbnZlcnRlZFRhYmxlOjppdGVyYXRvciBmb3VuZCA9IG1f
bm9kZVRvSW5zZXJ0aW9uUG9pbnQuZmluZDxjb25zdCBOb2RlKiwgVHJhbnNsYXRvcj4oa2V5KTsK
KyAgICByZXR1cm4gZm91bmQgIT0gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5lbmQoKSA/ICpmb3Vu
ZCA6IDA7Cit9CisKK0luc2VydGlvblBvaW50KiBDb250ZW50RGlzdHJpYnV0b3I6OmZpbmRJbnNl
cnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0Cit7CisgICAgSW52ZXJ0ZWRUYWJs
ZTo6aXRlcmF0b3IgZm91bmQgPSBtX25vZGVUb0luc2VydGlvblBvaW50LmZpbmQ8Y29uc3QgTm9k
ZSosIFRyYW5zbGF0b3I+KGtleSk7CisgICAgcmV0dXJuIGZvdW5kICE9IG1fbm9kZVRvSW5zZXJ0
aW9uUG9pbnQuZW5kKCkgPyAoKmZvdW5kKS0+aW5zZXJ0aW9uUG9pbnQoKSA6IDA7Cit9CisKK3Zv
aWQgQ29udGVudERpc3RyaWJ1dG9yOjp3aWxsRGlzdHJpYnV0ZSgpCit7CisgICAgbV9waGFzZSA9
IFN0YXJ0ZWQ7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaWREaXN0cmlidXRlKCkK
K3sKKyAgICBBU1NFUlQobV9waGFzZSAhPSBQcmV2ZW50ZWQpOworICAgIG1fcGhhc2UgPSBQcmV2
ZW50ZWQ7CisgICAgbV9wb29sLmNsZWFyKCk7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9y
OjpwcmVwYXJlUG9vbEZvcihFbGVtZW50KiBzaGFkb3dIb3N0KQoreworICAgIGlmIChwb29sSXNS
ZWFkeSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9wb29sLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKHNoYWRvd0hvc3QpOworICAgIEFTU0VSVChtX3BoYXNlID09IFN0YXJ0ZWQp
OworCisgICAgbV9waGFzZSA9IFByZXBhcmVkOworICAgIGZvciAoTm9kZSogbm9kZSA9IHNoYWRv
d0hvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCisg
ICAgICAgIG1fcG9vbC5hcHBlbmQobm9kZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1ZDhiNjRhYmFj
MmMyMjRjNzQ0NjQ1MDcwZTgzNjgyOWYwZmM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCkBAIC0wLDAgKzEsMTQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBDb250ZW50RGlzdHJpYnV0b3JfaAorI2RlZmluZSBDb250ZW50RGlzdHJpYnV0b3Jf
aAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNlcnRpb25Qb2lu
dDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290OworCitjbGFzcyBDb250ZW50RGlzdHJp
YnV0aW9uIHsKK3B1YmxpYzoKKyAgICAvLyBUT0RPOiBUaGUgY2xhc3Mgc2hvdWxkIGJlIHJlZHVj
ZWQgaW50byBzaW1wbGUgTm9kZSogd2hpY2ggaXMga2VwdCBpbiBhIHZlY3RvcjogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzUwCisgICAgY2xhc3MgSXRlbSA6IHB1
YmxpYyBSZWZDb3VudGVkPEl0ZW0+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBDb250ZW50RGlzdHJpYnV0aW9uOworCisgICAgICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICAgICAgTm9k
ZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQorICAgICAgICBJdGVtKiBu
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CisgICAgICAgIEl0ZW0qIHByZXZp
b3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SXRlbT4gY3JlYXRlKEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkgeyAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJdGVtKGlu
c2VydGlvblBvaW50LCBub2RlKSk7IH0KKworICAgICAgICBJdGVtKEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkKKyAgICAgICAgICAgIDogbV9pbnNlcnRpb25Qb2lu
dChpbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgICwgbV9ub2RlKG5vZGUpCisgICAgICAgIHsg
fQorCisgICAgICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50OworICAgICAgICBS
ZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgICAgICBSZWZQdHI8SXRlbT4gbV9uZXh0OworICAgICAg
ICBSZWZQdHI8SXRlbT4gbV9wcmV2aW91czsKKyAgICB9OworICAgIAorICAgIENvbnRlbnREaXN0
cmlidXRpb24oKTsKKyAgICB+Q29udGVudERpc3RyaWJ1dGlvbigpOworCisgICAgSXRlbSogZmly
c3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9CisgICAgSXRlbSogbGFzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdC5nZXQoKTsgfQorICAgIE5vZGUqIGZpcnN0Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3QgPyBtX2ZpcnN0LT5ub2RlKCkgOiAwOyB9CisgICAgTm9kZSogbGFz
dE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0ID8gbV9sYXN0LT5ub2RlKCkgOiAwOyB9Cisg
ICAgCisgICAgSXRlbSogZmluZChOb2RlKikgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIW1fZmlyc3Q7IH0KKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGFw
cGVuZChJbnNlcnRpb25Qb2ludCosIE5vZGUqKTsKKworcHJpdmF0ZToKKworICAgIFJlZlB0cjxJ
dGVtPiBtX2ZpcnN0OworICAgIFJlZlB0cjxJdGVtPiBtX2xhc3Q7Cit9OworCitjbGFzcyBDb250
ZW50RGlzdHJpYnV0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnREaXN0cmli
dXRvcik7CitwdWJsaWM6CisgICAgQ29udGVudERpc3RyaWJ1dG9yKCk7CisgICAgfkNvbnRlbnRE
aXN0cmlidXRvcigpOworCisgICAgdm9pZCBkaXN0cmlidXRlKEluc2VydGlvblBvaW50KiwgQ29u
dGVudERpc3RyaWJ1dGlvbiopOworICAgIHZvaWQgY2xlYXJEaXN0cmlidXRpb24oQ29udGVudERp
c3RyaWJ1dGlvbiopOworICAgIENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGZpbmRGb3IoY29u
c3QgTm9kZSoga2V5KSBjb25zdDsKKyAgICBJbnNlcnRpb25Qb2ludCogZmluZEluc2VydGlvblBv
aW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7CisKKyAgICB2b2lkIHdpbGxEaXN0cmlidXRl
KCk7CisgICAgYm9vbCBpbkRpc3RyaWJ1dGlvbigpIGNvbnN0OworICAgIHZvaWQgZGlkRGlzdHJp
YnV0ZSgpOworCisgICAgdm9pZCBwcmVwYXJlUG9vbEZvcihFbGVtZW50KiBzaGFkb3dIb3N0KTsK
KyAgICBib29sIHBvb2xJc1JlYWR5KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFRy
YW5zbGF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgTm9kZSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9
CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvbnRlbnREaXN0cmlidXRpb246Okl0
ZW0qIGl0ZW0sIGNvbnN0IE5vZGUqIG5vZGUpIHsgcmV0dXJuIGl0ZW0tPm5vZGUoKSA9PSBub2Rl
OyB9CisgICAgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSoga2V5KSB7IHJldHVybiBQdHJIYXNoPGNv
bnN0IE5vZGUqPjo6aGFzaChrZXktPm5vZGUoKSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoQ29udGVudERpc3RyaWJ1dGlvbjo6SXRlbSogYSwgQ29udGVudERpc3RyaWJ1dGlvbjo6SXRl
bSogYikgeyByZXR1cm4gYS0+bm9kZSgpID09IGItPm5vZGUoKTsgfQorICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07
CisKKyAgICAvLyBVc2VkIGFzIGEgdGFibGUgZnJvbSBOb2RlIHRvIEluc2VyZXRpb25Qb2ludAor
ICAgIHR5cGVkZWYgSGFzaFNldDxDb250ZW50RGlzdHJpYnV0aW9uOjpJdGVtKiwgSGFzaD4gSW52
ZXJ0ZWRUYWJsZTsKKworICAgIGVudW0gRGlzdHJpYnV0aW9uUGhhc2UgeworICAgICAgICBQcmV2
ZW50ZWQsCisgICAgICAgIFN0YXJ0ZWQsCisgICAgICAgIFByZXBhcmVkLAorICAgIH07CisKKyAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9wb29sOworICAgIERpc3RyaWJ1dGlvblBoYXNlIG1f
cGhhc2U7CisgICAgSW52ZXJ0ZWRUYWJsZSBtX25vZGVUb0luc2VydGlvblBvaW50OworfTsKKwor
aW5saW5lIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjppbkRpc3RyaWJ1dGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGhhc2UgIT0gUHJldmVudGVkOworfQorCitpbmxpbmUgYm9vbCBDb250
ZW50RGlzdHJpYnV0b3I6OnBvb2xJc1JlYWR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9waGFz
ZSA9PSBQcmVwYXJlZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCmluZGV4IDU0MzY3OTUwNjFmOTM5YTA0
OGIyZjk4NjUzYzgzODZhOWMzZWZhN2YuLjI0MmZlNzU3MjAyNmZmZTEyZTYxZGMyNzI2OTQ2YzA5
YzRmZDgzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1
dG9yLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJFbGVt
ZW50U2hhZG93LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSFRNTENvbnRlbnRF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBzZWxlY3RBdHRyKSB7CiAgICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0g
dG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkKLSAgICAgICAgICAgIHJvb3QtPm93
bmVyKCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICAgICAg
ICAgIHJvb3QtPm93bmVyKCktPnNldE5lZWRzUmVkaXN0cmlidXRpbmcoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFlNDE5NGVjNWEzN2RlMDM5NGMwM2Y4ZTgzOGU2
NWJiNDU4NzRjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1
ZXJ5LmgiCi0jaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBIVE1MQ29udGVudFNlbGVj
dGlvbjo6YXBwZW5kKFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IG5leHQpCi17Ci0g
ICAgQVNTRVJUKCFtX25leHQpOwotICAgIEFTU0VSVCghbmV4dC0+cHJldmlvdXMoKSk7Ci0gICAg
bV9uZXh0ID0gbmV4dDsKLSAgICBtX25leHQtPm1fcHJldmlvdXMgPSB0aGlzOwotfQotCi12b2lk
IEhUTUxDb250ZW50U2VsZWN0aW9uOjp1bmxpbmsoKQotewotICAgIEFTU0VSVCghbV9wcmV2aW91
cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBmb3IgYSBoZWFkLgotICAgIFJlZlB0cjxIVE1MQ29u
dGVudFNlbGVjdGlvbj4gaXRlbSA9IHRoaXM7Ci0gICAgd2hpbGUgKGl0ZW0pIHsKLSAgICAgICAg
QVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKLSAgICAgICAgUmVmUHRyPEhUTUxDb250ZW50U2Vs
ZWN0aW9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKLSAgICAgICAgaXRlbS0+bV9uZXh0LmNs
ZWFyKCk7Ci0gICAgICAgIGlmIChuZXh0SXRlbSkKLSAgICAgICAgICAgIG5leHRJdGVtLT5tX3By
ZXZpb3VzLmNsZWFyKCk7Ci0gICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKLSAgICB9Ci19Ci0KLUhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdDo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkKLXsKLX0K
LQotSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojp+SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkK
LXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdDo6ZmluZChOb2RlKiBub2RlKSBjb25zdAotewotICAgIGZv
ciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRl
bS0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBpdGVtOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBI
VE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmNsZWFyKCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7
Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fZmlyc3QtPnVubGluaygpOwotICAgIG1fZmlyc3QuY2xlYXIoKTsKLSAgICBtX2xhc3QuY2xl
YXIoKTsKLX0KLQotdm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmFwcGVuZChQYXNzUmVm
UHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBjaGlsZCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7
Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAgICAgICAgbV9maXJzdCA9IG1fbGFzdCA9IGNo
aWxkOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9sYXN0LT5hcHBlbmQoY2hpbGQp
OwotICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgpOwotfQotCi1IVE1MQ29udGVudFNlbGVjdG9y
OjpIVE1MQ29udGVudFNlbGVjdG9yKCkKLSAgICA6IG1fcGhhc2UoU2VsZWN0aW9uUHJldmVudGVk
KQotewotfQotCi1IVE1MQ29udGVudFNlbGVjdG9yOjp+SFRNTENvbnRlbnRTZWxlY3RvcigpCi17
Ci0gICAgQVNTRVJUKG1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpOwotfQotCi12b2lkIEhUTUxDb250
ZW50U2VsZWN0b3I6OnNlbGVjdChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIEhUTUxD
b250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9ucykKLXsKLSAgICBBU1NFUlQobV9waGFzZSA9
PSBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQpOwotICAgIEFTU0VSVChzZWxlY3Rpb25zLT5pc0VtcHR5
KCkpOwotCi0gICAgQ29udGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoaW5zZXJ0aW9uUG9pbnQpOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlm
ICghY2hpbGQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRj
aGVzKGNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFJlZlB0cjxIVE1M
Q29udGVudFNlbGVjdGlvbj4gc2VsZWN0aW9uID0gSFRNTENvbnRlbnRTZWxlY3Rpb246OmNyZWF0
ZShpbnNlcnRpb25Qb2ludCwgY2hpbGQpOwotCi0gICAgICAgIHNlbGVjdGlvbnMtPmFwcGVuZChz
ZWxlY3Rpb24pOwotICAgICAgICBtX3NlbGVjdGlvblNldC5hZGQoc2VsZWN0aW9uLmdldCgpKTsK
LSAgICAgICAgbV9jYW5kaWRhdGVzW2ldID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgSFRNTENvbnRl
bnRTZWxlY3Rvcjo6dW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBsaXN0KQotewot
ICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGxpc3QtPmZpcnN0KCk7
IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCi0gICAgICAgIG1fc2Vs
ZWN0aW9uU2V0LnJlbW92ZShzZWxlY3Rpb24pOwotICAgIGxpc3QtPmNsZWFyKCk7Ci19Ci0KLUhU
TUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKGNvbnN0IE5v
ZGUqIGtleSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3Rpb25TZXQuZmluZChrZXkpOwot
fQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3QoKQotewotICAgIG1fcGhh
c2UgPSBTZWxlY3Rpb25TdGFydGVkOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OmRp
ZFNlbGVjdCgpCi17Ci0gICAgQVNTRVJUKG1fcGhhc2UgIT0gU2VsZWN0aW9uUHJldmVudGVkKTsK
LSAgICBtX3BoYXNlID0gU2VsZWN0aW9uUHJldmVudGVkOwotICAgIG1fY2FuZGlkYXRlcy5jbGVh
cigpOwotfQotCi12b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnBvcHVsYXRlSWZOZWNlc3Nhcnko
RWxlbWVudCogc2hhZG93SG9zdCkKLXsKLSAgICBpZiAoaGFzUG9wdWxhdGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpKTsKLSAgICBBU1NF
UlQoc2hhZG93SG9zdCk7Ci0gICAgQVNTRVJUKG1fcGhhc2UgPT0gU2VsZWN0aW9uU3RhcnRlZCk7
Ci0KLSAgICBtX3BoYXNlID0gSG9zdENoaWxkcmVuUG9wdWxhdGVkOwotICAgIGZvciAoTm9kZSog
bm9kZSA9IHNoYWRvd0hvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRT
aWJsaW5nKCkpCi0gICAgICAgIG1fY2FuZGlkYXRlcy5hcHBlbmQobm9kZSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNmYmRkYmJkODgyNzM4NWE3YzlhZmMxMWMyNGY2
ZmVjYTZlMzYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSFRNTENvbnRlbnRTZWxlY3Rvcl9oCi0j
ZGVmaW5lIEhUTUxDb250ZW50U2VsZWN0b3JfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVs
ZW1lbnQ7Ci1jbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7Ci1jbGFzcyBJbnNlcnRpb25Qb2ludDsK
LWNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFkb3dSb290OwotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEhUTUxDb250ZW50U2VsZWN0aW9uPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IGNyZWF0ZShJbnNl
cnRpb25Qb2ludCosIE5vZGUqKTsKLQotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBOb2RlKiBub2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24q
IG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9Ci0K
LSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPik7Ci0gICAg
dm9pZCB1bmxpbmsoKTsKLQotcHJpdmF0ZToKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbihJbnNl
cnRpb25Qb2ludCosIE5vZGUqKTsKLQotICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBv
aW50OwotICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2Vs
ZWN0aW9uPiBtX25leHQ7Ci0gICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBtX3ByZXZp
b3VzOwotfTsKLQotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uOjpIVE1MQ29udGVudFNlbGVj
dGlvbihJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUqIG5vZGUpCi0gICAgOiBt
X2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KSwgbV9ub2RlKG5vZGUpCi17IH0KLQotaW5s
aW5lIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IEhUTUxDb250ZW50U2VsZWN0aW9u
OjpjcmVhdGUoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBOb2RlKiBub2RlKQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENvbnRlbnRTZWxlY3Rpb24oaW5zZXJ0aW9uUG9p
bnQsIG5vZGUpKTsKLX0KLQotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IHsKLXB1Ymxp
YzoKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QoKTsKLSAgICB+SFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0KCk7Ci0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmlyc3QoKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGxhc3Qo
KSBjb25zdCB7IHJldHVybiBtX2xhc3QuZ2V0KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlv
biogZmluZChOb2RlKikgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fZmlyc3Q7IH0KLQotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPik7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEhUTUxD
b250ZW50U2VsZWN0aW9uPiBtX2ZpcnN0OwotICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlv
bj4gbV9sYXN0OwotfTsKLQotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVjdGlvblNldCB7Ci1wdWJs
aWM6Ci0gICAgdm9pZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LmFk
ZCh2YWx1ZSk7IH0KLSAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUp
IHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKGNv
bnN0IE5vZGUqIGtleSkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRyYW5zbGF0b3Ig
ewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSog
a2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9Ci0gICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24s
IGNvbnN0IE5vZGUqIG5vZGUpIHsgcmV0dXJuIHNlbGVjdGlvbi0+bm9kZSgpID09IG5vZGU7IH0K
LSAgICB9OwotCi0gICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChIVE1MQ29udGVudFNlbGVjdGlvbioga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUq
Pjo6aGFzaChrZXktPm5vZGUoKSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoSFRNTENv
bnRlbnRTZWxlY3Rpb24qIGEsIEhUTUxDb250ZW50U2VsZWN0aW9uKiBiKSB7IHJldHVybiBhLT5u
b2RlKCkgPT0gYi0+bm9kZSgpOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgSGFz
aFNldDxIVE1MQ29udGVudFNlbGVjdGlvbiosIEhhc2g+IFBvaW50ZXJTZXQ7Ci0KLSAgICBQb2lu
dGVyU2V0IG1fc2V0OwotfTsKLQotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29u
dGVudFNlbGVjdGlvblNldDo6ZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0Ci17Ci0gICAgUG9p
bnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPGNvbnN0IE5vZGUqLCBIVE1MQ29u
dGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKLSAgICByZXR1cm4gZm91bmQgIT0g
bV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOwotfQotCi1jbGFzcyBIVE1MQ29udGVudFNlbGVjdG9y
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MQ29udGVudFNlbGVjdG9yKTsKLXB1Ymxp
YzoKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKCk7Ci0gICAgfkhUTUxDb250ZW50U2VsZWN0b3Io
KTsKLQotICAgIHZvaWQgc2VsZWN0KEluc2VydGlvblBvaW50KiwgSFRNTENvbnRlbnRTZWxlY3Rp
b25MaXN0Kik7Ci0gICAgdm9pZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsK
LSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0
OwotCi0gICAgdm9pZCB3aWxsU2VsZWN0KCk7Ci0gICAgYm9vbCBpc1NlbGVjdGluZygpIGNvbnN0
OwotICAgIHZvaWQgZGlkU2VsZWN0KCk7Ci0KLSAgICB2b2lkIHBvcHVsYXRlSWZOZWNlc3Nhcnko
RWxlbWVudCogc2hhZG93SG9zdCk7Ci0gICAgYm9vbCBoYXNQb3B1bGF0ZWQoKSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgICBlbnVtIFNlbGVjdGluZ1BoYXNlIHsKLSAgICAgICAgU2VsZWN0aW9uUHJl
dmVudGVkLAotICAgICAgICBTZWxlY3Rpb25TdGFydGVkLAotICAgICAgICBIb3N0Q2hpbGRyZW5Q
b3B1bGF0ZWQsCi0gICAgfTsKLQotICAgIHZvaWQgcmVtb3ZlRnJvbVNldChIVE1MQ29udGVudFNl
bGVjdGlvbkxpc3QqKTsKLSAgICB2b2lkIGFkZFRvU2V0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCopOwotCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fY2FuZGlkYXRlczsKLSAgICBIVE1M
Q29udGVudFNlbGVjdGlvblNldCBtX3NlbGVjdGlvblNldDsKLSAgICBTZWxlY3RpbmdQaGFzZSBt
X3BoYXNlOwotfTsKLQotaW5saW5lIGJvb2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6aXNTZWxlY3Rp
bmcoKSBjb25zdAotewotICAgIHJldHVybiBtX3BoYXNlICE9IFNlbGVjdGlvblByZXZlbnRlZDsK
LX0KLQotaW5saW5lIGJvb2wgSFRNTENvbnRlbnRTZWxlY3Rvcjo6aGFzUG9wdWxhdGVkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9waGFzZSA9PSBIb3N0Q2hpbGRyZW5Qb3B1bGF0ZWQ7Ci19Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5jcHAKaW5kZXggMzdlNTEwMWMzN2IyMDk3ZTQ0MWY4YTQ0MTI4ODJlZWYzZjUyOTUxNC4uNzIz
YjQ1OTkwY2YyOTVlMzI0MjA4NWI1ZTMwM2VhMzNlZTFhYzk5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fc2VsZWN0aW9ucygpCisgICAgLCBtX2Rp
c3RyaWJ1dGlvbigpCiB7CiB9CiAKQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIEluc2VydGlvblBv
aW50OjpkZXRhY2goKQogCiAgICAgICAgIC8vIFdoZW4gc2hhZG93IGVsZW1lbnQgaXMgZGV0YWNo
ZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVj
dG9yIGZvcgogICAgICAgICAvLyBvdGhlciBpbnNlcnRpb24gcG9pbnRzLgotICAgICAgICBzaGFk
b3ctPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICAgICAgc2hh
ZG93LT5zZXROZWVkc1JlZGlzdHJpYnV0aW5nKCk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1fc2Vs
ZWN0aW9ucy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2Rpc3RyaWJ1dGlvbi5pc0VtcHR5KCkp
OwogICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKIH0KIApAQCAtMTE5LDQxICsxMTksNDEgQEAg
Ym9vbCBJbnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCkKIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmRpc3RyaWJ1
dGVIb3N0Q2hpbGRyZW4oRWxlbWVudFNoYWRvdyogc2hhZG93KQogewotICAgIGlmICghc2hhZG93
LT5zZWxlY3RvcigpLmlzU2VsZWN0aW5nKCkpIHsKLSAgICAgICAgLy8gSWYgSFRNTENvbnRlbnRT
ZWxlY3RvciBpcyBub3QgaW50IHNlbGVjdGluZyBwaGFzZSwgaXQgbWVhbnMgSW5zZXJ0aW9uUG9p
bnQgaXMgYXR0YWNoZWQgZnJvbQorICAgIGlmICghc2hhZG93LT5kaXN0cmlidXRvcigpLmluRGlz
dHJpYnV0aW9uKCkpIHsKKyAgICAgICAgLy8gSWYgQ29udGVudERpc3RyaWJ1dG9yIGlzIG5vdCBp
bnQgc2VsZWN0aW5nIHBoYXNlLCBpdCBtZWFucyBJbnNlcnRpb25Qb2ludCBpcyBhdHRhY2hlZCBm
cm9tCiAgICAgICAgIC8vIG5vbi1FbGVtZW50U2hhZG93IG5vZGUuIFRvIHJ1biBkaXN0cmlidXRl
IGFsZ29yaXRobSwgd2UgaGF2ZSB0byByZWF0dGFjaCBFbGVtZW50U2hhZG93LgotICAgICAgICBz
aGFkb3ctPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICAgICAg
c2hhZG93LT5zZXROZWVkc1JlZGlzdHJpYnV0aW5nKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzaGFkb3ctPnNlbGVjdG9yKCkucG9wdWxhdGVJZk5lY2Vzc2FyeShzaGFkb3ctPmhv
c3QoKSk7Ci0gICAgc2hhZG93LT5zZWxlY3RvcigpLnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOwot
ICAgIHNoYWRvdy0+c2VsZWN0b3IoKS5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7CisgICAg
c2hhZG93LT5kaXN0cmlidXRvcigpLnByZXBhcmVQb29sRm9yKHNoYWRvdy0+aG9zdCgpKTsKKyAg
ICBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuY2xlYXJEaXN0cmlidXRpb24oJm1fZGlzdHJpYnV0aW9u
KTsKKyAgICBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZGlzdHJpYnV0ZSh0aGlzLCAmbV9kaXN0cmli
dXRpb24pOwogfQogCiBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6Y2xlYXJEaXN0cmlidXRp
b24oRWxlbWVudFNoYWRvdyogc2hhZG93KQogewotICAgIHNoYWRvdy0+c2VsZWN0b3IoKS51bnNl
bGVjdCgmbV9zZWxlY3Rpb25zKTsKKyAgICBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuY2xlYXJEaXN0
cmlidXRpb24oJm1fZGlzdHJpYnV0aW9uKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9p
bnQ6OmF0dGFjaERpc3RyaWJ1dGVkTm9kZSgpCiB7Ci0gICAgZm9yIChIVE1MQ29udGVudFNlbGVj
dGlvbiogc2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0
aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCi0gICAgICAgIHNlbGVjdGlvbi0+bm9kZSgpLT5hdHRh
Y2goKTsKKyAgICBmb3IgKENvbnRlbnREaXN0cmlidXRpb246Okl0ZW0qIGl0ZW0gPSBtX2Rpc3Ry
aWJ1dGlvbi5maXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKQorICAgICAgICBpdGVt
LT5ub2RlKCktPmF0dGFjaCgpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXNz
aWduU2hhZG93Um9vdChTaGFkb3dSb290KiBzaGFkb3dSb290KQogewogICAgIHNoYWRvd1Jvb3Qt
PnNldEFzc2lnbmVkVG8odGhpcyk7Ci0gICAgbV9zZWxlY3Rpb25zLmNsZWFyKCk7CisgICAgbV9k
aXN0cmlidXRpb24uY2xlYXIoKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dSb290LT5m
aXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBt
X3NlbGVjdGlvbnMuYXBwZW5kKEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUodGhpcywgbm9k
ZSkpOworICAgICAgICBtX2Rpc3RyaWJ1dGlvbi5hcHBlbmQodGhpcywgbm9kZSk7CiB9CiAKIGlu
bGluZSB2b2lkIEluc2VydGlvblBvaW50OjpjbGVhckFzc2lnbm1lbnQoU2hhZG93Um9vdCogc2hh
ZG93Um9vdCkKIHsKICAgICBzaGFkb3dSb290LT5zZXRBc3NpZ25lZFRvKDApOwotICAgIG1fc2Vs
ZWN0aW9ucy5jbGVhcigpOworICAgIG1fZGlzdHJpYnV0aW9uLmNsZWFyKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCmluZGV4IDg0MGRkMDY0NzkwZmNkOTM2ZmVkMmM0MmI3MDI4M2E5MjE0MDlmZTIuLjdk
MWRkMTI4NTI3NmJmNGNjNDI3NGZiNzAwM2Y5MTliMjk2ODllYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRl
ZiBJbnNlcnRpb25Qb2ludF9oCiAjZGVmaW5lIEluc2VydGlvblBvaW50X2gKIAotI2luY2x1ZGUg
IkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIEluc2VydGlvblBvaW50
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNlcnRpb25Q
b2ludCgpOwogCi0gICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gJm1fc2VsZWN0aW9uczsgfQotICAgIGJvb2wgaGFzU2VsZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25zLmZpcnN0KCk7IH0KKyAgICBjb25zdCBDb250
ZW50RGlzdHJpYnV0aW9uKiBkaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiAmbV9kaXN0cmli
dXRpb247IH0KKyAgICBib29sIGhhc0Rpc3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
dHJpYnV0aW9uLmZpcnN0KCk7IH0KICAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdDsK
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFzc2lnblNoYWRvd1Jvb3QoU2hhZG93Um9vdCopOwogICAgIHZvaWQgY2xlYXJB
c3NpZ25tZW50KFNoYWRvd1Jvb3QqKTsKIAotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCBt
X3NlbGVjdGlvbnM7CisgICAgQ29udGVudERpc3RyaWJ1dGlvbiBtX2Rpc3RyaWJ1dGlvbjsKIH07
CiAKIGlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>