<?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>177265</bug_id>
          
          <creation_ts>2017-09-20 13:49:50 -0700</creation_ts>
          <short_desc>Spelling and grammar dots should not overlap</short_desc>
          <delta_ts>2017-09-20 19:33:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>data:text/html,&lt;div contenteditable=&quot;true&quot;&gt;&lt;/div&gt;&lt;script&gt;document.querySelector(&quot;div&quot;).focus();document.execCommand(&quot;InsertText&quot;, false, &quot;to mooof or not to mooof. &quot;);document.querySelector(&quot;div&quot;).blur();&lt;/script&gt;</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>hyatt</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350946</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 13:49:50 -0700</bug_when>
    <thetext>Spelling and grammar error dots may overlap. But they should not.

To see this issue you can perform the following steps in Safari.

1. Ensure that Check Spelling While Typing and Check Grammar with Spelling are enabled under Edit &gt; Spelling and Grammar.
2. Visit &lt;data:text/html,&lt;div contenteditable=&quot;true&quot;&gt;&lt;/div&gt;&lt;script&gt;document.querySelector(&quot;div&quot;).focus();document.execCommand(&quot;InsertText&quot;, false, &quot;to mooof or not to mooof. &quot;);document.querySelector(&quot;div&quot;).blur();&lt;/script&gt;&gt;

Compare the visual appearance in Safari with the visual appearance of copying and pasting &quot;to mooof or not to mooof. &quot; in TextEdit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350947</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-20 13:50:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/34556424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350975</commentid>
    <comment_count>2</comment_count>
      <attachid>321366</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:18:44 -0700</bug_when>
    <thetext>Created attachment 321366
Patch and unit tests

The implementation of subdivide() is derived from an algorithm that Said Abou-Hallawa came up with. I added unit tests to avoid creating platform-specific pixel tests (we do not run pixel tests by default).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350977</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 14:20:33 -0700</bug_when>
    <thetext>Attachment 321366 did not pass style-queue:


ERROR: Source/WebCore/rendering/Subrange.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 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>1350978</commentid>
    <comment_count>4</comment_count>
      <attachid>321368</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:21:52 -0700</bug_when>
    <thetext>Created attachment 321368
[Screenshot] Before patch

The screenshot reflects the behavior in shipping Safari as of the time of writing (dots are painted upside down; corrected in bug #176949).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350979</commentid>
    <comment_count>5</comment_count>
      <attachid>321369</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:23:25 -0700</bug_when>
    <thetext>Created attachment 321369
[Screenshot] After patch

The screenshot reflects a WebKit build that includes the fix for bug #176949.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350980</commentid>
    <comment_count>6</comment_count>
      <attachid>321370</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:23:58 -0700</bug_when>
    <thetext>Created attachment 321370
[Screenshot] TextEdit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350981</commentid>
    <comment_count>7</comment_count>
      <attachid>321371</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:25:27 -0700</bug_when>
    <thetext>Created attachment 321371
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350984</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 14:28:25 -0700</bug_when>
    <thetext>Attachment 321371 did not pass style-queue:


ERROR: Source/WebCore/rendering/Subrange.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 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>1350990</commentid>
    <comment_count>9</comment_count>
      <attachid>321373</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:34:11 -0700</bug_when>
    <thetext>Created attachment 321373
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350991</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 14:36:44 -0700</bug_when>
    <thetext>Attachment 321373 did not pass style-queue:


ERROR: Source/WebCore/rendering/Subrange.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 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>1350997</commentid>
    <comment_count>11</comment_count>
      <attachid>321373</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-20 14:48:10 -0700</bug_when>
    <thetext>Comment on attachment 321373
Patch and unit tests

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

&gt; Source/WebCore/rendering/Subrange.h:34
&gt; +struct Subrange {

I think this name of this class and the file need a little more qualification. Maybe MarkerSubrange?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351000</commentid>
    <comment_count>12</comment_count>
      <attachid>321373</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-09-20 14:50:38 -0700</bug_when>
    <thetext>Comment on attachment 321373
Patch and unit tests

I think TextSubrange may be a little less generic, and lets people know we&apos;re talking about text ranges.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351002</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 14:55:07 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; Comment on attachment 321373 [details]
&gt; Patch and unit tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321373&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/Subrange.h:34
&gt; &gt; +struct Subrange {
&gt; 
&gt; I think this name of this class and the file need a little more
&gt; qualification. Maybe MarkerSubrange?

(In reply to Dave Hyatt from comment #12)
&gt; Comment on attachment 321373 [details]
&gt; Patch and unit tests
&gt; 
&gt; I think TextSubrange may be a little less generic, and lets people know
&gt; we&apos;re talking about text ranges.

After talking with Dave, I&apos;ll take Simon&apos;s suggestion and rename the class from Subrange to MarkerSubrange before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351048</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-20 16:13:36 -0700</bug_when>
    <thetext>Committed r222298: &lt;http://trac.webkit.org/changeset/222298&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321366</attachid>
            <date>2017-09-20 14:18:44 -0700</date>
            <delta_ts>2017-09-20 14:25:26 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-177265-20170920141843.patch</filename>
            <type>text/plain</type>
            <size>39716</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJjY2I1ZGU2OWI1ZDRk
YmUzM2Q5Y2M0OWY0ODA4MDFjYjgyZWRjMS4uNWY5YTI4MWVmZjBjNzhkZjkzZTliODBmZjE1Mjhm
NWRmNWU0YTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE3LTA5LTIwICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBTcGVsbGluZyBhbmQgZ3Jh
bW1hciBkb3RzIHNob3VsZCBub3Qgb3ZlcmxhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU1
NjQyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IGxpbmUgbWF5IGNvbnRhaW4gYm90aCBzcGVsbGluZyBhbmQgZ3JhbW1hciBlcnJvcnMgc3VjaCB0
aGF0IHRoZXNlIGVycm9ycyBvdmVybGFwLgorICAgICAgICBGb3IgZXhhbXBsZSwgInRvIG1vb29m
IG9yIG5vdCB0byBtb29vZi4iLiBJdCBpcyBtb3JlIHBsZWFzaW5nIGFlc3RoZXRpY2FsbHkgdG8K
KyAgICAgICAgcGFpbnQgc3BlbGxpbmcgYW5kIGdyYW1tYXIgZG90cyBzdWNoIHRoYXQgdGhleSBk
byBub3Qgb3ZlcmxhcC4gVGhpcyBhbHNvIG1hdGNoZXMKKyAgICAgICAgQXBwS2l0J3MgYmVoYXZp
b3IuCisKKyAgICAgICAgQSBzaWRlIGJlbmVmaXQgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBh
ZGRzIHN1cHBvcnQgaW5mcmFzdHJ1Y3R1cmUgdG93YXJkcworICAgICAgICBpbXBsZW1lbnRpbmcg
dGhlIENTUyBQc2V1ZG8tRWxlbWVudHMgTW9kdWxlIExldmVsIDQgcHNldWRvIGVsZW1lbnRzIDo6
c3BlbGxpbmctZXJyb3IKKyAgICAgICAgYW5kIDo6Z3JhbW1hci1lcnJvciAoc2VlIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Nzg0PikuCisgICAgICAgIEl0IHdp
bGwgYWxzbyBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBhZGQgOjppbmFjdGl2ZS1zZWxlY3Rp
b24gYW5kIGFsbG93IHVzCisgICAgICAgIHRvIG1ha2UgOjpzZWxlY3Rpb24gY29uZm9ybSB0byBD
U1MgUHNldWRvLUVsZW1lbnRzIE1vZHVsZSBMZXZlbCA0LgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRN
YXJrZXIpOiBNb2RpZmllZCB0byB0YWtlIGEgY29uc3QgU3VicmFuZ2UmIGluc3RlYWQKKyAgICAg
ICAgb2YgYSBSZW5kZXJlZERvY3VtZW50TWFya2VyJi4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKTogTW9kaWZpZWQgdG8gdGFrZSBhIGNvbnN0
IFN1YnJhbmdlJiBpbnN0ZWFkCisgICAgICAgIG9mIGEgUmVuZGVyZWREb2N1bWVudE1hcmtlciYg
YW5kIHRha2UgYSBib29sZWFuIGFzIHRvIHdoZXRoZXIgdGhlIHRleHQgbWF0Y2ggaXMgYWN0aXZl
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcnMp
OiBDb2xsZWN0IHRoZSBzdWJyYW5nZXMgdGhhdCBuZWVkIHRvIGJlCisgICAgICAgIHBhaW50ZWQs
IHN1YmRpdmlkZSB0aGVtIHByZXNlcnZpbmcgb25seSB0aGUgZnJvbnRtb3N0IHN1YnJhbmdlIHdo
ZW4gdHdvIG9yIG1vcmUgc3VicmFuZ2VzCisgICAgICAgIG92ZXJsYXAgYW5kIHBhaW50IHRoZSBy
ZXN1bHRpbmcgc3VicmFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6bGluZVN0eWxlRm9yTWFya2Vy
VHlwZSk6IERlbGV0ZWQ7IGNvbnZlcnRlZCB0byBhIGxhbWJkYSBmdW5jdGlvbiBpbmxpbmVkCisg
ICAgICAgIGluIHBhaW50RG9jdW1lbnRNYXJrZXIoKSBhcyB0aGlzIGlzIHRoZSBvbmx5IHBsYWNl
IHdlIG1hZGUgdXNlIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICogcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU3VicmFuZ2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnN1YmRpdmlkZSk6CisgICAgICAgICogcmVuZGVyaW5nL1N1YnJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VicmFuZ2U6OlN1YnJhbmdlKToKKworMjAx
Ny0wOS0yMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgUmVu
ZGVyZWREb2N1bWVudE1hcmtlci5oIHNob3VsZCBpbmNsdWRlIERvY3VtZW50TWFya2VyLmgKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzI2MwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOTljNzhiNjAwNWNmMjA5MjBiZTg0ODQxNjcxOGMwY2QyMzZlNzE1MC4uY2Q5N2JiZmM4YmU4
ZGNiZWM0YjA4ODA1OWJhMmZiMTc0NGFmZjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ4OSw2ICs2NDg5LDggQEAKIAkJ
Q0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIx
QjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAw
MjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKKwkJQ0UxODY2NDQxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTg2NjQyMUY3MkU1
QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAgKi87IH07CisJCUNFMTg2NjQ1MUY3MkU1QjQwMEEw
Q0FCNiAvKiBTdWJyYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBE
RjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERG
MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsK
IAkJQ0UyODQ5ODkxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lcy5jcHAgKi87IH07CiAJCUNFNkRBREY5MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjcxQzU5MUU2QTAwM0Y2QTg4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgKi87IH07CkBAIC0xNTI2NSw2
ICsxNTI2Nyw4IEBACiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDhDM0NG
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA4QzNEMDE1MkI1OTlBMDAyMUI4
QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNFMTg2NjQyMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdWJyYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdWJyYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4NjFDQTM2
MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4ODFDQTM2MTQ2MDBCNEE1
N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXMuY3BwOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIy
Nzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2
ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjEwNSw2ICsyNjEw
OSw4IEBACiAJCQkJRTRFOUIxMTgxODEwOTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRS
ZXNvbHZlci5oICovLAogCQkJCTU4MkNCMDU0MUE3OEEyQjIwMEFGRkNDNCAvKiBTaW1wbGVMaW5l
TGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwICovLAogCQkJCTU4MkNCMDUyMUE3OEExNEIw
MEFGRkNDNCAvKiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCAqLywKKwkJ
CQlDRTE4NjY0MjFGNzJFNUI0MDBBMENBQjYgLyogU3VicmFuZ2UuY3BwICovLAorCQkJCUNFMTg2
NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5oICovLAogCQkJCUE4Q0ZGMDRDMEExNTRG
MDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oICovLAogCQkJCTBGNTREQ0UzMTg4MTA1MUQwMDNF
RURCQiAvKiBUZXh0QXV0b1NpemluZy5jcHAgKi8sCiAJCQkJMEY1NERDRTQxODgxMDUxRDAwM0VF
REJCIC8qIFRleHRBdXRvU2l6aW5nLmggKi8sCkBAIC0zMDE4NCw2ICszMDE5MCw3IEBACiAJCQkJ
RDAwMEVEMjgxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxRkM0MEZCQTE2NTVDQ0I5MDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDQxMjUxRjEyRDAwM0VGMjY5IC8qIFN1Ym1p
dElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UxODY2NDUxRjcyRTVCNDAwQTBDQUI2
IC8qIFN1YnJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzc0ODBBREJBNURFMDBBNDU1
NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1OUE3RDEzMEI2
REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4
RjZCMDIwREI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNDA2OCw2ICszNDA3NSw3IEBACiAJCQkJRDAwMEVEMjcxMUMxQjlDRDAwQzQ3NzI2
IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQzQwRkI5MTY1NUND
QjYwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1NUIzREQzMTI1MUYxMkQwMDNFRjI2OSAvKiBTdWJtaXRJbnB1dFR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0UxODY2NDQxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDRjE1ODlCMUVCQzRDRkQwMEQ0QkZCNyAvKiBTdWJyZXNvdXJj
ZUludGVncml0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0UyMjdFNDBBRjU4OUFEMDBENDgz
MjQgLyogU3VicmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U4RkFEQzQx
OTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1NzVm
YTA2YWRlNjBjNTAxM2FlZTQ1MWI3ZTQzYTkxZDMwZjJmZDViLi42YmEzYTI2Y2M0ODYzMWRmNDc3
ZmU4OTM3ODc5MGM4OTlmZTE3MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRl
cmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJTdWJyYW5nZS5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0
UGFpbnRTdHlsZS5oIgpAQCAtNzgyLDI5ICs3ODMsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRl
JgogICAgICAgICBjb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xv
Y2t3aXNlKSk7CiB9CiAKLXN0YXRpYyBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2VyTGlu
ZVN0eWxlIGxpbmVTdHlsZUZvck1hcmtlclR5cGUoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUg
bWFya2VyVHlwZSkKLXsKLSAgICBzd2l0Y2ggKG1hcmtlclR5cGUpIHsKLSAgICBjYXNlIERvY3Vt
ZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9j
dW1lbnRNYXJrZXJTcGVsbGluZ0xpbmVTdHlsZTsKLSAgICBjYXNlIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyOgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckdy
YW1tYXJMaW5lU3R5bGU7Ci0gICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6Q29ycmVjdGlvbkluZGlj
YXRvcjoKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJBdXRv
Y29ycmVjdGlvblJlcGxhY2VtZW50TGluZVN0eWxlOwotICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6
OkRpY3RhdGlvbkFsdGVybmF0aXZlczoKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6
RG9jdW1lbnRNYXJrZXJEaWN0YXRpb25BbHRlcm5hdGl2ZXNMaW5lU3R5bGU7Ci0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRl
cm5hdGl2ZXM6Ci0gICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgVGV4dENoZWNraW5nRGljdGF0aW9u
UGhyYXNlV2l0aEFsdGVybmF0aXZlc0xpbmVTdHlsZSBhbmQgcmVtb3ZlIHRoZSBQTEFURk9STShJ
T1MpLWd1YXJkLgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpUZXh0Q2hlY2tpbmdE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTGluZVN0eWxlOwotI2VuZGlmCi0gICAgZGVm
YXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2VyU3BlbGxpbmdMaW5lU3R5bGU7Ci0gICAgfQotfQot
Ci12b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXImIG1hcmtlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCkKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgU3Vi
cmFuZ2UmIHN1YnJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250KQogewogICAgIC8vIE5ldmVyIHByaW50IHNwZWxsaW5nL2dyYW1tYXIgbWFya2Vy
cyAoNTMyNzg4NykKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkpCkBA
IC04MTgsMTYgKzc5NywxNiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaQogCiAgICAgLy8gRGV0
ZXJtaW5lIHdoZXRoZXIgd2UgbmVlZCB0byBtZWFzdXJlIHRleHQKICAgICBib29sIG1hcmtlclNw
YW5zV2hvbGVCb3ggPSB0cnVlOwotICAgIGlmIChtX3N0YXJ0IDw9IG1hcmtlci5zdGFydE9mZnNl
dCgpKQorICAgIGlmIChtX3N0YXJ0IDw9IHN1YnJhbmdlLnN0YXJ0T2Zmc2V0KQogICAgICAgICBt
YXJrZXJTcGFuc1dob2xlQm94ID0gZmFsc2U7Ci0gICAgaWYgKChlbmQoKSArIDEpICE9IG1hcmtl
ci5lbmRPZmZzZXQoKSkgLy8gZW5kIHBvaW50cyBhdCB0aGUgbGFzdCBjaGFyLCBub3QgcGFzdCBp
dAorICAgIGlmICgoZW5kKCkgKyAxKSAhPSBzdWJyYW5nZS5lbmRPZmZzZXQpIC8vIEVuZCBwb2lu
dHMgYXQgdGhlIGxhc3QgY2hhciwgbm90IHBhc3QgaXQKICAgICAgICAgbWFya2VyU3BhbnNXaG9s
ZUJveCA9IGZhbHNlOwogICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbikKICAg
ICAgICAgbWFya2VyU3BhbnNXaG9sZUJveCA9IGZhbHNlOwogCiAgICAgaWYgKCFtYXJrZXJTcGFu
c1dob2xlQm94KSB7Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBjbGFtcGVkT2Zm
c2V0KG1hcmtlci5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24g
PSBjbGFtcGVkT2Zmc2V0KG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgICAgIHVuc2lnbmVkIHN0
YXJ0UG9zaXRpb24gPSBjbGFtcGVkT2Zmc2V0KHN1YnJhbmdlLnN0YXJ0T2Zmc2V0KTsKKyAgICAg
ICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSBjbGFtcGVkT2Zmc2V0KHN1YnJhbmdlLmVuZE9mZnNl
dCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24p
CiAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0ZDo6bWluKGVuZFBvc2l0aW9uLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV90cnVuY2F0aW9uKSk7CkBAIC04NDUsNiArODI0LDI3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pCiAgICAgICAgIHdpZHRoID0gbWFya2VyUmVjdC53aWR0aCgpOwog
ICAgIH0KICAgICAKKyAgICBhdXRvIGxpbmVTdHlsZUZvclN1YnJhbmdlVHlwZSA9IFtdIChTdWJy
YW5nZTo6VHlwZSB0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNl
IFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDo6RG9jdW1lbnRNYXJrZXJTcGVsbGluZ0xpbmVTdHlsZTsKKyAgICAgICAgY2FzZSBTdWJy
YW5nZTo6R3JhbW1hckVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6
RG9jdW1lbnRNYXJrZXJHcmFtbWFyTGluZVN0eWxlOworICAgICAgICBjYXNlIFN1YnJhbmdlOjpD
b3JyZWN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRN
YXJrZXJBdXRvY29ycmVjdGlvblJlcGxhY2VtZW50TGluZVN0eWxlOworICAgICAgICBjYXNlIFN1
YnJhbmdlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckRpY3RhdGlvbkFsdGVybmF0aXZlc0xpbmVTdHlsZTsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGNhc2UgU3VicmFuZ2U6OkRpY3RhdGlvblBocmFz
ZVdpdGhBbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICAvLyBGSVhNRTogUmVuYW1lIFRleHRDaGVj
a2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNMaW5lU3R5bGUgYW5kIHJlbW92ZSB0
aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQ6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNMaW5lU3R5bGU7
CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJT
cGVsbGluZ0xpbmVTdHlsZTsKKyAgICAgICAgfQorICAgIH07CisKICAgICAvLyBJTVBPUlRBTlQ6
IFRoZSBtaXNzcGVsbGluZyB1bmRlcmxpbmUgaXMgbm90IGNvbnNpZGVyZWQgd2hlbiBjYWxjdWxh
dGluZyB0aGUgdGV4dCBib3VuZHMsIHNvIHdlIGhhdmUgdG8KICAgICAvLyBtYWtlIHN1cmUgdG8g
Zml0IHdpdGhpbiB0aG9zZSBib3VuZHMuICBUaGlzIG1lYW5zIHRoZSB0b3AgcGl4ZWwocykgb2Yg
dGhlIHVuZGVybGluZSB3aWxsIG92ZXJsYXAgdGhlCiAgICAgLy8gYm90dG9tIHBpeGVsKHMpIG9m
IHRoZSBnbHlwaHMgaW4gc21hbGxlciBmb250IHNpemVzLiAgVGhlIGFsdGVybmF0aXZlcyBhcmUg
dG8gaW5jcmVhc2UgdGhlIGxpbmUgc3BhY2luZyAoYmFkISEpCkBAIC04NjIsMTUgKzg2MiwxNSBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaQogICAgICAgICAvLyBJbiBsYXJnZXIgZm9udHMsIHRo
b3VnaCwgcGxhY2UgdGhlIHVuZGVybGluZSB1cCBuZWFyIHRoZSBiYXNlbGluZSB0byBwcmV2ZW50
IGEgYmlnIGdhcC4KICAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ID0gYmFzZWxpbmUgKyAyOwogICAg
IH0KLSAgICBjb250ZXh0LmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoRmxvYXRQb2ludChib3hP
cmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0
aCwgbGluZVN0eWxlRm9yTWFya2VyVHlwZShtYXJrZXIudHlwZSgpKSk7CisgICAgY29udGV4dC5k
cmF3TGluZUZvckRvY3VtZW50TWFya2VyKEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0
LCBib3hPcmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0KSwgd2lkdGgsIGxpbmVTdHlsZUZvclN1
YnJhbmdlVHlwZShzdWJyYW5nZS50eXBlKSk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBv
aW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1hcmtlciwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKK3ZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFN1YnJhbmdlJiBzdWJyYW5nZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBpc0FjdGl2
ZU1hdGNoKQogewogICAgIGlmICghcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLm1hcmtlZFRl
eHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3Ig
Y29sb3IgPSBtYXJrZXIuaXNBY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50aGVtZSgpLnBsYXRm
b3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1lKCku
cGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOworICAgIGF1dG8gY29s
b3IgPSBpc0FjdGl2ZU1hdGNoID8gcmVuZGVyZXIoKS50aGVtZSgpLnBsYXRmb3JtQWN0aXZlVGV4
dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1lKCkucGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29u
dGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEK
IApAQCAtODc5LDggKzg3OSw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hN
YXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAgICAgTGF5b3V0
VW5pdCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dpY2FsVG9wKCkg
LSBzZWxlY3Rpb25Ub3AoKTsKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRS
ZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVksIDAsIHRoaXMtPnNlbGVj
dGlvbkhlaWdodCgpKTsKIAotICAgIHVuc2lnbmVkIHNQb3MgPSBjbGFtcGVkT2Zmc2V0KG1hcmtl
ci5zdGFydE9mZnNldCgpKTsKLSAgICB1bnNpZ25lZCBlUG9zID0gY2xhbXBlZE9mZnNldChtYXJr
ZXIuZW5kT2Zmc2V0KCkpOworICAgIHVuc2lnbmVkIHNQb3MgPSBjbGFtcGVkT2Zmc2V0KHN1YnJh
bmdlLnN0YXJ0T2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBlUG9zID0gY2xhbXBlZE9mZnNldChzdWJy
YW5nZS5lbmRPZmZzZXQpOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHls
ZSk7CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVjdGlvblJl
Y3QsIHNQb3MsIGVQb3MpOwogCkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UG8KIAogICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhX
cml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xvcik7CiB9Ci0gICAgCisKIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGJvb2wgYmFja2dyb3VuZCkKIHsKICAgICBpZiAoIXJl
bmRlcmVyKCkudGV4dE5vZGUoKSkKQEAgLTg5Nyw2ICs4OTcsMzAgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UG8KIAogICAgIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkubWFya2Vyc0ZvcihyZW5kZXJlcigpLnRl
eHROb2RlKCkpOwogCisgICAgYXV0byBtYXJrZXJUeXBlRm9yU3VicmFuZ2VUeXBlID0gW10gKERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgorICAgICAgICAgICAgcmV0
dXJuIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yOworICAgICAgICBjYXNlIERvY3VtZW50TWFya2Vy
OjpHcmFtbWFyOgorICAgICAgICAgICAgcmV0dXJuIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3I7Cisg
ICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3I6CisgICAgICAg
ICAgICByZXR1cm4gU3VicmFuZ2U6OkNvcnJlY3Rpb247CisgICAgICAgIGNhc2UgRG9jdW1lbnRN
YXJrZXI6OlRleHRNYXRjaDoKKyAgICAgICAgICAgIHJldHVybiBTdWJyYW5nZTo6VGV4dE1hdGNo
OworICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6Cisg
ICAgICAgICAgICByZXR1cm4gU3VicmFuZ2U6OkRpY3RhdGlvbkFsdGVybmF0aXZlczsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFz
ZVdpdGhBbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICByZXR1cm4gU3VicmFuZ2U6OkRpY3RhdGlv
blBocmFzZVdpdGhBbHRlcm5hdGl2ZXM7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBTdWJyYW5nZTo6VW5tYXJrZWQ7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgVmVjdG9yPFN1YnJhbmdlPiBzdWJyYW5nZXM7CisgICAgc3VicmFuZ2VzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobWFya2Vycy5zaXplKCkpOworCiAgICAgLy8gR2l2ZSBhbnkgZG9jdW1lbnQg
bWFya2VycyB0aGF0IHRvdWNoIHRoaXMgcnVuIGEgY2hhbmNlIHRvIGRyYXcgYmVmb3JlIHRoZSB0
ZXh0IGhhcyBiZWVuIGRyYXduLgogICAgIC8vIE5vdGUgZW5kKCkgcG9pbnRzIGF0IHRoZSBsYXN0
IGNoYXIsIG5vdCBvbmUgcGFzdCBpdCBsaWtlIGVuZE9mZnNldCBhbmQgcmFuZ2VzIGRvLgogICAg
IGZvciAoYXV0byogbWFya2VyIDogbWFya2VycykgewpAQCAtOTM5LDE5ICs5NjMsMTMgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UG8KICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsaW5nOgogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6Q29ycmVjdGlvbkluZGlj
YXRvcjoKICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0
aXZlczoKLSAgICAgICAgICAgICAgICBwYWludERvY3VtZW50TWFya2VyKGNvbnRleHQsIGJveE9y
aWdpbiwgKm1hcmtlciwgc3R5bGUsIGZvbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjoKLSAgICAgICAgICAgICAgICBw
YWludERvY3VtZW50TWFya2VyKGNvbnRleHQsIGJveE9yaWdpbiwgKm1hcmtlciwgc3R5bGUsIGZv
bnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUg
dGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCiAgICAgICAgICAgICBjYXNlIERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgotICAgICAgICAgICAgICAgIHBhaW50
RG9jdW1lbnRNYXJrZXIoY29udGV4dCwgYm94T3JpZ2luLCAqbWFya2VyLCBzdHlsZSwgZm9udCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgRG9jdW1l
bnRNYXJrZXI6OlRleHRNYXRjaDoKLSAgICAgICAgICAgICAgICBwYWludFRleHRNYXRjaE1hcmtl
cihjb250ZXh0LCBib3hPcmlnaW4sICptYXJrZXIsIHN0eWxlLCBmb250KTsKKyAgICAgICAgICAg
ICAgICBzdWJyYW5nZXMudW5jaGVja2VkQXBwZW5kKHsgbWFya2VyLT5zdGFydE9mZnNldCgpLCBt
YXJrZXItPmVuZE9mZnNldCgpLCBtYXJrZXJUeXBlRm9yU3VicmFuZ2VUeXBlKG1hcmtlci0+dHlw
ZSgpKSwgbWFya2VyIH0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC05NjIsNyArOTgwLDEzIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtl
cnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAgICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CisgICAgfQogCisgICAgZm9yIChhdXRvJiBzdWJyYW5nZSA6IHN1YmRpdmlkZShzdWJyYW5nZXMs
IE92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KSkgeworICAgICAgICBpZiAoc3VicmFuZ2UudHlw
ZSA9PSBTdWJyYW5nZTo6VGV4dE1hdGNoKQorICAgICAgICAgICAgcGFpbnRUZXh0TWF0Y2hNYXJr
ZXIoY29udGV4dCwgYm94T3JpZ2luLCBzdWJyYW5nZSwgc3R5bGUsIGZvbnQsIHN1YnJhbmdlLm1h
cmtlci0+aXNBY3RpdmVNYXRjaCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFpbnRE
b2N1bWVudE1hcmtlcihjb250ZXh0LCBib3hPcmlnaW4sIHN1YnJhbmdlLCBzdHlsZSwgZm9udCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRl
eCAyMjc0ZGM3N2UwMzY5OWRhMDZhOWY5MWUzNWVkMzcyN2FjYTU1ZDNiLi43YTU3MTA4OTVlOGEz
MTBkZTkwODIyOTA2MDM5ZjI2N2Q2MmRlOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEwLCAyMDEx
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjgsMTAgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0
IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogY2xhc3MgUmVuZGVyQ29tYmluZVRleHQ7CiBjbGFzcyBS
ZW5kZXJlZERvY3VtZW50TWFya2VyOwogY2xhc3MgVGV4dFBhaW50ZXI7CitzdHJ1Y3QgQ29tcG9z
aXRpb25VbmRlcmxpbmU7CitzdHJ1Y3QgU3VicmFuZ2U7CiBzdHJ1Y3QgVGV4dFBhaW50U3R5bGU7
CiAKIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNOb1RydW5jYXRpb24gPSBVU0hSVF9NQVg7CkBAIC0x
NjEsOCArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGb250Q2FzY2FkZSYsIFJlbmRlckNvbWJpbmVUZXh0KiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCwKICAgICAgICAgVGV4dERlY29yYXRpb24sIFRleHRQYWludFN0eWxlLCBjb25zdCBT
aGFkb3dEYXRhKiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwT3V0UmVjdCk7CiAgICAgdm9pZCBwYWlu
dFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4s
IGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBDb2xvciYgdGV4
dENvbG9yKTsKLSAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFya2VyJiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOwotICAgIHZvaWQgcGFpbnRUZXh0
TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
LCBSZW5kZXJlZERvY3VtZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250
Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFN1YnJhbmdlJiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnRUZXh0TWF0Y2hN
YXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25z
dCBTdWJyYW5nZSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBib29s
IGlzQWN0aXZlTWF0Y2gpOwogCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZp
b3IoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N1YnJh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTBkNmZhNDM5N2JmNmE1ZTZmNjQ1ODhhNGU1MWRlZTFkZjJiZDRiNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5jcHAKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdWJyYW5n
ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPFN1YnJhbmdlPiBzdWJkaXZpZGUoY29uc3Qg
VmVjdG9yPFN1YnJhbmdlPiYgc3VicmFuZ2VzLCBPdmVybGFwU3RyYXRlZ3kgb3ZlcmxhcFN0cmF0
ZWd5KQoreworICAgIGlmIChzdWJyYW5nZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgc3RydWN0IE9mZnNldCB7CisgICAgICAgIGVudW0gS2luZCB7IEJlZ2luLCBFbmQg
fTsKKyAgICAgICAgS2luZCBraW5kOworICAgICAgICB1bnNpZ25lZCB2YWx1ZTsgLy8gQ29weSBv
ZiBzdWJyYW5nZS5zdGFydE9mZnNldC9lbmRPZmZzZXQgdG8gYXZvaWQgdGhlIG5lZWQgdG8gYnJh
bmNoIGJhc2VkIG9uIGtpbmQuCisgICAgICAgIGNvbnN0IFN1YnJhbmdlKiBzdWJyYW5nZTsKKyAg
ICB9OworCisgICAgLy8gMS4gQnVpbGQgdGFibGUgb2YgYWxsIG9mZnNldHMuCisgICAgVmVjdG9y
PE9mZnNldD4gb2Zmc2V0czsKKyAgICBBU1NFUlQoc3VicmFuZ2VzLnNpemUoKSA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDIpOworICAgIHVuc2lnbmVkIG51bWJlck9m
U3VicmFuZ2VzID0gc3VicmFuZ2VzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZk9mZnNl
dHMgPSAyICogbnVtYmVyT2ZTdWJyYW5nZXM7CisgICAgb2Zmc2V0cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG51bWJlck9mT2Zmc2V0cyk7CisgICAgZm9yIChhdXRvJiBzdWJyYW5nZSA6IHN1YnJh
bmdlcykgeworICAgICAgICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZCh7IE9mZnNldDo6QmVnaW4s
IHN1YnJhbmdlLnN0YXJ0T2Zmc2V0LCAmc3VicmFuZ2UgfSk7CisgICAgICAgIG9mZnNldHMudW5j
aGVja2VkQXBwZW5kKHsgT2Zmc2V0OjpFbmQsIHN1YnJhbmdlLmVuZE9mZnNldCwgJnN1YnJhbmdl
IH0pOworICAgIH0KKworICAgIC8vIDIuIFNvcnQgb2Zmc2V0cyBzdWNoIHRoYXQgYmVnaW4gb2Zm
c2V0cyBhcmUgaW4gcGFpbnQgb3JkZXIgYW5kIGVuZCBvZmZzZXRzIGFyZSBpbiByZXZlcnNlIHBh
aW50IG9yZGVyLgorICAgIHN0ZDo6c29ydChvZmZzZXRzLmJlZ2luKCksIG9mZnNldHMuZW5kKCks
IFtdIChjb25zdCBPZmZzZXQmIGEsIGNvbnN0IE9mZnNldCYgYikgeworICAgICAgICByZXR1cm4g
YS52YWx1ZSA8IGIudmFsdWUgfHwgKGEudmFsdWUgPT0gYi52YWx1ZSAmJiBhLmtpbmQgPT0gYi5r
aW5kICYmIGEua2luZCA9PSBPZmZzZXQ6OkJlZ2luICYmIGEuc3VicmFuZ2UtPnR5cGUgPCBiLnN1
YnJhbmdlLT50eXBlKQorICAgICAgICB8fCAoYS52YWx1ZSA9PSBiLnZhbHVlICYmIGEua2luZCA9
PSBiLmtpbmQgJiYgYS5raW5kID09IE9mZnNldDo6RW5kICYmIGEuc3VicmFuZ2UtPnR5cGUgPiBi
LnN1YnJhbmdlLT50eXBlKTsKKyAgICB9KTsKKworICAgIC8vIDMuIENvbXB1dGUgaW50ZXJzZWN0
aW9uLgorICAgIFZlY3RvcjxTdWJyYW5nZT4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG51bWJlck9mU3VicmFuZ2VzKTsKKyAgICBIYXNoU2V0PGNvbnN0IFN1YnJh
bmdlKj4gcHJvY2Vzc2VkU3VicmFuZ2VzOworICAgIHVuc2lnbmVkIG9mZnNldFNvRmFyID0gb2Zm
c2V0c1swXS52YWx1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbnVtYmVyT2ZPZmZz
ZXRzOyArK2kpIHsKKyAgICAgICAgaWYgKG9mZnNldHNbaV0udmFsdWUgPiBvZmZzZXRzW2kgLSAx
XS52YWx1ZSkgeworICAgICAgICAgICAgaWYgKG92ZXJsYXBTdHJhdGVneSA9PSBPdmVybGFwU3Ry
YXRlZ3k6OkZyb250bW9zdCkgeworICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGZyb250bW9zdDsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
aTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcHJvY2Vzc2VkU3VicmFuZ2VzLmNv
bnRhaW5zKG9mZnNldHNbal0uc3VicmFuZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgZnJv
bnRtb3N0ID0gajsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGZyb250
bW9zdCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBv
ZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2Zyb250bW9zdC52YWx1ZSgpXS5zdWJyYW5nZS0+dHlw
ZSwgb2Zmc2V0c1tmcm9udG1vc3QudmFsdWUoKV0uc3VicmFuZ2UtPm1hcmtlciB9KTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IGk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZFN1YnJhbmdlcy5j
b250YWlucyhvZmZzZXRzW2pdLnN1YnJhbmdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwgb2Zmc2V0c1tqXS5z
dWJyYW5nZS0+dHlwZSwgb2Zmc2V0c1tqXS5zdWJyYW5nZS0+bWFya2VyIH0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mZnNldFNvRmFyID0gb2Zmc2V0
c1tpXS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0c1tpXS5raW5kID09IE9m
ZnNldDo6RW5kKQorICAgICAgICAgICAgcHJvY2Vzc2VkU3VicmFuZ2VzLmFkZChvZmZzZXRzW2ld
LnN1YnJhbmdlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfQorCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1N1YnJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRiZTFkMGQxODhlOThhODMxMTBh
OTA5OWEwNWVlNjAxNDBkMWFlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TdWJyYW5nZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFya2VyOworCitzdHJ1Y3QgU3VicmFuZ2UgeworICAg
IC8vIFNvcnRlZCBieSBwYWludCBvcmRlcgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFVubWFy
a2VkLAorICAgICAgICBHcmFtbWFyRXJyb3IsCisgICAgICAgIENvcnJlY3Rpb24sCisgICAgICAg
IFNwZWxsaW5nRXJyb3IsCisgICAgICAgIFRleHRNYXRjaCwKKyAgICAgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVzLAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRh
cjovL3Byb2JsZW0vODkzMzM1Mj4uIEFsc28sIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFy
ZC4KKyAgICAgICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKKyNlbmRpZgorICAg
IH07CisjaWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dSRUdBVEVTKQorICAgIFN1
YnJhbmdlKCkgPSBkZWZhdWx0OworICAgIFN1YnJhbmdlKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIFR5cGUgdHlwZSwgY29uc3QgUmVuZGVyZWREb2N1bWVudE1hcmtl
ciogbWFya2VyID0gbnVsbHB0cikKKyAgICAgICAgOiBzdGFydE9mZnNldCB7IHN0YXJ0T2Zmc2V0
IH0KKyAgICAgICAgLCBlbmRPZmZzZXQgeyBlbmRPZmZzZXQgfQorICAgICAgICAsIHR5cGUgeyB0
eXBlIH0KKyAgICAgICAgLCBtYXJrZXIgeyBtYXJrZXIgfQorICAgIHsKKyAgICB9CisjZW5kaWYK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7CisgICAg
VHlwZSB0eXBlOworICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqIG1hcmtlciB7IG51
bGxwdHIgfTsKK307CisKK2VudW0gY2xhc3MgT3ZlcmxhcFN0cmF0ZWd5IHsgTm9uZSwgRnJvbnRt
b3N0IH07CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3VicmFuZ2U+IHN1YmRpdmlkZShjb25zdCBW
ZWN0b3I8U3VicmFuZ2U+JiwgT3ZlcmxhcFN0cmF0ZWd5ID0gT3ZlcmxhcFN0cmF0ZWd5OjpOb25l
KTsKKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNzBkMGVlNjE5YjY1ZTBjMDQ4MWMxM2NkNThjNTBjNjBkOGY3MThlMi4uYjU3YzgxY2U3
NzNjOGJhN2M3YmFmMzE5NWY2MzI5MWQwMWFhYjNlZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA5LTIwICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVsbGluZyBhbmQg
Z3JhbW1hciBkb3RzIHNob3VsZCBub3Qgb3ZlcmxhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NDU1NjQyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIHN1YmRpdmlzaW9uIGFsZ29yaXRobS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdWJyYW5nZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA5LTIw
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIEFjdGlvblR5cGU6OkludmFsaWRBY3Rpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZjFkYjhlMGE4OGM5Mjg3OGRiNGMwZDY4MTJjYmNmYjJmYmJkMzZhNy4uNDNkYmJiYWYxZWE2
MDY5M2RjMzQ2ZDlkMTc0YTJhYjFlYjU4OTEyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY0Miw2ICs2NDIsNyBAQAogCQlDREUxOTVCNTFDRkUwQjg4MDA1M0QyNTYgLyogRnVsbHNjcmVl
blRvcENvbnRlbnRJbnNldC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERTE5NUIyMUNGRTBBREUwMDUzRDI1NiAvKiBGdWxsc2NyZWVu
VG9wQ29udGVudEluc2V0Lmh0bWwgKi87IH07CiAJCUNFMDZERjlCMUUxODUxRjIwMEU1NzBDOSAv
KiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTA2REY5QTFFMTg1MUYyMDBFNTcwQzkgLyogU2VjdXJpdHlPcmlnaW4uY3Bw
ICovOyB9OwogCQlDRTE0RjFBNDE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE0RjFBMjE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCAqLzsgfTsKKwkJQ0UxODY2NDkxRjcyRThG
MTAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMTg2NjQ3MUY3MkU4RjEwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAg
Ki87IH07CiAJCUNFMzUyNEY4MUIxNDMxRjYwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFu
ZEVuZEVkaXRpbmdfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMzUyNEYyMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdp
bkFuZEVuZEVkaXRpbmdfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQ0UzNTI0RjkxQjE0NDFDNDAwMjhB
N0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRGMTFCMTQyQjhEMDAyOEE3QzUg
LyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCAqLzsgfTsKIAkJQ0UzNTI0RkEx
QjE0NDM4OTAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRGNTFCMTQyQkJCMDAy
OEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sICovOyB9OwpAQCAtMTY3MCw2ICsxNjcxLDcg
QEAKIAkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5z
ZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGdWxsc2NyZWVu
VG9wQ29udGVudEluc2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA2REY5
QTFFMTg1MUYyMDBFNTcwQzkgLyogU2VjdXJpdHlPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTE0RjFBMjE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTENyYXNoLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMTg2
NjQ3MUY3MkU4RjEwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dWJyYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMzJDN0M3MTgxODRD
NDkwMENEOEMyOCAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTENyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTM1MjRG
MTFCMTQyQjhEMDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRGaWVsZERpZEJlZ2luQW5k
RW5kRWRpdGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMzUyNEYyMUIx
NDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdfQnVuZGxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRGaWVsZERpZEJlZ2lu
QW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA5NSw2ICsyMDk3LDcgQEAKIAkJCQlBMTc5OTE4QTFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVk
QnVmZmVyVGVzdC5oICovLAogCQkJCUVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdV
dGlsaXRpZXMubW0gKi8sCiAJCQkJQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dp
dGhEaXJlY3Rpb24uY3BwICovLAorCQkJCUNFMTg2NjQ3MUY3MkU4RjEwMEEwQ0FCNiAvKiBTdWJy
YW5nZS5jcHAgKi8sCiAJCQkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMu
Y3BwICovLAogCQkJCTdBRDNGRThEMUQ3NUZCOEQwMEIxNjlBNCAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAgKi8sCiAJCQkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAgKi8s
CkBAIC0zMzY5LDYgKzMzNzIsNyBAQAogCQkJCTdDQ0U3RUQxMUE0MTFBN0UwMDQ0N0M0QyAvKiBT
dHJpbmdUcnVuY2F0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlFQ0E2ODBDRTFFNjhDQzA5MDA3
MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U0RDVERTcx
RjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0UxODY2NDkxRjcyRThGMTAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUQyMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJyZXNvdXJjZUVycm9yQ3Jh
c2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBODFBNDExQTE5MDA0NDdDNEMgLyogU3lu
dGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93Lm0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVybWluYXRlVHdpY2UuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3VicmFuZ2Uu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N1YnJhbmdlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YmEyNzljNDVjNDI0NWZjZTk1OTIxMThlOWQ4ZThmNWEzNjU3NDBlCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N1YnJhbmdlLmNw
cApAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmVkRG9jdW1lbnRNYXJr
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJhbmdlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG9zLCBTdWJyYW5nZTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgU3VicmFuZ2U6OlVubWFya2VkOgorICAgICAgICByZXR1cm4gb3Mg
PDwgIlVubWFya2VkIjsKKyAgICBjYXNlIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3I6CisgICAgICAg
IHJldHVybiBvcyA8PCAiR3JhbW1hckVycm9yIjsKKyAgICBjYXNlIFN1YnJhbmdlOjpDb3JyZWN0
aW9uOgorICAgICAgICByZXR1cm4gb3MgPDwgIkNvcnJlY3Rpb24iOworICAgIGNhc2UgU3VicmFu
Z2U6OlNwZWxsaW5nRXJyb3I6CisgICAgICAgIHJldHVybiBvcyA8PCAiU3BlbGxpbmdFcnJvciI7
CisgICAgY2FzZSBTdWJyYW5nZTo6U2VsZWN0aW9uOgorICAgICAgICByZXR1cm4gb3MgPDwgIlNl
bGVjdGlvbiI7CisgICAgY2FzZSBTdWJyYW5nZTo6VGV4dE1hdGNoOgorICAgICAgICByZXR1cm4g
b3MgPDwgIlRleHRNYXRjaCI7CisgICAgY2FzZSBTdWJyYW5nZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmVzOgorICAgICAgICByZXR1cm4gb3MgPDwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyI7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMz
MzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorICAgIGNhc2UgU3Vi
cmFuZ2U6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM6CisgICAgICAgIHJldHVybiBv
cyA8PCAiRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyI7CisjZW5kaWYKKyAgICB9Cit9
CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdWJy
YW5nZSYgc3VicmFuZ2UpCit7CisgICAgb3MgPDwgIigiIDw8IHN1YnJhbmdlLnN0YXJ0T2Zmc2V0
IDw8ICIsICIgPDwgc3VicmFuZ2UuZW5kT2Zmc2V0IDw8ICIsICIgPDwgc3VicmFuZ2UudHlwZTsK
KyAgICBpZiAoc3VicmFuZ2UubWFya2VyKQorICAgICAgICBvcyA8PCBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4oc3VicmFuZ2UubWFya2VyKTsKKyAgICByZXR1cm4gb3MgPDwgIikiOworfQorCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgU3VicmFuZ2UmIGEsIGNvbnN0IFN1YnJhbmdlJiBiKQorewor
ICAgIHJldHVybiBhLnN0YXJ0T2Zmc2V0ID09IGIuc3RhcnRPZmZzZXQgJiYgYS5lbmRPZmZzZXQg
PT0gYi5lbmRPZmZzZXQgJiYgYS50eXBlID09IGIudHlwZSAmJiBhLm1hcmtlciA9PSBiLm1hcmtl
cjsKK30KKworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoU3VicmFuZ2Us
IFN1YmRpdmlkZUVtcHR5KQoreworICAgIEVYUEVDVF9FUSgwVSwgc3ViZGl2aWRlKHsgfSkuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHN1YmRpdmlkZSh7IH0sIE92ZXJsYXBTdHJhdGVneTo6
RnJvbnRtb3N0KS5zaXplKCkpOworfQorCitURVNUKFN1YnJhbmdlLCBTdWJkaXZpZGVTaW1wbGUp
Cit7CisgICAgU3VicmFuZ2Ugc3VicmFuZ2UgeyAwLCA5LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJv
ciB9OworICAgIGF1dG8gcmVzdWx0cyA9IHN1YmRpdmlkZSh7IHN1YnJhbmdlIH0pOworICAgIEFT
U0VSVF9FUSgxVSwgcmVzdWx0cy5zaXplKCkpOworICAgIEVYUEVDVF9FUShzdWJyYW5nZSwgcmVz
dWx0c1swXSk7Cit9CisKK1RFU1QoU3VicmFuZ2UsIFN1YmRpdmlkZVNwZWxsaW5nQW5kR3JhbW1h
clNpbXBsZSkKK3sKKyAgICBSZW5kZXJlZERvY3VtZW50TWFya2VyIGdyYW1tYXJFcnJvck1hcmtl
ciB7IERvY3VtZW50TWFya2VyIHsgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIDcsIDggfSB9Owor
ICAgIFZlY3RvcjxTdWJyYW5nZT4gZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAgICBTdWJyYW5n
ZSB7IGdyYW1tYXJFcnJvck1hcmtlci5zdGFydE9mZnNldCgpLCBncmFtbWFyRXJyb3JNYXJrZXIu
ZW5kT2Zmc2V0KCksIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IsICZncmFtbWFyRXJyb3JNYXJrZXIg
fSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMiwgMzIsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0s
CisgICAgfTsKKyAgICBhdXRvIHJlc3VsdHMgPSBzdWJkaXZpZGUoZXhwZWN0ZWRTdWJyYW5nZXMp
OworICAgIEFTU0VSVF9FUShleHBlY3RlZFN1YnJhbmdlcy5zaXplKCksIHJlc3VsdHMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkU3VicmFuZ2VzLnNpemUoKTsg
KytpKQorICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTdWJyYW5nZXNbaV0sIHJlc3VsdHNbaV0p
OworfQorCitURVNUKFN1YnJhbmdlLCBTdWJkaXZpZGVTcGVsbGluZ0FuZEdyYW1tYXJPdmVybGFw
KQoreworICAgIFZlY3RvcjxTdWJyYW5nZT4gc3VicmFuZ2VzIHsKKyAgICAgICAgU3VicmFuZ2Ug
eyAwLCA0MCwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIs
IDE3LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIwLCA0
MCwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA0MSwgNDUs
IFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgfTsKKyAgICBWZWN0b3I8U3VicmFuZ2U+
IGV4cGVjdGVkU3VicmFuZ2VzIHsKKyAgICAgICAgU3VicmFuZ2UgeyAwLCAyLCBTdWJyYW5nZTo6
R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgMiwgMTcsIFN1YnJhbmdlOjpHcmFt
bWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyLCAxNywgU3VicmFuZ2U6OlNwZWxsaW5n
RXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAxNywgMjAsIFN1YnJhbmdlOjpHcmFtbWFyRXJy
b3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3Ig
fSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0s
CisgICAgICAgIFN1YnJhbmdlIHsgNDEsIDQ1LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAor
ICAgIH07CisgICAgYXV0byByZXN1bHRzID0gc3ViZGl2aWRlKHN1YnJhbmdlcyk7CisgICAgQVNT
RVJUX0VRKGV4cGVjdGVkU3VicmFuZ2VzLnNpemUoKSwgcmVzdWx0cy5zaXplKCkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwZWN0ZWRTdWJyYW5nZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIEVYUEVDVF9FUShleHBlY3RlZFN1YnJhbmdlc1tpXSwgcmVzdWx0c1tpXSk7Cit9CisKK1RF
U1QoU3VicmFuZ2UsIFN1YmRpdmlkZVNwZWxsaW5nQW5kR3JhbW1hck92ZXJsYXBGcm9udG1vc3Qp
Cit7CisgICAgVmVjdG9yPFN1YnJhbmdlPiBzdWJyYW5nZXMgeworICAgICAgICBTdWJyYW5nZSB7
IDAsIDQwLCBTdWJyYW5nZTo6R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgMiwg
MTcsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgMjAsIDQw
LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDQxLCA0NSwg
U3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICB9OworICAgIFZlY3RvcjxTdWJyYW5nZT4g
ZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAgICBTdWJyYW5nZSB7IDAsIDIsIFN1YnJhbmdlOjpH
cmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyLCAxNywgU3VicmFuZ2U6OlNwZWxs
aW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAxNywgMjAsIFN1YnJhbmdlOjpHcmFtbWFy
RXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpTcGVsbGluZ0Vy
cm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDEsIDQ1LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJv
ciB9LAorICAgIH07CisgICAgYXV0byByZXN1bHRzID0gc3ViZGl2aWRlKHN1YnJhbmdlcywgT3Zl
cmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpOworICAgIEFTU0VSVF9FUShleHBlY3RlZFN1YnJhbmdl
cy5zaXplKCksIHJlc3VsdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4
cGVjdGVkU3VicmFuZ2VzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRT
dWJyYW5nZXNbaV0sIHJlc3VsdHNbaV0pOworfQorCitURVNUKFN1YnJhbmdlLCBTdWJkaXZpZGVT
cGVsbGluZ0FuZEdyYW1tYXJDb21wbGljYXRlZEZyb250bW9zdCkKK3sKKyAgICBWZWN0b3I8U3Vi
cmFuZ2U+IHN1YnJhbmdlcyB7CisgICAgICAgIFN1YnJhbmdlIHsgMCwgNiwgU3VicmFuZ2U6OlNw
ZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAwLCA0NiwgU3VicmFuZ2U6OkdyYW1t
YXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDcsIDE2LCBTdWJyYW5nZTo6U3BlbGxpbmdF
cnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIyLCAyNywgU3VicmFuZ2U6OlNwZWxsaW5nRXJy
b3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAzNCwgNDQsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9y
IH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDYsIDUwLCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9
LAorICAgICAgICBTdWJyYW5nZSB7IDUxLCA1OCwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwK
KyAgICAgICAgU3VicmFuZ2UgeyA1OSwgNjMsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwKKyAg
ICB9OworICAgIFZlY3RvcjxTdWJyYW5nZT4gZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAgICBT
dWJyYW5nZSB7IDAsIDYsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJh
bmdlIHsgNiwgNywgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7
IDcsIDE2LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDE2
LCAyMiwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIyLCAy
NywgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyNywgMzQs
IFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAzNCwgNDQsIFN1
YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDQsIDQ2LCBTdWJy
YW5nZTo6R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDYsIDUwLCBTdWJyYW5n
ZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDUxLCA1OCwgU3VicmFuZ2U6
OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA1OSwgNjMsIFN1YnJhbmdlOjpH
cmFtbWFyRXJyb3IgfSwKKyAgICB9OworICAgIGF1dG8gcmVzdWx0cyA9IHN1YmRpdmlkZShzdWJy
YW5nZXMsIE92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KTsKKyAgICBBU1NFUlRfRVEoZXhwZWN0
ZWRTdWJyYW5nZXMuc2l6ZSgpLCByZXN1bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBleHBlY3RlZFN1YnJhbmdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkU3VicmFuZ2VzW2ldLCByZXN1bHRzW2ldKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>321368</attachid>
            <date>2017-09-20 14:21:52 -0700</date>
            <delta_ts>2017-09-20 14:21:52 -0700</delta_ts>
            <desc>[Screenshot] Before patch</desc>
            <filename>Before.png</filename>
            <type>image/png</type>
            <size>2724</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAN0AAAArCAYAAAD8D40eAAAAAXNSR0IArs4c6QAAAZxpVFh0WE1M
OmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlv
biByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNv
bS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjIxPC9leGlmOlBp
eGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjQzPC9leGlmOlBp
eGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94
OnhtcG1ldGE+Cml4goUAAAi2SURBVHgB7VpdiBvXFT5JV9ldN1JqL9k2dozWTUzSEuuhPyGYQBlC
A3kISkieXPWhFETfqodCKyikylO3T1EKRTXYWkyVPIxLq2CQ86A4WRKifdAmzAa0NdNaodVSmSIT
Lc3IGcHpufeO/mZnZ7TeVMyM78Bq5t5z59xzvnO+O3fO7D1IB8hDIiARmBkC985sJjmRREAiwBGQ
pJOJIBGYMQKSdDMGXE4nEZCkkzkgEZgxApJ0MwZcTicRkKSTOSARmDECknQzBlxOJxGQpJM5IBGY
MQKSdDMGXE4nEZi7qyHo34It7QbAkSVYeTQO0bsbDf+lQkjjcxc/6T6FV797DFKv/gIS31qB2LN/
hF3/pd1dbFF44zMd6XrbcPnqdqgSYHvt5/CKloeNv74DeiUPmRdOQ8SXHvZhY20Ntl1WhFtbb8FV
twG+9MvdqODEx90PRyn7h2f3o4PFJGBite4+LFBSg/sEShENn9utlzP0D+kK1vcx1GxVUQHAvLbP
AJ/752xecOLjbL97L7iLDSwR4Yit9JfgwVd1FtwurhezVj/JlAyWtbajKrPTxKpawJSSxkqtghlF
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>321369</attachid>
            <date>2017-09-20 14:23:25 -0700</date>
            <delta_ts>2017-09-20 14:23:25 -0700</delta_ts>
            <desc>[Screenshot] After patch</desc>
            <filename>After.png</filename>
            <type>image/png</type>
            <size>2819</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAN0AAAArCAYAAAD8D40eAAAAAXNSR0IArs4c6QAAAZxpVFh0WE1M
OmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlv
biByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNv
bS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjIxPC9leGlmOlBp
eGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjQzPC9leGlmOlBp
eGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94
OnhtcG1ldGE+Cml4goUAAAkVSURBVHgB7VpdbCNXFf52iZVkQ9J0083+USXtdtUi7RqpFaIgXkYr
VeoDMrytwH1ASIY3/FAJLCEV9wUF8eIiIZcXR6hGSF4ErpBcHszS0NU6AkfgVOs0cliH1tk6gCMm
m9rbsbicO3c8/snE4yTF8vXekeKZe8+dc8/5zvnu3DmTE4wOqEMhoBDoGwIn+zaTmkghoBAwEVCk
U4mgEOgzAop0fQZcTacQUKRTOaAQ6DMCinR9BlxNpxBQpFM5oBDoMwKKdH0GXE2nEFCkUzmgEOgz
Aop0fQZcTacQGHmoIajvYDV3Fzg1g/mn5jD5cKMxeKkwpPF5iJ90m3j1udPwv/oyvJ+dx9QLr2N3
8NLuIbZoeOPTG+lqa7jx1tpQJcDa4nfxSi6C5d/+AYVUBMGvXoZnID2sY3lxEWtdVoSd1TfxVrcB
A+lXd6PkiU93Pxyl/B+eux8VFvOBeRey3YdJJa2aPkGLseqA211IBukf0jWWPcBQo5RmGsAiuQMG
DLh/zubJEx9n+7v3oru4yuJEOGIr/XnN4CcKPLg6W4qFrH6SaUGWzJUdVRmVIksnosyvBVgqk2JB
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
ys6hQeB/vEjb9Ww5M6YAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>321370</attachid>
            <date>2017-09-20 14:23:58 -0700</date>
            <delta_ts>2017-09-20 14:23:58 -0700</delta_ts>
            <desc>[Screenshot] TextEdit</desc>
            <filename>TextEdit.png</filename>
            <type>image/png</type>
            <size>3251</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAN0AAAArCAYAAAD8D40eAAAAAXNSR0IArs4c6QAAAZxpVFh0WE1M
OmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlv
biByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNv
bS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjIxPC9leGlmOlBp
eGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjQzPC9leGlmOlBp
eGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94
OnhtcG1ldGE+Cml4goUAAArFSURBVHgB7VpvbFtXFT+v1CRNlTRraZv+GckKVQGtjugEmwZ8cIoG
/YBc8WkbLhIgueMTnjQEFmiDIKRl4kM9IertQx2NZqC6EngS8ybVdAmr4ogmo05Vp61DPLVJF5e5
isPiNM/kcO677z3/e3bSvDbNe71Pavzuve/ee87vd3733ndeJaQLxCUQEAisGgLrVm0mMZFAQCCg
ICBEJwJBILDKCKxf5fnu/3SFWzCamABo2gIdn2+H5gcPgfvPQT0LHgB+HrCd7kP4zWObwdP9Aji/
2AEtT70Gs/UCQLStKgKI6RJ+HoFN37InP7VFNz8Gp98ZW1XQ7/VkY70/gRcTARj6698hFQ2A7/Be
cNzrSVc0fgGGenthrM6KcGv0LXin3gMrmvd+dkIY6/XBS6MaP8fA516r/JjEiWUvq68shtyAzp7h
6ibL1uQVn8AVwvwa9yEV8VFG2YXDNQyVJ2PoAsBAosYDa9w/Q/MW5/CEW0Kpa+3zY2j/HVRC9bN5
7CPBkZbpn1MhP5xi5OZwIORX66nN5cNIIlPdnWrkbBpj4SB6XF6MxqPoc/Hx3N0RzGRTGPS6+Dg0
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
YII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321371</attachid>
            <date>2017-09-20 14:25:27 -0700</date>
            <delta_ts>2017-09-20 14:34:09 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-177265-20170920142527.patch</filename>
            <type>text/plain</type>
            <size>43139</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJjY2I1ZGU2OWI1ZDRk
YmUzM2Q5Y2M0OWY0ODA4MDFjYjgyZWRjMS4uNWY5YTI4MWVmZjBjNzhkZjkzZTliODBmZjE1Mjhm
NWRmNWU0YTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE3LTA5LTIwICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBTcGVsbGluZyBhbmQgZ3Jh
bW1hciBkb3RzIHNob3VsZCBub3Qgb3ZlcmxhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU1
NjQyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IGxpbmUgbWF5IGNvbnRhaW4gYm90aCBzcGVsbGluZyBhbmQgZ3JhbW1hciBlcnJvcnMgc3VjaCB0
aGF0IHRoZXNlIGVycm9ycyBvdmVybGFwLgorICAgICAgICBGb3IgZXhhbXBsZSwgInRvIG1vb29m
IG9yIG5vdCB0byBtb29vZi4iLiBJdCBpcyBtb3JlIHBsZWFzaW5nIGFlc3RoZXRpY2FsbHkgdG8K
KyAgICAgICAgcGFpbnQgc3BlbGxpbmcgYW5kIGdyYW1tYXIgZG90cyBzdWNoIHRoYXQgdGhleSBk
byBub3Qgb3ZlcmxhcC4gVGhpcyBhbHNvIG1hdGNoZXMKKyAgICAgICAgQXBwS2l0J3MgYmVoYXZp
b3IuCisKKyAgICAgICAgQSBzaWRlIGJlbmVmaXQgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBh
ZGRzIHN1cHBvcnQgaW5mcmFzdHJ1Y3R1cmUgdG93YXJkcworICAgICAgICBpbXBsZW1lbnRpbmcg
dGhlIENTUyBQc2V1ZG8tRWxlbWVudHMgTW9kdWxlIExldmVsIDQgcHNldWRvIGVsZW1lbnRzIDo6
c3BlbGxpbmctZXJyb3IKKyAgICAgICAgYW5kIDo6Z3JhbW1hci1lcnJvciAoc2VlIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Nzg0PikuCisgICAgICAgIEl0IHdp
bGwgYWxzbyBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBhZGQgOjppbmFjdGl2ZS1zZWxlY3Rp
b24gYW5kIGFsbG93IHVzCisgICAgICAgIHRvIG1ha2UgOjpzZWxlY3Rpb24gY29uZm9ybSB0byBD
U1MgUHNldWRvLUVsZW1lbnRzIE1vZHVsZSBMZXZlbCA0LgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRN
YXJrZXIpOiBNb2RpZmllZCB0byB0YWtlIGEgY29uc3QgU3VicmFuZ2UmIGluc3RlYWQKKyAgICAg
ICAgb2YgYSBSZW5kZXJlZERvY3VtZW50TWFya2VyJi4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKTogTW9kaWZpZWQgdG8gdGFrZSBhIGNvbnN0
IFN1YnJhbmdlJiBpbnN0ZWFkCisgICAgICAgIG9mIGEgUmVuZGVyZWREb2N1bWVudE1hcmtlciYg
YW5kIHRha2UgYSBib29sZWFuIGFzIHRvIHdoZXRoZXIgdGhlIHRleHQgbWF0Y2ggaXMgYWN0aXZl
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcnMp
OiBDb2xsZWN0IHRoZSBzdWJyYW5nZXMgdGhhdCBuZWVkIHRvIGJlCisgICAgICAgIHBhaW50ZWQs
IHN1YmRpdmlkZSB0aGVtIHByZXNlcnZpbmcgb25seSB0aGUgZnJvbnRtb3N0IHN1YnJhbmdlIHdo
ZW4gdHdvIG9yIG1vcmUgc3VicmFuZ2VzCisgICAgICAgIG92ZXJsYXAgYW5kIHBhaW50IHRoZSBy
ZXN1bHRpbmcgc3VicmFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6bGluZVN0eWxlRm9yTWFya2Vy
VHlwZSk6IERlbGV0ZWQ7IGNvbnZlcnRlZCB0byBhIGxhbWJkYSBmdW5jdGlvbiBpbmxpbmVkCisg
ICAgICAgIGluIHBhaW50RG9jdW1lbnRNYXJrZXIoKSBhcyB0aGlzIGlzIHRoZSBvbmx5IHBsYWNl
IHdlIG1hZGUgdXNlIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICogcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU3VicmFuZ2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnN1YmRpdmlkZSk6CisgICAgICAgICogcmVuZGVyaW5nL1N1YnJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VicmFuZ2U6OlN1YnJhbmdlKToKKworMjAx
Ny0wOS0yMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgUmVu
ZGVyZWREb2N1bWVudE1hcmtlci5oIHNob3VsZCBpbmNsdWRlIERvY3VtZW50TWFya2VyLmgKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzI2MwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOTljNzhiNjAwNWNmMjA5MjBiZTg0ODQxNjcxOGMwY2QyMzZlNzE1MC4uMTM5ZmRmNWIxNTc0
YTg4ZThlNGQwNjZiNWNjZjUxMWY0MGY3NGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ4OSw2ICs2NDg5LDggQEAKIAkJ
Q0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIx
QjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAw
MjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKKwkJQ0UxODY2NDQxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTg2NjQyMUY3MkU1
QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAgKi87IH07CisJCUNFMTg2NjQ1MUY3MkU1QjQwMEEw
Q0FCNiAvKiBTdWJyYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBE
RjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERG
MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsK
IAkJQ0UyODQ5ODkxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lcy5jcHAgKi87IH07CiAJCUNFNkRBREY5MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjcxQzU5MUU2QTAwM0Y2QTg4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgKi87IH07CkBAIC0xNTI2NSw2
ICsxNTI2Nyw4IEBACiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDhDM0NG
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA4QzNEMDE1MkI1OTlBMDAyMUI4
QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNFMTg2NjQyMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdWJyYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdWJyYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4NjFDQTM2
MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4ODFDQTM2MTQ2MDBCNEE1
N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXMuY3BwOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIy
Nzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2
ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjEwNSw2ICsyNjEw
OSw4IEBACiAJCQkJRTRFOUIxMTgxODEwOTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRS
ZXNvbHZlci5oICovLAogCQkJCTU4MkNCMDU0MUE3OEEyQjIwMEFGRkNDNCAvKiBTaW1wbGVMaW5l
TGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwICovLAogCQkJCTU4MkNCMDUyMUE3OEExNEIw
MEFGRkNDNCAvKiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCAqLywKKwkJ
CQlDRTE4NjY0MjFGNzJFNUI0MDBBMENBQjYgLyogU3VicmFuZ2UuY3BwICovLAorCQkJCUNFMTg2
NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5oICovLAogCQkJCUE4Q0ZGMDRDMEExNTRG
MDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oICovLAogCQkJCTBGNTREQ0UzMTg4MTA1MUQwMDNF
RURCQiAvKiBUZXh0QXV0b1NpemluZy5jcHAgKi8sCiAJCQkJMEY1NERDRTQxODgxMDUxRDAwM0VF
REJCIC8qIFRleHRBdXRvU2l6aW5nLmggKi8sCkBAIC0yODgzMiw3ICsyODgzOCw2IEBACiAJCQkJ
MzE2RENCMjAxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzk2OURCQTE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjgxN0QxNDE1MTAwN0ZGODQyIC8q
IEpTUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTE4QzM1
NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUUyQzQzNzQxQkNGMEQ3NTAwMDFFMkJFIC8qIEpTUlRD
UnRwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUUyQzQzNzIxQkNGMEQ3NTAwMDFF
MkJDIC8qIEpTUlRDUnRwUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFMkM0Mzc0MUJD
RjBENzUwMDAxRTJCQyAvKiBKU1JUQ1J0cFNlbmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDE4
NCw2ICszMDE4OSw3IEBACiAJCQkJRDAwMEVEMjgxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1l
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRkM0MEZCQTE2NTVDQ0I5MDA0MEYyOUUgLyog
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERDQxMjUx
RjEyRDAwM0VGMjY5IC8qIFN1Ym1pdElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0Ux
ODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTZEMzc0ODBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1OUE3RDEzMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE4RjZCMDIwREI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDMxNyw3ICszMDMyMyw2IEBACiAJCQkJMDgw
NkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRTU4RDVDMUREN0VDOUMwMDEyODU1MiAvKiBTVkdNYXRyaXhWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTE4NTM2ODQxRjRFNDgxNDAwRkUwOTFCIC8qIFdlYkFyY2hpdmVS
ZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QTRCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyQTFGMkIxMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBh
dGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMwNjUxLDYgKzMwNjU2LDggQEAKIAkJCQlB
QUE3MjhGNzE2RDFEOEJDMDBEM0JCQzYgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNDc4QTdGMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzRUY0
NDgxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTE4NTM2ODQxRjRFNDgxNDAwRkUwOTFCIC8qIFdlYkFyY2hp
dmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUUx
OEMzNTQ0MUY3MTk3MEMwMEZGNjMyRCAvKiBXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhh
bmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTY2N0E1MUU0QkJGMTUwMEU4MTU0QSAvKiBX
ZWJBdWRpb0J1ZmZlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQjJBNjI2MUVGMUJGNkQw
MDJCOUQ3QSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
N0Q2Mzc0MDFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aCBpbiBIZWFkZXJzICovLApAQCAtMzI2NTUsNyArMzI2NjIsNiBAQAogCQkJCUE2MTQ4QTc4MTJF
NDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2Vu
ZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE4QzM1NDMxRjcxOTcwMTAwRkY2MzJE
IC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBRTJBQjI1MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdCMTAwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjI3MEExQ0U2M0IwMEI0MkIyNSAv
KiBKU0hUTUxNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI4MjMsNyArMzI4Mjks
NiBAQAogCQkJCUExQ0M1Njc4MUY0NjE0QTUwMEE0NTU1QiAvKiBKU1BheW1lbnRSZXF1ZXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExRjYwMDU3MUY0NzY1MDUwMDc3RTgzRiAvKiBKU1BheW1l
bnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFGNjAwNTkxRjQ3
NjUwNTAwNzdFODNGIC8qIEpTUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudEluaXQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRTE4NTM2ODUxRjUwOTA2MTAwRkUwOTFCIC8qIFdlYkFyY2hpdmVSZXNv
dXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMUNDNTY3
QTFGNDYxNEFBMDBBNDU1NUIgLyogSlNQYXltZW50UmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTFDQzU2N0MxRjQ2MTRBRjAwQTQ1NTVCIC8qIEpTUGF5bWVudFNoaXBwaW5nT3B0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQ0M1NjdFMUY0NjE0QjQwMEE0NTU1QiAvKiBKU1Bh
eW1lbnRTaGlwcGluZ1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDA2OCw2ICszNDA3Myw3
IEBACiAJCQkJRDAwMEVEMjcxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFGQzQwRkI5MTY1NUNDQjYwMDQwRjI5RSAvKiBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREQzMTI1MUYxMkQwMDNF
RjI2OSAvKiBTdWJtaXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UxODY2NDQx
RjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRjE1
ODlCMUVCQzRDRkQwMEQ0QkZCNyAvKiBTdWJyZXNvdXJjZUludGVncml0eS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5M0UyMjdFNDBBRjU4OUFEMDBENDgzMjQgLyogU3VicmVzb3VyY2VMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U4RkFEQzQxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJl
c291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKQEAgLTM0NDMxLDYgKzM0NDM3LDgg
QEAKIAkJCQlBQTQ3OEE4MDE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDNFRjQ0OTE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTIwREUzRUQxQzg2Q0EzRTAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFMTg1MzY4NTFGNTA5MDYxMDBGRTA5MUIgLyogV2ViQXJjaGl2ZVJlc291
cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUxOEMzNTQz
MUY3MTk3MDEwMEZGNjMyRCAvKiBXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVk
aW9CdWZmZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3RDYzNzQxMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAppbmRleCA1NzVmYTA2YWRlNjBjNTAxM2FlZTQ1MWI3ZTQzYTkxZDMwZjJmZDViLi42YmEzYTI2
Y2M0ODYzMWRmNDc3ZmU4OTM3ODc5MGM4OTlmZTE3MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJTdWJyYW5nZS5oIgog
I2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKICNp
bmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgpAQCAtNzgyLDI5ICs3ODMsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJgogICAgICAgICBjb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihib3hSZWN0
LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKLXN0YXRpYyBHcmFwaGljc0NvbnRleHQ6OkRvY3Vt
ZW50TWFya2VyTGluZVN0eWxlIGxpbmVTdHlsZUZvck1hcmtlclR5cGUoRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKLXsKLSAgICBzd2l0Y2ggKG1hcmtlclR5cGUpIHsKLSAg
ICBjYXNlIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDo6RG9jdW1lbnRNYXJrZXJTcGVsbGluZ0xpbmVTdHlsZTsKLSAgICBjYXNlIERvY3Vt
ZW50TWFya2VyOjpHcmFtbWFyOgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1
bWVudE1hcmtlckdyYW1tYXJMaW5lU3R5bGU7Ci0gICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6Q29y
cmVjdGlvbkluZGljYXRvcjoKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1l
bnRNYXJrZXJBdXRvY29ycmVjdGlvblJlcGxhY2VtZW50TGluZVN0eWxlOwotICAgIGNhc2UgRG9j
dW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlczoKLSAgICAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJEaWN0YXRpb25BbHRlcm5hdGl2ZXNMaW5lU3R5bGU7
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBo
cmFzZVdpdGhBbHRlcm5hdGl2ZXM6Ci0gICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgVGV4dENoZWNr
aW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0xpbmVTdHlsZSBhbmQgcmVtb3ZlIHRo
ZSBQTEFURk9STShJT1MpLWd1YXJkLgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpU
ZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTGluZVN0eWxlOwotI2Vu
ZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2VyU3BlbGxpbmdMaW5lU3R5bGU7
Ci0gICAgfQotfQotCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRl
cmVkRG9jdW1lbnRNYXJrZXImIG1hcmtlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCkKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1h
cmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdp
biwgY29uc3QgU3VicmFuZ2UmIHN1YnJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIC8vIE5ldmVyIHByaW50IHNwZWxsaW5nL2dy
YW1tYXIgbWFya2VycyAoNTMyNzg4NykKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnBy
aW50aW5nKCkpCkBAIC04MTgsMTYgKzc5NywxNiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaQog
CiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgd2UgbmVlZCB0byBtZWFzdXJlIHRleHQKICAgICBi
b29sIG1hcmtlclNwYW5zV2hvbGVCb3ggPSB0cnVlOwotICAgIGlmIChtX3N0YXJ0IDw9IG1hcmtl
ci5zdGFydE9mZnNldCgpKQorICAgIGlmIChtX3N0YXJ0IDw9IHN1YnJhbmdlLnN0YXJ0T2Zmc2V0
KQogICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0gZmFsc2U7Ci0gICAgaWYgKChlbmQoKSAr
IDEpICE9IG1hcmtlci5lbmRPZmZzZXQoKSkgLy8gZW5kIHBvaW50cyBhdCB0aGUgbGFzdCBjaGFy
LCBub3QgcGFzdCBpdAorICAgIGlmICgoZW5kKCkgKyAxKSAhPSBzdWJyYW5nZS5lbmRPZmZzZXQp
IC8vIEVuZCBwb2ludHMgYXQgdGhlIGxhc3QgY2hhciwgbm90IHBhc3QgaXQKICAgICAgICAgbWFy
a2VyU3BhbnNXaG9sZUJveCA9IGZhbHNlOwogICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1
bmNhdGlvbikKICAgICAgICAgbWFya2VyU3BhbnNXaG9sZUJveCA9IGZhbHNlOwogCiAgICAgaWYg
KCFtYXJrZXJTcGFuc1dob2xlQm94KSB7Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24g
PSBjbGFtcGVkT2Zmc2V0KG1hcmtlci5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgdW5zaWduZWQg
ZW5kUG9zaXRpb24gPSBjbGFtcGVkT2Zmc2V0KG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgICAg
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBjbGFtcGVkT2Zmc2V0KHN1YnJhbmdlLnN0YXJ0T2Zm
c2V0KTsKKyAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSBjbGFtcGVkT2Zmc2V0KHN1YnJh
bmdlLmVuZE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNO
b1RydW5jYXRpb24pCiAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0ZDo6bWluKGVuZFBvc2l0
aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90cnVuY2F0aW9uKSk7CkBAIC04NDUsNiArODI0
LDI3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pCiAgICAgICAgIHdpZHRoID0gbWFya2VyUmVj
dC53aWR0aCgpOwogICAgIH0KICAgICAKKyAgICBhdXRvIGxpbmVTdHlsZUZvclN1YnJhbmdlVHlw
ZSA9IFtdIChTdWJyYW5nZTo6VHlwZSB0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgewor
ICAgICAgICBjYXNlIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yOgorICAgICAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJTcGVsbGluZ0xpbmVTdHlsZTsKKyAgICAg
ICAgY2FzZSBTdWJyYW5nZTo6R3JhbW1hckVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJHcmFtbWFyTGluZVN0eWxlOworICAgICAgICBjYXNl
IFN1YnJhbmdlOjpDb3JyZWN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDo6RG9jdW1lbnRNYXJrZXJBdXRvY29ycmVjdGlvblJlcGxhY2VtZW50TGluZVN0eWxlOworICAg
ICAgICBjYXNlIFN1YnJhbmdlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckRpY3RhdGlvbkFsdGVybmF0aXZl
c0xpbmVTdHlsZTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGNhc2UgU3VicmFuZ2U6OkRp
Y3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICAvLyBGSVhNRTogUmVu
YW1lIFRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNMaW5lU3R5bGUg
YW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KKyAgICAgICAgICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHQ6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXNMaW5lU3R5bGU7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9j
dW1lbnRNYXJrZXJTcGVsbGluZ0xpbmVTdHlsZTsKKyAgICAgICAgfQorICAgIH07CisKICAgICAv
LyBJTVBPUlRBTlQ6IFRoZSBtaXNzcGVsbGluZyB1bmRlcmxpbmUgaXMgbm90IGNvbnNpZGVyZWQg
d2hlbiBjYWxjdWxhdGluZyB0aGUgdGV4dCBib3VuZHMsIHNvIHdlIGhhdmUgdG8KICAgICAvLyBt
YWtlIHN1cmUgdG8gZml0IHdpdGhpbiB0aG9zZSBib3VuZHMuICBUaGlzIG1lYW5zIHRoZSB0b3Ag
cGl4ZWwocykgb2YgdGhlIHVuZGVybGluZSB3aWxsIG92ZXJsYXAgdGhlCiAgICAgLy8gYm90dG9t
IHBpeGVsKHMpIG9mIHRoZSBnbHlwaHMgaW4gc21hbGxlciBmb250IHNpemVzLiAgVGhlIGFsdGVy
bmF0aXZlcyBhcmUgdG8gaW5jcmVhc2UgdGhlIGxpbmUgc3BhY2luZyAoYmFkISEpCkBAIC04NjIs
MTUgKzg2MiwxNSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaQogICAgICAgICAvLyBJbiBsYXJn
ZXIgZm9udHMsIHRob3VnaCwgcGxhY2UgdGhlIHVuZGVybGluZSB1cCBuZWFyIHRoZSBiYXNlbGlu
ZSB0byBwcmV2ZW50IGEgYmlnIGdhcC4KICAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ID0gYmFzZWxp
bmUgKyAyOwogICAgIH0KLSAgICBjb250ZXh0LmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoRmxv
YXRQb2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyB1bmRlcmxpbmVP
ZmZzZXQpLCB3aWR0aCwgbGluZVN0eWxlRm9yTWFya2VyVHlwZShtYXJrZXIudHlwZSgpKSk7Cisg
ICAgY29udGV4dC5kcmF3TGluZUZvckRvY3VtZW50TWFya2VyKEZsb2F0UG9pbnQoYm94T3JpZ2lu
LngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0KSwgd2lkdGgsIGxp
bmVTdHlsZUZvclN1YnJhbmdlVHlwZShzdWJyYW5nZS50eXBlKSk7CiB9CiAKLXZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1hcmtl
ciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKK3Zv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFN1YnJhbmdlJiBzdWJy
YW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwg
Ym9vbCBpc0FjdGl2ZU1hdGNoKQogewogICAgIGlmICghcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRv
cigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ29sb3IgY29sb3IgPSBtYXJrZXIuaXNBY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50
aGVtZSgpLnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJl
cigpLnRoZW1lKCkucGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwor
ICAgIGF1dG8gY29sb3IgPSBpc0FjdGl2ZU1hdGNoID8gcmVuZGVyZXIoKS50aGVtZSgpLnBsYXRm
b3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1lKCku
cGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICB1cGRhdGVHcmFwaGlj
c0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IpKTsgLy8gRG9uJ3QgZHJhdyB0
ZXh0IGF0IGFsbCEKIApAQCAtODc5LDggKzg3OSw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBv
CiAgICAgTGF5b3V0VW5pdCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGlu
ZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBs
b2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVksIDAs
IHRoaXMtPnNlbGVjdGlvbkhlaWdodCgpKTsKIAotICAgIHVuc2lnbmVkIHNQb3MgPSBjbGFtcGVk
T2Zmc2V0KG1hcmtlci5zdGFydE9mZnNldCgpKTsKLSAgICB1bnNpZ25lZCBlUG9zID0gY2xhbXBl
ZE9mZnNldChtYXJrZXIuZW5kT2Zmc2V0KCkpOworICAgIHVuc2lnbmVkIHNQb3MgPSBjbGFtcGVk
T2Zmc2V0KHN1YnJhbmdlLnN0YXJ0T2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBlUG9zID0gY2xhbXBl
ZE9mZnNldChzdWJyYW5nZS5lbmRPZmZzZXQpOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0
VGV4dFJ1bihzdHlsZSk7CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4s
IHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwogCkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG8KIAogICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0Rldmlj
ZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xvcik7CiB9Ci0gICAg
CisKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcnMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGJvb2wgYmFja2dyb3VuZCkKIHsK
ICAgICBpZiAoIXJlbmRlcmVyKCkudGV4dE5vZGUoKSkKQEAgLTg5Nyw2ICs4OTcsMzAgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UG8KIAogICAgIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2Vy
Kj4gbWFya2VycyA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkubWFya2Vyc0Zvcihy
ZW5kZXJlcigpLnRleHROb2RlKCkpOwogCisgICAgYXV0byBtYXJrZXJUeXBlRm9yU3VicmFuZ2VU
eXBlID0gW10gKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUpIHsKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgorICAg
ICAgICAgICAgcmV0dXJuIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yOworICAgICAgICBjYXNlIERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyOgorICAgICAgICAgICAgcmV0dXJuIFN1YnJhbmdlOjpHcmFt
bWFyRXJyb3I7CisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0
b3I6CisgICAgICAgICAgICByZXR1cm4gU3VicmFuZ2U6OkNvcnJlY3Rpb247CisgICAgICAgIGNh
c2UgRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaDoKKyAgICAgICAgICAgIHJldHVybiBTdWJyYW5n
ZTo6VGV4dE1hdGNoOworICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRl
cm5hdGl2ZXM6CisgICAgICAgICAgICByZXR1cm4gU3VicmFuZ2U6OkRpY3RhdGlvbkFsdGVybmF0
aXZlczsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRp
Y3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICByZXR1cm4gU3VicmFu
Z2U6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM7CisjZW5kaWYKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTdWJyYW5nZTo6VW5tYXJrZWQ7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgVmVjdG9yPFN1YnJhbmdlPiBzdWJyYW5nZXM7CisgICAgc3VicmFuZ2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWFya2Vycy5zaXplKCkpOworCiAgICAgLy8gR2l2ZSBh
bnkgZG9jdW1lbnQgbWFya2VycyB0aGF0IHRvdWNoIHRoaXMgcnVuIGEgY2hhbmNlIHRvIGRyYXcg
YmVmb3JlIHRoZSB0ZXh0IGhhcyBiZWVuIGRyYXduLgogICAgIC8vIE5vdGUgZW5kKCkgcG9pbnRz
IGF0IHRoZSBsYXN0IGNoYXIsIG5vdCBvbmUgcGFzdCBpdCBsaWtlIGVuZE9mZnNldCBhbmQgcmFu
Z2VzIGRvLgogICAgIGZvciAoYXV0byogbWFya2VyIDogbWFya2VycykgewpAQCAtOTM5LDE5ICs5
NjMsMTMgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VycyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG8KICAgICAgICAgICAgIGNhc2UgRG9jdW1l
bnRNYXJrZXI6OlNwZWxsaW5nOgogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6Q29y
cmVjdGlvbkluZGljYXRvcjoKICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlczoKLSAgICAgICAgICAgICAgICBwYWludERvY3VtZW50TWFya2VyKGNv
bnRleHQsIGJveE9yaWdpbiwgKm1hcmtlciwgc3R5bGUsIGZvbnQpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjoKLSAgICAg
ICAgICAgICAgICBwYWludERvY3VtZW50TWFya2VyKGNvbnRleHQsIGJveE9yaWdpbiwgKm1hcmtl
ciwgc3R5bGUsIGZvbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKElP
UykKICAgICAgICAgICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBB
bHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCiAgICAgICAgICAgICBjYXNlIERv
Y3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgotICAgICAgICAg
ICAgICAgIHBhaW50RG9jdW1lbnRNYXJrZXIoY29udGV4dCwgYm94T3JpZ2luLCAqbWFya2VyLCBz
dHlsZSwgZm9udCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAg
IGNhc2UgRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaDoKLSAgICAgICAgICAgICAgICBwYWludFRl
eHRNYXRjaE1hcmtlcihjb250ZXh0LCBib3hPcmlnaW4sICptYXJrZXIsIHN0eWxlLCBmb250KTsK
KyAgICAgICAgICAgICAgICBzdWJyYW5nZXMudW5jaGVja2VkQXBwZW5kKHsgbWFya2VyLT5zdGFy
dE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpLCBtYXJrZXJUeXBlRm9yU3VicmFuZ2VUeXBl
KG1hcmtlci0+dHlwZSgpKSwgbWFya2VyIH0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQ6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC05NjIsNyArOTgwLDEzIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CisgICAgfQogCisgICAgZm9yIChhdXRvJiBzdWJyYW5nZSA6IHN1YmRpdmlk
ZShzdWJyYW5nZXMsIE92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KSkgeworICAgICAgICBpZiAo
c3VicmFuZ2UudHlwZSA9PSBTdWJyYW5nZTo6VGV4dE1hdGNoKQorICAgICAgICAgICAgcGFpbnRU
ZXh0TWF0Y2hNYXJrZXIoY29udGV4dCwgYm94T3JpZ2luLCBzdWJyYW5nZSwgc3R5bGUsIGZvbnQs
IHN1YnJhbmdlLm1hcmtlci0+aXNBY3RpdmVNYXRjaCgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcGFpbnREb2N1bWVudE1hcmtlcihjb250ZXh0LCBib3hPcmlnaW4sIHN1YnJhbmdlLCBz
dHlsZSwgZm9udCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaAppbmRleCAyMjc0ZGM3N2UwMzY5OWRhMDZhOWY5MWUzNWVkMzcyN2FjYTU1ZDNiLi43
YTU3MTA4OTVlOGEzMTBkZTkwODIyOTA2MDM5ZjI2N2Q2MmRlOTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5
LCAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsMTAgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogY2xhc3MgUmVuZGVyQ29tYmluZVRl
eHQ7CiBjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFya2VyOwogY2xhc3MgVGV4dFBhaW50ZXI7Citz
dHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CitzdHJ1Y3QgU3VicmFuZ2U7CiBzdHJ1Y3QgVGV4
dFBhaW50U3R5bGU7CiAKIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNOb1RydW5jYXRpb24gPSBVU0hS
VF9NQVg7CkBAIC0xNjEsOCArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50RGVjb3Jh
dGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250Q2FzY2FkZSYsIFJlbmRlckNvbWJpbmVU
ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwKICAgICAgICAgVGV4dERlY29yYXRpb24sIFRleHRQYWludFN0
eWxlLCBjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwT3V0UmVjdCk7CiAg
ICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBjb25z
dCBDb2xvciYgdGV4dENvbG9yKTsKLSAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50
TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOwotICAgIHZv
aWQgcGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnREb2N1bWVudE1hcmtlcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFN1YnJhbmdl
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFp
bnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94
T3JpZ2luLCBjb25zdCBTdWJyYW5nZSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENh
c2NhZGUmLCBib29sIGlzQWN0aXZlTWF0Y2gpOwogCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhw
YW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1N1YnJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTBkNmZhNDM5N2JmNmE1ZTZmNjQ1ODhhNGU1MWRlZTFkZjJiZDRiNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5jcHAK
QEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTdWJyYW5nZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPFN1YnJhbmdlPiBzdWJk
aXZpZGUoY29uc3QgVmVjdG9yPFN1YnJhbmdlPiYgc3VicmFuZ2VzLCBPdmVybGFwU3RyYXRlZ3kg
b3ZlcmxhcFN0cmF0ZWd5KQoreworICAgIGlmIChzdWJyYW5nZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgc3RydWN0IE9mZnNldCB7CisgICAgICAgIGVudW0gS2luZCB7
IEJlZ2luLCBFbmQgfTsKKyAgICAgICAgS2luZCBraW5kOworICAgICAgICB1bnNpZ25lZCB2YWx1
ZTsgLy8gQ29weSBvZiBzdWJyYW5nZS5zdGFydE9mZnNldC9lbmRPZmZzZXQgdG8gYXZvaWQgdGhl
IG5lZWQgdG8gYnJhbmNoIGJhc2VkIG9uIGtpbmQuCisgICAgICAgIGNvbnN0IFN1YnJhbmdlKiBz
dWJyYW5nZTsKKyAgICB9OworCisgICAgLy8gMS4gQnVpbGQgdGFibGUgb2YgYWxsIG9mZnNldHMu
CisgICAgVmVjdG9yPE9mZnNldD4gb2Zmc2V0czsKKyAgICBBU1NFUlQoc3VicmFuZ2VzLnNpemUo
KSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDIpOworICAgIHVuc2ln
bmVkIG51bWJlck9mU3VicmFuZ2VzID0gc3VicmFuZ2VzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBu
dW1iZXJPZk9mZnNldHMgPSAyICogbnVtYmVyT2ZTdWJyYW5nZXM7CisgICAgb2Zmc2V0cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mT2Zmc2V0cyk7CisgICAgZm9yIChhdXRvJiBzdWJy
YW5nZSA6IHN1YnJhbmdlcykgeworICAgICAgICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZCh7IE9m
ZnNldDo6QmVnaW4sIHN1YnJhbmdlLnN0YXJ0T2Zmc2V0LCAmc3VicmFuZ2UgfSk7CisgICAgICAg
IG9mZnNldHMudW5jaGVja2VkQXBwZW5kKHsgT2Zmc2V0OjpFbmQsIHN1YnJhbmdlLmVuZE9mZnNl
dCwgJnN1YnJhbmdlIH0pOworICAgIH0KKworICAgIC8vIDIuIFNvcnQgb2Zmc2V0cyBzdWNoIHRo
YXQgYmVnaW4gb2Zmc2V0cyBhcmUgaW4gcGFpbnQgb3JkZXIgYW5kIGVuZCBvZmZzZXRzIGFyZSBp
biByZXZlcnNlIHBhaW50IG9yZGVyLgorICAgIHN0ZDo6c29ydChvZmZzZXRzLmJlZ2luKCksIG9m
ZnNldHMuZW5kKCksIFtdIChjb25zdCBPZmZzZXQmIGEsIGNvbnN0IE9mZnNldCYgYikgeworICAg
ICAgICByZXR1cm4gYS52YWx1ZSA8IGIudmFsdWUgfHwgKGEudmFsdWUgPT0gYi52YWx1ZSAmJiBh
LmtpbmQgPT0gYi5raW5kICYmIGEua2luZCA9PSBPZmZzZXQ6OkJlZ2luICYmIGEuc3VicmFuZ2Ut
PnR5cGUgPCBiLnN1YnJhbmdlLT50eXBlKQorICAgICAgICB8fCAoYS52YWx1ZSA9PSBiLnZhbHVl
ICYmIGEua2luZCA9PSBiLmtpbmQgJiYgYS5raW5kID09IE9mZnNldDo6RW5kICYmIGEuc3VicmFu
Z2UtPnR5cGUgPiBiLnN1YnJhbmdlLT50eXBlKTsKKyAgICB9KTsKKworICAgIC8vIDMuIENvbXB1
dGUgaW50ZXJzZWN0aW9uLgorICAgIFZlY3RvcjxTdWJyYW5nZT4gcmVzdWx0OworICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mU3VicmFuZ2VzKTsKKyAgICBIYXNoU2V0
PGNvbnN0IFN1YnJhbmdlKj4gcHJvY2Vzc2VkU3VicmFuZ2VzOworICAgIHVuc2lnbmVkIG9mZnNl
dFNvRmFyID0gb2Zmc2V0c1swXS52YWx1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
bnVtYmVyT2ZPZmZzZXRzOyArK2kpIHsKKyAgICAgICAgaWYgKG9mZnNldHNbaV0udmFsdWUgPiBv
ZmZzZXRzW2kgLSAxXS52YWx1ZSkgeworICAgICAgICAgICAgaWYgKG92ZXJsYXBTdHJhdGVneSA9
PSBPdmVybGFwU3RyYXRlZ3k6OkZyb250bW9zdCkgeworICAgICAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGZyb250bW9zdDsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAwOyBqIDwgaTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcHJvY2Vzc2Vk
U3VicmFuZ2VzLmNvbnRhaW5zKG9mZnNldHNbal0uc3VicmFuZ2UpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgZnJvbnRtb3N0ID0gajsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGZyb250bW9zdCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9m
ZnNldFNvRmFyLCBvZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2Zyb250bW9zdC52YWx1ZSgpXS5z
dWJyYW5nZS0+dHlwZSwgb2Zmc2V0c1tmcm9udG1vc3QudmFsdWUoKV0uc3VicmFuZ2UtPm1hcmtl
ciB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IGk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3Nl
ZFN1YnJhbmdlcy5jb250YWlucyhvZmZzZXRzW2pdLnN1YnJhbmdlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBvZmZzZXRTb0Zhciwgb2Zmc2V0c1tpXS52YWx1ZSwg
b2Zmc2V0c1tqXS5zdWJyYW5nZS0+dHlwZSwgb2Zmc2V0c1tqXS5zdWJyYW5nZS0+bWFya2VyIH0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mZnNldFNv
RmFyID0gb2Zmc2V0c1tpXS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0c1tp
XS5raW5kID09IE9mZnNldDo6RW5kKQorICAgICAgICAgICAgcHJvY2Vzc2VkU3VicmFuZ2VzLmFk
ZChvZmZzZXRzW2ldLnN1YnJhbmdlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
fQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N1YnJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRiZTFkMGQx
ODhlOThhODMxMTBhOTA5OWEwNWVlNjAxNDBkMWFlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TdWJyYW5nZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFya2VyOworCitzdHJ1Y3QgU3Vi
cmFuZ2UgeworICAgIC8vIFNvcnRlZCBieSBwYWludCBvcmRlcgorICAgIGVudW0gVHlwZSB7Cisg
ICAgICAgIFVubWFya2VkLAorICAgICAgICBHcmFtbWFyRXJyb3IsCisgICAgICAgIENvcnJlY3Rp
b24sCisgICAgICAgIFNwZWxsaW5nRXJyb3IsCisgICAgICAgIFRleHRNYXRjaCwKKyAgICAgICAg
RGljdGF0aW9uQWx0ZXJuYXRpdmVzLAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgLy8gRklY
TUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vODkzMzM1Mj4uIEFsc28sIHJlbW92ZSB0aGUgUExBVEZP
Uk0oSU9TKS1ndWFyZC4KKyAgICAgICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywK
KyNlbmRpZgorICAgIH07CisjaWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dSRUdB
VEVTKQorICAgIFN1YnJhbmdlKCkgPSBkZWZhdWx0OworICAgIFN1YnJhbmdlKHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIFR5cGUgdHlwZSwgY29uc3QgUmVuZGVyZWRE
b2N1bWVudE1hcmtlciogbWFya2VyID0gbnVsbHB0cikKKyAgICAgICAgOiBzdGFydE9mZnNldCB7
IHN0YXJ0T2Zmc2V0IH0KKyAgICAgICAgLCBlbmRPZmZzZXQgeyBlbmRPZmZzZXQgfQorICAgICAg
ICAsIHR5cGUgeyB0eXBlIH0KKyAgICAgICAgLCBtYXJrZXIgeyBtYXJrZXIgfQorICAgIHsKKyAg
ICB9CisjZW5kaWYKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBlbmRP
ZmZzZXQ7CisgICAgVHlwZSB0eXBlOworICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIq
IG1hcmtlciB7IG51bGxwdHIgfTsKK307CisKK2VudW0gY2xhc3MgT3ZlcmxhcFN0cmF0ZWd5IHsg
Tm9uZSwgRnJvbnRtb3N0IH07CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3VicmFuZ2U+IHN1YmRp
dmlkZShjb25zdCBWZWN0b3I8U3VicmFuZ2U+JiwgT3ZlcmxhcFN0cmF0ZWd5ID0gT3ZlcmxhcFN0
cmF0ZWd5OjpOb25lKTsKKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzBkMGVlNjE5YjY1ZTBjMDQ4MWMxM2NkNThjNTBjNjBkOGY3MThl
Mi4uYjU3YzgxY2U3NzNjOGJhN2M3YmFmMzE5NWY2MzI5MWQwMWFhYjNlZSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE3LTA5LTIwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBT
cGVsbGluZyBhbmQgZ3JhbW1hciBkb3RzIHNob3VsZCBub3Qgb3ZlcmxhcAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjY1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNDU1NjQyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIHN1YmRpdmlzaW9uIGFsZ29yaXRo
bS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdWJy
YW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDE3LTA5LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIEFjdGlvblR5cGU6OkludmFsaWRBY3Rpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjFkYjhlMGE4OGM5Mjg3OGRiNGMwZDY4MTJjYmNmYjJmYmJkMzZhNy4u
NDNkYmJiYWYxZWE2MDY5M2RjMzQ2ZDlkMTc0YTJhYjFlYjU4OTEyNiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY0Miw2ICs2NDIsNyBAQAogCQlDREUxOTVCNTFDRkUwQjg4MDA1M0QyNTYg
LyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTE5NUIyMUNGRTBBREUwMDUzRDI1NiAv
KiBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWwgKi87IH07CiAJCUNFMDZERjlCMUUxODUx
RjIwMEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA2REY5QTFFMTg1MUYyMDBFNTcwQzkgLyogU2VjdXJp
dHlPcmlnaW4uY3BwICovOyB9OwogCQlDRTE0RjFBNDE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE0RjFBMjE4MTg3M0IwMDAxQzI3MDUg
LyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCAqLzsgfTsKKwkJQ0Ux
ODY2NDkxRjcyRThGMTAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTg2NjQ3MUY3MkU4RjEwMEEwQ0FCNiAvKiBT
dWJyYW5nZS5jcHAgKi87IH07CiAJCUNFMzUyNEY4MUIxNDMxRjYwMDI4QTdDNSAvKiBUZXh0Rmll
bGREaWRCZWdpbkFuZEVuZEVkaXRpbmdfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEYyMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0
RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQ0UzNTI0Rjkx
QjE0NDFDNDAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRGMTFCMTQy
QjhEMDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCAqLzsgfTsK
IAkJQ0UzNTI0RkExQjE0NDM4OTAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRG
NTFCMTQyQkJCMDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sICovOyB9OwpAQCAtMTY3
MCw2ICsxNjcxLDcgQEAKIAkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIEZ1bGxzY3JlZW5U
b3BDb250ZW50SW5zZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTA2REY5QTFFMTg1MUYyMDBFNTcwQzkgLyogU2VjdXJpdHlPcmlnaW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTE0RjFBMjE4MTg3M0IwMDAxQzI3MDUgLyogV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNFMTg2NjQ3MUY3MkU4RjEwMEEwQ0FCNiAvKiBTdWJyYW5nZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdWJyYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
MzJDN0M3MTgxODRDNDkwMENEOEMyOCAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxD
cmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTM1MjRGMTFCMTQyQjhEMDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRF
ZGl0aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRGaWVs
ZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFMzUyNEYyMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRp
bmdfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRG
aWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjA5NSw2ICsyMDk3LDcgQEAKIAkJCQlBMTc5OTE4QTFFMUNBMjQxMDBBNTA1
RUQgLyogU2hhcmVkQnVmZmVyVGVzdC5oICovLAogCQkJCUVDQTY4MENEMUU2OENDMDkwMDczMUQy
MCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCiAJCQkJQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2
IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovLAorCQkJCUNFMTg2NjQ3MUY3MkU4RjEwMEEw
Q0FCNiAvKiBTdWJyYW5nZS5jcHAgKi8sCiAJCQkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8q
IFRpbWVSYW5nZXMuY3BwICovLAogCQkJCTdBRDNGRThEMUQ3NUZCOEQwMEIxNjlBNCAvKiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCiAJCQkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8q
IFVSTC5jcHAgKi8sCkBAIC0zMzY5LDYgKzMzNzIsNyBAQAogCQkJCTdDQ0U3RUQxMUE0MTFBN0Uw
MDQ0N0M0QyAvKiBTdHJpbmdUcnVuY2F0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlFQ0E2ODBD
RTFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0U0RDVERTcxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0UxODY2NDkxRjcyRThGMTAwQTBDQUI2IC8qIFN1YnJhbmdlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQyMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJyZXNv
dXJjZUVycm9yQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBODFBNDExQTE5MDA0
NDdDNEMgLyogU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93Lm0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVybWluYXRlVHdpY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU3VicmFuZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N1YnJh
bmdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNGUyMmUyMDc2NTNmOWE3Yzc5N2E1MTBkMjliZTg0NzI2MjZk
NTEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1N1YnJhbmdlLmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmVk
RG9jdW1lbnRNYXJrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJhbmdlLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBTdWJyYW5nZTo6VHlwZSB0eXBlKQorewor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU3VicmFuZ2U6OlVubWFya2VkOgorICAgICAg
ICByZXR1cm4gb3MgPDwgIlVubWFya2VkIjsKKyAgICBjYXNlIFN1YnJhbmdlOjpHcmFtbWFyRXJy
b3I6CisgICAgICAgIHJldHVybiBvcyA8PCAiR3JhbW1hckVycm9yIjsKKyAgICBjYXNlIFN1YnJh
bmdlOjpDb3JyZWN0aW9uOgorICAgICAgICByZXR1cm4gb3MgPDwgIkNvcnJlY3Rpb24iOworICAg
IGNhc2UgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3I6CisgICAgICAgIHJldHVybiBvcyA8PCAiU3Bl
bGxpbmdFcnJvciI7CisgICAgY2FzZSBTdWJyYW5nZTo6VGV4dE1hdGNoOgorICAgICAgICByZXR1
cm4gb3MgPDwgIlRleHRNYXRjaCI7CisgICAgY2FzZSBTdWJyYW5nZTo6RGljdGF0aW9uQWx0ZXJu
YXRpdmVzOgorICAgICAgICByZXR1cm4gb3MgPDwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyI7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84
OTMzMzUyPi4gQWxzbywgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorICAgIGNhc2Ug
U3VicmFuZ2U6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXM6CisgICAgICAgIHJldHVy
biBvcyA8PCAiRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyI7CisjZW5kaWYKKyAgICB9
Cit9CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBT
dWJyYW5nZSYgc3VicmFuZ2UpCit7CisgICAgb3MgPDwgIigiIDw8IHN1YnJhbmdlLnN0YXJ0T2Zm
c2V0IDw8ICIsICIgPDwgc3VicmFuZ2UuZW5kT2Zmc2V0IDw8ICIsICIgPDwgc3VicmFuZ2UudHlw
ZTsKKyAgICBpZiAoc3VicmFuZ2UubWFya2VyKQorICAgICAgICBvcyA8PCBzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4oc3VicmFuZ2UubWFya2VyKTsKKyAgICByZXR1cm4gb3MgPDwgIikiOworfQor
Citib29sIG9wZXJhdG9yPT0oY29uc3QgU3VicmFuZ2UmIGEsIGNvbnN0IFN1YnJhbmdlJiBiKQor
eworICAgIHJldHVybiBhLnN0YXJ0T2Zmc2V0ID09IGIuc3RhcnRPZmZzZXQgJiYgYS5lbmRPZmZz
ZXQgPT0gYi5lbmRPZmZzZXQgJiYgYS50eXBlID09IGIudHlwZSAmJiBhLm1hcmtlciA9PSBiLm1h
cmtlcjsKK30KKworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoU3VicmFu
Z2UsIFN1YmRpdmlkZUVtcHR5KQoreworICAgIEVYUEVDVF9FUSgwVSwgc3ViZGl2aWRlKHsgfSku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHN1YmRpdmlkZSh7IH0sIE92ZXJsYXBTdHJhdGVn
eTo6RnJvbnRtb3N0KS5zaXplKCkpOworfQorCitURVNUKFN1YnJhbmdlLCBTdWJkaXZpZGVTaW1w
bGUpCit7CisgICAgU3VicmFuZ2Ugc3VicmFuZ2UgeyAwLCA5LCBTdWJyYW5nZTo6U3BlbGxpbmdF
cnJvciB9OworICAgIGF1dG8gcmVzdWx0cyA9IHN1YmRpdmlkZSh7IHN1YnJhbmdlIH0pOworICAg
IEFTU0VSVF9FUSgxVSwgcmVzdWx0cy5zaXplKCkpOworICAgIEVYUEVDVF9FUShzdWJyYW5nZSwg
cmVzdWx0c1swXSk7Cit9CisKK1RFU1QoU3VicmFuZ2UsIFN1YmRpdmlkZVNwZWxsaW5nQW5kR3Jh
bW1hclNpbXBsZSkKK3sKKyAgICBSZW5kZXJlZERvY3VtZW50TWFya2VyIGdyYW1tYXJFcnJvck1h
cmtlciB7IERvY3VtZW50TWFya2VyIHsgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIDcsIDggfSB9
OworICAgIFZlY3RvcjxTdWJyYW5nZT4gZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAgICBTdWJy
YW5nZSB7IGdyYW1tYXJFcnJvck1hcmtlci5zdGFydE9mZnNldCgpLCBncmFtbWFyRXJyb3JNYXJr
ZXIuZW5kT2Zmc2V0KCksIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IsICZncmFtbWFyRXJyb3JNYXJr
ZXIgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMiwgMzIsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9y
IH0sCisgICAgfTsKKyAgICBhdXRvIHJlc3VsdHMgPSBzdWJkaXZpZGUoZXhwZWN0ZWRTdWJyYW5n
ZXMpOworICAgIEFTU0VSVF9FUShleHBlY3RlZFN1YnJhbmdlcy5zaXplKCksIHJlc3VsdHMuc2l6
ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkU3VicmFuZ2VzLnNpemUo
KTsgKytpKQorICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTdWJyYW5nZXNbaV0sIHJlc3VsdHNb
aV0pOworfQorCitURVNUKFN1YnJhbmdlLCBTdWJkaXZpZGVTcGVsbGluZ0FuZEdyYW1tYXJPdmVy
bGFwKQoreworICAgIFZlY3RvcjxTdWJyYW5nZT4gc3VicmFuZ2VzIHsKKyAgICAgICAgU3VicmFu
Z2UgeyAwLCA0MCwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7
IDIsIDE3LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIw
LCA0MCwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA0MSwg
NDUsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgfTsKKyAgICBWZWN0b3I8U3VicmFu
Z2U+IGV4cGVjdGVkU3VicmFuZ2VzIHsKKyAgICAgICAgU3VicmFuZ2UgeyAwLCAyLCBTdWJyYW5n
ZTo6R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgMiwgMTcsIFN1YnJhbmdlOjpH
cmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyLCAxNywgU3VicmFuZ2U6OlNwZWxs
aW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAxNywgMjAsIFN1YnJhbmdlOjpHcmFtbWFy
RXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpHcmFtbWFyRXJy
b3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9y
IH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDEsIDQ1LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9
LAorICAgIH07CisgICAgYXV0byByZXN1bHRzID0gc3ViZGl2aWRlKHN1YnJhbmdlcyk7CisgICAg
QVNTRVJUX0VRKGV4cGVjdGVkU3VicmFuZ2VzLnNpemUoKSwgcmVzdWx0cy5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwZWN0ZWRTdWJyYW5nZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFN1YnJhbmdlc1tpXSwgcmVzdWx0c1tpXSk7Cit9CisK
K1RFU1QoU3VicmFuZ2UsIFN1YmRpdmlkZVNwZWxsaW5nQW5kR3JhbW1hck92ZXJsYXBGcm9udG1v
c3QpCit7CisgICAgVmVjdG9yPFN1YnJhbmdlPiBzdWJyYW5nZXMgeworICAgICAgICBTdWJyYW5n
ZSB7IDAsIDQwLCBTdWJyYW5nZTo6R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsg
MiwgMTcsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgMjAs
IDQwLCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDQxLCA0
NSwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICB9OworICAgIFZlY3RvcjxTdWJyYW5n
ZT4gZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAgICBTdWJyYW5nZSB7IDAsIDIsIFN1YnJhbmdl
OjpHcmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyLCAxNywgU3VicmFuZ2U6OlNw
ZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAxNywgMjAsIFN1YnJhbmdlOjpHcmFt
bWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpTcGVsbGlu
Z0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDEsIDQ1LCBTdWJyYW5nZTo6U3BlbGxpbmdF
cnJvciB9LAorICAgIH07CisgICAgYXV0byByZXN1bHRzID0gc3ViZGl2aWRlKHN1YnJhbmdlcywg
T3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpOworICAgIEFTU0VSVF9FUShleHBlY3RlZFN1YnJh
bmdlcy5zaXplKCksIHJlc3VsdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGV4cGVjdGVkU3VicmFuZ2VzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWRTdWJyYW5nZXNbaV0sIHJlc3VsdHNbaV0pOworfQorCitURVNUKFN1YnJhbmdlLCBTdWJkaXZp
ZGVTcGVsbGluZ0FuZEdyYW1tYXJDb21wbGljYXRlZEZyb250bW9zdCkKK3sKKyAgICBWZWN0b3I8
U3VicmFuZ2U+IHN1YnJhbmdlcyB7CisgICAgICAgIFN1YnJhbmdlIHsgMCwgNiwgU3VicmFuZ2U6
OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAwLCA0NiwgU3VicmFuZ2U6Okdy
YW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDcsIDE2LCBTdWJyYW5nZTo6U3BlbGxp
bmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIyLCAyNywgU3VicmFuZ2U6OlNwZWxsaW5n
RXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAzNCwgNDQsIFN1YnJhbmdlOjpTcGVsbGluZ0Vy
cm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDYsIDUwLCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJv
ciB9LAorICAgICAgICBTdWJyYW5nZSB7IDUxLCA1OCwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3Ig
fSwKKyAgICAgICAgU3VicmFuZ2UgeyA1OSwgNjMsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwK
KyAgICB9OworICAgIFZlY3RvcjxTdWJyYW5nZT4gZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAg
ICBTdWJyYW5nZSB7IDAsIDYsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1
YnJhbmdlIHsgNiwgNywgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5n
ZSB7IDcsIDE2LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7
IDE2LCAyMiwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIy
LCAyNywgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAyNywg
MzQsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAzNCwgNDQs
IFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDQsIDQ2LCBT
dWJyYW5nZTo6R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNDYsIDUwLCBTdWJy
YW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDUxLCA1OCwgU3VicmFu
Z2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA1OSwgNjMsIFN1YnJhbmdl
OjpHcmFtbWFyRXJyb3IgfSwKKyAgICB9OworICAgIGF1dG8gcmVzdWx0cyA9IHN1YmRpdmlkZShz
dWJyYW5nZXMsIE92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KTsKKyAgICBBU1NFUlRfRVEoZXhw
ZWN0ZWRTdWJyYW5nZXMuc2l6ZSgpLCByZXN1bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBleHBlY3RlZFN1YnJhbmdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkU3VicmFuZ2VzW2ldLCByZXN1bHRzW2ldKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321373</attachid>
            <date>2017-09-20 14:34:11 -0700</date>
            <delta_ts>2017-09-20 14:50:38 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-177265-20170920143410.patch</filename>
            <type>text/plain</type>
            <size>43783</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJjY2I1ZGU2OWI1ZDRk
YmUzM2Q5Y2M0OWY0ODA4MDFjYjgyZWRjMS4uYTEzZDcwOGJmZGVmOTgwNTNhZDBmNzE3ZWEyYmM3
ZWJlYzI3NzEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE3LTA5LTIwICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBTcGVsbGluZyBhbmQgZ3Jh
bW1hciBkb3RzIHNob3VsZCBub3Qgb3ZlcmxhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU1
NjQyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IGxpbmUgbWF5IGNvbnRhaW4gYm90aCBzcGVsbGluZyBhbmQgZ3JhbW1hciBlcnJvcnMgc3VjaCB0
aGF0IHRoZXNlIGVycm9ycyBvdmVybGFwLgorICAgICAgICBGb3IgZXhhbXBsZSwgInRvIG1vb29m
IG9yIG5vdCB0byBtb29vZi4iLiBJdCBpcyBtb3JlIHBsZWFzaW5nIGFlc3RoZXRpY2FsbHkgdG8K
KyAgICAgICAgcGFpbnQgc3BlbGxpbmcgYW5kIGdyYW1tYXIgZG90cyBzdWNoIHRoYXQgdGhleSBk
byBub3Qgb3ZlcmxhcC4gVGhpcyBhbHNvIG1hdGNoZXMKKyAgICAgICAgQXBwS2l0J3MgYmVoYXZp
b3IuCisKKyAgICAgICAgQSBzaWRlIGJlbmVmaXQgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBh
ZGRzIHN1cHBvcnQgaW5mcmFzdHJ1Y3R1cmUgdG93YXJkcworICAgICAgICBpbXBsZW1lbnRpbmcg
dGhlIENTUyBQc2V1ZG8tRWxlbWVudHMgTW9kdWxlIExldmVsIDQgcHNldWRvIGVsZW1lbnRzIDo6
c3BlbGxpbmctZXJyb3IKKyAgICAgICAgYW5kIDo6Z3JhbW1hci1lcnJvciAoc2VlIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Nzg0PikuCisgICAgICAgIEl0IHdp
bGwgYWxzbyBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBhZGQgOjppbmFjdGl2ZS1zZWxlY3Rp
b24gYW5kIGFsbG93IHVzCisgICAgICAgIHRvIG1ha2UgOjpzZWxlY3Rpb24gY29uZm9ybSB0byBD
U1MgUHNldWRvLUVsZW1lbnRzIE1vZHVsZSBMZXZlbCA0LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IEFkZCBmaWxlIFN1YnJhbmdlLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IEFkZCBmaWxlcyBTdWJyYW5nZS57Y3BwLCBofS4KKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VyKTogTW9kaWZpZWQgdG8gdGFrZSBhIGNvbnN0IFN1
YnJhbmdlJiBpbnN0ZWFkCisgICAgICAgIG9mIGEgUmVuZGVyZWREb2N1bWVudE1hcmtlciYuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6IE1v
ZGlmaWVkIHRvIHRha2UgYSBjb25zdCBTdWJyYW5nZSYgaW5zdGVhZAorICAgICAgICBvZiBhIFJl
bmRlcmVkRG9jdW1lbnRNYXJrZXImIGFuZCB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRo
ZSB0ZXh0IG1hdGNoIGlzIGFjdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OnBhaW50RG9jdW1lbnRNYXJrZXJzKTogQ29sbGVjdCB0aGUgc3VicmFuZ2VzIHRoYXQgbmVlZCB0
byBiZQorICAgICAgICBwYWludGVkLCBzdWJkaXZpZGUgdGhlbSBwcmVzZXJ2aW5nIG9ubHkgdGhl
IGZyb250bW9zdCBzdWJyYW5nZSB3aGVuIHR3byBvciBtb3JlIHN1YnJhbmdlcworICAgICAgICBv
dmVybGFwIGFuZCBwYWludCB0aGUgcmVzdWx0aW5nIHN1YnJhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6OmxpbmVTdHlsZUZvck1hcmtlclR5cGUpOiBEZWxldGVkOyBjb252ZXJ0ZWQgdG8gYSBsYW1i
ZGEgZnVuY3Rpb24gaW5saW5lZAorICAgICAgICBpbiBwYWludERvY3VtZW50TWFya2VyKCkgYXMg
dGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSBtYWRlIHVzZSBvZiB0aGlzIGZ1bmN0aW9uLgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1N1
YnJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzdWJkaXZpZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TdWJyYW5nZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJh
bmdlOjpTdWJyYW5nZSk6CisKKzIwMTctMDktMjAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCiAgICAgICAgIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBzaG91bGQgaW5jbHVk
ZSBEb2N1bWVudE1hcmtlci5oCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzcyNjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0ZGY3ZDk2MWViNzYy
MzM2OTNhNDRmYjY1MjQzYzU1YTg2N2UxZTYyLi5hYmFjZDY5NWQ3ZmE1ODNjZjI4ZWQwNTY4ODY3
Y2YyOGUzYmIwZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjc1NSw2ICsyNzU1LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UGFnaW5h
dGlvbi5jcHAKICAgICByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcAogICAg
IHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCisgICAg
cmVuZGVyaW5nL1N1YnJhbmdlLmNwcAogICAgIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAogICAgIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA5OWM3OGI2MDA1Y2YyMDkyMGJlODQ4NDE2NzE4YzBjZDIzNmU3
MTUwLi4xMzlmZGY1YjE1NzRhODhlOGU0ZDA2NmI1Y2NmNTExZjQwZjc0ZmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDg5
LDYgKzY0ODksOCBAQAogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Uw
OEMzRDExNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzQ0YxNTJC
NTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
RTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzRDAxNTJC
NTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQlDRTE4NjY0NDFGNzJFNUI0MDBBMENBQjYgLyog
U3VicmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxODY2NDIxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCAqLzsgfTsKKwkJQ0Ux
ODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogU3Vi
cmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lcy5oICovOyB9OwogCQlDRTI4NDk4OTFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLzsgfTsKIAkJQ0U2REFERjkxQzU5MUU2
QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZEQURGNzFDNTkx
RTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcCAq
LzsgfTsKQEAgLTE1MjY1LDYgKzE1MjY3LDggQEAKIAkJQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UwOEMzQ0YxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDhD
M0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UxODY2NDIxRjcyRTVCNDAwQTBDQUI2IC8q
IFN1YnJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YnJhbmdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0
OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVD
QjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI2MTA1LDYgKzI2MTA5LDggQEAKIAkJCQlFNEU5QjExODE4MTA5MTZGMDAzQUNDREYgLyog
U2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi8sCiAJCQkJNTgyQ0IwNTQxQTc4QTJCMjAwQUZG
Q0M0IC8qIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAgKi8sCiAJCQkJ
NTgyQ0IwNTIxQTc4QTE0QjAwQUZGQ0M0IC8qIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5oICovLAorCQkJCUNFMTg2NjQyMUY3MkU1QjQwMEEwQ0FCNiAvKiBTdWJyYW5nZS5j
cHAgKi8sCisJCQkJQ0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIFN1YnJhbmdlLmggKi8sCiAJ
CQkJQThDRkYwNEMwQTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggKi8sCiAJCQkJMEY1
NERDRTMxODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmNwcCAqLywKIAkJCQkwRjU0
RENFNDE4ODEwNTFEMDAzRUVEQkIgLyogVGV4dEF1dG9TaXppbmcuaCAqLywKQEAgLTI4ODMyLDcg
KzI4ODM4LDYgQEAKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFu
c3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdGRjg0
MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURCODE3
RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFMThDMzU0NDFGNzE5NzBDMDBGRjYzMkQgLyogV2ViQXJjaGl2ZVJlc291cmNl
V2ViUmVzb3VyY2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1
MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJD
NDM3MjFCQ0YwRDc1MDAwMUUyQkMgLyogSlNSVENSdHBSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUUyQzQzNzQxQkNGMEQ3NTAwMDFFMkJDIC8qIEpTUlRDUnRwU2VuZGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwMTg0LDYgKzMwMTg5LDcgQEAKIAkJCQlEMDAwRUQyODExQzFCOUNEMDBD
NDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQzQwRkJBMTY1
NUNDQjkwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNTVCM0RENDEyNTFGMTJEMDAzRUYyNjkgLyogU3VibWl0SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRTE4NjY0NTFGNzJFNUI0MDBBMENBQjYgLyogU3VicmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1
YnN0aXR1dGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkIwMjBEQjUzMDA2MDAxREI3
OTQgLyogU3Vic3RpdHV0ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzE3LDcgKzMw
MzIzLDYgQEAKIAkJCQkwODA2RTU3QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwOENBM0Q0NDEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVh
ck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENUMxREQ3RUM5QzAwMTI4NTUyIC8qIFNW
R01hdHJpeFZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTg1MzY4NDFGNEU0ODE0MDBGRTA5
MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBNEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMUYyQjEwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01p
c3NpbmdHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTRFMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzA2NTEsNiAr
MzA2NTYsOCBAQAogCQkJCUFBQTcyOEY3MTZEMUQ4QkMwMEQzQkJDNiAvKiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE0NzhBN0YxNkNENzBD
MzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDNFRjQ0ODE5MTc5MTVDMDAwMzQxODQgLyogV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTg1MzY4NDFGNEU0ODE0MDBG
RTA5MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTE4QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNv
dXJjZVdlYlJlc291cmNlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFNjY3QTUxRTRC
QkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFCMkE2MjYxRUYxQkY2RDAwMkI5RDdBIC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjY1NSw3ICszMjY2Miw2IEBA
CiAJCQkJQTYxNDhBNzgxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRNTEtleWdlbkVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjEwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExh
YmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyMzBBMUNFNjNCMDBCNDJC
MjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMThDMzU0
MzFGNzE5NzAxMDBGRjYzMkQgLyogV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRN
TExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMDBBMTlENjA2MDA3RkI4
QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjcw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMjgyMyw3ICszMjgyOSw2IEBACiAJCQkJQTFDQzU2NzgxRjQ2MTRBNTAwQTQ1NTVCIC8qIEpT
UGF5bWVudFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFGNjAwNTcxRjQ3NjUwNTAw
NzdFODNGIC8qIEpTUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMUY2MDA1OTFGNDc2NTA1MDA3N0U4M0YgLyogSlNQYXltZW50UmVxdWVzdFVwZGF0ZUV2
ZW50SW5pdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTg1MzY4NTFGNTA5MDYxMDBGRTA5MUIg
LyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUExQ0M1NjdBMUY0NjE0QUEwMEE0NTU1QiAvKiBKU1BheW1lbnRSZXNwb25zZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUNDNTY3QzFGNDYxNEFGMDBBNDU1NUIgLyogSlNQYXlt
ZW50U2hpcHBpbmdPcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFDQzU2N0UxRjQ2MTRC
NDAwQTQ1NTVCIC8qIEpTUGF5bWVudFNoaXBwaW5nVHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTM0MDY4LDYgKzM0MDczLDcgQEAKIAkJCQlEMDAwRUQyNzExQzFCOUNEMDBDNDc3MjYgLyogU3Vi
ZnJhbWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBG
MjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1
QjNERDMxMjUxRjEyRDAwM0VGMjY5IC8qIFN1Ym1pdElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDRTE4NjY0NDFGNzJFNUI0MDBBMENBQjYgLyogU3VicmFuZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NGMTU4OUIxRUJDNENGRDAwRDRCRkI3IC8qIFN1YnJlc291cmNlSW50ZWdy
aXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRTIyN0U0MEFGNTg5QUQwMEQ0ODMyNCAvKiBT
dWJyZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RThGQURDNDE5OUE5NUIx
MDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLApAQCAt
MzQ0MzEsNiArMzQ0MzcsOCBAQAogCQkJCUFBNDc4QTgwMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEM0VG
NDQ5MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxMjBERTNFRDFDODZDQTNFMDBCNkQ0REQgLyogV2ViQW5p
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxODUzNjg1MUY1MDkwNjEwMEZFMDkxQiAv
KiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTE4QzM1NDMxRjcxOTcwMTAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdl
YlJlc291cmNlSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERTY2N0E0MUU0QkJGMTUw
MEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdE
NjM3NDExQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMzExQ0JGNzREQTAwOTAxQ0NGIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCmluZGV4IDU3NWZhMDZhZGU2MGM1MDEzYWVlNDUxYjdlNDNhOTFk
MzBmMmZkNWIuLjZiYTNhMjZjYzQ4NjMxZGY0NzdmZTg5Mzc4NzkwYzg5OWZlMTczNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAw
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1
ZGUgIlN1YnJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHREZWNvcmF0
aW9uUGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCkBAIC03ODIsMjkgKzc4
Myw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmCiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RN
KHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9ja3dpc2UpKTsKIH0KIAotc3RhdGljIEdyYXBo
aWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgbGluZVN0eWxlRm9yTWFya2VyVHlw
ZShEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlKQotewotICAgIHN3aXRjaCAo
bWFya2VyVHlwZSkgewotICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgotICAgICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlclNwZWxsaW5nTGluZVN0eWxl
OwotICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI6Ci0gICAgICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2VyR3JhbW1hckxpbmVTdHlsZTsKLSAgICBjYXNlIERv
Y3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yOgotICAgICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnRMaW5lU3R5
bGU7Ci0gICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOgotICAg
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckRpY3RhdGlvbkFsdGVy
bmF0aXZlc0xpbmVTdHlsZTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgY2FzZSBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlczoKLSAgICAgICAgLy8gRklYTUU6
IFJlbmFtZSBUZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTGluZVN0
eWxlIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCi0gICAgICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHQ6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXNMaW5lU3R5bGU7Ci0jZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJrZXJT
cGVsbGluZ0xpbmVTdHlsZTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQm
IGJveE9yaWdpbiwgUmVuZGVyZWREb2N1bWVudE1hcmtlciYgbWFya2VyLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQordm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBTdWJyYW5nZSYgc3VicmFuZ2UsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiB7CiAgICAgLy8gTmV2ZXIg
cHJpbnQgc3BlbGxpbmcvZ3JhbW1hciBtYXJrZXJzICg1MzI3ODg3KQogICAgIGlmIChyZW5kZXJl
cigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSkKQEAgLTgxOCwxNiArNzk3LDE2IEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UG9pCiAKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIG1l
YXN1cmUgdGV4dAogICAgIGJvb2wgbWFya2VyU3BhbnNXaG9sZUJveCA9IHRydWU7Ci0gICAgaWYg
KG1fc3RhcnQgPD0gbWFya2VyLnN0YXJ0T2Zmc2V0KCkpCisgICAgaWYgKG1fc3RhcnQgPD0gc3Vi
cmFuZ2Uuc3RhcnRPZmZzZXQpCiAgICAgICAgIG1hcmtlclNwYW5zV2hvbGVCb3ggPSBmYWxzZTsK
LSAgICBpZiAoKGVuZCgpICsgMSkgIT0gbWFya2VyLmVuZE9mZnNldCgpKSAvLyBlbmQgcG9pbnRz
IGF0IHRoZSBsYXN0IGNoYXIsIG5vdCBwYXN0IGl0CisgICAgaWYgKChlbmQoKSArIDEpICE9IHN1
YnJhbmdlLmVuZE9mZnNldCkgLy8gRW5kIHBvaW50cyBhdCB0aGUgbGFzdCBjaGFyLCBub3QgcGFz
dCBpdAogICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0gZmFsc2U7CiAgICAgaWYgKG1fdHJ1
bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKQogICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0g
ZmFsc2U7CiAKICAgICBpZiAoIW1hcmtlclNwYW5zV2hvbGVCb3gpIHsKLSAgICAgICAgdW5zaWdu
ZWQgc3RhcnRQb3NpdGlvbiA9IGNsYW1wZWRPZmZzZXQobWFya2VyLnN0YXJ0T2Zmc2V0KCkpOwot
ICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IGNsYW1wZWRPZmZzZXQobWFya2VyLmVuZE9m
ZnNldCgpKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9IGNsYW1wZWRPZmZzZXQo
c3VicmFuZ2Uuc3RhcnRPZmZzZXQpOworICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IGNs
YW1wZWRPZmZzZXQoc3VicmFuZ2UuZW5kT2Zmc2V0KTsKICAgICAgICAgCiAgICAgICAgIGlmICht
X3RydW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbikKICAgICAgICAgICAgIGVuZFBvc2l0aW9uID0g
c3RkOjptaW4oZW5kUG9zaXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3RydW5jYXRpb24p
KTsKQEAgLTg0NSw2ICs4MjQsMjcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50
TWFya2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2kKICAgICAgICAg
d2lkdGggPSBtYXJrZXJSZWN0LndpZHRoKCk7CiAgICAgfQogICAgIAorICAgIGF1dG8gbGluZVN0
eWxlRm9yU3VicmFuZ2VUeXBlID0gW10gKFN1YnJhbmdlOjpUeXBlIHR5cGUpIHsKKyAgICAgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3I6Cisg
ICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlclNwZWxsaW5n
TGluZVN0eWxlOworICAgICAgICBjYXNlIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3I6CisgICAgICAg
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckdyYW1tYXJMaW5lU3R5
bGU7CisgICAgICAgIGNhc2UgU3VicmFuZ2U6OkNvcnJlY3Rpb246CisgICAgICAgICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlckF1dG9jb3JyZWN0aW9uUmVwbGFjZW1l
bnRMaW5lU3R5bGU7CisgICAgICAgIGNhc2UgU3VicmFuZ2U6OkRpY3RhdGlvbkFsdGVybmF0aXZl
czoKKyAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2VyRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzTGluZVN0eWxlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAg
Y2FzZSBTdWJyYW5nZTo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlczoKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBSZW5hbWUgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVy
bmF0aXZlc0xpbmVTdHlsZSBhbmQgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorICAg
ICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6VGV4dENoZWNraW5nRGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlc0xpbmVTdHlsZTsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0OjpEb2N1bWVudE1hcmtlclNwZWxsaW5nTGluZVN0eWxlOworICAgICAgICB9
CisgICAgfTsKKwogICAgIC8vIElNUE9SVEFOVDogVGhlIG1pc3NwZWxsaW5nIHVuZGVybGluZSBp
cyBub3QgY29uc2lkZXJlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSB0ZXh0IGJvdW5kcywgc28gd2Ug
aGF2ZSB0bwogICAgIC8vIG1ha2Ugc3VyZSB0byBmaXQgd2l0aGluIHRob3NlIGJvdW5kcy4gIFRo
aXMgbWVhbnMgdGhlIHRvcCBwaXhlbChzKSBvZiB0aGUgdW5kZXJsaW5lIHdpbGwgb3ZlcmxhcCB0
aGUKICAgICAvLyBib3R0b20gcGl4ZWwocykgb2YgdGhlIGdseXBocyBpbiBzbWFsbGVyIGZvbnQg
c2l6ZXMuICBUaGUgYWx0ZXJuYXRpdmVzIGFyZSB0byBpbmNyZWFzZSB0aGUgbGluZSBzcGFjaW5n
IChiYWQhISkKQEAgLTg2MiwxNSArODYyLDE1IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pCiAg
ICAgICAgIC8vIEluIGxhcmdlciBmb250cywgdGhvdWdoLCBwbGFjZSB0aGUgdW5kZXJsaW5lIHVw
IG5lYXIgdGhlIGJhc2VsaW5lIHRvIHByZXZlbnQgYSBiaWcgZ2FwLgogICAgICAgICB1bmRlcmxp
bmVPZmZzZXQgPSBiYXNlbGluZSArIDI7CiAgICAgfQotICAgIGNvbnRleHQuZHJhd0xpbmVGb3JE
b2N1bWVudE1hcmtlcihGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2lu
LnkoKSArIHVuZGVybGluZU9mZnNldCksIHdpZHRoLCBsaW5lU3R5bGVGb3JNYXJrZXJUeXBlKG1h
cmtlci50eXBlKCkpKTsKKyAgICBjb250ZXh0LmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoRmxv
YXRQb2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyB1bmRlcmxpbmVP
ZmZzZXQpLCB3aWR0aCwgbGluZVN0eWxlRm9yU3VicmFuZ2VUeXBlKHN1YnJhbmdlLnR5cGUpKTsK
IH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyZWREb2N1
bWVudE1hcmtlciYgbWFya2VyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250KQordm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29u
c3QgU3VicmFuZ2UmIHN1YnJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBib29sIGlzQWN0aXZlTWF0Y2gpCiB7CiAgICAgaWYgKCFyZW5kZXJl
cigpLmZyYW1lKCkuZWRpdG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvciBjb2xvciA9IG1hcmtlci5pc0FjdGl2ZU1hdGNo
KCkgPyByZW5kZXJlcigpLnRoZW1lKCkucGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0
Q29sb3IoKSA6IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhp
Z2hsaWdodENvbG9yKCk7CisgICAgYXV0byBjb2xvciA9IGlzQWN0aXZlTWF0Y2ggPyByZW5kZXJl
cigpLnRoZW1lKCkucGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6IHJl
bmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9y
KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
ICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvcikp
OyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogCkBAIC04NzksOCArODc5LDggQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG8KICAgICBMYXlvdXRVbml0IGRlbHRhWSA9IHJlbmRlcmVyKCkuc3R5
bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25Cb3R0b20oKSAtIGxv
Z2ljYWxCb3R0b20oKSA6IGxvZ2ljYWxUb3AoKSAtIHNlbGVjdGlvblRvcCgpOwogICAgIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2lu
LnkoKSAtIGRlbHRhWSwgMCwgdGhpcy0+c2VsZWN0aW9uSGVpZ2h0KCkpOwogCi0gICAgdW5zaWdu
ZWQgc1BvcyA9IGNsYW1wZWRPZmZzZXQobWFya2VyLnN0YXJ0T2Zmc2V0KCkpOwotICAgIHVuc2ln
bmVkIGVQb3MgPSBjbGFtcGVkT2Zmc2V0KG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgdW5zaWdu
ZWQgc1BvcyA9IGNsYW1wZWRPZmZzZXQoc3VicmFuZ2Uuc3RhcnRPZmZzZXQpOworICAgIHVuc2ln
bmVkIGVQb3MgPSBjbGFtcGVkT2Zmc2V0KHN1YnJhbmdlLmVuZE9mZnNldCk7CiAgICAgVGV4dFJ1
biBydW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlv
blJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgc1BvcywgZVBvcyk7CiAKQEAgLTg4OSw3
ICs4ODksNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQbwogCiAgICAgY29udGV4dC5maWxsUmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSks
IGNvbG9yKTsKIH0KLSAgICAKKwogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFy
a2VycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdp
biwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9v
bCBiYWNrZ3JvdW5kKQogewogICAgIGlmICghcmVuZGVyZXIoKS50ZXh0Tm9kZSgpKQpAQCAtODk3
LDYgKzg5NywzMCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXJzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQbwogCiAgICAgVmVjdG9yPFJlbmRl
cmVkRG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLm1hcmtl
cnMoKS5tYXJrZXJzRm9yKHJlbmRlcmVyKCkudGV4dE5vZGUoKSk7CiAKKyAgICBhdXRvIG1hcmtl
clR5cGVGb3JTdWJyYW5nZVR5cGUgPSBbXSAoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlw
ZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtl
cjo6U3BlbGxpbmc6CisgICAgICAgICAgICByZXR1cm4gU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3I7
CisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI6CisgICAgICAgICAgICByZXR1
cm4gU3VicmFuZ2U6OkdyYW1tYXJFcnJvcjsKKyAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
Q29ycmVjdGlvbkluZGljYXRvcjoKKyAgICAgICAgICAgIHJldHVybiBTdWJyYW5nZTo6Q29ycmVj
dGlvbjsKKyAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoOgorICAgICAgICAg
ICAgcmV0dXJuIFN1YnJhbmdlOjpUZXh0TWF0Y2g7CisgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJr
ZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlczoKKyAgICAgICAgICAgIHJldHVybiBTdWJyYW5nZTo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgY2FzZSBE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlczoKKyAgICAgICAg
ICAgIHJldHVybiBTdWJyYW5nZTo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlczsKKyNl
bmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFN1YnJhbmdlOjpVbm1h
cmtlZDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBWZWN0b3I8U3VicmFuZ2U+IHN1YnJhbmdl
czsKKyAgICBzdWJyYW5nZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtYXJrZXJzLnNpemUoKSk7
CisKICAgICAvLyBHaXZlIGFueSBkb2N1bWVudCBtYXJrZXJzIHRoYXQgdG91Y2ggdGhpcyBydW4g
YSBjaGFuY2UgdG8gZHJhdyBiZWZvcmUgdGhlIHRleHQgaGFzIGJlZW4gZHJhd24uCiAgICAgLy8g
Tm90ZSBlbmQoKSBwb2ludHMgYXQgdGhlIGxhc3QgY2hhciwgbm90IG9uZSBwYXN0IGl0IGxpa2Ug
ZW5kT2Zmc2V0IGFuZCByYW5nZXMgZG8uCiAgICAgZm9yIChhdXRvKiBtYXJrZXIgOiBtYXJrZXJz
KSB7CkBAIC05MzksMTkgKzk2MywxMyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1l
bnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQbwogICAgICAg
ICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6CiAgICAgICAgICAgICBjYXNlIERv
Y3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yOgogICAgICAgICAgICAgY2FzZSBEb2N1
bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOgotICAgICAgICAgICAgICAgIHBhaW50
RG9jdW1lbnRNYXJrZXIoY29udGV4dCwgYm94T3JpZ2luLCAqbWFya2VyLCBzdHlsZSwgZm9udCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERvY3VtZW50TWFya2Vy
OjpHcmFtbWFyOgotICAgICAgICAgICAgICAgIHBhaW50RG9jdW1lbnRNYXJrZXIoY29udGV4dCwg
Ym94T3JpZ2luLCAqbWFya2VyLCBzdHlsZSwgZm9udCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3By
b2JsZW0vODkzMzM1Mj4uIEFsc28sIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KICAg
ICAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5h
dGl2ZXM6Ci0gICAgICAgICAgICAgICAgcGFpbnREb2N1bWVudE1hcmtlcihjb250ZXh0LCBib3hP
cmlnaW4sICptYXJrZXIsIHN0eWxlLCBmb250KTsKLSAgICAgICAgICAgICAgICBicmVhazsKICNl
bmRpZgogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoOgotICAgICAg
ICAgICAgICAgIHBhaW50VGV4dE1hdGNoTWFya2VyKGNvbnRleHQsIGJveE9yaWdpbiwgKm1hcmtl
ciwgc3R5bGUsIGZvbnQpOworICAgICAgICAgICAgICAgIHN1YnJhbmdlcy51bmNoZWNrZWRBcHBl
bmQoeyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCksIG1hcmtlclR5
cGVGb3JTdWJyYW5nZVR5cGUobWFya2VyLT50eXBlKCkpLCBtYXJrZXIgfSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVu
dDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk2Miw3ICs5ODAsMTMgQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UG8KICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKyAgICB9CiAKKyAgICBmb3IgKGF1dG8mIHN1
YnJhbmdlIDogc3ViZGl2aWRlKHN1YnJhbmdlcywgT3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3Qp
KSB7CisgICAgICAgIGlmIChzdWJyYW5nZS50eXBlID09IFN1YnJhbmdlOjpUZXh0TWF0Y2gpCisg
ICAgICAgICAgICBwYWludFRleHRNYXRjaE1hcmtlcihjb250ZXh0LCBib3hPcmlnaW4sIHN1YnJh
bmdlLCBzdHlsZSwgZm9udCwgc3VicmFuZ2UubWFya2VyLT5pc0FjdGl2ZU1hdGNoKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwYWludERvY3VtZW50TWFya2VyKGNvbnRleHQsIGJveE9y
aWdpbiwgc3VicmFuZ2UsIHN0eWxlLCBmb250KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDIyNzRkYzc3ZTAzNjk5ZGEwNmE5ZjkxZTM1
ZWQzNzI3YWNhNTVkM2IuLjdhNTcxMDg5NWU4YTMxMGRlOTA4MjI5MDYwMzlmMjY3ZDYyZGU5NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCwxMCArMjgsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBjbGFz
cyBSZW5kZXJDb21iaW5lVGV4dDsKIGNsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiBjbGFz
cyBUZXh0UGFpbnRlcjsKK3N0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKK3N0cnVjdCBTdWJy
YW5nZTsKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZTsKIAogY29uc3QgdW5zaWduZWQgc2hvcnQgY05v
VHJ1bmNhdGlvbiA9IFVTSFJUX01BWDsKQEAgLTE2MSw4ICsxNjIsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgUmVuZGVyQ29tYmluZVRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYg
dGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LAogICAgICAgICBUZXh0RGVjb3Jh
dGlvbiwgVGV4dFBhaW50U3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGbG9hdFJlY3Qm
IGNsaXBPdXRSZWN0KTsKICAgICB2b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IpOwotICAgIHZvaWQgcGFpbnREb2N1
bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4s
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRD
YXNjYWRlJik7Ci0gICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CisgICAgdm9pZCBwYWludERv
Y3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdp
biwgY29uc3QgU3VicmFuZ2UmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRl
Jik7CisgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFN1YnJhbmdlJiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIGJvb2wgaXNBY3RpdmVNYXRjaCk7CiAKICAgICBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3VicmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1N1YnJhbmdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGQ2ZmE0Mzk3YmY2YTVlNmY2NDU4OGE0
ZTUxZGVlMWRmMmJkNGI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1N1YnJhbmdlLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1YnJhbmdlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0
b3I8U3VicmFuZ2U+IHN1YmRpdmlkZShjb25zdCBWZWN0b3I8U3VicmFuZ2U+JiBzdWJyYW5nZXMs
IE92ZXJsYXBTdHJhdGVneSBvdmVybGFwU3RyYXRlZ3kpCit7CisgICAgaWYgKHN1YnJhbmdlcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBzdHJ1Y3QgT2Zmc2V0IHsKKyAg
ICAgICAgZW51bSBLaW5kIHsgQmVnaW4sIEVuZCB9OworICAgICAgICBLaW5kIGtpbmQ7CisgICAg
ICAgIHVuc2lnbmVkIHZhbHVlOyAvLyBDb3B5IG9mIHN1YnJhbmdlLnN0YXJ0T2Zmc2V0L2VuZE9m
ZnNldCB0byBhdm9pZCB0aGUgbmVlZCB0byBicmFuY2ggYmFzZWQgb24ga2luZC4KKyAgICAgICAg
Y29uc3QgU3VicmFuZ2UqIHN1YnJhbmdlOworICAgIH07CisKKyAgICAvLyAxLiBCdWlsZCB0YWJs
ZSBvZiBhbGwgb2Zmc2V0cy4KKyAgICBWZWN0b3I8T2Zmc2V0PiBvZmZzZXRzOworICAgIEFTU0VS
VChzdWJyYW5nZXMuc2l6ZSgpIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC8gMik7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZTdWJyYW5nZXMgPSBzdWJyYW5nZXMuc2l6ZSgp
OworICAgIHVuc2lnbmVkIG51bWJlck9mT2Zmc2V0cyA9IDIgKiBudW1iZXJPZlN1YnJhbmdlczsK
KyAgICBvZmZzZXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZPZmZzZXRzKTsKKyAg
ICBmb3IgKGF1dG8mIHN1YnJhbmdlIDogc3VicmFuZ2VzKSB7CisgICAgICAgIG9mZnNldHMudW5j
aGVja2VkQXBwZW5kKHsgT2Zmc2V0OjpCZWdpbiwgc3VicmFuZ2Uuc3RhcnRPZmZzZXQsICZzdWJy
YW5nZSB9KTsKKyAgICAgICAgb2Zmc2V0cy51bmNoZWNrZWRBcHBlbmQoeyBPZmZzZXQ6OkVuZCwg
c3VicmFuZ2UuZW5kT2Zmc2V0LCAmc3VicmFuZ2UgfSk7CisgICAgfQorCisgICAgLy8gMi4gU29y
dCBvZmZzZXRzIHN1Y2ggdGhhdCBiZWdpbiBvZmZzZXRzIGFyZSBpbiBwYWludCBvcmRlciBhbmQg
ZW5kIG9mZnNldHMgYXJlIGluIHJldmVyc2UgcGFpbnQgb3JkZXIuCisgICAgc3RkOjpzb3J0KG9m
ZnNldHMuYmVnaW4oKSwgb2Zmc2V0cy5lbmQoKSwgW10gKGNvbnN0IE9mZnNldCYgYSwgY29uc3Qg
T2Zmc2V0JiBiKSB7CisgICAgICAgIHJldHVybiBhLnZhbHVlIDwgYi52YWx1ZSB8fCAoYS52YWx1
ZSA9PSBiLnZhbHVlICYmIGEua2luZCA9PSBiLmtpbmQgJiYgYS5raW5kID09IE9mZnNldDo6QmVn
aW4gJiYgYS5zdWJyYW5nZS0+dHlwZSA8IGIuc3VicmFuZ2UtPnR5cGUpCisgICAgICAgIHx8IChh
LnZhbHVlID09IGIudmFsdWUgJiYgYS5raW5kID09IGIua2luZCAmJiBhLmtpbmQgPT0gT2Zmc2V0
OjpFbmQgJiYgYS5zdWJyYW5nZS0+dHlwZSA+IGIuc3VicmFuZ2UtPnR5cGUpOworICAgIH0pOwor
CisgICAgLy8gMy4gQ29tcHV0ZSBpbnRlcnNlY3Rpb24uCisgICAgVmVjdG9yPFN1YnJhbmdlPiBy
ZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdWJyYW5n
ZXMpOworICAgIEhhc2hTZXQ8Y29uc3QgU3VicmFuZ2UqPiBwcm9jZXNzZWRTdWJyYW5nZXM7Cisg
ICAgdW5zaWduZWQgb2Zmc2V0U29GYXIgPSBvZmZzZXRzWzBdLnZhbHVlOworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBudW1iZXJPZk9mZnNldHM7ICsraSkgeworICAgICAgICBpZiAob2Zm
c2V0c1tpXS52YWx1ZSA+IG9mZnNldHNbaSAtIDFdLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAo
b3ZlcmxhcFN0cmF0ZWd5ID09IE92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KSB7CisgICAgICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbnRtb3N0OworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpOyArK2opIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9jZXNzZWRTdWJyYW5nZXMuY29udGFpbnMob2Zmc2V0c1tqXS5zdWJyYW5nZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICBmcm9udG1vc3QgPSBqOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoZnJvbnRtb3N0KQorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHsgb2Zmc2V0U29GYXIsIG9mZnNldHNbaV0udmFsdWUsIG9mZnNldHNbZnJv
bnRtb3N0LnZhbHVlKCldLnN1YnJhbmdlLT50eXBlLCBvZmZzZXRzW2Zyb250bW9zdC52YWx1ZSgp
XS5zdWJyYW5nZS0+bWFya2VyIH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgaTsgKytqKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghcHJvY2Vzc2VkU3VicmFuZ2VzLmNvbnRhaW5zKG9mZnNldHNbal0uc3VicmFuZ2Up
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IG9mZnNldFNvRmFyLCBv
ZmZzZXRzW2ldLnZhbHVlLCBvZmZzZXRzW2pdLnN1YnJhbmdlLT50eXBlLCBvZmZzZXRzW2pdLnN1
YnJhbmdlLT5tYXJrZXIgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgb2Zmc2V0U29GYXIgPSBvZmZzZXRzW2ldLnZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGlmIChvZmZzZXRzW2ldLmtpbmQgPT0gT2Zmc2V0OjpFbmQpCisgICAgICAgICAgICBwcm9j
ZXNzZWRTdWJyYW5nZXMuYWRkKG9mZnNldHNbaV0uc3VicmFuZ2UpOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1N1YnJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3VicmFuZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZGJlMWQwZDE4OGU5OGE4MzExMGE5MDk5YTA1ZWU2MDE0MGQxYWVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N1YnJhbmdlLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJr
ZXI7CisKK3N0cnVjdCBTdWJyYW5nZSB7CisgICAgLy8gU29ydGVkIGJ5IHBhaW50IG9yZGVyCisg
ICAgZW51bSBUeXBlIHsKKyAgICAgICAgVW5tYXJrZWQsCisgICAgICAgIEdyYW1tYXJFcnJvciwK
KyAgICAgICAgQ29ycmVjdGlvbiwKKyAgICAgICAgU3BlbGxpbmdFcnJvciwKKyAgICAgICAgVGV4
dE1hdGNoLAorICAgICAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXMsCisjaWYgUExBVEZPUk0oSU9T
KQorICAgICAgICAvLyBGSVhNRTogU2VlIDxyZGFyOi8vcHJvYmxlbS84OTMzMzUyPi4gQWxzbywg
cmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgorICAgICAgICBEaWN0YXRpb25QaHJhc2VX
aXRoQWx0ZXJuYXRpdmVzLAorI2VuZGlmCisgICAgfTsKKyNpZiAhQ09NUElMRVJfU1VQUE9SVFMo
TlNETUlfRk9SX0FHR1JFR0FURVMpCisgICAgU3VicmFuZ2UoKSA9IGRlZmF1bHQ7CisgICAgU3Vi
cmFuZ2UodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgVHlwZSB0eXBl
LCBjb25zdCBSZW5kZXJlZERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBudWxscHRyKQorICAgICAg
ICA6IHN0YXJ0T2Zmc2V0IHsgc3RhcnRPZmZzZXQgfQorICAgICAgICAsIGVuZE9mZnNldCB7IGVu
ZE9mZnNldCB9CisgICAgICAgICwgdHlwZSB7IHR5cGUgfQorICAgICAgICAsIG1hcmtlciB7IG1h
cmtlciB9CisgICAgeworICAgIH0KKyNlbmRpZgorICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0Owor
ICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKKyAgICBUeXBlIHR5cGU7CisgICAgY29uc3QgUmVuZGVy
ZWREb2N1bWVudE1hcmtlciogbWFya2VyIHsgbnVsbHB0ciB9OworfTsKKworZW51bSBjbGFzcyBP
dmVybGFwU3RyYXRlZ3kgeyBOb25lLCBGcm9udG1vc3QgfTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdWJyYW5nZT4gc3ViZGl2aWRlKGNvbnN0IFZlY3RvcjxTdWJyYW5nZT4mLCBPdmVybGFwU3Ry
YXRlZ3kgPSBPdmVybGFwU3RyYXRlZ3k6Ok5vbmUpOworCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MGQwZWU2MTliNjVlMGMwNDgxYzEz
Y2Q1OGM1MGM2MGQ4ZjcxOGUyLi5iNTdjODFjZTc3M2M4YmE3YzdiYWYzMTk1ZjYzMjkxZDAxYWFi
M2VlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTctMDktMjAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFNwZWxsaW5nIGFuZCBncmFtbWFyIGRvdHMgc2hvdWxkIG5vdCBvdmVy
bGFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcy
NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NTU2NDI0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciB0aGUgc3Vi
ZGl2aXNpb24gYWxnb3JpdGhtLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1N1YnJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDktMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQWN0aW9uVHlwZTo6SW52YWxpZEFj
dGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMWRiOGUwYTg4YzkyODc4ZGI0YzBkNjgx
MmNiY2ZiMmZiYmQzNmE3Li40M2RiYmJhZjFlYTYwNjkzZGMzNDZkOWQxNzRhMmFiMWViNTg5MTI2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQyLDYgKzY0Miw3IEBACiAJCUNERTE5NUI1
MUNGRTBCODgwMDUzRDI1NiAvKiBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMTk1QjIx
Q0ZFMEFERTAwNTNEMjU2IC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQuaHRtbCAqLzsgfTsK
IAkJQ0UwNkRGOUIxRTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDZERjlBMUUxODUxRjIw
MEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgKi87IH07CiAJCUNFMTRGMUE0MTgxODczQjAw
MDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTRGMUEy
MTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5o
dG1sICovOyB9OworCQlDRTE4NjY0OTFGNzJFOEYxMDBBMENBQjYgLyogU3VicmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxODY2NDcxRjcy
RThGMTAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCAqLzsgfTsKIAkJQ0UzNTI0RjgxQjE0MzFGNjAw
MjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UzNTI0RjIxQjE0MkI4
RDAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwICov
OyB9OwogCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRF
bmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMzUyNEYxMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVk
aXRpbmcuY3BwICovOyB9OwogCQlDRTM1MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyogaW5wdXQtZm9j
dXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0
bWwgKi87IH07CkBAIC0xNjcwLDYgKzE2NzEsNyBAQAogCQlDREUxOTVCMzFDRkUwQURFMDA1M0Qy
NTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDZERjlBMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0
eU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWN1cml0
eU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTRGMUEyMTgxODcz
QjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UxODY2NDcxRjcyRThGMTAwQTBDQUI2IC8qIFN1YnJh
bmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YnJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UzMkM3QzcxODE4NEM0OTAwQ0Q4QzI4IC8qIFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RUb1VSTENyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2gubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMzUyNEYxMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0Rmll
bGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UzNTI0RjIxQjE0MkI4RDAwMjhBN0M1IC8qIFRleHRGaWVsZERp
ZEJlZ2luQW5kRW5kRWRpdGluZ19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDk1LDYgKzIwOTcsNyBAQAogCQkJCUExNzk5
MThBMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmggKi8sCiAJCQkJRUNBNjgw
Q0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKIAkJCQlDRTRENURF
NTFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAgKi8sCisJCQkJQ0Ux
ODY2NDcxRjcyRThGMTAwQTBDQUI2IC8qIFN1YnJhbmdlLmNwcCAqLywKIAkJCQlDREMyQzcxNDE3
OTcwODlEMDBFNjI3RkIgLyogVGltZVJhbmdlcy5jcHAgKi8sCiAJCQkJN0FEM0ZFOEQxRDc1RkI4
RDAwQjE2OUE0IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKIAkJCQk0NDBBMUQzODE0
QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCAqLywKQEAgLTMzNjksNiArMzM3Miw3IEBACiAJCQkJ
N0NDRTdFRDExQTQxMUE3RTAwNDQ3QzRDIC8qIFN0cmluZ1RydW5jYXRvci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUVDQTY4MENFMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDRTRENURFNzFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0
aERpcmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRTE4NjY0OTFGNzJFOEYxMDBBMENB
QjYgLyogU3VicmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDIxQTQxMUE3RTAw
NDQ3QzRDIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RUE4MUE0MTFBMTkwMDQ0N0M0QyAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5k
b3cubSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE2MUE0MTFBRTYwMDQ0N0M0QyAvKiBUZXJt
aW5hdGVUd2ljZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TdWJyYW5nZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU3VicmFuZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ZTIyZTIwNzY1M2Y5YTdjNzk3
YTUxMGQyOWJlODQ3MjYyNmQ1MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU3VicmFuZ2UuY3BwCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyZWREb2N1bWVudE1hcmtlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3Vi
cmFuZ2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIFN1YnJhbmdl
OjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBTdWJyYW5nZTo6
VW5tYXJrZWQ6CisgICAgICAgIHJldHVybiBvcyA8PCAiVW5tYXJrZWQiOworICAgIGNhc2UgU3Vi
cmFuZ2U6OkdyYW1tYXJFcnJvcjoKKyAgICAgICAgcmV0dXJuIG9zIDw8ICJHcmFtbWFyRXJyb3Ii
OworICAgIGNhc2UgU3VicmFuZ2U6OkNvcnJlY3Rpb246CisgICAgICAgIHJldHVybiBvcyA8PCAi
Q29ycmVjdGlvbiI7CisgICAgY2FzZSBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvcjoKKyAgICAgICAg
cmV0dXJuIG9zIDw8ICJTcGVsbGluZ0Vycm9yIjsKKyAgICBjYXNlIFN1YnJhbmdlOjpUZXh0TWF0
Y2g6CisgICAgICAgIHJldHVybiBvcyA8PCAiVGV4dE1hdGNoIjsKKyAgICBjYXNlIFN1YnJhbmdl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CisgICAgICAgIHJldHVybiBvcyA8PCAiRGljdGF0aW9u
QWx0ZXJuYXRpdmVzIjsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIC8vIEZJWE1FOiBTZWUg
PHJkYXI6Ly9wcm9ibGVtLzg5MzMzNTI+LiBBbHNvLCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCisgICAgY2FzZSBTdWJyYW5nZTo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZl
czoKKyAgICAgICAgcmV0dXJuIG9zIDw8ICJEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVz
IjsKKyNlbmRpZgorICAgIH0KK30KKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgb3MsIGNvbnN0IFN1YnJhbmdlJiBzdWJyYW5nZSkKK3sKKyAgICBvcyA8PCAiKCIgPDwg
c3VicmFuZ2Uuc3RhcnRPZmZzZXQgPDwgIiwgIiA8PCBzdWJyYW5nZS5lbmRPZmZzZXQgPDwgIiwg
IiA8PCBzdWJyYW5nZS50eXBlOworICAgIGlmIChzdWJyYW5nZS5tYXJrZXIpCisgICAgICAgIG9z
IDw8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihzdWJyYW5nZS5tYXJrZXIpOworICAgIHJldHVy
biBvcyA8PCAiKSI7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdWJyYW5nZSYgYSwgY29u
c3QgU3VicmFuZ2UmIGIpCit7CisgICAgcmV0dXJuIGEuc3RhcnRPZmZzZXQgPT0gYi5zdGFydE9m
ZnNldCAmJiBhLmVuZE9mZnNldCA9PSBiLmVuZE9mZnNldCAmJiBhLnR5cGUgPT0gYi50eXBlICYm
IGEubWFya2VyID09IGIubWFya2VyOworfQorCit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVChTdWJyYW5nZSwgU3ViZGl2aWRlRW1wdHkpCit7CisgICAgRVhQRUNUX0VRKDBV
LCBzdWJkaXZpZGUoeyB9KS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwVSwgc3ViZGl2aWRlKHsg
fSwgT3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpLnNpemUoKSk7Cit9CisKK1RFU1QoU3VicmFu
Z2UsIFN1YmRpdmlkZVNpbXBsZSkKK3sKKyAgICBTdWJyYW5nZSBzdWJyYW5nZSB7IDAsIDksIFN1
YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH07CisgICAgYXV0byByZXN1bHRzID0gc3ViZGl2aWRlKHsg
c3VicmFuZ2UgfSk7CisgICAgQVNTRVJUX0VRKDFVLCByZXN1bHRzLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKHN1YnJhbmdlLCByZXN1bHRzWzBdKTsKK30KKworVEVTVChTdWJyYW5nZSwgU3ViZGl2
aWRlU3BlbGxpbmdBbmRHcmFtbWFyU2ltcGxlKQoreworICAgIFJlbmRlcmVkRG9jdW1lbnRNYXJr
ZXIgZ3JhbW1hckVycm9yTWFya2VyIHsgRG9jdW1lbnRNYXJrZXIgeyBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hciwgNywgOCB9IH07CisgICAgVmVjdG9yPFN1YnJhbmdlPiBleHBlY3RlZFN1YnJhbmdl
cyB7CisgICAgICAgIFN1YnJhbmdlIHsgZ3JhbW1hckVycm9yTWFya2VyLnN0YXJ0T2Zmc2V0KCks
IGdyYW1tYXJFcnJvck1hcmtlci5lbmRPZmZzZXQoKSwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciwg
JmdyYW1tYXJFcnJvck1hcmtlciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIyLCAzMiwgU3VicmFu
Z2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICB9OworICAgIGF1dG8gcmVzdWx0cyA9IHN1YmRpdmlk
ZShleHBlY3RlZFN1YnJhbmdlcyk7CisgICAgQVNTRVJUX0VRKGV4cGVjdGVkU3VicmFuZ2VzLnNp
emUoKSwgcmVzdWx0cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwZWN0
ZWRTdWJyYW5nZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFN1YnJh
bmdlc1tpXSwgcmVzdWx0c1tpXSk7Cit9CisKK1RFU1QoU3VicmFuZ2UsIFN1YmRpdmlkZVNwZWxs
aW5nQW5kR3JhbW1hck92ZXJsYXApCit7CisgICAgVmVjdG9yPFN1YnJhbmdlPiBzdWJyYW5nZXMg
eworICAgICAgICBTdWJyYW5nZSB7IDAsIDQwLCBTdWJyYW5nZTo6R3JhbW1hckVycm9yIH0sCisg
ICAgICAgIFN1YnJhbmdlIHsgMiwgMTcsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAg
ICAgIFN1YnJhbmdlIHsgMjAsIDQwLCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAg
ICBTdWJyYW5nZSB7IDQxLCA0NSwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICB9Owor
ICAgIFZlY3RvcjxTdWJyYW5nZT4gZXhwZWN0ZWRTdWJyYW5nZXMgeworICAgICAgICBTdWJyYW5n
ZSB7IDAsIDIsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyAy
LCAxNywgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIsIDE3
LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDE3LCAyMCwg
U3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIwLCA0MCwgU3Vi
cmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIwLCA0MCwgU3VicmFu
Z2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA0MSwgNDUsIFN1YnJhbmdl
OjpTcGVsbGluZ0Vycm9yIH0sCisgICAgfTsKKyAgICBhdXRvIHJlc3VsdHMgPSBzdWJkaXZpZGUo
c3VicmFuZ2VzKTsKKyAgICBBU1NFUlRfRVEoZXhwZWN0ZWRTdWJyYW5nZXMuc2l6ZSgpLCByZXN1
bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHBlY3RlZFN1YnJhbmdl
cy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkU3VicmFuZ2VzW2ldLCBy
ZXN1bHRzW2ldKTsKK30KKworVEVTVChTdWJyYW5nZSwgU3ViZGl2aWRlU3BlbGxpbmdBbmRHcmFt
bWFyT3ZlcmxhcEZyb250bW9zdCkKK3sKKyAgICBWZWN0b3I8U3VicmFuZ2U+IHN1YnJhbmdlcyB7
CisgICAgICAgIFN1YnJhbmdlIHsgMCwgNDAsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwKKyAg
ICAgICAgU3VicmFuZ2UgeyAyLCAxNywgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAg
ICAgU3VicmFuZ2UgeyAyMCwgNDAsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAg
IFN1YnJhbmdlIHsgNDEsIDQ1LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgIH07Cisg
ICAgVmVjdG9yPFN1YnJhbmdlPiBleHBlY3RlZFN1YnJhbmdlcyB7CisgICAgICAgIFN1YnJhbmdl
IHsgMCwgMiwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIs
IDE3LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDE3LCAy
MCwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDIwLCA0MCwg
U3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA0MSwgNDUsIFN1
YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgfTsKKyAgICBhdXRvIHJlc3VsdHMgPSBzdWJk
aXZpZGUoc3VicmFuZ2VzLCBPdmVybGFwU3RyYXRlZ3k6OkZyb250bW9zdCk7CisgICAgQVNTRVJU
X0VRKGV4cGVjdGVkU3VicmFuZ2VzLnNpemUoKSwgcmVzdWx0cy5zaXplKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZXhwZWN0ZWRTdWJyYW5nZXMuc2l6ZSgpOyArK2kpCisgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZFN1YnJhbmdlc1tpXSwgcmVzdWx0c1tpXSk7Cit9CisKK1RFU1Qo
U3VicmFuZ2UsIFN1YmRpdmlkZVNwZWxsaW5nQW5kR3JhbW1hckNvbXBsaWNhdGVkRnJvbnRtb3N0
KQoreworICAgIFZlY3RvcjxTdWJyYW5nZT4gc3VicmFuZ2VzIHsKKyAgICAgICAgU3VicmFuZ2Ug
eyAwLCA2LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDAs
IDQ2LCBTdWJyYW5nZTo6R3JhbW1hckVycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNywgMTYs
IFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgMjIsIDI3LCBT
dWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDM0LCA0NCwgU3Vi
cmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA0NiwgNTAsIFN1YnJh
bmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdlIHsgNTEsIDU4LCBTdWJyYW5n
ZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7IDU5LCA2MywgU3VicmFuZ2U6
OkdyYW1tYXJFcnJvciB9LAorICAgIH07CisgICAgVmVjdG9yPFN1YnJhbmdlPiBleHBlY3RlZFN1
YnJhbmdlcyB7CisgICAgICAgIFN1YnJhbmdlIHsgMCwgNiwgU3VicmFuZ2U6OlNwZWxsaW5nRXJy
b3IgfSwKKyAgICAgICAgU3VicmFuZ2UgeyA2LCA3LCBTdWJyYW5nZTo6R3JhbW1hckVycm9yIH0s
CisgICAgICAgIFN1YnJhbmdlIHsgNywgMTYsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisg
ICAgICAgIFN1YnJhbmdlIHsgMTYsIDIyLCBTdWJyYW5nZTo6R3JhbW1hckVycm9yIH0sCisgICAg
ICAgIFN1YnJhbmdlIHsgMjIsIDI3LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAg
ICBTdWJyYW5nZSB7IDI3LCAzNCwgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgICAgICBT
dWJyYW5nZSB7IDM0LCA0NCwgU3VicmFuZ2U6OlNwZWxsaW5nRXJyb3IgfSwKKyAgICAgICAgU3Vi
cmFuZ2UgeyA0NCwgNDYsIFN1YnJhbmdlOjpHcmFtbWFyRXJyb3IgfSwKKyAgICAgICAgU3VicmFu
Z2UgeyA0NiwgNTAsIFN1YnJhbmdlOjpTcGVsbGluZ0Vycm9yIH0sCisgICAgICAgIFN1YnJhbmdl
IHsgNTEsIDU4LCBTdWJyYW5nZTo6U3BlbGxpbmdFcnJvciB9LAorICAgICAgICBTdWJyYW5nZSB7
IDU5LCA2MywgU3VicmFuZ2U6OkdyYW1tYXJFcnJvciB9LAorICAgIH07CisgICAgYXV0byByZXN1
bHRzID0gc3ViZGl2aWRlKHN1YnJhbmdlcywgT3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpOwor
ICAgIEFTU0VSVF9FUShleHBlY3RlZFN1YnJhbmdlcy5zaXplKCksIHJlc3VsdHMuc2l6ZSgpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkU3VicmFuZ2VzLnNpemUoKTsgKytp
KQorICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTdWJyYW5nZXNbaV0sIHJlc3VsdHNbaV0pOwor
fQorCit9Cg==
</data>
<flag name="review"
          id="341370"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>