<?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>79449</bug_id>
          
          <creation_ts>2012-02-23 23:07:13 -0800</creation_ts>
          <short_desc>Move FILE_SYSTEM code out of WorkerContext and into the fileapi folder</short_desc>
          <delta_ts>2012-02-28 11:53:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>79327</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ashod Nakashian">ashodnakashian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563968</commentid>
    <comment_count>0</comment_count>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-23 23:07:13 -0800</bug_when>
    <thetext>Move FILE_SYSTEM code out of WorkerContext and into the fileapi/WorkerContextFileSystem folder[1].

[1]: https://docs.google.com/spreadsheet/ccc?key=0AppchfQ5mBrEdFlodHlLb0prdEd1ZEZyUHdCbEpoc2c#gid=0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564944</commentid>
    <comment_count>1</comment_count>
      <attachid>128863</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-25 05:39:51 -0800</bug_when>
    <thetext>Created attachment 128863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564945</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-25 05:42:56 -0800</bug_when>
    <thetext>Attachment 128863 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/fileapi/WorkerContextFileSystem.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564946</commentid>
    <comment_count>3</comment_count>
      <attachid>128863</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-25 05:55:20 -0800</bug_when>
    <thetext>Comment on attachment 128863
Patch

Attachment 128863 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11632335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564947</commentid>
    <comment_count>4</comment_count>
      <attachid>128864</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-25 06:07:23 -0800</bug_when>
    <thetext>Created attachment 128864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564948</commentid>
    <comment_count>5</comment_count>
      <attachid>128864</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-25 06:35:18 -0800</bug_when>
    <thetext>Comment on attachment 128864
Patch

Attachment 128864 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11627441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564950</commentid>
    <comment_count>6</comment_count>
      <attachid>128864</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-25 07:14:13 -0800</bug_when>
    <thetext>Comment on attachment 128864
Patch

Attachment 128864 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11629405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564958</commentid>
    <comment_count>7</comment_count>
      <attachid>128864</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-02-25 08:28:08 -0800</bug_when>
    <thetext>Comment on attachment 128864
Patch

Attachment 128864 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11626400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565103</commentid>
    <comment_count>8</comment_count>
      <attachid>128864</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-25 21:58:40 -0800</bug_when>
    <thetext>Comment on attachment 128864
Patch

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

Looks like you&apos;re having some trouble building.

&gt; Source/WebCore/fileapi/WorkerContextFileSystem.h:44
&gt; +    void webkitRequestFileSystem(int type, long long size, PassRefPtr&lt;FileSystemCallback&gt; successCallback, PassRefPtr&lt;ErrorCallback&gt;);
&gt; +    PassRefPtr&lt;DOMFileSystemSync&gt; webkitRequestFileSystemSync(int type, long long size, ExceptionCode&amp;);
&gt; +    void webkitResolveLocalFileSystemURL(const String&amp; url, PassRefPtr&lt;EntryCallback&gt; successCallback, PassRefPtr&lt;ErrorCallback&gt;);
&gt; +    PassRefPtr&lt;EntrySync&gt; webkitResolveLocalFileSystemSyncURL(const String&amp; url, ExceptionCode&amp;);

These all should be static and take a WorkerContext as the first argument.

Also, WorkerContextFileSystem should have a private constructor and destructor, like DOMWindowFileSystem.

&gt; Source/WebCore/workers/WorkerContext.h:130
&gt; +        // FIXME: Move these constants to WorkerContextFileSystem.

You should be able to move these now.  We didn&apos;t move them right away in the other patch because of a bug in the code generator that has since been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565152</commentid>
    <comment_count>9</comment_count>
      <attachid>128915</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-26 07:57:42 -0800</bug_when>
    <thetext>Created attachment 128915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565154</commentid>
    <comment_count>10</comment_count>
      <attachid>128915</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-26 08:03:09 -0800</bug_when>
    <thetext>Comment on attachment 128915
Patch

Attachment 128915 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11627727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565155</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 08:03:21 -0800</bug_when>
    <thetext>Attachment 128915 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565156</commentid>
    <comment_count>12</comment_count>
      <attachid>128917</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-26 08:14:53 -0800</bug_when>
    <thetext>Created attachment 128917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565157</commentid>
    <comment_count>13</comment_count>
      <attachid>128917</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-26 08:18:47 -0800</bug_when>
    <thetext>Comment on attachment 128917
Patch

Attachment 128917 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11626667</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565158</commentid>
    <comment_count>14</comment_count>
      <attachid>128917</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-26 08:27:49 -0800</bug_when>
    <thetext>Comment on attachment 128917
Patch

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

&gt; Source/WebCore/GNUmakefile.list.am:4871
&gt; +	$(WebCore)/fileapi/WorkerContextFileSystem.idl \

Remove trailing backslah. That should make EWS happier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565159</commentid>
    <comment_count>15</comment_count>
      <attachid>128918</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-26 08:37:41 -0800</bug_when>
    <thetext>Created attachment 128918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565160</commentid>
    <comment_count>16</comment_count>
      <attachid>128918</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-26 08:42:17 -0800</bug_when>
    <thetext>Comment on attachment 128918
Patch

Attachment 128918 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11627736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565162</commentid>
    <comment_count>17</comment_count>
      <attachid>128918</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-26 08:51:15 -0800</bug_when>
    <thetext>Comment on attachment 128918
Patch

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

&gt; Source/WebCore/GNUmakefile.list.am:4871
&gt;  	$(WebCore)/fileapi/MetadataCallback.idl
&gt; +	$(WebCore)/fileapi/WorkerContextFileSystem.idl \

This won&apos;t work either. Move the backslash to the end of previous line:

$(WebCore)/fileapi/MetadataCallback.idl \
$(WebCore)/fileapi/WorkerContextFileSystem.idl

(without forgetting the tabulations :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565167</commentid>
    <comment_count>18</comment_count>
      <attachid>128918</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-26 09:35:25 -0800</bug_when>
    <thetext>Comment on attachment 128918
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Looks like you&apos;re getting close.  You&apos;ll need to remove this land before we can land your patch.  I&apos;d probably replace it with a sentence that says that there shouldn&apos;t be any change in behavior from this patch (and therefore there&apos;s nothing to test).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565180</commentid>
    <comment_count>19</comment_count>
      <attachid>128923</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-26 11:13:50 -0800</bug_when>
    <thetext>Created attachment 128923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565182</commentid>
    <comment_count>20</comment_count>
      <attachid>128923</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 11:44:11 -0800</bug_when>
    <thetext>Comment on attachment 128923
Patch

Attachment 128923 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11632682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565280</commentid>
    <comment_count>21</comment_count>
      <attachid>128942</attachid>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-26 20:25:18 -0800</bug_when>
    <thetext>Created attachment 128942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566790</commentid>
    <comment_count>22</comment_count>
    <who name="Ashod Nakashian">ashodnakashian</who>
    <bug_when>2012-02-28 09:24:36 -0800</bug_when>
    <thetext>The patch has passed the build scripts and is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566875</commentid>
    <comment_count>23</comment_count>
      <attachid>128942</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-28 11:04:22 -0800</bug_when>
    <thetext>Comment on attachment 128942
Patch

Looks great.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566936</commentid>
    <comment_count>24</comment_count>
      <attachid>128942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 11:53:12 -0800</bug_when>
    <thetext>Comment on attachment 128942
Patch

Clearing flags on attachment: 128942

Committed r109133: &lt;http://trac.webkit.org/changeset/109133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566937</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 11:53:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128863</attachid>
            <date>2012-02-25 05:39:51 -0800</date>
            <delta_ts>2012-02-25 06:07:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120225174450.patch</filename>
            <type>text/plain</type>
            <size>26555</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODg5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAyLTI1ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUgb3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhl
IGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uCisKKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwp
OgorICAgICAgICAqIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdvcmtlckNvbnRleHRGaWxlU3lzdGVtKToKKyAg
ICAgICAgKiBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbDogQWRkZWQuCisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNvbnRleHQ6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdvcmtlckNvbnRleHQp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisKIDIwMTItMDItMjUgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEwODU1Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTYxOCw2ICsxNjE4LDcgQEAgaWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAgICAg
ICAgZmlsZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHAKICAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVy
U3luYy5jcHAKICAgICAgICAgZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGZp
bGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCiAgICAgICAgIHBsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbS5jcHAKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMK
QEAgLTE2NDQsNiArMTY0NSw3IEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIGZp
bGVhcGkvRmlsZVdyaXRlclN5bmMuaWRsCiAgICAgICAgIGZpbGVhcGkvTWV0YWRhdGEuaWRsCiAg
ICAgICAgIGZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwKKyAgICAgICAgZmlsZWFwaS9Xb3Jr
ZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwKICAgICApCiBFTkRJRiAoKQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwODg4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcsNyBAQCBC
SU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2su
aWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlv
bi5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgXAor
ICAgICQoV2ViQ29yZSkvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9ET01Gb3JtRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9E
T01TZXR0YWJsZVRva2VuTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01Ub2tlbkxp
c3QuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDEwODg4
NikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpA
QCAtMjEzLDYgKzIxMyw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvZmlsZWFwaS9N
ZXRhZGF0YS5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwgXAog
ICAgICQkUFdEL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsIFwKKyAgICAkJFBXRC9maWxl
YXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMv
QXJyYXlCdWZmZXJWaWV3LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIu
aWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9ET01XaW5kb3dXZWJHTC5pZGwgXApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg4ODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY4LDYgKzE5
NjgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJs
b2JCdWlsZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRl
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggXApAQCAtNDg2Niw2ICs0ODY4LDcgQEAg
ZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVXcml0ZXJTeW5j
LmlkbCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRhLmlkbCBcCiAJJChXZWJDb3JlKS9m
aWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsCisJJChXZWJDb3JlKS9maWxlYXBpL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmlkbCBcCiAKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCShyZXZpc2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC02ODQsNiArNjg0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZmlsZWFw
aS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcCBcCiAgICAgZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCBcCiAgICAgZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAg
XAorICAgIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwIFwKICAgICBoaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgXAogICAgIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0
SW1wbC5jcHAgXAogICAgIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDEwODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtODcxLDYgKzg3MSw3IEBACiAgICAgICAgICAgICAnZmlsZWFwaS9N
ZXRhZGF0YS5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwn
LAogICAgICAgICAgICAgJ2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsJywKKyAgICAgICAg
ICAgICdmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9ET01Gb3JtRGF0YS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRE9NU2V0dGFibGVUb2tl
bkxpc3QuaWRsJywKICAgICAgICAgICAgICdodG1sL0RPTVRva2VuTGlzdC5pZGwnLApAQCAtMjMy
Nyw2ICsyMzI4LDggQEAKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcCcs
CiAgICAgICAgICAgICAnZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5oJywKICAgICAgICAgICAgICdm
aWxlYXBpL1dlYktpdEZsYWdzLmgnLAorICAgICAgICAgICAgJ2ZpbGVhcGkvV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW0uY3BwJywKKyAgICAgICAgICAgICdmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcCcsCiAg
ICAgICAgICAgICAnZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnZmls
ZWFwaS9NZXRhZGF0YS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzM2MzAsNiArNzM2
MzAsMzQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlO
YW1lPSJmaWxlYXBpIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVh
cGlcRE9NV2luZG93RmlsZVN5c3RlbS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRE9NV2luZG93RmlsZVN5c3RlbS5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVu
dHJ5QmFzZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGZpbGVhcGlcU3luY0NhbGxiYWNrSGVscGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxmaWxlYXBpXFdvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cY29uZmlnLmgiCiAJ
CQk+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRG
aWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNs
dWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIK
KyNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2Uu
aCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgi
CisjaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJMb2NhbEZp
bGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3Rl
bUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7CisgICAgICAgIERP
TUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywgRmlsZUVy
cm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRp
Y19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7CisgICAgaWYgKCFBc3luY0ZpbGVT
eXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgeworICAgICAgICBET01GaWxlU3lz
dGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3Jl
YXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVl
c3RGaWxlU3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzKSwgZmFsc2Up
OworfQorCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBXb3JrZXJDb250ZXh0RmlsZVN5
c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxvbmcgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIGlmICghQXN5bmNGaWxl
U3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxl
U3lzdGVtKCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxl
U3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7Cisg
ICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewor
ICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBl
ciBoZWxwZXI7CisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0
RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNr
czo6Y3JlYXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2so
KSwgdGhpcyksIHRydWUpOworICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKwor
dm9pZCBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTChjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAg
ICBLVVJMIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKCFBc3luY0Zp
bGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0Zp
bGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwp
KSB7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JD
YWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlOwor
ICAgIFN0cmluZyBmaWxlUGF0aDsKKyAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwg
IUFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwg
ZmlsZVBhdGgpKSB7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhp
cywgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpFTkNPRElOR19F
UlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9j
YWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0odGhpcywgdHlwZSwgUmVzb2x2ZVVSSUNhbGxi
YWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZmlsZVBh
dGgpKTsKK30KKworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtlckNvbnRleHRGaWxlU3lzdGVt
Ojp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChjb25zdCBTdHJpbmcmIHVybCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIEtVUkwgY29tcGxldGVkVVJM
ID0gY29tcGxldGVVUkwodXJsKTsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFi
bGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1
cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlOworICAgIFN0cmluZyBmaWxlUGF0aDsKKyAg
ICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIUFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tG
aWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7CisgICAgICAgIGVj
ID0gRmlsZUV4Y2VwdGlvbjo6RU5DT0RJTkdfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIHJlYWRGaWxlU3lzdGVtSGVscGVy
OworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0o
dGhpcywgdHlwZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHJlYWRGaWxlU3lzdGVtSGVs
cGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCByZWFkRmlsZVN5c3RlbUhlbHBlci5lcnJvckNhbGxiYWNr
KCksIHRoaXMpLCB0cnVlKTsKKyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IGZpbGVTeXN0
ZW0gPSByZWFkRmlsZVN5c3RlbUhlbHBlci5nZXRSZXN1bHQoZWMpOworICAgIGlmICghZmlsZVN5
c3RlbSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8RW50cnlTeW5jPiBlbnRyeSA9
IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RGlyZWN0b3J5KGZpbGVQYXRoLCAwLCBlYyk7CisgICAg
aWYgKGVjID09IEZpbGVFeGNlcHRpb246OlRZUEVfTUlTTUFUQ0hfRVJSKQorICAgICAgICByZXR1
cm4gZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXRGaWxlKGZpbGVQYXRoLCAwLCBlYyk7CisKKyAgICBy
ZXR1cm4gZW50cnkucmVsZWFzZSgpOworfQorCitDT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxp
bnQ+KFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjpURU1QT1JBUlkpID09IHN0YXRpY19jYXN0PGlu
dD4oQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3JhcnkpLCBlbnVtX21pc21hdGNoKTsKK0NPTVBJTEVf
QVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OlBFUlNJU1RF
TlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0ZW50KSwgZW51
bV9taXNtYXRjaCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFdvcmtlckNvbnRleHRGaWxlU3lzdGVt
X2gKKyNkZWZpbmUgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW1faAorCisjaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7Citj
bGFzcyBFbnRyeVN5bmM7CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgRmlsZVN5c3RlbUNh
bGxiYWNrOworCitjbGFzcyBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAg
dm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBh
c3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4pOworICAgIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IHdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2Vw
dGlvbkNvZGUmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJD
b250ZXh0RmlsZVN5c3RlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICoKKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgU3VwcGxlbWVudGFsPVdvcmtlckNvbnRl
eHQKKyAgICBdIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtIHsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVS
U0lTVEVOVCA9IDE7CisKKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSB2
b2lkIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxv
bmcgbG9uZyBzaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBGaWxlU3lzdGVtQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2spOworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIERP
TUZpbGVTeXN0ZW1TeW5jIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbiB1bnNpZ25lZCBz
aG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAg
ICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSB2b2lkIHdlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1VUkwoaW4gRE9NU3RyaW5nIHVybCwgaW4gW0NhbGxiYWNrLCBPcHRpb25h
bF0gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxd
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRp
bWU9RmlsZVN5c3RlbV0gRW50cnlTeW5jIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5j
VVJMKGluIERPTVN0cmluZyB1cmwpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisKKyAgICAgICAg
YXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmlsZUVycm9yQ29uc3Ry
dWN0b3IgRmlsZUVycm9yOworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1G
aWxlU3lzdGVtXSBGaWxlRXhjZXB0aW9uQ29uc3RydWN0b3IgRmlsZUV4Y2VwdGlvbjsKKyAgICB9
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDEwODg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDI0ICs2OCw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ2VudGVyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRl
ICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIK
LSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0j
aW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJMb2NhbEZpbGVT
eXN0ZW0uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKLSNlbHNlCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJJREJGYWN0b3J5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3Nyw5MyArMzYwLDYgQEAgRXZlbnRUYXJnZXREYXRh
KiBXb3JrZXJDb250ZXh0OjplbnN1cmVFdgogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIFdvcmtlckNvbnRleHQ6OndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxG
aWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWls
YWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAg
ICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNr
LCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBl
ID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKLSAgICBpZiAoIUFz
eW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7Ci0gICAgICAgIERP
TUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywgRmlsZUVy
cm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVt
KCkucmVxdWVzdEZpbGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0
ZW1DYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMp
LCBmYWxzZSk7Ci19Ci0KLVBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdvcmtlckNvbnRl
eHQ6OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBpZiAoIUFzeW5jRmlsZVN5
c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5
c3RlbSgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5
c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwotICAg
IGlmICghQXN5bmNGaWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIg
aGVscGVyOwotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZp
bGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmNyZWF0ZShoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCks
IHRoaXMpLCB0cnVlKTsKLSAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZv
aWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChjb25zdCBT
dHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBLVVJMIGNvbXBs
ZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06Omlz
QXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8
fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7Ci0gICAgICAg
IERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywgRmls
ZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlOwotICAgIFN0cmluZyBm
aWxlUGF0aDsKLSAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIUFzeW5jRmlsZVN5
c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7
Ci0gICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxs
YmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpFTkNPRElOR19FUlIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVt
KCkucmVhZEZpbGVTeXN0ZW0odGhpcywgdHlwZSwgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZmlsZVBhdGgpKTsKLX0KLQot
UGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtlckNvbnRleHQ6OndlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1TeW5jVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBlYyA9IDA7Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwot
ICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3QoY29tcGxldGVkVVJMKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlNFQ1VSSVRZ
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpU
eXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAgIGlmICghY29tcGxldGVkVVJMLmlz
VmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxldGVk
VVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpFTkNP
RElOR19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1TeW5j
Q2FsbGJhY2tIZWxwZXIgcmVhZEZpbGVTeXN0ZW1IZWxwZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbSh0aGlzLCB0eXBlLCBGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpjcmVhdGUocmVhZEZpbGVTeXN0ZW1IZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCks
IHJlYWRGaWxlU3lzdGVtSGVscGVyLmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUpOwotICAg
IFJlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gZmlsZVN5c3RlbSA9IHJlYWRGaWxlU3lzdGVtSGVs
cGVyLmdldFJlc3VsdChlYyk7Ci0gICAgaWYgKCFmaWxlU3lzdGVtKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIFJlZlB0cjxFbnRyeVN5bmM+IGVudHJ5ID0gZmlsZVN5c3RlbS0+cm9vdCgpLT5n
ZXREaXJlY3RvcnkoZmlsZVBhdGgsIDAsIGVjKTsKLSAgICBpZiAoZWMgPT0gRmlsZUV4Y2VwdGlv
bjo6VFlQRV9NSVNNQVRDSF9FUlIpCi0gICAgICAgIHJldHVybiBmaWxlU3lzdGVtLT5yb290KCkt
PmdldEZpbGUoZmlsZVBhdGgsIDAsIGVjKTsKLQotICAgIHJldHVybiBlbnRyeS5yZWxlYXNlKCk7
Ci19Ci0KLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4dDo6VEVN
UE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5KSwg
ZW51bV9taXNtYXRjaCk7Ci1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNv
bnRleHQ6OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpQ
ZXJzaXN0ZW50KSwgZW51bV9taXNtYXRjaCk7Ci0jZW5kaWYKLQogV29ya2VyQ29udGV4dDo6T2Jz
ZXJ2ZXI6Ok9ic2VydmVyKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShy
ZXZpc2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBCbG9iOwotICAgIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jOwogICAgIGNs
YXNzIERPTVVSTDsKICAgICBjbGFzcyBEYXRhYmFzZTsKICAgICBjbGFzcyBEYXRhYmFzZUNhbGxi
YWNrOwogICAgIGNsYXNzIERhdGFiYXNlU3luYzsKLSAgICBjbGFzcyBFbnRyeUNhbGxiYWNrOwot
ICAgIGNsYXNzIEVudHJ5U3luYzsKLSAgICBjbGFzcyBFcnJvckNhbGxiYWNrOwotICAgIGNsYXNz
IEZpbGVTeXN0ZW1DYWxsYmFjazsKICAgICBjbGFzcyBJREJGYWN0b3J5OwogICAgIGNsYXNzIE5v
dGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CkBAIC0xMzIsMTQg
KzEyNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisg
ICAgICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIGNvbnN0YW50cyB0byBXb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS4KICAgICAgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CiAgICAgICAgICAgICBURU1Q
T1JBUlksCiAgICAgICAgICAgICBQRVJTSVNURU5ULAogICAgICAgICB9OwotICAgICAgICB2b2lk
IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1Jl
ZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPik7Ci0gICAgICAgIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IHdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICAgICAgdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgICAgIFBhc3NSZWZQdHI8RW50cnlT
eW5jPiB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChjb25zdCBTdHJpbmcmIHVy
bCwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAg
ICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciogd29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigp
IHsgcmV0dXJuIG1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5nZXQoKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAxMDg4ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDQsMTggKzEwNCw2IEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogICAgICAgICBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAotI2lm
IGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KLSAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKLSAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9y
dCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5
c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJy
b3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1G
aWxlU3lzdGVtXSBET01GaWxlU3lzdGVtU3luYyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMo
aW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4
Y2VwdGlvbik7Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGluIERPTVN0cmluZyB1cmwsIGluIFtDYWxs
YmFjaywgT3B0aW9uYWxdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJh
Y2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgICAgICBbVjhF
bmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEVudHJ5U3luYyB3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtU3luY1VSTChpbiBET01TdHJpbmcgdXJsKSByYWlzZXMgKEZpbGVFeGNlcHRpb24p
OwotCi0gICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVT
eXN0ZW1dIEZpbGVFcnJvckNvbnN0cnVjdG9yIEZpbGVFcnJvcjsKLSAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmlsZUV4Y2VwdGlvbkNv
bnN0cnVjdG9yIEZpbGVFeGNlcHRpb247Ci0jZW5kaWYKLQogICAgICAgICBhdHRyaWJ1dGUgQXJy
YXlCdWZmZXJDb25zdHJ1Y3RvciBBcnJheUJ1ZmZlcjsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJh
dG9yCiAgICAgICAgIGF0dHJpYnV0ZSBJbnQ4QXJyYXlDb25zdHJ1Y3RvciBJbnQ4QXJyYXk7IC8v
IFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUgVWludDhBcnJheUNv
bnN0cnVjdG9yIFVpbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128864</attachid>
            <date>2012-02-25 06:07:23 -0800</date>
            <delta_ts>2012-02-26 07:57:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120225181222.patch</filename>
            <type>text/plain</type>
            <size>26553</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODg5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAyLTI1ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUgb3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhl
IGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06Ondl
YmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
Q29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKToK
KyAgICAgICAgKiBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0RmlsZVN5c3RlbSk6CisgICAg
ICAgICogZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
b250ZXh0OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgorCiAyMDEyLTAyLTI1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMDg1NTcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTA4ODg2KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MTgsNiArMTYxOCw3IEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAg
IGZpbGVhcGkvRmlsZVdyaXRlckJhc2UuY3BwCiAgICAgICAgIGZpbGVhcGkvRmlsZVdyaXRlclN5
bmMuY3BwCiAgICAgICAgIGZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcAorICAgICAgICBmaWxl
YXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcAogICAgICAgICBwbGF0Zm9ybS9Bc3luY0Zp
bGVTeXN0ZW0uY3BwCiAgICAgKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCkBA
IC0xNjQ0LDYgKzE2NDUsNyBAQCBpZiAoRU5BQkxFX0ZJTEVfU1lTVEVNKQogICAgICAgICBmaWxl
YXBpL0ZpbGVXcml0ZXJTeW5jLmlkbAogICAgICAgICBmaWxlYXBpL01ldGFkYXRhLmlkbAogICAg
ICAgICBmaWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsCisgICAgICAgIGZpbGVhcGkvV29ya2Vy
Q29udGV4dEZpbGVTeXN0ZW0uaWRsCiAgICAgKQogRU5ESUYgKCkKIApJbmRleDogU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24u
aWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsIFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvRE9NRm9ybURhdGEuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvRE9N
U2V0dGFibGVUb2tlbkxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvRE9NVG9rZW5MaXN0
LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lvbiAxMDg4ODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTIxMyw2ICsyMTMsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2ZpbGVhcGkvTWV0
YWRhdGEuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwKICAg
ICAkJFBXRC9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbCBcCisgICAgJCRQV0QvZmlsZWFw
aS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0Fy
cmF5QnVmZmVyVmlldy5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmlk
bCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvRE9NV2luZG93V2ViR0wuaWRsIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTA4ODg2KQorKysgU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTk2OCw2ICsxOTY4
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9i
QnVpbGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCBcCiAJ
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oIFwKQEAgLTQ4NjYsNiArNDg2OCw3IEBAIGRv
bV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5p
ZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YS5pZGwgXAogCSQoV2ViQ29yZSkvZmls
ZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbAorCSQoV2ViQ29yZSkvZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGwgXAogCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTA4ODg2KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29y
a2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGZpbGVhcGkv
T3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5jcHAgXAogICAgIGZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAgXAogICAgIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIFwK
KyAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCiAgICAgaGlzdG9yeS9C
YWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIFwKICAgICBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdElt
cGwuY3BwIFwKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCShyZXZpc2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTg3MSw2ICs4NzEsNyBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0
YWRhdGEuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsJywK
ICAgICAgICAgICAgICdmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbCcsCisgICAgICAgICAg
ICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvRE9NRm9ybURhdGEuaWRsJywKICAgICAgICAgICAgICdodG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Ub2tlbkxpc3QuaWRsJywKQEAgLTIzMjcs
NiArMjMyOCw4IEBACiAgICAgICAgICAgICAnZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5jcHAnLAog
ICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRlclN5bmMuaCcsCiAgICAgICAgICAgICAnZmls
ZWFwaS9XZWJLaXRGbGFncy5oJywKKyAgICAgICAgICAgICdmaWxlYXBpL1dvcmtlckNvbnRleHRG
aWxlU3lzdGVtLmNwcCcsCisgICAgICAgICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5oJywKICAgICAgICAgICAgICdmaWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5jcHAnLAogICAg
ICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVh
cGkvTWV0YWRhdGEuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTA4ODg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTczNjMwLDYgKzczNjMw
LDM0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFt
ZT0iZmlsZWFwaSIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBp
XERPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERPTVdpbmRvd0ZpbGVTeXN0ZW0uaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRy
eUJhc2UuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxmaWxlYXBpXFN5bmNDYWxsYmFja0hlbHBlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXFdvcmtlckNvbnRleHRGaWxlU3lz
dGVtLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZmlsZWFwaVxXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNvbmZpZy5oIgogCQkJ
PgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJD
b250ZXh0RmlsZVN5c3RlbS5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVk
ZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIK
KyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgor
I2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiTG9jYWxGaWxl
U3lzdGVtLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1D
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCit7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwg
IXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgeworICAgICAgICBET01G
aWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNf
Y2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOworICAgIGlmICghQXN5bmNGaWxlU3lz
dGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3Rl
bTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0
ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0
RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNr
czo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcyksIGZhbHNlKTsK
K30KKworUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2VyQ29udGV4dEZpbGVTeXN0
ZW06OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBpZiAoIUFzeW5jRmlsZVN5
c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5
c3RlbSgpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5
c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOworICAg
IGlmICghQXN5bmNGaWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKKyAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIg
aGVscGVyOworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZp
bGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmNyZWF0ZShoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCks
IHRoaXMpLCB0cnVlKTsKKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK3Zv
aWQgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1V
UkwoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAg
S1VSTCBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICghQXN5bmNGaWxl
U3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxl
U3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkg
eworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2Fs
bGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKKyAg
ICBTdHJpbmcgZmlsZVBhdGg7CisgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFB
c3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZp
bGVQYXRoKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMs
IGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJTkdfRVJS
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2Fs
RmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIFJlc29sdmVVUklDYWxsYmFj
a3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGZpbGVQYXRo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBLVVJMIGNvbXBsZXRlZFVSTCA9
IGNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxl
KCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7CisgICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKKyAgICBTdHJpbmcgZmlsZVBhdGg7CisgICAg
aWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmls
ZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgeworICAgICAgICBlYyA9
IEZpbGVFeGNlcHRpb246OkVOQ09ESU5HX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciByZWFkRmlsZVN5c3RlbUhlbHBlcjsK
KyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRo
aXMsIHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBl
ci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygp
LCB0aGlzKSwgdHJ1ZSk7CisgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVt
ID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0UmVzdWx0KGVjKTsKKyAgICBpZiAoIWZpbGVTeXN0
ZW0pCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBm
aWxlU3lzdGVtLT5yb290KCktPmdldERpcmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOworICAgIGlm
IChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01BVENIX0VSUikKKyAgICAgICAgcmV0dXJu
IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxlUGF0aCwgMCwgZWMpOworCisgICAgcmV0
dXJuIGVudHJ5LnJlbGVhc2UoKTsKK30KKworQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+
KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5KSwgZW51bV9taXNtYXRjaCk7CitDT01QSUxFX0FT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjpQRVJTSVNURU5U
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVudW1f
bWlzbWF0Y2gpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRG
aWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJD
b250ZXh0RmlsZVN5c3RlbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbV9o
CisjZGVmaW5lIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKKworI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xh
c3MgRW50cnlTeW5jOworY2xhc3MgRXJyb3JDYWxsYmFjazsKK2NsYXNzIEZpbGVTeXN0ZW1DYWxs
YmFjazsKKworY2xhc3MgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0geworcHVibGljOgorICAgIHZv
aWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNz
UmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+KTsKKyAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiB3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRp
b25Db2RlJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lz
dGVtLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
CisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIFN1cHBsZW1lbnRhbD1Xb3JrZXJDb250ZXh0
CisgICAgXSBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IFRFTVBPUkFSWSA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJ
U1RFTlQgPSAxOworCisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9p
ZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25n
IGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBET01G
aWxlU3lzdGVtU3luYyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWduZWQgc2hv
cnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAg
ICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXNvbHZlTG9j
YWxGaWxlU3lzdGVtVVJMKGluIERPTVN0cmluZyB1cmwsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxd
IEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1l
PUZpbGVTeXN0ZW1dIEVudHJ5U3luYyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TChpbiBET01TdHJpbmcgdXJsKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworCisgICAgICAgIGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFcnJvckNvbnN0cnVj
dG9yIEZpbGVFcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Rmls
ZVN5c3RlbV0gRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9yIEZpbGVFeGNlcHRpb247CisgICAgfTsK
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZp
c2lvbiAxMDg4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OCwyNCArNjgsNyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNlbnRlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAi
QXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCi0jaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0j
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2lu
Y2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiTG9jYWxGaWxlU3lz
dGVtLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0jZWxzZQogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSAiSURCRmFjdG9yeS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNzcsOTMgKzM2MCw2IEBAIEV2ZW50VGFyZ2V0RGF0YSog
V29ya2VyQ29udGV4dDo6ZW5zdXJlRXYKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwog
fQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotdm9pZCBXb3JrZXJDb250ZXh0Ojp3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8Rmls
ZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFi
bGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7Ci0gICAg
ICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywg
RmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9
IHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7Ci0gICAgaWYgKCFBc3lu
Y0ZpbGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewotICAgICAgICBET01G
aWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgp
LnJlcXVlc3RGaWxlU3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzKSwg
ZmFsc2UpOwotfQotCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBXb3JrZXJDb250ZXh0
Ojp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0
ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0
ZW0oKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlNFQ1VSSVRZX0VSUjsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0
ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKLSAgICBp
ZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7Ci0gICAg
ICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIGhl
bHBlcjsKLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxl
U3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpj
cmVhdGUoaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0
aGlzKSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi12b2lk
IFdvcmtlckNvbnRleHQ6OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgS1VSTCBjb21wbGV0
ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2
YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwg
IXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewotICAgICAgICBE
T01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVF
cnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKLSAgICBTdHJpbmcgZmls
ZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0
ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgewot
ICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJh
Y2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJTkdfRVJSKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgp
LnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGZpbGVQYXRoKSk7Ci19Ci0KLVBh
c3NSZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtU3luY1VSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgZWMgPSAwOwotICAgIEtVUkwgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKLSAg
ICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0
KGNvbXBsZXRlZFVSTCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlw
ZSB0eXBlOwotICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1Zh
bGlkKCkgfHwgIUFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVS
TCwgdHlwZSwgZmlsZVBhdGgpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RU5DT0RJ
TkdfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtU3luY0Nh
bGxiYWNrSGVscGVyIHJlYWRGaWxlU3lzdGVtSGVscGVyOwotICAgIExvY2FsRmlsZVN5c3RlbTo6
bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0odGhpcywgdHlwZSwgRmlsZVN5c3RlbUNh
bGxiYWNrczo6Y3JlYXRlKHJlYWRGaWxlU3lzdGVtSGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBy
ZWFkRmlsZVN5c3RlbUhlbHBlci5lcnJvckNhbGxiYWNrKCksIHRoaXMpLCB0cnVlKTsKLSAgICBS
ZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IGZpbGVTeXN0ZW0gPSByZWFkRmlsZVN5c3RlbUhlbHBl
ci5nZXRSZXN1bHQoZWMpOwotICAgIGlmICghZmlsZVN5c3RlbSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBSZWZQdHI8RW50cnlTeW5jPiBlbnRyeSA9IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0
RGlyZWN0b3J5KGZpbGVQYXRoLCAwLCBlYyk7Ci0gICAgaWYgKGVjID09IEZpbGVFeGNlcHRpb246
OlRZUEVfTUlTTUFUQ0hfRVJSKQotICAgICAgICByZXR1cm4gZmlsZVN5c3RlbS0+cm9vdCgpLT5n
ZXRGaWxlKGZpbGVQYXRoLCAwLCBlYyk7Ci0KLSAgICByZXR1cm4gZW50cnkucmVsZWFzZSgpOwot
fQotCi1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHQ6OlRFTVBP
UkFSWSkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSksIGVu
dW1fbWlzbWF0Y2gpOwotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250
ZXh0OjpQRVJTSVNURU5UKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6UGVy
c2lzdGVudCksIGVudW1fbWlzbWF0Y2gpOwotI2VuZGlmCi0KIFdvcmtlckNvbnRleHQ6Ok9ic2Vy
dmVyOjpPYnNlcnZlcihXb3JrZXJDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2
aXNpb24gMTA4ODg2KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgQmxvYjsKLSAgICBjbGFzcyBET01GaWxlU3lzdGVtU3luYzsKICAgICBjbGFz
cyBET01VUkw7CiAgICAgY2xhc3MgRGF0YWJhc2U7CiAgICAgY2xhc3MgRGF0YWJhc2VDYWxsYmFj
azsKICAgICBjbGFzcyBEYXRhYmFzZVN5bmM7Ci0gICAgY2xhc3MgRW50cnlDYWxsYmFjazsKLSAg
ICBjbGFzcyBFbnRyeVN5bmM7Ci0gICAgY2xhc3MgRXJyb3JDYWxsYmFjazsKLSAgICBjbGFzcyBG
aWxlU3lzdGVtQ2FsbGJhY2s7CiAgICAgY2xhc3MgSURCRmFjdG9yeTsKICAgICBjbGFzcyBOb3Rp
ZmljYXRpb25DZW50ZXI7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwpAQCAtMTMyLDE0ICsx
MjcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAg
ICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSBjb25zdGFudHMgdG8gV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uCiAgICAgICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgewogICAgICAgICAgICAgVEVNUE9S
QVJZLAogICAgICAgICAgICAgUEVSU0lTVEVOVCwKICAgICAgICAgfTsKLSAgICAgICAgdm9pZCB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQ
dHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiB3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgICAgIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChjb25z
dCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVmUHRyPEVudHJ5U3lu
Yz4gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAg
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKSB7
IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gMTA4ODg2KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDE4ICsxMDQsNiBAQCBtb2R1bGUgdGhyZWFkcyB7CiAKICAgICAgICAgYXR0cmlidXRl
IFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKLSNpZiBk
ZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCi0gICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7Ci0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwotICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZp
bGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQg
dHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0
ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Rmls
ZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGlu
IHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZpbGVFeGNl
cHRpb24pOwotICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChpbiBET01TdHJpbmcgdXJsLCBpbiBbQ2FsbGJh
Y2ssIE9wdGlvbmFsXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNr
LCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgW1Y4RW5h
YmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBFbnRyeVN5bmMgd2Via2l0UmVzb2x2ZUxvY2FsRmls
ZVN5c3RlbVN5bmNVUkwoaW4gRE9NU3RyaW5nIHVybCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsK
LQotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lz
dGVtXSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJyb3I7Ci0gICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFeGNlcHRpb25Db25z
dHJ1Y3RvciBGaWxlRXhjZXB0aW9uOwotI2VuZGlmCi0KICAgICAgICAgYXR0cmlidXRlIEFycmF5
QnVmZmVyQ29uc3RydWN0b3IgQXJyYXlCdWZmZXI7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRv
cgogICAgICAgICBhdHRyaWJ1dGUgSW50OEFycmF5Q29uc3RydWN0b3IgSW50OEFycmF5OyAvLyBV
c2FibGUgd2l0aCBuZXcgb3BlcmF0b3IKICAgICAgICAgYXR0cmlidXRlIFVpbnQ4QXJyYXlDb25z
dHJ1Y3RvciBVaW50OEFycmF5OyAvLyBVc2FibGUgd2l0aCBuZXcgb3BlcmF0b3IK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128915</attachid>
            <date>2012-02-26 07:57:42 -0800</date>
            <delta_ts>2012-02-26 08:14:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120226200243.patch</filename>
            <type>text/plain</type>
            <size>27323</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTI2ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICBUaGlzIG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUg
b3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhlIGZpbGVhcGkvV29ya2VyQ29udGV4dEZp
bGVTeXN0ZW0uCisJCQorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwpOgorICAgICAgICAqIGZpbGVhcGkvV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdvcmtlckNvbnRleHRGaWxlU3lzdGVtKToKKyAgICAgICAgKiBmaWxlYXBpL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGw6CisKIDIwMTItMDItMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBNb3ZlIHdlYnNvY2tldHMgdG8gTW9kdWxlcy93ZWJzb2NrZXRzCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4OTMyKQorKysgU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2MjAsNiArMTYyMCw3IEBAIGlm
IChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIGZpbGVhcGkvRmlsZVdyaXRlckJhc2UuY3Bw
CiAgICAgICAgIGZpbGVhcGkvRmlsZVdyaXRlclN5bmMuY3BwCiAgICAgICAgIGZpbGVhcGkvTG9j
YWxGaWxlU3lzdGVtLmNwcAorICAgICAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVt
LmNwcAogICAgICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3BwCiAgICAgKQogICAgIExJ
U1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCkBAIC0xNjQ2LDYgKzE2NDcsNyBAQCBpZiAoRU5B
QkxFX0ZJTEVfU1lTVEVNKQogICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmlkbAogICAg
ICAgICBmaWxlYXBpL01ldGFkYXRhLmlkbAogICAgICAgICBmaWxlYXBpL01ldGFkYXRhQ2FsbGJh
Y2suaWRsCisgICAgICAgIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsCiAgICAg
KQogRU5ESUYgKCkKIApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lv
biAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29y
ZSkvZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBp
L09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvV29ya2Vy
Q29udGV4dEZpbGVTeXN0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvRE9NRm9ybURhdGEu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2h0bWwvRE9NVG9rZW5MaXN0LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMucHJpCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsNyBAQCBJRExfQklORElO
R1MgKz0gXAogICAgICQkUFdEL2ZpbGVhcGkvTWV0YWRhdGEuaWRsIFwKICAgICAkJFBXRC9maWxl
YXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmlkbCBcCisgICAgJCRQV0QvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5p
ZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5pZGwgXAogICAgICQk
UFdEL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMv
RE9NV2luZG93V2ViR0wuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
cmV2aXNpb24gMTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTk5Miw2ICsxOTkyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBcCiAJU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCBcCiAJU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZENvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlz
dC5oIFwKQEAgLTQ4NjYsNiArNDg2OCw3IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2Vi
Q29yZSkvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9N
ZXRhZGF0YS5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbAor
CSQoV2ViQ29yZSkvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwgXAogCiB3ZWJj
b3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0Zp
bGVTeXN0ZW1HdGsuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA4OTMyKQorKysg
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlv
bi5jcHAgXAogICAgIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgXAogICAgIGZp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIFwKKyAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRG
aWxlU3lzdGVtLmNwcCBcCiAgICAgaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIFwK
ICAgICBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdEltcGwuY3BwIFwKICAgICBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDg5MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTg3NCw2ICs4NzQs
NyBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaWRsJywKICAgICAgICAgICAgICdm
aWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL1dlYktp
dEJsb2JCdWlsZGVyLmlkbCcsCisgICAgICAgICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRE9NRm9ybURhdGEuaWRsJywKICAgICAg
ICAgICAgICdodG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9ET01Ub2tlbkxpc3QuaWRsJywKQEAgLTIzNTEsNiArMjM1Miw4IEBACiAgICAgICAgICAgICAn
ZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdy
aXRlclN5bmMuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9XZWJLaXRGbGFncy5oJywKKyAgICAg
ICAgICAgICdmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCcsCisgICAgICAgICAg
ICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oJywKICAgICAgICAgICAgICdmaWxl
YXBpL0xvY2FsRmlsZVN5c3RlbS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxl
U3lzdGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaCcsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTA4
OTMyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTczNjMwLDYgKzczNjMwLDM0IEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iZmlsZWFwaSIKKwkJCT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBp
XERPTVdpbmRvd0ZpbGVTeXN0ZW0uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeUJhc2UuY3BwIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXFN5bmNDYWxsYmFja0hl
bHBlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxmaWxlYXBpXFdvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxXb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGNvbmZpZy5oIgogCQkJPgpJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIgorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisj
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5
bmMuaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3lu
Yy5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIK
KyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgiCisjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU3luY0Nh
bGxiYWNrSGVscGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBXb3JrZXJDb250
ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyQ29udGV4dCogd29y
a2VyLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKK3sKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7CisgICAgICAgIERPTUZpbGVT
eXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpj
cmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0
PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06
OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpz
Y2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZp
bGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxl
U3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzKSwgZmFsc2UpOworfQor
CitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFdvcmtlckNvbnRleHQqIHdvcmtlciwgaW50IHR5
cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7Cisg
ICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OlNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQXN5bmNGaWxl
U3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKTsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmls
ZVN5c3RlbVR5cGUpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJ
RklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVt
U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcjsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmls
ZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxw
ZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGhlbHBlci5nZXRS
ZXN1bHQoZWMpOworfQorCit2b2lkIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMKFdvcmtlckNvbnRleHQqIHdvcmtlciwgY29uc3QgU3RyaW5n
JiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgS1VSTCBjb21wbGV0ZWRV
UkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06
OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0o
KSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7CisgICAg
ICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywg
RmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlOworICAgIFN0cmlu
ZyBmaWxlUGF0aDsKKyAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIUFzeW5jRmls
ZVN5c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgp
KSB7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JD
YWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpFTkNPRElOR19FUlIpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lz
dGVtKCkucmVhZEZpbGVTeXN0ZW0odGhpcywgdHlwZSwgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZmlsZVBhdGgpKTsKK30K
KworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3JrZXJDb250ZXh0KiB3b3JrZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgS1VS
TCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKCFBc3lu
Y0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vz
c0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRV
UkwpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKKyAg
ICBTdHJpbmcgZmlsZVBhdGg7CisgICAgaWYgKCF3b3JrZXItPmNvbXBsZXRlZFVSTC5pc1ZhbGlk
KCkgfHwgIUFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwg
dHlwZSwgZmlsZVBhdGgpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RU5DT0RJTkdf
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtU3luY0NhbGxi
YWNrSGVscGVyIHJlYWRGaWxlU3lzdGVtSGVscGVyOworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9j
YWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0odGhpcywgdHlwZSwgRmlsZVN5c3RlbUNhbGxi
YWNrczo6Y3JlYXRlKHJlYWRGaWxlU3lzdGVtSGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCByZWFk
RmlsZVN5c3RlbUhlbHBlci5lcnJvckNhbGxiYWNrKCksIHRoaXMpLCB0cnVlKTsKKyAgICBSZWZQ
dHI8RE9NRmlsZVN5c3RlbVN5bmM+IGZpbGVTeXN0ZW0gPSByZWFkRmlsZVN5c3RlbUhlbHBlci5n
ZXRSZXN1bHQoZWMpOworICAgIGlmICghZmlsZVN5c3RlbSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBSZWZQdHI8RW50cnlTeW5jPiBlbnRyeSA9IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RGly
ZWN0b3J5KGZpbGVQYXRoLCAwLCBlYyk7CisgICAgaWYgKGVjID09IEZpbGVFeGNlcHRpb246OlRZ
UEVfTUlTTUFUQ0hfRVJSKQorICAgICAgICByZXR1cm4gZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXRG
aWxlKGZpbGVQYXRoLCAwLCBlYyk7CisKKyAgICByZXR1cm4gZW50cnkucmVsZWFzZSgpOworfQor
CitDT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHRGaWxlU3lzdGVt
OjpURU1QT1JBUlkpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3Jh
cnkpLCBlbnVtX21pc21hdGNoKTsKK0NPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW06OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5
bmNGaWxlU3lzdGVtOjpQZXJzaXN0ZW50KSwgZW51bV9taXNtYXRjaCk7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisj
aWZuZGVmIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKKyNkZWZpbmUgV29ya2VyQ29udGV4dEZp
bGVTeXN0ZW1faAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFbnRyeVN5bmM7CitjbGFzcyBFcnJv
ckNhbGxiYWNrOworY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOworCitjbGFzcyBXb3JrZXJDb250
ZXh0RmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CisgICAg
ICAgIFRFTVBPUkFSWSwKKyAgICAgICAgUEVSU0lTVEVOVCwKKyAgICB9OworCisgICAgc3RhdGlj
IHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyQ29udGV4dCosIGludCB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbVN5bmM+IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhXb3JrZXJDb250
ZXh0KiwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3Rh
dGljIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJDb250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
bnRyeVN5bmM+IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdvcmtlckNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAg
IFdvcmtlckNvbnRleHRGaWxlU3lzdGVtKCk7CisgICAgfldvcmtlckNvbnRleHRGaWxlU3lzdGVt
KCk7ICAgIAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gV29ya2VyQ29udGV4dEZpbGVTeXN0ZW1faApJbmRl
eDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3Rl
bS5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRl
eHRGaWxlU3lzdGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgor
ICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRp
dGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBTdXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAor
ICAgIF0gV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0geworICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBURU1QT1JBUlkgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNU
RU5UID0gMTsKKworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQg
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBs
b25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JD
YWxsYmFjayk7CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmls
ZVN5c3RlbVN5bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGluIHVuc2lnbmVkIHNob3J0
IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAg
ICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTChpbiBET01TdHJpbmcgdXJsLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBF
bnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJy
b3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1G
aWxlU3lzdGVtXSBFbnRyeVN5bmMgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwo
aW4gRE9NU3RyaW5nIHVybCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKworICAgICAgICBhdHRy
aWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBGaWxlRXJyb3JDb25zdHJ1Y3Rv
ciBGaWxlRXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVT
eXN0ZW1dIEZpbGVFeGNlcHRpb25Db25zdHJ1Y3RvciBGaWxlRXhjZXB0aW9uOworICAgIH07CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNp
b24gMTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgsMjQgKzY4LDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25D
ZW50ZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotI2luY2x1ZGUgIkFz
eW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNs
dWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3Rl
bS5oIgotI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgotI2Vsc2UKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzc3LDkzICszNjAsNiBAQCBFdmVudFRhcmdldERhdGEqIFdv
cmtlckNvbnRleHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0K
IAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVT
eXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxl
KCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgewotICAgICAg
ICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZp
bGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBz
dGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwotICAgIGlmICghQXN5bmNG
aWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAgRE9NRmls
ZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6
OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5y
ZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNh
bGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcyksIGZh
bHNlKTsKLX0KLQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2VyQ29udGV4dDo6
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVt
Ojppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVt
KCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVt
VHlwZSA9IHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7Ci0gICAgaWYg
KCFBc3luY0ZpbGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewotICAgICAg
ICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciBoZWxw
ZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5
c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3Jl
YXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSwgdGhp
cyksIHRydWUpOwotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotdm9pZCBX
b3JrZXJDb250ZXh0Ojp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEtVUkwgY29tcGxldGVk
VVJMID0gY29tcGxldGVVUkwodXJsKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFp
bGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFz
ZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAgICAgICAgRE9N
RmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJy
b3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZpbGVQ
YXRoOwotICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVt
OjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKLSAg
ICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNr
LCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OkVOQ09ESU5HX0VSUikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5y
ZWFkRmlsZVN5c3RlbSh0aGlzLCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBmaWxlUGF0aCkpOwotfQotCi1QYXNz
UmVmUHRyPEVudHJ5U3luYz4gV29ya2VyQ29udGV4dDo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVN5bmNVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAg
IGVjID0gMDsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7Ci0gICAg
aWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChj
b21wbGV0ZWRVUkwpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJS
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUg
dHlwZTsKLSAgICBTdHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxp
ZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkws
IHR5cGUsIGZpbGVQYXRoKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVOQ09ESU5H
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxs
YmFja0hlbHBlciByZWFkRmlsZVN5c3RlbUhlbHBlcjsKLSAgICBMb2NhbEZpbGVTeXN0ZW06Omxv
Y2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIEZpbGVTeXN0ZW1DYWxs
YmFja3M6OmNyZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVh
ZEZpbGVTeXN0ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7Ci0gICAgUmVm
UHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVtID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIu
Z2V0UmVzdWx0KGVjKTsKLSAgICBpZiAoIWZpbGVTeXN0ZW0pCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxlU3lzdGVtLT5yb290KCktPmdldERp
cmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOwotICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpU
WVBFX01JU01BVENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0
RmlsZShmaWxlUGF0aCwgMCwgZWMpOwotCi0gICAgcmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsKLX0K
LQotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0OjpURU1QT1JB
UlkpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3JhcnkpLCBlbnVt
X21pc21hdGNoKTsKLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4
dDo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlBlcnNp
c3RlbnQpLCBlbnVtX21pc21hdGNoKTsKLSNlbmRpZgotCiBXb3JrZXJDb250ZXh0OjpPYnNlcnZl
cjo6T2JzZXJ2ZXIoV29ya2VyQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlz
aW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwog
CkBAIC00NywxNSArNDcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEJs
b2I7Ci0gICAgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CiAgICAgY2xhc3MgRE9NVVJMOwogICAg
IGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3Mg
RGF0YWJhc2VTeW5jOwotICAgIGNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci0gICAgY2xhc3MgRW50cnlT
eW5jOwotICAgIGNsYXNzIEVycm9yQ2FsbGJhY2s7Ci0gICAgY2xhc3MgRmlsZVN5c3RlbUNhbGxi
YWNrOwogICAgIGNsYXNzIElEQkZhY3Rvcnk7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVy
OwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKQEAgLTEzMSwxNiArMTI2LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7
CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIGVudW0gRmlsZVN5c3RlbVR5cGUg
ewotICAgICAgICAgICAgVEVNUE9SQVJZLAotICAgICAgICAgICAgUEVSU0lTVEVOVCwKLSAgICAg
ICAgfTsKLSAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9u
ZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW1TeW5jPiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcg
bG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAg
ICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNV
UkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSNlbmRpZgogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Z2V0KCk7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuaWRsCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTggKzEwNCw2IEBAIG1vZHVsZSB0
aHJlYWRzIHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENv
bnN0cnVjdG9yIHdlYmtpdFVSTDsKIAotI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAm
JiBFTkFCTEVfRklMRV9TWVNURU0KLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9S
QVJZID0gMDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0g
ICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4g
W0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywg
aW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAg
ICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBET01GaWxlU3lzdGVtU3luYyB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9u
ZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtWOEVuYWJsZWRB
dFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJM
KGluIERPTVN0cmluZyB1cmwsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVudHJ5Q2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2spOwotICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEVu
dHJ5U3luYyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChpbiBET01TdHJpbmcg
dXJsKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotCi0gICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFcnJvckNvbnN0cnVjdG9yIEZp
bGVFcnJvcjsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
RmlsZVN5c3RlbV0gRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9yIEZpbGVFeGNlcHRpb247Ci0jZW5k
aWYKLQogICAgICAgICBhdHRyaWJ1dGUgQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciBBcnJheUJ1ZmZl
cjsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBJbnQ4QXJy
YXlDb25zdHJ1Y3RvciBJbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAg
ICAgICBhdHRyaWJ1dGUgVWludDhBcnJheUNvbnN0cnVjdG9yIFVpbnQ4QXJyYXk7IC8vIFVzYWJs
ZSB3aXRoIG5ldyBvcGVyYXRvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128917</attachid>
            <date>2012-02-26 08:14:53 -0800</date>
            <delta_ts>2012-02-26 08:37:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120226201953.patch</filename>
            <type>text/plain</type>
            <size>27321</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTI2ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICBUaGlzIG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUg
b3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhlIGZpbGVhcGkvV29ya2VyQ29udGV4dEZp
bGVTeXN0ZW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06
OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRl
eHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1VUkwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKToKKyAgICAgICAgKiBmaWxlYXBpL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXb3JrZXJDb250ZXh0RmlsZVN5c3RlbSk6CisgICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjplbnN1cmVFdmVudFRhcmdl
dERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsOgorCiAyMDEyLTAyLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTW92ZSB3ZWJzb2NrZXRzIHRvIE1vZHVsZXMvd2Vic29ja2V0cwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDYgKzE2MjAsNyBAQCBpZiAo
RU5BQkxFX0ZJTEVfU1lTVEVNKQogICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJCYXNlLmNwcAog
ICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcAogICAgICAgICBmaWxlYXBpL0xvY2Fs
RmlsZVN5c3RlbS5jcHAKKyAgICAgICAgZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5j
cHAKICAgICAgICAgcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcAogICAgICkKICAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwpAQCAtMTY0Niw2ICsxNjQ3LDcgQEAgaWYgKEVOQUJM
RV9GSUxFX1NZU1RFTSkKICAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwKICAgICAg
ICAgZmlsZWFwaS9NZXRhZGF0YS5pZGwKICAgICAgICAgZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNr
LmlkbAorICAgICAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAogICAgICkK
IEVORElGICgpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24g
MTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9P
cGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBp
L1dlYktpdEJsb2JCdWlsZGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9maWxlYXBpL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0RPTUZvcm1EYXRhLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL0RPTVRva2VuTGlzdC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLnByaQkocmV2aXNpb24gMTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDcgQEAgSURMX0JJTkRJTkdT
ICs9IFwKICAgICAkJFBXRC9maWxlYXBpL01ldGFkYXRhLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFw
aS9NZXRhZGF0YUNhbGxiYWNrLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9XZWJLaXRCbG9iQnVp
bGRlci5pZGwgXAorICAgICQkUFdEL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRs
IFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsIFwKICAgICAkJFBX
RC9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0RP
TVdpbmRvd1dlYkdMLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTE5OTIsNiArMTk5Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dv
cmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
aCBcCkBAIC00ODY2LDYgKzQ4NjgsNyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNv
cmUpL2ZpbGVhcGkvRmlsZVdyaXRlclN5bmMuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvTWV0
YWRhdGEuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwKKwkk
KFdlYkNvcmUpL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsIFwKIAogd2ViY29y
ZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxl
U3lzdGVtR3RrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwODkzMikKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2ICs2ODQsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBmaWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24u
Y3BwIFwKICAgICBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIFwKICAgICBmaWxl
YXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcCBcCisgICAgZmlsZWFwaS9Xb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5jcHAgXAogICAgIGhpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBcCiAg
ICAgaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmNwcCBcCiAgICAgaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTA4OTMyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsNiArODc0LDcg
QEAKICAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhLmlkbCcsCiAgICAgICAgICAgICAnZmls
ZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9XZWJLaXRC
bG9iQnVpbGRlci5pZGwnLAorICAgICAgICAgICAgJ2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uaWRsJywKICAgICAgICAgICAgICdodG1sL0RPTUZvcm1EYXRhLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
RE9NVG9rZW5MaXN0LmlkbCcsCkBAIC0yMzUxLDYgKzIzNTIsOCBAQAogICAgICAgICAgICAgJ2Zp
bGVhcGkvRmlsZVdyaXRlclN5bmMuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVXcml0
ZXJTeW5jLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvV2ViS2l0RmxhZ3MuaCcsCisgICAgICAg
ICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAnLAorICAgICAgICAgICAg
J2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnZmlsZWFw
aS9Mb2NhbEZpbGVTeXN0ZW0uY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0xvY2FsRmlsZVN5
c3RlbS5oJywKICAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhLmgnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MzYzMCw2ICs3MzYzMCwzNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
PC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9ImZpbGVhcGkiCisJCQk+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxET01XaW5kb3dGaWxlU3lzdGVtLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxE
T01XaW5kb3dGaWxlU3lzdGVtLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlCYXNlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxTeW5jQ2FsbGJhY2tIZWxw
ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZmlsZWFwaVxXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgogCQk8RmlsZQogCQkJUmVs
YXRpdmVQYXRoPSIuLlxjb25maWcuaCIKIAkJCT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEx
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCIKKworI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgorI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5j
LmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMu
aCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCisj
aW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlN5bmNDYWxs
YmFja0hlbHBlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFdvcmtlckNvbnRleHQqIHdvcmtl
ciwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3Vy
aXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgeworICAgICAgICBET01GaWxlU3lz
dGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3Jl
YXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxB
c3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOworICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjpp
c1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2No
ZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxl
RXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5
c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcyksIGZhbHNlKTsKK30KKwor
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2VyQ29udGV4dEZpbGVTeXN0ZW06Ondl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhXb3JrZXJDb250ZXh0KiB3b3JrZXIsIGludCB0eXBl
LCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAg
IGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpT
RUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFzeW5jRmlsZVN5
c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6
VHlwZT4odHlwZSk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVT
eXN0ZW1UeXBlKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRmlsZVN5c3RlbVN5
bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7CisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVT
eXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmls
ZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVy
LmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUpOworICAgIHJldHVybiBoZWxwZXIuZ2V0UmVz
dWx0KGVjKTsKK30KKwordm9pZCBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2
ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJDb250ZXh0KiB3b3JrZXIsIGNvbnN0IFN0cmluZyYg
dXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEtVUkwgY29tcGxldGVkVVJM
ID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjpp
c0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkg
fHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgeworICAgICAg
ICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZp
bGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKKyAgICBTdHJpbmcg
ZmlsZVBhdGg7CisgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVT
eXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkg
eworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2Fs
bGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJTkdfRVJSKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3Rl
bSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0
ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGZpbGVQYXRoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoV29ya2VyQ29udGV4dCogd29ya2VyLCBjb25zdCBT
dHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIEtVUkwg
Y29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICghQXN5bmNG
aWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NG
aWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJM
KSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlNFQ1VSSVRZX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGU7CisgICAg
U3RyaW5nIGZpbGVQYXRoOworICAgIGlmICghd29ya2VyLT5jb21wbGV0ZWRVUkwuaXNWYWxpZCgp
IHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5
cGUsIGZpbGVQYXRoKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVOQ09ESU5HX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFj
a0hlbHBlciByZWFkRmlsZVN5c3RlbUhlbHBlcjsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2Fs
RmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmNyZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZp
bGVTeXN0ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7CisgICAgUmVmUHRy
PERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVtID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0
UmVzdWx0KGVjKTsKKyAgICBpZiAoIWZpbGVTeXN0ZW0pCisgICAgICAgIHJldHVybiAwOworCisg
ICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxlU3lzdGVtLT5yb290KCktPmdldERpcmVj
dG9yeShmaWxlUGF0aCwgMCwgZWMpOworICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBF
X01JU01BVENIX0VSUikKKyAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0Rmls
ZShmaWxlUGF0aCwgMCwgZWMpOworCisgICAgcmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsKK30KKwor
Q09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6
VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5
KSwgZW51bV9taXNtYXRjaCk7CitDT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtl
ckNvbnRleHRGaWxlU3lzdGVtOjpQRVJTSVNURU5UKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5j
RmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVudW1fbWlzbWF0Y2gpOworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lm
bmRlZiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbV9oCisjZGVmaW5lIFdvcmtlckNvbnRleHRGaWxl
U3lzdGVtX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRW50cnlTeW5jOworY2xhc3MgRXJyb3JD
YWxsYmFjazsKK2NsYXNzIEZpbGVTeXN0ZW1DYWxsYmFjazsKKworY2xhc3MgV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW0geworcHVibGljOgorICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgeworICAgICAg
ICBURU1QT1JBUlksCisgICAgICAgIFBFUlNJU1RFTlQsCisgICAgfTsKKworICAgIHN0YXRpYyB2
b2lkIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFdvcmtlckNvbnRleHQqLCBpbnQgdHlwZSwgbG9u
ZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1TeW5jPiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyQ29udGV4
dCosIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRp
YyB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW50
cnlTeW5jPiB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3JrZXJDb250ZXh0
KiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBX
b3JrZXJDb250ZXh0RmlsZVN5c3RlbSgpOworICAgIH5Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbSgp
OyAgICAKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0u
aWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0
RmlsZVN5c3RlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgU3VwcGxlbWVudGFsPVdvcmtlckNvbnRleHQKKyAg
ICBdIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgVEVNUE9SQVJZID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVO
VCA9IDE7CisKKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSB2b2lkIHdl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9u
ZyBzaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBGaWxlU3lzdGVtQ2FsbGJhY2sgc3VjY2Vz
c0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2Fs
bGJhY2spOworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIERPTUZpbGVT
eXN0ZW1TeW5jIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbiB1bnNpZ25lZCBzaG9ydCB0
eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAg
W1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1VUkwoaW4gRE9NU3RyaW5nIHVybCwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRW50
cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Rmls
ZVN5c3RlbV0gRW50cnlTeW5jIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKGlu
IERPTVN0cmluZyB1cmwpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmli
dXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmlsZUVycm9yQ29uc3RydWN0b3Ig
RmlsZUVycm9yOworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lz
dGVtXSBGaWxlRXhjZXB0aW9uQ29uc3RydWN0b3IgRmlsZUV4Y2VwdGlvbjsKKyAgICB9OworCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9u
IDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDI0ICs2OCw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2Vu
dGVyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRl
ICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNs
dWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVk
ZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0u
aCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKLSNlbHNlCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJJREJGYWN0b3J5LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM3Nyw5MyArMzYwLDYgQEAgRXZlbnRUYXJnZXREYXRhKiBXb3Jr
ZXJDb250ZXh0OjplbnN1cmVFdgogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAK
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIFdvcmtlckNvbnRleHQ6OndlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lz
dGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQotewotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgp
IHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAg
RE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3Rh
dGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKLSAgICBpZiAoIUFzeW5jRmls
ZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7Ci0gICAgICAgIERPTUZpbGVT
eXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpj
cmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVx
dWVzdEZpbGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxs
YmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMpLCBmYWxz
ZSk7Ci19Ci0KLVBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdvcmtlckNvbnRleHQ6Ondl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6
aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgp
KSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5
cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwotICAgIGlmICgh
QXN5bmNGaWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAg
ZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVy
OwotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0
ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0
ZShoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCksIHRoaXMp
LCB0cnVlKTsKLSAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZvaWQgV29y
a2VyQ29udGV4dDo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcm
IHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBLVVJMIGNvbXBsZXRlZFVS
TCA9IGNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxh
YmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7Ci0gICAgICAgIERPTUZp
bGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9y
OjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlOwotICAgIFN0cmluZyBmaWxlUGF0
aDsKLSAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIUFzeW5jRmlsZVN5c3RlbTo6
Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7Ci0gICAg
ICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxsYmFjaywg
RmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpFTkNPRElOR19FUlIpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVh
ZEZpbGVTeXN0ZW0odGhpcywgdHlwZSwgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZmlsZVBhdGgpKTsKLX0KLQotUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IFdvcmtlckNvbnRleHQ6OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1TeW5jVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBl
YyA9IDA7Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwotICAgIGlm
ICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29t
cGxldGVkVVJMKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlNFQ1VSSVRZX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5
cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQo
KSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0
eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpFTkNPRElOR19F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJh
Y2tIZWxwZXIgcmVhZEZpbGVTeXN0ZW1IZWxwZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2Nh
bEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbSh0aGlzLCB0eXBlLCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpjcmVhdGUocmVhZEZpbGVTeXN0ZW1IZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIHJlYWRG
aWxlU3lzdGVtSGVscGVyLmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUpOwotICAgIFJlZlB0
cjxET01GaWxlU3lzdGVtU3luYz4gZmlsZVN5c3RlbSA9IHJlYWRGaWxlU3lzdGVtSGVscGVyLmdl
dFJlc3VsdChlYyk7Ci0gICAgaWYgKCFmaWxlU3lzdGVtKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIFJlZlB0cjxFbnRyeVN5bmM+IGVudHJ5ID0gZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXREaXJl
Y3RvcnkoZmlsZVBhdGgsIDAsIGVjKTsKLSAgICBpZiAoZWMgPT0gRmlsZUV4Y2VwdGlvbjo6VFlQ
RV9NSVNNQVRDSF9FUlIpCi0gICAgICAgIHJldHVybiBmaWxlU3lzdGVtLT5yb290KCktPmdldEZp
bGUoZmlsZVBhdGgsIDAsIGVjKTsKLQotICAgIHJldHVybiBlbnRyeS5yZWxlYXNlKCk7Ci19Ci0K
LUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4dDo6VEVNUE9SQVJZ
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5KSwgZW51bV9t
aXNtYXRjaCk7Ci1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHQ6
OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0
ZW50KSwgZW51bV9taXNtYXRjaCk7Ci0jZW5kaWYKLQogV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXI6
Ok9ic2VydmVyKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShyZXZpc2lv
biAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKi8KIApA
QCAtNDcsMTUgKzQ3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBCbG9i
OwotICAgIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jOwogICAgIGNsYXNzIERPTVVSTDsKICAgICBj
bGFzcyBEYXRhYmFzZTsKICAgICBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrOwogICAgIGNsYXNzIERh
dGFiYXNlU3luYzsKLSAgICBjbGFzcyBFbnRyeUNhbGxiYWNrOwotICAgIGNsYXNzIEVudHJ5U3lu
YzsKLSAgICBjbGFzcyBFcnJvckNhbGxiYWNrOwotICAgIGNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFj
azsKICAgICBjbGFzcyBJREJGYWN0b3J5OwogICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsK
ICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CkBAIC0xMzEsMTYgKzEyNiw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Owog
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBlbnVtIEZpbGVTeXN0ZW1UeXBlIHsK
LSAgICAgICAgICAgIFRFTVBPUkFSWSwKLSAgICAgICAgICAgIFBFUlNJU1RFTlQsCi0gICAgICAg
IH07Ci0gICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcg
bG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICAgICAgUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtU3luYz4gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxv
bmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHdlYmtpdFJlc29sdmVMb2Nh
bEZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICAgICAg
UGFzc1JlZlB0cjxFbnRyeVN5bmM+IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0jZW5kaWYKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKiB3b3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gbV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmdl
dCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmlkbAkocmV2aXNpb24gMTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE4ICsxMDQsNiBAQCBtb2R1bGUgdGhy
ZWFkcyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkxDb25z
dHJ1Y3RvciB3ZWJraXRVUkw7CiAKLSNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYg
RU5BQkxFX0ZJTEVfU1lTVEVNCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFS
WSA9IDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwotICAg
ICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtD
YWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGlu
IFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAg
ICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5bmMgd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcg
bG9uZyBzaXplKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotICAgICAgICBbVjhFbmFibGVkQXRS
dW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChp
biBET01TdHJpbmcgdXJsLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFbnRyeUNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKLSAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBFbnRy
eVN5bmMgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoaW4gRE9NU3RyaW5nIHVy
bCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLQotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
W1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxl
RXJyb3I7Ci0gICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZp
bGVTeXN0ZW1dIEZpbGVFeGNlcHRpb25Db25zdHJ1Y3RvciBGaWxlRXhjZXB0aW9uOwotI2VuZGlm
Ci0KICAgICAgICAgYXR0cmlidXRlIEFycmF5QnVmZmVyQ29uc3RydWN0b3IgQXJyYXlCdWZmZXI7
IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUgSW50OEFycmF5
Q29uc3RydWN0b3IgSW50OEFycmF5OyAvLyBVc2FibGUgd2l0aCBuZXcgb3BlcmF0b3IKICAgICAg
ICAgYXR0cmlidXRlIFVpbnQ4QXJyYXlDb25zdHJ1Y3RvciBVaW50OEFycmF5OyAvLyBVc2FibGUg
d2l0aCBuZXcgb3BlcmF0b3IK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128918</attachid>
            <date>2012-02-26 08:37:41 -0800</date>
            <delta_ts>2012-02-26 11:13:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120226204241.patch</filename>
            <type>text/plain</type>
            <size>27371</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTI2ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICBUaGlzIG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUg
b3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhlIGZpbGVhcGkvV29ya2VyQ29udGV4dEZp
bGVTeXN0ZW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06
OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRl
eHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1VUkwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKToKKyAgICAgICAgKiBmaWxlYXBpL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXb3JrZXJDb250ZXh0RmlsZVN5c3RlbSk6CisgICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjplbnN1cmVFdmVudFRhcmdl
dERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsOgorCiAyMDEyLTAyLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTW92ZSB3ZWJzb2NrZXRzIHRvIE1vZHVsZXMvd2Vic29ja2V0cwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDYgKzE2MjAsNyBAQCBpZiAo
RU5BQkxFX0ZJTEVfU1lTVEVNKQogICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJCYXNlLmNwcAog
ICAgICAgICBmaWxlYXBpL0ZpbGVXcml0ZXJTeW5jLmNwcAogICAgICAgICBmaWxlYXBpL0xvY2Fs
RmlsZVN5c3RlbS5jcHAKKyAgICAgICAgZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5j
cHAKICAgICAgICAgcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcAogICAgICkKICAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwpAQCAtMTY0Niw2ICsxNjQ3LDcgQEAgaWYgKEVOQUJM
RV9GSUxFX1NZU1RFTSkKICAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwKICAgICAg
ICAgZmlsZWFwaS9NZXRhZGF0YS5pZGwKICAgICAgICAgZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNr
LmlkbAorICAgICAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAogICAgICkK
IEVORElGICgpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24g
MTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9P
cGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBp
L1dlYktpdEJsb2JCdWlsZGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9maWxlYXBpL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0RPTUZvcm1EYXRhLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL0RPTVRva2VuTGlzdC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLnByaQkocmV2aXNpb24gMTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDcgQEAgSURMX0JJTkRJTkdT
ICs9IFwKICAgICAkJFBXRC9maWxlYXBpL01ldGFkYXRhLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFw
aS9NZXRhZGF0YUNhbGxiYWNrLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9XZWJLaXRCbG9iQnVp
bGRlci5pZGwgXAorICAgICQkUFdEL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRs
IFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaWRsIFwKICAgICAkJFBX
RC9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0RP
TVdpbmRvd1dlYkdMLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTE5OTIsNiArMTk5Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dv
cmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
aCBcCkBAIC00ODY2LDYgKzQ4NjgsNyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNv
cmUpL2ZpbGVhcGkvRmlsZVdyaXRlclN5bmMuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvTWV0
YWRhdGEuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwKKwkk
KFdlYkNvcmUpL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsIFwKIAogd2ViY29y
ZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxl
U3lzdGVtR3RrLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwODkzMikKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2ICs2ODQsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBmaWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24u
Y3BwIFwKICAgICBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIFwKICAgICBmaWxl
YXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcCBcCisgICAgZmlsZWFwaS9Xb3JrZXJDb250ZXh0Rmls
ZVN5c3RlbS5jcHAgXAogICAgIGhpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBcCiAg
ICAgaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmNwcCBcCiAgICAgaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTA4OTMyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsNiArODc0LDcg
QEAKICAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhLmlkbCcsCiAgICAgICAgICAgICAnZmls
ZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9XZWJLaXRC
bG9iQnVpbGRlci5pZGwnLAorICAgICAgICAgICAgJ2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uaWRsJywKICAgICAgICAgICAgICdodG1sL0RPTUZvcm1EYXRhLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
RE9NVG9rZW5MaXN0LmlkbCcsCkBAIC0yMzUxLDYgKzIzNTIsOCBAQAogICAgICAgICAgICAgJ2Zp
bGVhcGkvRmlsZVdyaXRlclN5bmMuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGVXcml0
ZXJTeW5jLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvV2ViS2l0RmxhZ3MuaCcsCisgICAgICAg
ICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAnLAorICAgICAgICAgICAg
J2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnZmlsZWFw
aS9Mb2NhbEZpbGVTeXN0ZW0uY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0xvY2FsRmlsZVN5
c3RlbS5oJywKICAgICAgICAgICAgICdmaWxlYXBpL01ldGFkYXRhLmgnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MzYzMCw2ICs3MzYzMCwzNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
PC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9ImZpbGVhcGkiCisJCQk+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxET01XaW5kb3dGaWxlU3lzdGVtLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxE
T01XaW5kb3dGaWxlU3lzdGVtLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlCYXNlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxTeW5jQ2FsbGJhY2tIZWxw
ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZmlsZWFwaVxXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgogCQk8RmlsZQogCQkJUmVs
YXRpdmVQYXRoPSIuLlxjb25maWcuaCIKIAkJCT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEx
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaCIKKworI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgorI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5j
LmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMu
aCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCisj
aW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlN5bmNDYWxs
YmFja0hlbHBlci5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2b2lkIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbShXb3JrZXJDb250ZXh0KiB3b3JrZXIsIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
UGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICghQXN5bmNGaWxlU3lz
dGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lz
dGVtKCkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBl
cnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZp
bGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsK
KyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNWYWxpZFR5cGUoZmlsZVN5c3RlbVR5cGUpKSB7
CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sodGhpcywgZXJyb3JDYWxs
YmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9j
YWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNp
emUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2ssIHRoaXMpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+
IFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29y
a2VyQ29udGV4dCogd29ya2VyLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFp
bGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7Cisg
ICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBz
dGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOworICAgIGlmICghQXN5bmNG
aWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKKyAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyOworICAg
IExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0ZW0odGhp
cywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShoZWxw
ZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCksIHRoaXMpLCB0cnVl
KTsKKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK3ZvaWQgV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyQ29u
dGV4dCogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsK
KyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmln
aW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1
ZXN0KGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxs
YmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNF
Q1VSSVRZX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXN5bmNGaWxlU3lz
dGVtOjpUeXBlIHR5cGU7CisgICAgU3RyaW5nIGZpbGVQYXRoOworICAgIGlmICghY29tcGxldGVk
VVJMLmlzVmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29t
cGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2No
ZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxl
RXJyb3I6OkVOQ09ESU5HX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTG9j
YWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbSh0aGlzLCB0eXBl
LCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBmaWxlUGF0aCkpOworfQorCitQYXNzUmVmUHRyPEVudHJ5U3luYz4gV29ya2Vy
Q29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdv
cmtlckNvbnRleHQqIHdvcmtlciwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGVjID0gMDsKKyAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29tcGxl
dGVVUkwodXJsKTsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAh
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cml0eU9yaWdp
bigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFzeW5j
RmlsZVN5c3RlbTo6VHlwZSB0eXBlOworICAgIFN0cmluZyBmaWxlUGF0aDsKKyAgICBpZiAoIXdv
cmtlci0+Y29tcGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0Zp
bGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKKyAgICAgICAgZWMg
PSBGaWxlRXhjZXB0aW9uOjpFTkNPRElOR19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIgcmVhZEZpbGVTeXN0ZW1IZWxwZXI7
CisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbSh0
aGlzLCB0eXBlLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUocmVhZEZpbGVTeXN0ZW1IZWxw
ZXIuc3VjY2Vzc0NhbGxiYWNrKCksIHJlYWRGaWxlU3lzdGVtSGVscGVyLmVycm9yQ2FsbGJhY2so
KSwgdGhpcyksIHRydWUpOworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gZmlsZVN5c3Rl
bSA9IHJlYWRGaWxlU3lzdGVtSGVscGVyLmdldFJlc3VsdChlYyk7CisgICAgaWYgKCFmaWxlU3lz
dGVtKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxFbnRyeVN5bmM+IGVudHJ5ID0g
ZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXREaXJlY3RvcnkoZmlsZVBhdGgsIDAsIGVjKTsKKyAgICBp
ZiAoZWMgPT0gRmlsZUV4Y2VwdGlvbjo6VFlQRV9NSVNNQVRDSF9FUlIpCisgICAgICAgIHJldHVy
biBmaWxlU3lzdGVtLT5yb290KCktPmdldEZpbGUoZmlsZVBhdGgsIDAsIGVjKTsKKworICAgIHJl
dHVybiBlbnRyeS5yZWxlYXNlKCk7Cit9CisKK0NPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGlu
dD4oV29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OlRFTVBPUkFSWSkgPT0gc3RhdGljX2Nhc3Q8aW50
PihBc3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSksIGVudW1fbWlzbWF0Y2gpOworQ09NUElMRV9B
U1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6UEVSU0lTVEVO
VCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpLCBlbnVt
X21pc21hdGNoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0
RmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2Vy
Q29udGV4dEZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW1f
aAorI2RlZmluZSBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbV9oCisKKyNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW50cnlDYWxsYmFjazsKK2Ns
YXNzIEVudHJ5U3luYzsKK2NsYXNzIEVycm9yQ2FsbGJhY2s7CitjbGFzcyBGaWxlU3lzdGVtQ2Fs
bGJhY2s7CitjbGFzcyBXb3JrZXJDb250ZXh0OworCitjbGFzcyBXb3JrZXJDb250ZXh0RmlsZVN5
c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CisgICAgICAgIFRFTVBP
UkFSWSwKKyAgICAgICAgUEVSU0lTVEVOVCwKKyAgICB9OworCisgICAgc3RhdGljIHZvaWQgd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyQ29udGV4dCosIGludCB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbVN5bmM+IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhXb3JrZXJDb250ZXh0KiwgaW50
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIHZvaWQg
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJDb250ZXh0KiwgY29uc3QgU3Ry
aW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+
IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdvcmtlckNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIFdvcmtlckNv
bnRleHRGaWxlU3lzdGVtKCk7CisgICAgfldvcmtlckNvbnRleHRGaWxlU3lzdGVtKCk7ICAgIAor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQorCisjZW5kaWYgLy8gV29ya2VyQ29udGV4dEZpbGVTeXN0ZW1faApJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lz
dGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21v
ZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJ
TEVfU1lTVEVNLAorICAgICAgICBTdXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAorICAgIF0gV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0geworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1Q
T1JBUlkgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsK
KworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUs
IGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5
bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGlu
IGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICBbVjhFbmFi
bGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTChpbiBET01TdHJpbmcgdXJsLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFbnRyeUNhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFj
ayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVt
XSBFbnRyeVN5bmMgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoaW4gRE9NU3Ry
aW5nIHVybCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJy
b3I7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZp
bGVFeGNlcHRpb25Db25zdHJ1Y3RvciBGaWxlRXhjZXB0aW9uOworICAgIH07CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA4OTMy
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsMjQgKzY4LDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5
c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUg
IkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxl
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2lu
Y2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgotI2Vsc2UKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzc3LDkzICszNjAsNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRl
eHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi17Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgewotICAgICAgICBET01GaWxl
U3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2Fz
dDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVt
Ojppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6
c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0Rmls
ZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6
Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcyksIGZhbHNlKTsKLX0K
LQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2VyQ29udGV4dDo6d2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWls
YWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0
YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7Ci0gICAgaWYgKCFBc3luY0Zp
bGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewotICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7Ci0gICAg
TG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlz
LCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBl
ci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUp
OwotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotdm9pZCBXb3JrZXJDb250
ZXh0Ojp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEtVUkwgY29tcGxldGVkVVJMID0gY29t
cGxldGVVUkwodXJsKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cml0eU9y
aWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3Rl
bTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0
ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAg
IGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0Zp
bGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgRE9N
RmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJy
b3I6OmNyZWF0ZShGaWxlRXJyb3I6OkVOQ09ESU5HX0VSUikpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5
c3RlbSh0aGlzLCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBmaWxlUGF0aCkpOwotfQotCi1QYXNzUmVmUHRyPEVu
dHJ5U3luYz4gV29ya2VyQ29udGV4dDo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNV
UkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsK
LSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3lu
Y0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vz
c0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRV
UkwpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKLSAg
ICBTdHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFB
c3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZp
bGVQYXRoKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVOQ09ESU5HX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBl
ciByZWFkRmlsZVN5c3RlbUhlbHBlcjsKLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5
c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNy
ZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0
ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7Ci0gICAgUmVmUHRyPERPTUZp
bGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVtID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0UmVzdWx0
KGVjKTsKLSAgICBpZiAoIWZpbGVTeXN0ZW0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVm
UHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxlU3lzdGVtLT5yb290KCktPmdldERpcmVjdG9yeShm
aWxlUGF0aCwgMCwgZWMpOwotICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01B
VENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxl
UGF0aCwgMCwgZWMpOwotCi0gICAgcmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsKLX0KLQotQ09NUElM
RV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0OjpURU1QT1JBUlkpID09IHN0
YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3JhcnkpLCBlbnVtX21pc21hdGNo
KTsKLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4dDo6UEVSU0lT
VEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpLCBl
bnVtX21pc21hdGNoKTsKLSNlbmRpZgotCiBXb3JrZXJDb250ZXh0OjpPYnNlcnZlcjo6T2JzZXJ2
ZXIoV29ya2VyQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDEwODkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC00Nywx
NSArNDcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEJsb2I7Ci0gICAg
Y2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CiAgICAgY2xhc3MgRE9NVVJMOwogICAgIGNsYXNzIERh
dGFiYXNlOwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3MgRGF0YWJhc2VT
eW5jOwotICAgIGNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci0gICAgY2xhc3MgRW50cnlTeW5jOwotICAg
IGNsYXNzIEVycm9yQ2FsbGJhY2s7Ci0gICAgY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwogICAg
IGNsYXNzIElEQkZhY3Rvcnk7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwogICAgIGNs
YXNzIFNjaGVkdWxlZEFjdGlvbjsKQEAgLTEzMSwxNiArMTI2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgewotICAgICAg
ICAgICAgVEVNUE9SQVJZLAotICAgICAgICAgICAgUEVSU0lTVEVOVCwKLSAgICAgICAgfTsKLSAg
ICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNp
emUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1T
eW5jPiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVVSTChjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVm
UHRyPEVudHJ5U3luYz4gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShy
ZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTggKzEwNCw2IEBAIG1vZHVsZSB0aHJlYWRzIHsK
IAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9y
IHdlYmtpdFVSTDsKIAotI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVf
RklMRV9TWVNURU0KLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsK
LSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0gICAgICAgIFtW
OEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNr
LCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxi
YWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgW1Y4
RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBET01GaWxlU3lzdGVtU3luYyB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNp
emUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGluIERPTVN0
cmluZyB1cmwsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJh
Y2spOwotICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEVudHJ5U3luYyB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChpbiBET01TdHJpbmcgdXJsKSByYWlz
ZXMgKEZpbGVFeGNlcHRpb24pOwotCi0gICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFcnJvckNvbnN0cnVjdG9yIEZpbGVFcnJvcjsK
LSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3Rl
bV0gRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9yIEZpbGVFeGNlcHRpb247Ci0jZW5kaWYKLQogICAg
ICAgICBhdHRyaWJ1dGUgQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciBBcnJheUJ1ZmZlcjsgLy8gVXNh
YmxlIHdpdGggbmV3IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBJbnQ4QXJyYXlDb25zdHJ1
Y3RvciBJbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRy
aWJ1dGUgVWludDhBcnJheUNvbnN0cnVjdG9yIFVpbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5l
dyBvcGVyYXRvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128923</attachid>
            <date>2012-02-26 11:13:50 -0800</date>
            <delta_ts>2012-02-26 20:25:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120226231850.patch</filename>
            <type>text/plain</type>
            <size>27515</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAyLTI2ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUgb3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhl
IGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uCisgICAgICAgIE5vbmUtZnVuY3Rpb25h
bCBjaGFuZ2VzLCBubyBuZXcgdGVzdHMgbmVjZXNzYXJ5LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW1TeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCk6
CisgICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0pOgorICAg
ICAgICAqIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
Q29udGV4dDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV29ya2VyQ29udGV4dCk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoKKwogMjAxMi0wMi0yNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd2Vic29ja2V0cyB0
byBNb2R1bGVzL3dlYnNvY2tldHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTYyMCw2ICsxNjIwLDcgQEAgaWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAgICAgICAgZmls
ZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHAKICAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5j
cHAKICAgICAgICAgZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGZpbGVhcGkv
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCiAgICAgICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN5
c3RlbS5jcHAKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKQEAgLTE2
NDYsNiArMTY0Nyw3IEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIGZpbGVhcGkv
RmlsZVdyaXRlclN5bmMuaWRsCiAgICAgICAgIGZpbGVhcGkvTWV0YWRhdGEuaWRsCiAgICAgICAg
IGZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwKKyAgICAgICAgZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGwKICAgICApCiBFTkRJRiAoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBCSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5pZGwg
XAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgXAorICAgICQo
V2ViQ29yZSkvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaHRtbC9ET01Gb3JtRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01Ub2tlbkxpc3QuaWRs
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDEwODkzMikKKysr
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjE2
LDYgKzIxNiw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvZmlsZWFwaS9NZXRhZGF0
YS5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwgXAogICAgICQk
UFdEL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsIFwKKyAgICAkJFBXRC9maWxlYXBpL1dv
cmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQXJyYXlC
dWZmZXJWaWV3LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsIFwK
ICAgICAkJFBXRC9odG1sL2NhbnZhcy9ET01XaW5kb3dXZWJHTC5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5OTIsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggXApAQCAtNDg2NSw3ICs0ODY3LDggQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5p
ZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwgXAogCSQoV2ViQ29y
ZSkvZmlsZWFwaS9NZXRhZGF0YS5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YUNh
bGxiYWNrLmlkbAorCSQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbCBcCisJ
JChXZWJDb3JlKS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAogCiB3ZWJjb3Jl
Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVT
eXN0ZW1HdGsuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA4OTMyKQorKysgU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5j
cHAgXAogICAgIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgXAogICAgIGZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIFwKKyAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmNwcCBcCiAgICAgaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIFwKICAg
ICBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdEltcGwuY3BwIFwKICAgICBoaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTg3NCw2ICs4NzQsNyBA
QAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaWRsJywKICAgICAgICAgICAgICdmaWxl
YXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL1dlYktpdEJs
b2JCdWlsZGVyLmlkbCcsCisgICAgICAgICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRE9NRm9ybURhdGEuaWRsJywKICAgICAgICAg
ICAgICdodG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9E
T01Ub2tlbkxpc3QuaWRsJywKQEAgLTIzNTEsNiArMjM1Miw4IEBACiAgICAgICAgICAgICAnZmls
ZWFwaS9GaWxlV3JpdGVyU3luYy5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRl
clN5bmMuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9XZWJLaXRGbGFncy5oJywKKyAgICAgICAg
ICAgICdmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCcsCisgICAgICAgICAgICAn
ZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oJywKICAgICAgICAgICAgICdmaWxlYXBp
L0xvY2FsRmlsZVN5c3RlbS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lz
dGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaCcsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTA4OTMy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTczNjMwLDYgKzczNjMwLDM0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQk8
L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iZmlsZWFwaSIKKwkJCT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERP
TVdpbmRvd0ZpbGVTeXN0ZW0uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeUJhc2UuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXFN5bmNDYWxsYmFja0hlbHBl
ci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxm
aWxlYXBpXFdvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxXb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGNvbmZpZy5oIgogCQkJPgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIgorCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisjaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMu
aCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5o
IgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJh
Y2tzLmgiCisjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU3luY0NhbGxi
YWNrSGVscGVyLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFdvcmtlckNvbnRleHQqIHdvcmtlciwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQ
YXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0
ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0
ZW0oKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVy
cm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmls
ZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwor
ICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsK
KyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxi
YWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2Nh
bEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6
ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgdGhpcyksIGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4g
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhXb3Jr
ZXJDb250ZXh0KiB3b3JrZXIsIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWls
YWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKKyAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0
YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7CisgICAgaWYgKCFBc3luY0Zp
bGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgeworICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7CisgICAg
TG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlz
LCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBl
ci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUp
OworICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKwordm9pZCBXb3JrZXJDb250
ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJDb250
ZXh0KiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQoreworICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOwor
ICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3QoY29tcGxldGVkVVJMKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxi
YWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VD
VVJJVFlfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBc3luY0ZpbGVTeXN0
ZW06OlR5cGUgdHlwZTsKKyAgICBTdHJpbmcgZmlsZVBhdGg7CisgICAgaWYgKCFjb21wbGV0ZWRV
UkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21w
bGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hl
ZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6RU5DT0RJTkdfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMb2Nh
bEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUs
IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHRoaXMsIGZpbGVQYXRoKSk7Cit9CisKK1Bhc3NSZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJD
b250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoV29y
a2VyQ29udGV4dCogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgZWMgPSAwOworICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0
ZVVSTCh1cmwpOworICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFz
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2lu
KCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRp
b246OlNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQXN5bmNG
aWxlU3lzdGVtOjpUeXBlIHR5cGU7CisgICAgU3RyaW5nIGZpbGVQYXRoOworICAgIGlmICghd29y
a2VyLT5jb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmls
ZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgeworICAgICAgICBlYyA9
IEZpbGVFeGNlcHRpb246OkVOQ09ESU5HX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciByZWFkRmlsZVN5c3RlbUhlbHBlcjsK
KyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRo
aXMsIHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBl
ci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygp
LCB0aGlzKSwgdHJ1ZSk7CisgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVt
ID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0UmVzdWx0KGVjKTsKKyAgICBpZiAoIWZpbGVTeXN0
ZW0pCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBm
aWxlU3lzdGVtLT5yb290KCktPmdldERpcmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOworICAgIGlm
IChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01BVENIX0VSUikKKyAgICAgICAgcmV0dXJu
IGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxlUGF0aCwgMCwgZWMpOworCisgICAgcmV0
dXJuIGVudHJ5LnJlbGVhc2UoKTsKK30KKworQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+
KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5KSwgZW51bV9taXNtYXRjaCk7CitDT01QSUxFX0FT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjpQRVJTSVNURU5U
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVudW1f
bWlzbWF0Y2gpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRG
aWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJD
b250ZXh0RmlsZVN5c3RlbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbV9o
CisjZGVmaW5lIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtX2gKKworI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRW50cnlDYWxsYmFjazsKK2NsYXNzIEVudHJ5U3luYzsKK2NsYXNzIEVycm9y
Q2FsbGJhY2s7CitjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7CitjbGFzcyBXb3JrZXJDb250ZXh0
OworCitjbGFzcyBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBG
aWxlU3lzdGVtVHlwZSB7CisgICAgICAgIFRFTVBPUkFSWSwKKyAgICAgICAgUEVSU0lTVEVOVCwK
KyAgICB9OworCisgICAgc3RhdGljIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2Vy
Q29udGV4dCosIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVt
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtU3luYyhXb3JrZXJDb250ZXh0KiwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNl
cHRpb25Db2RlJik7CisgICAgc3RhdGljIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTChXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1TeW5jVVJMKFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29k
ZSYpOworCitwcml2YXRlOgorICAgIFdvcmtlckNvbnRleHRGaWxlU3lzdGVtKCk7CisgICAgfldv
cmtlckNvbnRleHRGaWxlU3lzdGVtKCk7ICAgIAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9X
b3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBTdXBwbGVt
ZW50YWw9V29ya2VyQ29udGV4dAorICAgIF0gV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0geworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKKworICAgICAgICBbVjhFbmFibGVkQXRSdW50
aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQg
c2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZp
bGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxd
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRp
bWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1T
eW5jKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZp
bGVFeGNlcHRpb24pOworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZv
aWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChpbiBET01TdHJpbmcgdXJsLCBpbiBb
Q2FsbGJhY2ssIE9wdGlvbmFsXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0Nh
bGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAg
W1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBFbnRyeVN5bmMgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVN5bmNVUkwoaW4gRE9NU3RyaW5nIHVybCkgcmFpc2VzIChGaWxlRXhjZXB0
aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVt
XSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhF
bmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFeGNlcHRpb25Db25zdHJ1Y3RvciBGaWxl
RXhjZXB0aW9uOworICAgIH07CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA4OTMyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsMjQgKzY4LDcgQEAKICNp
bmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJET01G
aWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRl
ICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2lu
Y2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5o
IgotI2Vsc2UKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUg
IklEQkZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzc3LDkzICszNjAsNiBA
QCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRleHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgV29y
a2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBz
aXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgaWYgKCFBc3luY0Zp
bGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0Zp
bGVTeXN0ZW0oKSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRo
aXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlf
RVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5
cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5
cGUpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlw
ZSkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJv
ckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlw
ZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaywgdGhpcyksIGZhbHNlKTsKLX0KLQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
U3luYz4gV29ya2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBl
LCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAg
IGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpT
RUNVUklUWV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5
c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6
VHlwZT4odHlwZSk7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVT
eXN0ZW1UeXBlKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5
bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVT
eXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmls
ZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVy
LmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUpOwotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVz
dWx0KGVjKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0Ojp3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQot
ewotICAgIEtVUkwgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKLSAgICBpZiAoIUFz
eW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNj
ZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRl
ZFVSTCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBl
cnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5
cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQo
KSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0
eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFj
ayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OkVOQ09E
SU5HX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbSh0aGlzLCB0eXBlLCBSZXNvbHZlVVJJ
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBm
aWxlUGF0aCkpOwotfQotCi1QYXNzUmVmUHRyPEVudHJ5U3luYz4gV29ya2VyQ29udGV4dDo6d2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGNv
bXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkg
fHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlP
cmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4
Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBB
c3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKLSAgICBTdHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYg
KCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5
c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgewotICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OkVOQ09ESU5HX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciByZWFkRmlsZVN5c3RlbUhlbHBlcjsKLSAg
ICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMs
IHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBlci5z
dWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0
aGlzKSwgdHJ1ZSk7Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVtID0g
cmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLSAgICBpZiAoIWZpbGVTeXN0ZW0p
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxl
U3lzdGVtLT5yb290KCktPmdldERpcmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOwotICAgIGlmIChl
YyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01BVENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZp
bGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxlUGF0aCwgMCwgZWMpOwotCi0gICAgcmV0dXJu
IGVudHJ5LnJlbGVhc2UoKTsKLX0KLQotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihX
b3JrZXJDb250ZXh0OjpURU1QT1JBUlkpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lz
dGVtOjpUZW1wb3JhcnkpLCBlbnVtX21pc21hdGNoKTsKLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19j
YXN0PGludD4oV29ya2VyQ29udGV4dDo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihB
c3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpLCBlbnVtX21pc21hdGNoKTsKLSNlbmRpZgotCiBX
b3JrZXJDb250ZXh0OjpPYnNlcnZlcjo6T2JzZXJ2ZXIoV29ya2VyQ29udGV4dCogY29udGV4dCkK
ICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICoKICAqLwogCkBAIC00NywxNSArNDcsMTAgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEJsb2I7Ci0gICAgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CiAg
ICAgY2xhc3MgRE9NVVJMOwogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIERhdGFiYXNl
Q2FsbGJhY2s7CiAgICAgY2xhc3MgRGF0YWJhc2VTeW5jOwotICAgIGNsYXNzIEVudHJ5Q2FsbGJh
Y2s7Ci0gICAgY2xhc3MgRW50cnlTeW5jOwotICAgIGNsYXNzIEVycm9yQ2FsbGJhY2s7Ci0gICAg
Y2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwogICAgIGNsYXNzIElEQkZhY3Rvcnk7CiAgICAgY2xh
c3MgTm90aWZpY2F0aW9uQ2VudGVyOwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKQEAgLTEz
MSwxNiArMTI2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0
aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAg
IGVudW0gRmlsZVN5c3RlbVR5cGUgewotICAgICAgICAgICAgVEVNUE9SQVJZLAotICAgICAgICAg
ICAgUEVSU0lTVEVOVCwKLSAgICAgICAgfTsKLSAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAg
ICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAg
IHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHVybCwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gd2Via2l0UmVzb2x2
ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
KTsKLSNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
MTggKzEwNCw2IEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRp
dGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAotI2lmIGRlZmluZWQo
RU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgUEVSU0lTVEVOVCA9IDE7Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3Rl
bV0gdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBp
biBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFj
ayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVt
XSBET01GaWxlU3lzdGVtU3luYyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWdu
ZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7
Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMKGluIERPTVN0cmluZyB1cmwsIGluIFtDYWxsYmFjaywgT3B0
aW9uYWxdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlv
bmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgICAgICBbVjhFbmFibGVkQXRS
dW50aW1lPUZpbGVTeXN0ZW1dIEVudHJ5U3luYyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVt
U3luY1VSTChpbiBET01TdHJpbmcgdXJsKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotCi0gICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZp
bGVFcnJvckNvbnN0cnVjdG9yIEZpbGVFcnJvcjsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9y
IEZpbGVFeGNlcHRpb247Ci0jZW5kaWYKLQogICAgICAgICBhdHRyaWJ1dGUgQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvciBBcnJheUJ1ZmZlcjsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJhdG9yCiAgICAg
ICAgIGF0dHJpYnV0ZSBJbnQ4QXJyYXlDb25zdHJ1Y3RvciBJbnQ4QXJyYXk7IC8vIFVzYWJsZSB3
aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUgVWludDhBcnJheUNvbnN0cnVjdG9y
IFVpbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128942</attachid>
            <date>2012-02-26 20:25:18 -0800</date>
            <delta_ts>2012-02-28 11:53:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79449-20120227083019.patch</filename>
            <type>text/plain</type>
            <size>27998</size>
            <attacher name="Ashod Nakashian">ashodnakashian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAyLTI2ICBBc2hvZCBO
YWthc2hpYW4gIDxhc2hvZG5ha2FzaGlhbkB5YWhvby5jb20+CisKKyAgICAgICAgTW92ZSBGSUxF
X1NZU1RFTSBjb2RlIG91dCBvZiBXb3JrZXJDb250ZXh0IGFuZCBpbnRvIHRoZSBmaWxlYXBpIGZv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IG1vdmVzIEZJTEVfU1lTVEVNIGNvZGUgb3V0IG9mIFdvcmtlckNvbnRleHQgYW5kIGludG8gdGhl
IGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uCisgICAgICAgIE5vbmUtZnVuY3Rpb25h
bCBjaGFuZ2VzLCBubyBuZXcgdGVzdHMgbmVjZXNzYXJ5LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW1TeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCk6
CisgICAgICAgICogZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0pOgorICAg
ICAgICAqIGZpbGVhcGkvV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
Q29udGV4dDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV29ya2VyQ29udGV4dCk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoKKwogMjAxMi0wMi0yNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd2Vic29ja2V0cyB0
byBNb2R1bGVzL3dlYnNvY2tldHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTYyMCw2ICsxNjIwLDcgQEAgaWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAgICAgICAgZmls
ZWFwaS9GaWxlV3JpdGVyQmFzZS5jcHAKICAgICAgICAgZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5j
cHAKICAgICAgICAgZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGZpbGVhcGkv
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCiAgICAgICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN5
c3RlbS5jcHAKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKQEAgLTE2
NDYsNiArMTY0Nyw3IEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIGZpbGVhcGkv
RmlsZVdyaXRlclN5bmMuaWRsCiAgICAgICAgIGZpbGVhcGkvTWV0YWRhdGEuaWRsCiAgICAgICAg
IGZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwKKyAgICAgICAgZmlsZWFwaS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5pZGwKICAgICApCiBFTkRJRiAoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwODkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBCSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5pZGwg
XAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgXAorICAgICQo
V2ViQ29yZSkvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaHRtbC9ET01Gb3JtRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9ET01Ub2tlbkxpc3QuaWRs
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDEwODkzMikKKysr
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjE2
LDYgKzIxNiw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvZmlsZWFwaS9NZXRhZGF0
YS5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvTWV0YWRhdGFDYWxsYmFjay5pZGwgXAogICAgICQk
UFdEL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsIFwKKyAgICAkJFBXRC9maWxlYXBpL1dv
cmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQXJyYXlC
dWZmZXJWaWV3LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsIFwK
ICAgICAkJFBXRC9odG1sL2NhbnZhcy9ET01XaW5kb3dXZWJHTC5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5OTIsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggXApAQCAtNDg2NSw3ICs0ODY3LDggQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5p
ZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlV3JpdGVyU3luYy5pZGwgXAogCSQoV2ViQ29y
ZSkvZmlsZWFwaS9NZXRhZGF0YS5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YUNh
bGxiYWNrLmlkbAorCSQoV2ViQ29yZSkvZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmlkbCBcCisJ
JChXZWJDb3JlKS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbAogCiB3ZWJjb3Jl
Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVT
eXN0ZW1HdGsuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA4OTMyKQorKysgU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGZpbGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5j
cHAgXAogICAgIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgXAogICAgIGZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIFwKKyAgICBmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxl
U3lzdGVtLmNwcCBcCiAgICAgaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIFwKICAg
ICBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdEltcGwuY3BwIFwKICAgICBoaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDg5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTg3NCw2ICs4NzQsNyBA
QAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaWRsJywKICAgICAgICAgICAgICdmaWxl
YXBpL01ldGFkYXRhQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL1dlYktpdEJs
b2JCdWlsZGVyLmlkbCcsCisgICAgICAgICAgICAnZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRE9NRm9ybURhdGEuaWRsJywKICAgICAgICAg
ICAgICdodG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9E
T01Ub2tlbkxpc3QuaWRsJywKQEAgLTIzNTEsNiArMjM1Miw4IEBACiAgICAgICAgICAgICAnZmls
ZWFwaS9GaWxlV3JpdGVyU3luYy5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZVdyaXRl
clN5bmMuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9XZWJLaXRGbGFncy5oJywKKyAgICAgICAg
ICAgICdmaWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCcsCisgICAgICAgICAgICAn
ZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oJywKICAgICAgICAgICAgICdmaWxlYXBp
L0xvY2FsRmlsZVN5c3RlbS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lz
dGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaCcsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTA4OTMy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTczNjMwLDYgKzczNjMwLDM0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQk8
L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iZmlsZWFwaSIKKwkJCT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERP
TVdpbmRvd0ZpbGVTeXN0ZW0uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeUJhc2UuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXFN5bmNDYWxsYmFja0hlbHBl
ci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxm
aWxlYXBpXFdvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxXb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGNvbmZpZy5oIgogCQkJPgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIgorCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisjaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMu
aCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5o
IgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJh
Y2tzLmgiCisjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBXb3JrZXJDb250ZXh0
RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyQ29udGV4dCogd29ya2Vy
LCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzZWN1cmVDb250ZXh0ID0gd29ya2Vy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06Omlz
QXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vz
c0ZpbGVTeXN0ZW0oKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNr
KHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNV
UklUWV9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3Rl
bTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlw
ZT4odHlwZSk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0
ZW1UeXBlKSkgeworICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHdvcmtl
ciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01P
RElGSUNBVElPTl9FUlIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExvY2FsRmls
ZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0ZW0od29ya2VyLCBmaWxl
U3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaywgd29ya2VyKSwgZmFsc2UpOworfQorCitQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1TeW5jPiBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW1TeW5jKFdvcmtlckNvbnRleHQqIHdvcmtlciwgaW50IHR5cGUsIGxvbmcgbG9uZyBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVD
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKKyAgICAg
ICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRp
Y19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7CisgICAgaWYgKCFBc3luY0ZpbGVT
eXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgeworICAgICAgICBlYyA9IEZpbGVF
eGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7CisgICAgTG9j
YWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh3b3JrZXIs
IGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoaGVscGVy
LnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB3b3JrZXIpLCB0cnVl
KTsKKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK3ZvaWQgV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyQ29u
dGV4dCogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzZWN1cmVDb250ZXh0ID0gd29ya2VyLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxh
YmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVT
eXN0ZW0oKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChj
b21wbGV0ZWRVUkwpKSB7CisgICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2so
d29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VS
SVRZX0VSUikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXN5bmNGaWxlU3lzdGVt
OjpUeXBlIHR5cGU7CisgICAgU3RyaW5nIGZpbGVQYXRoOworICAgIGlmICghY29tcGxldGVkVVJM
LmlzVmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxl
dGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKKyAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1
bGVDYWxsYmFjayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6RU5DT0RJTkdfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMb2Nh
bEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHdvcmtlciwgdHlw
ZSwgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgd29ya2VyLCBmaWxlUGF0aCkpOworfQorCitQYXNzUmVmUHRyPEVudHJ5U3luYz4gV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJM
KFdvcmtlckNvbnRleHQqIHdvcmtlciwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGVjID0gMDsKKyAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29t
cGxldGVVUkwodXJsKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzZWN1cmVDb250ZXh0
ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFBc3luY0ZpbGVT
eXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6U0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBBc3luY0Zp
bGVTeXN0ZW06OlR5cGUgdHlwZTsKKyAgICBTdHJpbmcgZmlsZVBhdGg7CisgICAgaWYgKCFjb21w
bGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFBc3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVS
TChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNl
cHRpb246OkVOQ09ESU5HX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRmls
ZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciByZWFkRmlsZVN5c3RlbUhlbHBlcjsKKyAgICBMb2Nh
bEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHdvcmtlciwgdHlw
ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHJlYWRGaWxlU3lzdGVtSGVscGVyLnN1Y2Nl
c3NDYWxsYmFjaygpLCByZWFkRmlsZVN5c3RlbUhlbHBlci5lcnJvckNhbGxiYWNrKCksIHdvcmtl
ciksIHRydWUpOworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gZmlsZVN5c3RlbSA9IHJl
YWRGaWxlU3lzdGVtSGVscGVyLmdldFJlc3VsdChlYyk7CisgICAgaWYgKCFmaWxlU3lzdGVtKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxFbnRyeVN5bmM+IGVudHJ5ID0gZmlsZVN5
c3RlbS0+cm9vdCgpLT5nZXREaXJlY3RvcnkoZmlsZVBhdGgsIDAsIGVjKTsKKyAgICBpZiAoZWMg
PT0gRmlsZUV4Y2VwdGlvbjo6VFlQRV9NSVNNQVRDSF9FUlIpCisgICAgICAgIHJldHVybiBmaWxl
U3lzdGVtLT5yb290KCktPmdldEZpbGUoZmlsZVBhdGgsIDAsIGVjKTsKKworICAgIHJldHVybiBl
bnRyeS5yZWxlYXNlKCk7Cit9CisKK0NPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW06OlRFTVBPUkFSWSkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3lu
Y0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSksIGVudW1fbWlzbWF0Y2gpOworQ09NUElMRV9BU1NFUlQo
c3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0RmlsZVN5c3RlbTo6UEVSU0lTVEVOVCkgPT0g
c3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpLCBlbnVtX21pc21h
dGNoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVf
U1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyQ29udGV4dEZpbGVTeXN0ZW1faAorI2Rl
ZmluZSBXb3JrZXJDb250ZXh0RmlsZVN5c3RlbV9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CisKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW50cnlDYWxsYmFjazsKK2Ns
YXNzIEVudHJ5U3luYzsKK2NsYXNzIEVycm9yQ2FsbGJhY2s7CitjbGFzcyBGaWxlU3lzdGVtQ2Fs
bGJhY2s7CitjbGFzcyBXb3JrZXJDb250ZXh0OworCitjbGFzcyBXb3JrZXJDb250ZXh0RmlsZVN5
c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBGaWxlU3lzdGVtVHlwZSB7CisgICAgICAgIFRFTVBP
UkFSWSwKKyAgICAgICAgUEVSU0lTVEVOVCwKKyAgICB9OworCisgICAgc3RhdGljIHZvaWQgd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyQ29udGV4dCosIGludCB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbVN5bmM+IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhXb3JrZXJDb250ZXh0KiwgaW50
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIHZvaWQg
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJDb250ZXh0KiwgY29uc3QgU3Ry
aW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+
IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdvcmtlckNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIFdvcmtlckNv
bnRleHRGaWxlU3lzdGVtKCk7CisgICAgfldvcmtlckNvbnRleHRGaWxlU3lzdGVtKCk7ICAgIAor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQorCisjZW5kaWYgLy8gV29ya2VyQ29udGV4dEZpbGVTeXN0ZW1faApJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5pZGwJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dvcmtlckNvbnRleHRGaWxlU3lz
dGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21v
ZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJ
TEVfU1lTVEVNLAorICAgICAgICBTdXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAorICAgIF0gV29y
a2VyQ29udGV4dEZpbGVTeXN0ZW0geworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1Q
T1JBUlkgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsK
KworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUs
IGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5
bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGlu
IGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICBbVjhFbmFi
bGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTChpbiBET01TdHJpbmcgdXJsLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFbnRyeUNhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFj
ayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVt
XSBFbnRyeVN5bmMgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoaW4gRE9NU3Ry
aW5nIHVybCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJy
b3I7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZp
bGVFeGNlcHRpb25Db25zdHJ1Y3RvciBGaWxlRXhjZXB0aW9uOworICAgIH07CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA4OTMy
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsMjQgKzY4LDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5
c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUg
IkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxl
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2lu
Y2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgotI2Vsc2UKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzc3LDkzICszNjAsNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRl
eHQ6OmVuc3VyZUV2CiAgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi17Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgewotICAgICAgICBET01GaWxl
U3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHRoaXMsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2Fz
dDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVt
Ojppc1ZhbGlkVHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6
c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0Rmls
ZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6
Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcyksIGZhbHNlKTsKLX0K
LQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2VyQ29udGV4dDo6d2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWls
YWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0
YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7Ci0gICAgaWYgKCFBc3luY0Zp
bGVTeXN0ZW06OmlzVmFsaWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewotICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7Ci0gICAg
TG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlz
LCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBl
ci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUp
OwotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotdm9pZCBXb3JrZXJDb250
ZXh0Ojp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEtVUkwgY29tcGxldGVkVVJMID0gY29t
cGxldGVVUkwodXJsKTsKLSAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cml0eU9y
aWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3Rl
bTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0
ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAg
IGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhQXN5bmNGaWxlU3lzdGVtOjpjcmFja0Zp
bGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgRE9N
RmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh0aGlzLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJy
b3I6OmNyZWF0ZShGaWxlRXJyb3I6OkVOQ09ESU5HX0VSUikpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5
c3RlbSh0aGlzLCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBmaWxlUGF0aCkpOwotfQotCi1QYXNzUmVmUHRyPEVu
dHJ5U3luYz4gV29ya2VyQ29udGV4dDo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNV
UkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsK
LSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3lu
Y0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vz
c0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRV
UkwpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKLSAg
ICBTdHJpbmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFB
c3luY0ZpbGVTeXN0ZW06OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZp
bGVQYXRoKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVOQ09ESU5HX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBl
ciByZWFkRmlsZVN5c3RlbUhlbHBlcjsKLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5
c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHRoaXMsIHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNy
ZWF0ZShyZWFkRmlsZVN5c3RlbUhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0
ZW1IZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7Ci0gICAgUmVmUHRyPERPTUZp
bGVTeXN0ZW1TeW5jPiBmaWxlU3lzdGVtID0gcmVhZEZpbGVTeXN0ZW1IZWxwZXIuZ2V0UmVzdWx0
KGVjKTsKLSAgICBpZiAoIWZpbGVTeXN0ZW0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVm
UHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxlU3lzdGVtLT5yb290KCktPmdldERpcmVjdG9yeShm
aWxlUGF0aCwgMCwgZWMpOwotICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01B
VENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxl
UGF0aCwgMCwgZWMpOwotCi0gICAgcmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsKLX0KLQotQ09NUElM
RV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0OjpURU1QT1JBUlkpID09IHN0
YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3JhcnkpLCBlbnVtX21pc21hdGNo
KTsKLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4dDo6UEVSU0lT
VEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQpLCBl
bnVtX21pc21hdGNoKTsKLSNlbmRpZgotCiBXb3JrZXJDb250ZXh0OjpPYnNlcnZlcjo6T2JzZXJ2
ZXIoV29ya2VyQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDEwODkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC00Nywx
NSArNDcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEJsb2I7Ci0gICAg
Y2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CiAgICAgY2xhc3MgRE9NVVJMOwogICAgIGNsYXNzIERh
dGFiYXNlOwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3MgRGF0YWJhc2VT
eW5jOwotICAgIGNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci0gICAgY2xhc3MgRW50cnlTeW5jOwotICAg
IGNsYXNzIEVycm9yQ2FsbGJhY2s7Ci0gICAgY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwogICAg
IGNsYXNzIElEQkZhY3Rvcnk7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwogICAgIGNs
YXNzIFNjaGVkdWxlZEFjdGlvbjsKQEAgLTEzMSwxNiArMTI2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgewotICAgICAg
ICAgICAgVEVNUE9SQVJZLAotICAgICAgICAgICAgUEVSU0lTVEVOVCwKLSAgICAgICAgfTsKLSAg
ICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNp
emUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1T
eW5jPiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVVSTChjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgICAgICBQYXNzUmVm
UHRyPEVudHJ5U3luYz4gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShy
ZXZpc2lvbiAxMDg5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTggKzEwNCw2IEBAIG1vZHVsZSB0aHJlYWRzIHsK
IAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTENvbnN0cnVjdG9y
IHdlYmtpdFVSTDsKIAotI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVf
RklMRV9TWVNURU0KLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsK
LSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0gICAgICAgIFtW
OEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNr
LCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxi
YWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgW1Y4
RW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBET01GaWxlU3lzdGVtU3luYyB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNp
emUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
RmlsZVN5c3RlbV0gdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGluIERPTVN0
cmluZyB1cmwsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJh
Y2spOwotICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEVudHJ5U3luYyB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChpbiBET01TdHJpbmcgdXJsKSByYWlz
ZXMgKEZpbGVFeGNlcHRpb24pOwotCi0gICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZpbGVFcnJvckNvbnN0cnVjdG9yIEZpbGVFcnJvcjsK
LSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3Rl
bV0gRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9yIEZpbGVFeGNlcHRpb247Ci0jZW5kaWYKLQogICAg
ICAgICBhdHRyaWJ1dGUgQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciBBcnJheUJ1ZmZlcjsgLy8gVXNh
YmxlIHdpdGggbmV3IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBJbnQ4QXJyYXlDb25zdHJ1
Y3RvciBJbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRy
aWJ1dGUgVWludDhBcnJheUNvbnN0cnVjdG9yIFVpbnQ4QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5l
dyBvcGVyYXRvcgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>