<?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>200656</bug_id>
          
          <creation_ts>2019-08-12 21:13:57 -0700</creation_ts>
          <short_desc>[LFC][TFC] Introduce TableGrid</short_desc>
          <delta_ts>2019-08-13 10:05:27 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</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>1560696</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-08-12 21:13:57 -0700</bug_when>
    <thetext>Table grid -&gt; A matrix containing as many rows and columns as needed to describe the position of all the table-rows and table-cells of a table-root, as determined by the grid-dimensioning algorithm.
Each row of the grid might correspond to a table-row, and each column to a table-column.

https://www.w3.org/TR/css-tables-3/#terminology</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560697</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 21:14:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/54240833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560699</commentid>
    <comment_count>2</comment_count>
      <attachid>376136</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-08-12 21:22:46 -0700</bug_when>
    <thetext>Created attachment 376136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560776</commentid>
    <comment_count>3</comment_count>
      <attachid>376136</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-08-13 07:38:47 -0700</bug_when>
    <thetext>Comment on attachment 376136
Patch

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

&gt; Source/WebCore/layout/tableformatting/TableGrid.h:63
&gt; +        SlotInfo(CellInfo*);

Reference?

&gt; Source/WebCore/layout/tableformatting/TableGrid.h:65
&gt; +        CellInfo* cell { nullptr };

WeakPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560792</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-08-13 08:42:46 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 376136 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376136&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/tableformatting/TableGrid.h:63
&gt; &gt; +        SlotInfo(CellInfo*);
&gt; 
&gt; Reference?
&gt; 
&gt; &gt; Source/WebCore/layout/tableformatting/TableGrid.h:65
&gt; &gt; +        CellInfo* cell { nullptr };
&gt; 
&gt; WeakPtr?
rookie mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560795</commentid>
    <comment_count>5</comment_count>
      <attachid>376168</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-08-13 08:44:19 -0700</bug_when>
    <thetext>Created attachment 376168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560831</commentid>
    <comment_count>6</comment_count>
      <attachid>376168</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 10:05:26 -0700</bug_when>
    <thetext>Comment on attachment 376168
Patch

Clearing flags on attachment: 376168

Committed r248596: &lt;https://trac.webkit.org/changeset/248596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560832</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 10:05:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376136</attachid>
            <date>2019-08-12 21:22:46 -0700</date>
            <delta_ts>2019-08-13 08:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200656-20190812212235.patch</filename>
            <type>text/plain</type>
            <size>20250</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE5MzA1OTMzMjkwOTE5
MTRkNzQ2ZmRhYTZkNjQ4YmMxYzY0ZTMxZS4uNTg4ZDllYzYyYmIyYjdjY2NmMjYxMjgwN2E2YTU4
YmZiODczMmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA4LTEyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bVEZDXSBJbnRyb2R1
Y2UgVGFibGVHcmlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MjQwODMzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRhYmxlIGdyaWQ6CisgICAg
ICAgIEEgbWF0cml4IGNvbnRhaW5pbmcgYXMgbWFueSByb3dzIGFuZCBjb2x1bW5zIGFzIG5lZWRl
ZCB0byBkZXNjcmliZSB0aGUgcG9zaXRpb24gb2YgYWxsIHRoZSB0YWJsZS1yb3dzCisgICAgICAg
IGFuZCB0YWJsZS1jZWxscyBvZiBhIHRhYmxlLXJvb3QsIGFzIGRldGVybWluZWQgYnkgdGhlIGdy
aWQtZGltZW5zaW9uaW5nIGFsZ29yaXRobS4KKyAgICAgICAgRWFjaCByb3cgb2YgdGhlIGdyaWQg
bWlnaHQgY29ycmVzcG9uZCB0byBhIHRhYmxlLXJvdywgYW5kIGVhY2ggY29sdW1uIHRvIGEgdGFi
bGUtY29sdW1uLgorCisgICAgICAgIHNsb3Qgb2YgdGhlIHRhYmxlIGdyaWQ6CisgICAgICAgIEEg
c2xvdCAocixjKSBpcyBhbiBhdmFpbGFibGUgc3BhY2UgY3JlYXRlZCBieSB0aGUgaW50ZXJzZWN0
aW9uIG9mIGEgcm93IHIgYW5kIGEgY29sdW1uIGMgaW4gdGhlIHRhYmxlIGdyaWQuCisKKyAgICAg
ICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10YWJsZXMtMy8jdGVybWlub2xvZ3kKKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc1RhYmxlSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc1RhYmxlQm9keSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJveDo6aXNUYWJsZUZvb3RlciBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKiBsYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjplbnN1cmVUYWJsZUdy
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVRhYmxlV2lkdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpkaXN0cmlidXRlQXZhaWxhYmVXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVUYWJsZUhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmRpc3RyaWJ1
dGVBdmFpbGFibGVIZWlnaHQgY29uc3QpOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
YWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAq
IGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nU3RhdGU6OnRhYmxlR3JpZCk6CisgICAg
ICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjpDZWxsSW5mbzo6Q2VsbEluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OlNsb3RJbmZvOjpTbG90SW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6VGFibGVHcmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjphcHBlbmRDZWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VGFibGVHcmlkOjppbnNlcnRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGFibGVHcmlkOjpyZW1vdmVDZWxsKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlR3JpZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaC4KKwogMjAxOS0wOC0xMiAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRkIHJv
d1NwYW4gYW5kIGNvbFNwYW4gdG8gQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDExMDZjZWQyNThkZmE5
YzhhMDFhYjdlZTZmY2U4NDMxOWEwMmZhNWYuLjBjYWQxMzNjZDFmMjUyNjQ5MjJhMWNiMDFiZWJj
NDhjNDQzOTdkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNDE4LDYgKzE0MTgsNyBAQCBsYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZC5jcHAKIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcAogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAK
K2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAogbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUludmFsaWRhdGlvbi5jcHAKIAogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0YWZmNjRlMzA2MmU5NjMyNjkwNzJlYWM5NWQ5ZjY0NWJiZmViMmUwLi44MjBjZTQy
OTFhNzAwZjI5MGEyNGUzZGFlMjY4NTIwOWI4YTAzNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTM3LDYgKzkxMzcsNyBA
QAogCQk2RjNFMUY1RjIxMzYxNDE3MDBBNjVBMDggLyogRmxvYXRCb3guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxvYXRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjNF
MUY2MTIxMzYxNDE3MDBBNjVBMDggLyogRmxvYXRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY0QTVCRDUyMkY5RjE2QjAwQTgw
RjI1IC8qIExheW91dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkY1QjdFQUEyMzAwQTc5RTAwNjdEOUMz
IC8qIFRhYmxlR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUdyaWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5
b3V0VW5pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0VW5pdHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkY3Q0EzQzQyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91dFN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExheW91dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGN0NBM0M1MjA4QzI5NTYwMDJGMjlBQiAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MTcxLDYgKzkxNzIsNyBAQAogCQk2Rjk5NUEzMDFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFV0aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkZCMTFCNUIyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRVdGlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNkZCMjJFMzAyMzAwOTdFMzAwQzIwODY2IC8qIFRhYmxlR3JpZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUYWJsZUdyaWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCNDdF
NjEyMjc3NDI1QTAwQzdCQ0IwIC8qIElubGluZUxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RkI1RTIxMjIyMUYyNDQ3MDAzOTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDQ2LDYgKzIwNDQ4LDgg
QEAKIAkJCQk2RkM1Q0E5NjIyRTM1OTk1MDBCMTNFMTEgLyogVGFibGVGb3JtYXR0aW5nU3RhdGUu
aCAqLywKIAkJCQk2RkM1Q0E5NzIyRTM1OTk1MDBCMTNFMTEgLyogVGFibGVJbnZhbGlkYXRpb24u
Y3BwICovLAogCQkJCTZGQzVDQTkzMjJFMzU5OTMwMEIxM0UxMSAvKiBUYWJsZUludmFsaWRhdGlv
bi5oICovLAorCQkJCTZGNUI3RUFBMjMwMEE3OUUwMDY3RDlDMyAvKiBUYWJsZUdyaWQuY3BwICov
LAorCQkJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2NiAvKiBUYWJsZUdyaWQuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gdGFibGVmb3JtYXR0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggNzZj
NjkyNTIyYWI4MzMwYjIyYjA3ZTk3ZTI1ZDA3ODIwMzI5ZmU1Zi4uYTQxYzBjNjkzZDViODgzOWY5
YmVkNjVhNmQ2MGUzZmEwYjA2ODFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBUYWJs
ZUNvbHVtbkdyb3VwLAogICAgICAgICBUYWJsZVJvd0dyb3VwLAogICAgICAgICBUYWJsZUhlYWRl
ckdyb3VwLAorICAgICAgICBUYWJsZUJvZHlHcm91cCwKICAgICAgICAgVGFibGVGb290ZXJHcm91
cCwKICAgICAgICAgSW1hZ2UsCiAgICAgICAgIElGcmFtZSwKQEAgLTExNiw2ICsxMTcsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1RhYmxlV3JhcHBlckJveCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudEF0dHJpYnV0ZXMgJiYgbV9lbGVtZW50QXR0cmlidXRlcy52YWx1ZSgpLmVsZW1lbnRUeXBl
ID09IEVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3g7IH0KICAgICBib29sIGlzVGFibGVCb3go
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBdHRyaWJ1dGVzICYmIG1fZWxlbWVudEF0dHJpYnV0
ZXMudmFsdWUoKS5lbGVtZW50VHlwZSA9PSBFbGVtZW50VHlwZTo6VGFibGVCb3g7IH0KICAgICBi
b29sIGlzVGFibGVDYXB0aW9uKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbjsgfQorICAgIGJvb2wgaXNUYWJsZUhlYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMgJiYgbV9lbGVtZW50QXR0cmlidXRlcy52
YWx1ZSgpLmVsZW1lbnRUeXBlID09IEVsZW1lbnRUeXBlOjpUYWJsZUhlYWRlckdyb3VwOyB9Cisg
ICAgYm9vbCBpc1RhYmxlQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMg
JiYgbV9lbGVtZW50QXR0cmlidXRlcy52YWx1ZSgpLmVsZW1lbnRUeXBlID09IEVsZW1lbnRUeXBl
OjpUYWJsZUJvZHlHcm91cDsgfQorICAgIGJvb2wgaXNUYWJsZUZvb3RlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMgJiYgbV9lbGVtZW50QXR0cmlidXRlcy52YWx1ZSgpLmVs
ZW1lbnRUeXBlID09IEVsZW1lbnRUeXBlOjpUYWJsZUZvb3Rlckdyb3VwOyB9CiAgICAgYm9vbCBp
c1RhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1l
bnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxlbWVudFR5cGUgPT0gRWxlbWVudFR5cGU6OlRhYmxlUm93
OyB9CiAgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGw7OyB9CiAgICAgYm9vbCBpc1JlcGxhY2VkKCkg
Y29uc3QgeyByZXR1cm4gaXNJbWFnZSgpIHx8IGlzSUZyYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRl
eCAwMDI3ZGQwYmVlMTUyZjg0MjBjMmQ0ZGU1MDg4ODU1NmI4MWFjZmNhLi5hYjI4NGVhMDk5Yjhm
YTNmZmE3Mjc0ZTA2ZTRjZWNjYWY4NDc0MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMTAsOCArMTEw
LDggQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChj
b25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgICAgICByZXR1cm4gQm94
OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlUm93R3JvdXAgfTsK
ICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcp
KQogICAgICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpF
bGVtZW50VHlwZTo6VGFibGVIZWFkZXJHcm91cCB9OwotICAgICAgICAgICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Zm9vdFRhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUZvb3Rlckdy
b3VwIH07CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRi
b2R5VGFnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQm94OjpFbGVtZW50QXR0cmlidXRlcyB7
IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm9keUdyb3VwIH07CiAgICAgICAgICAgICBpZiAoZWxl
bWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRmb290VGFnKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlRm9v
dGVyR3JvdXAgfTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW1nVGFnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGRhZmQ0YjU0
N2I0OTRjYTE3Nzg4NDExYWMwM2VlNTc1N2JmMTQ1OWUuLjM0MDRkYmYzMGQxYmFjYmQ2OGIyMjA0
ZTcyZWNmMWQxN2MzNjdlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJs
ZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAt
NDQsNiArNDQsMjEgQEAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVGb3JtYXR0aW5nQ29u
dGV4dChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwKIAogdm9pZCBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogeworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtdGFibGVzLTMvI3RhYmxlLWxheW91dC1hbGdvcml0aG0KKyAgICAvLyBUbyBsYXlv
dXQgYSB0YWJsZSwgdXNlciBhZ2VudHMgbXVzdCBhcHBseSB0aGUgZm9sbG93aW5nIGFjdGlvbnM6
CisKKyAgICAvLyAxLiBFbnN1cmUgZWFjaCBjZWxsIHNsb3QgaXMgb2NjdXBpZWQgYnkgYXQgbGVh
c3Qgb25lIGNlbGwuCisgICAgZW5zdXJlVGFibGVHcmlkKCk7CisgICAgLy8gMi4gQ29tcHV0ZSB0
aGUgbWluaW11bSB3aWR0aCBvZiBlYWNoIGNvbHVtbi4KKyAgICBjb21wdXRlUHJlZmVycmVkV2lk
dGhGb3JDb2x1bW5zKCk7CisgICAgLy8gMy4gQ29tcHV0ZSB0aGUgd2lkdGggb2YgdGhlIHRhYmxl
LgorICAgIGNvbXB1dGVUYWJsZVdpZHRoKCk7CisgICAgLy8gNC4gRGlzdHJpYnV0ZSB0aGUgd2lk
dGggb2YgdGhlIHRhYmxlIGFtb25nIGNvbHVtbnMuCisgICAgZGlzdHJpYnV0ZUF2YWlsYWJlV2lk
dGgoKTsKKyAgICAvLyA1LiBDb21wdXRlIHRoZSBoZWlnaHQgb2YgdGhlIHRhYmxlLgorICAgIGNv
bXB1dGVUYWJsZUhlaWdodCgpOworICAgIC8vIDYuIERpc3RyaWJ1dGUgdGhlIGhlaWdodCBvZiB0
aGUgdGFibGUgYW1vbmcgcm93cy4KKyAgICBkaXN0cmlidXRlQXZhaWxhYmxlSGVpZ2h0KCk7CiB9
CiAKIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0
CkBAIC01MSw2ICs2Niw0MyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludAogICAgIHJldHVybiB7
IH07CiB9CiAKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVHcmlkKCkg
Y29uc3QKK3sKKyAgICBhdXRvJiB0YWJsZVdyYXBwZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXI+
KHJvb3QoKSk7CisgICAgYXV0byYgdGFibGVHcmlkID0gZm9ybWF0dGluZ1N0YXRlKCkudGFibGVH
cmlkKCk7CisKKyAgICBmb3IgKGF1dG8qIHNlY3Rpb24gPSB0YWJsZVdyYXBwZXJCb3guZmlyc3RD
aGlsZCgpOyBzZWN0aW9uOyBzZWN0aW9uID0gc2VjdGlvbi0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBBU1NFUlQoc2VjdGlvbi0+aXNUYWJsZUhlYWRlcigpIHx8IHNlY3Rpb24tPmlzVGFibGVC
b2R5KCkgfHwgc2VjdGlvbi0+aXNUYWJsZUZvb3RlcigpKTsKKyAgICAgICAgZm9yIChhdXRvKiBy
b3cgPSBkb3duY2FzdDxDb250YWluZXI+KCpzZWN0aW9uKS5maXJzdENoaWxkKCk7IHJvdzsgcm93
ID0gcm93LT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBBU1NFUlQocm93LT5pc1RhYmxl
Um93KCkpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjZWxsID0gZG93bmNhc3Q8Q29udGFpbmVy
Pigqcm93KS5maXJzdENoaWxkKCk7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGNlbGwtPmlzVGFibGVDZWxsKCkpOworICAgICAgICAg
ICAgICAgIHRhYmxlR3JpZC5hcHBlbmRDZWxsKCpjZWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUHJl
ZmVycmVkV2lkdGhGb3JDb2x1bW5zKCkgY29uc3QKK3sKK30KKwordm9pZCBUYWJsZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlVGFibGVXaWR0aCgpIGNvbnN0Cit7Cit9CisKK3ZvaWQgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6ZGlzdHJpYnV0ZUF2YWlsYWJlV2lkdGgoKSBjb25zdAoreworfQor
Cit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVUYWJsZUhlaWdodCgpIGNvbnN0
Cit7Cit9CisKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZGlzdHJpYnV0ZUF2YWlsYWJs
ZUhlaWdodCgpIGNvbnN0Cit7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
aAppbmRleCA5YjkxYjIzNjgyMjFjYWQ0OGFiM2EzNzBkMWFkNGMzMmJkYmEwMTJmLi40MWY3NDM1
YTc0MGJjODI4ZWRiNWU5ZjE0ZWE0OTkwNmVkNzZhODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaApAQCAtNDQsNiArNDQsMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGVuc3VyZVRhYmxlR3JpZCgpIGNvbnN0OworICAg
IHZvaWQgY29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpIGNvbnN0OworICAgIHZvaWQg
Y29tcHV0ZVRhYmxlV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIGRpc3RyaWJ1dGVBdmFpbGFiZVdp
ZHRoKCkgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlVGFibGVIZWlnaHQoKSBjb25zdDsKKyAgICB2
b2lkIGRpc3RyaWJ1dGVBdmFpbGFibGVIZWlnaHQoKSBjb25zdDsKKworICAgIFRhYmxlRm9ybWF0
dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUYWJs
ZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsg
fQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxl
Zm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDNkMzQwMzk0ZmJlMmJhMTJk
Y2Y4ZDZlMDkyYzQyYmQ4ZjdjOTQ2N2IuLjdiZjJlMTZiNTY1MGQ5ODJmZTkzY2I0NDE2NzBjOTQ1
YzE0ZmRhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkZvcm1hdHRp
bmdTdGF0ZS5oIgorI2luY2x1ZGUgIlRhYmxlR3JpZC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsMTEgQEAgY2xhc3MgVGFi
bGVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGluZ1N0YXRlIHsKIHB1YmxpYzoKICAg
ICBUYWJsZUZvcm1hdHRpbmdTdGF0ZShSZWY8RmxvYXRpbmdTdGF0ZT4mJiwgTGF5b3V0U3RhdGUm
KTsKICAgICB2aXJ0dWFsIH5UYWJsZUZvcm1hdHRpbmdTdGF0ZSgpOworCisgICAgVGFibGVHcmlk
JiB0YWJsZUdyaWQoKSB7IHJldHVybiBtX3RhYmxlR3JpZDsgfQorCitwcml2YXRlOgorICAgIFRh
YmxlR3JpZCBtX3RhYmxlR3JpZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTlhMjM4ODU1
ZmVjYzRhNTk2MzMxMzk5OTA0YmUyNzJjODk3M2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3BwCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRhYmxl
R3JpZC5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRhYmxlR3JpZCk7
CisKK1RhYmxlR3JpZDo6Q2VsbEluZm86OkNlbGxJbmZvKGNvbnN0IEJveCYgdGFibGVDZWxsQm94
LCBTbG90UG9zaXRpb24gcG9zaXRpb24sIENlbGxTaXplIHNpemUpCisgICAgOiB0YWJsZUNlbGxC
b3godGFibGVDZWxsQm94KQorICAgICwgcG9zaXRpb24ocG9zaXRpb24pCisgICAgLCBzaXplKHNp
emUpCit7Cit9CisKK1RhYmxlR3JpZDo6U2xvdEluZm86OlNsb3RJbmZvKENlbGxJbmZvKiBjZWxs
KQorICAgIDogY2VsbChjZWxsKQoreworfQorCitUYWJsZUdyaWQ6OlRhYmxlR3JpZCgpCit7Cit9
CisKK3ZvaWQgVGFibGVHcmlkOjphcHBlbmRDZWxsKGNvbnN0IEJveCYgdGFibGVDZWxsQm94KQor
eworICAgIGludCByb3dTcGFuID0gdGFibGVDZWxsQm94LnJvd1NwYW4oKTsKKyAgICBpbnQgY29s
dW1uU3BhbiA9IHRhYmxlQ2VsbEJveC5jb2x1bW5TcGFuKCk7CisgICAgYXV0byBpbml0aWFsU2xv
dFBvc2l0aW9uID0gU2xvdFBvc2l0aW9uIHsgfTsKKworICAgIGlmICghbV9jZWxsTGlzdC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYXV0byYgbGFzdENlbGwgPSBtX2NlbGxMaXN0Lmxhc3QoKTsKKyAg
ICAgICAgYXV0byBsYXN0U2xvdFBvc2l0aW9uID0gbGFzdENlbGwtPnBvc2l0aW9uOworICAgICAg
ICAvLyBGaXJzdCB0YWJsZSBjZWxsIGluIHRoaXMgcm93PworICAgICAgICBpZiAoIXRhYmxlQ2Vs
bEJveC5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAgIGluaXRpYWxTbG90UG9zaXRpb24g
PSBTbG90UG9zaXRpb24geyAwLCBsYXN0U2xvdFBvc2l0aW9uLnkoKSArIDEgfTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaW5pdGlhbFNsb3RQb3NpdGlvbiA9IFNsb3RQb3NpdGlvbiB7IGxh
c3RTbG90UG9zaXRpb24ueCgpICsgMSwgbGFzdFNsb3RQb3NpdGlvbi55KCkgfTsKKworICAgICAg
ICAvLyBQaWNrIHRoZSBuZXh0IGF2YWlsYWJsZSBzbG90IGJ5IGF2b2lkaW5nIHJvdyBhbmQgY29s
dW1uIHNwYW5uZXJzLgorICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKCFt
X3Nsb3RNYXAuY29udGFpbnMoaW5pdGlhbFNsb3RQb3NpdGlvbikpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpbml0aWFsU2xvdFBvc2l0aW9uLm1vdmUoMSwgMCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgYXV0byBjZWxsSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2VsbElu
Zm8+KHRhYmxlQ2VsbEJveCwgaW5pdGlhbFNsb3RQb3NpdGlvbiwgQ2VsbFNpemUgeyByb3dTcGFu
LCBjb2x1bW5TcGFuIH0pOworICAgIC8vIFJvdyBhbmQgY29sdW1uIHNwYW5uZXJzIGNyZWF0ZSBh
ZGRpdGlvbmFsIHNsb3RzLgorICAgIGZvciAoaW50IHJvdyA9IDE7IHJvdyA8PSByb3dTcGFuOyAr
K3JvdykgeworICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAxOyBjb2x1bW4gPD0gY29sdW1uU3Bh
bjsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBTbG90UG9zaXRpb24g
eyBpbml0aWFsU2xvdFBvc2l0aW9uLngoKSArIHJvdyAtIDEsIGluaXRpYWxTbG90UG9zaXRpb24u
eSgpICsgY29sdW1uIC0gMSB9OworICAgICAgICAgICAgQVNTRVJUKCFtX3Nsb3RNYXAuY29udGFp
bnMocG9zaXRpb24pKTsKKyAgICAgICAgICAgIG1fc2xvdE1hcC5hZGQocG9zaXRpb24sIFNsb3RJ
bmZvIHsgY2VsbEluZm8uZ2V0KCkgfSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9jZWxsTGlz
dC5hZGQoV1RGTW92ZShjZWxsSW5mbykpOworfQorCit2b2lkIFRhYmxlR3JpZDo6aW5zZXJ0Q2Vs
bChjb25zdCBCb3gmIHRhYmxlQ2VsbEJveCwgY29uc3QgQm94JiBiZWZvcmUpCit7CisgICAgVU5V
U0VEX1BBUkFNKHRhYmxlQ2VsbEJveCk7CisgICAgVU5VU0VEX1BBUkFNKGJlZm9yZSk7Cit9CisK
K3ZvaWQgVGFibGVHcmlkOjpyZW1vdmVDZWxsKGNvbnN0IEJveCYgdGFibGVDZWxsQm94KQorewor
ICAgIFVOVVNFRF9QQVJBTSh0YWJsZUNlbGxCb3gpOworfQorCit9Cit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdhNjRlMGE4NDFlY2JjMGM1OWNmM2M5YTY0M2E3YzliZjBhN2VkNTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3Jp
ZC5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiSW50UG9pbnRIYXNo
LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBUYWJsZUdy
aWQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVHcmlkKTsKK3B1YmxpYzoKKyAg
ICBUYWJsZUdyaWQoKTsKKworICAgIHZvaWQgYXBwZW5kQ2VsbChjb25zdCBCb3gmKTsKKyAgICB2
b2lkIGluc2VydENlbGwoY29uc3QgQm94JiwgY29uc3QgQm94JiBiZWZvcmUpOworICAgIHZvaWQg
cmVtb3ZlQ2VsbChjb25zdCBCb3gmKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBTbG90UG9zaXRp
b24gPSBJbnRQb2ludDsKKyAgICB1c2luZyBDZWxsU2l6ZSA9IEludFNpemU7CisgICAgdXNpbmcg
U2xvdExvZ2ljYWxTaXplID0gTGF5b3V0U2l6ZTsKKworICAgIHN0cnVjdCBDZWxsSW5mbyB7Cisg
ICAgICAgIENlbGxJbmZvKGNvbnN0IEJveCYgdGFibGVDZWxsQm94LCBTbG90UG9zaXRpb24sIENl
bGxTaXplKTsKKworICAgICAgICBjb25zdCBCb3gmIHRhYmxlQ2VsbEJveDsKKyAgICAgICAgU2xv
dFBvc2l0aW9uIHBvc2l0aW9uOworICAgICAgICBDZWxsU2l6ZSBzaXplOworICAgIH07CisKKyAg
ICBzdHJ1Y3QgU2xvdEluZm8geworICAgICAgICBTbG90SW5mbygpID0gZGVmYXVsdDsKKyAgICAg
ICAgU2xvdEluZm8oQ2VsbEluZm8qKTsKKworICAgICAgICBDZWxsSW5mbyogY2VsbCB7IG51bGxw
dHIgfTsKKyAgICAgICAgU2xvdExvZ2ljYWxTaXplIHNpemU7CisgICAgfTsKKworICAgIHVzaW5n
IENlbGxMaXN0ID0gV1RGOjpMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q2VsbEluZm8+PjsK
KyAgICB1c2luZyBTbG90TWFwID0gV1RGOjpIYXNoTWFwPFNsb3RQb3NpdGlvbiwgU2xvdEluZm8+
OworICAgIFNsb3RNYXAgbV9zbG90TWFwOworICAgIENlbGxMaXN0IG1fY2VsbExpc3Q7Cit9Owor
Cit9Cit9CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376168</attachid>
            <date>2019-08-13 08:44:19 -0700</date>
            <delta_ts>2019-08-13 10:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200656-20190813084408.patch</filename>
            <type>text/plain</type>
            <size>20946</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE5MzA1OTMzMjkwOTE5
MTRkNzQ2ZmRhYTZkNjQ4YmMxYzY0ZTMxZS4uMmRjZTM4MGRhOGE0Mjc3OTViODM0ZDAxMTc4YWNm
ZjdkMWQ1YWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA4LTEyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bVEZDXSBJbnRyb2R1
Y2UgVGFibGVHcmlkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MjQwODMzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIHRhYmxlIGdyaWQ6CisgICAg
ICAgIEEgbWF0cml4IGNvbnRhaW5pbmcgYXMgbWFueSByb3dzIGFuZCBjb2x1bW5zIGFzIG5lZWRl
ZCB0byBkZXNjcmliZSB0aGUgcG9zaXRpb24gb2YgYWxsIHRoZSB0YWJsZS1yb3dzCisgICAgICAg
IGFuZCB0YWJsZS1jZWxscyBvZiBhIHRhYmxlLXJvb3QsIGFzIGRldGVybWluZWQgYnkgdGhlIGdy
aWQtZGltZW5zaW9uaW5nIGFsZ29yaXRobS4KKyAgICAgICAgRWFjaCByb3cgb2YgdGhlIGdyaWQg
bWlnaHQgY29ycmVzcG9uZCB0byBhIHRhYmxlLXJvdywgYW5kIGVhY2ggY29sdW1uIHRvIGEgdGFi
bGUtY29sdW1uLgorCisgICAgICAgIHNsb3Qgb2YgdGhlIHRhYmxlIGdyaWQ6CisgICAgICAgIEEg
c2xvdCAocixjKSBpcyBhbiBhdmFpbGFibGUgc3BhY2UgY3JlYXRlZCBieSB0aGUgaW50ZXJzZWN0
aW9uIG9mIGEgcm93IHIgYW5kIGEgY29sdW1uIGMgaW4gdGhlIHRhYmxlIGdyaWQuCisKKyAgICAg
ICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10YWJsZXMtMy8jdGVybWlub2xvZ3kKKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc1RhYmxlSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc1RhYmxlQm9keSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJveDo6aXNUYWJsZUZvb3RlciBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKiBsYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjplbnN1cmVUYWJsZUdy
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVRhYmxlV2lkdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpkaXN0cmlidXRlQXZhaWxhYmVXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVUYWJsZUhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmRpc3RyaWJ1
dGVBdmFpbGFibGVIZWlnaHQgY29uc3QpOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
YWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAq
IGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nU3RhdGU6OnRhYmxlR3JpZCk6CisgICAg
ICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjpDZWxsSW5mbzo6Q2VsbEluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OlNsb3RJbmZvOjpTbG90SW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6VGFibGVHcmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjphcHBlbmRDZWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VGFibGVHcmlkOjppbnNlcnRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGFibGVHcmlkOjpyZW1vdmVDZWxsKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlR3JpZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaC4KKwogMjAxOS0wOC0xMiAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRkIHJv
d1NwYW4gYW5kIGNvbFNwYW4gdG8gQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDExMDZjZWQyNThkZmE5
YzhhMDFhYjdlZTZmY2U4NDMxOWEwMmZhNWYuLjBjYWQxMzNjZDFmMjUyNjQ5MjJhMWNiMDFiZWJj
NDhjNDQzOTdkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNDE4LDYgKzE0MTgsNyBAQCBsYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZC5jcHAKIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcAogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5jcHAK
K2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAogbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUludmFsaWRhdGlvbi5jcHAKIAogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0YWZmNjRlMzA2MmU5NjMyNjkwNzJlYWM5NWQ5ZjY0NWJiZmViMmUwLi5lNzNiMGU3
ZTNlM2RjNDI0YTI4NGI4Nzk4YTNkOGJjNzFlNTA2YjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTM3LDYgKzkxMzcsNyBA
QAogCQk2RjNFMUY1RjIxMzYxNDE3MDBBNjVBMDggLyogRmxvYXRCb3guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxvYXRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjNF
MUY2MTIxMzYxNDE3MDBBNjVBMDggLyogRmxvYXRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY0QTVCRDUyMkY5RjE2QjAwQTgw
RjI1IC8qIExheW91dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkY1QjdFQUEyMzAwQTc5RTAwNjdEOUMz
IC8qIFRhYmxlR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWJsZUdyaWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5
b3V0VW5pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0VW5pdHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkY3Q0EzQzQyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91dFN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExheW91dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGN0NBM0M1MjA4QzI5NTYwMDJGMjlBQiAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MTcxLDYgKzkxNzIsNyBAQAogCQk2Rjk5NUEzMDFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFV0aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkZCMTFCNUIyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRVdGlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNkZCMjJFMzAyMzAwOTdFMzAwQzIwODY2IC8qIFRhYmxlR3JpZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUYWJsZUdyaWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCNDdF
NjEyMjc3NDI1QTAwQzdCQ0IwIC8qIElubGluZUxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RkI1RTIxMjIyMUYyNDQ3MDAzOTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDgyLDggKzE3MDg0LDgg
QEAKIAkJCQlDMjFCRjcyMDIxQ0Q4OUREMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbkRlZmlu
aXRpb24uaCAqLywKIAkJCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJh
dGlvbk1lbWJlci5oICovLAogCQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAotCQkJCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3
OSAvKiBXSExTTEV4cHJlc3Npb24uaCAqLywKIAkJCQk1MjJEMDdBMzIyRkJBQjQzMDBCOTA1QkUg
LyogV0hMU0xFeHByZXNzaW9uLmNwcCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5Nzkg
LyogV0hMU0xFeHByZXNzaW9uLmggKi8sCiAJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8q
IFdITFNMRmFsbHRocm91Z2guaCAqLywKIAkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyog
V0hMU0xGbG9hdExpdGVyYWwuaCAqLywKIAkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyog
V0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcCAqLywKQEAgLTIwNDQ0LDYgKzIwNDQ2LDggQEAKIAkJ
CQk2RkM1Q0E5NTIyRTM1OTk0MDBCMTNFMTEgLyogVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oICov
LAogCQkJCTZGQzVDQTkyMjJFMzU5OTMwMEIxM0UxMSAvKiBUYWJsZUZvcm1hdHRpbmdTdGF0ZS5j
cHAgKi8sCiAJCQkJNkZDNUNBOTYyMkUzNTk5NTAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGluZ1N0
YXRlLmggKi8sCisJCQkJNkY1QjdFQUEyMzAwQTc5RTAwNjdEOUMzIC8qIFRhYmxlR3JpZC5jcHAg
Ki8sCisJCQkJNkZCMjJFMzAyMzAwOTdFMzAwQzIwODY2IC8qIFRhYmxlR3JpZC5oICovLAogCQkJ
CTZGQzVDQTk3MjJFMzU5OTUwMEIxM0UxMSAvKiBUYWJsZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJ
CQkJNkZDNUNBOTMyMkUzNTk5MzAwQjEzRTExIC8qIFRhYmxlSW52YWxpZGF0aW9uLmggKi8sCiAJ
CQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAppbmRl
eCA3NmM2OTI1MjJhYjgzMzBiMjJiMDdlOTdlMjVkMDc4MjAzMjlmZTVmLi5hNDFjMGM2OTNkNWI4
ODM5ZjliZWQ2NWE2ZDYwZTNmYTBiMDY4MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFRhYmxlQ29sdW1uR3JvdXAsCiAgICAgICAgIFRhYmxlUm93R3JvdXAsCiAgICAgICAgIFRhYmxl
SGVhZGVyR3JvdXAsCisgICAgICAgIFRhYmxlQm9keUdyb3VwLAogICAgICAgICBUYWJsZUZvb3Rl
ckdyb3VwLAogICAgICAgICBJbWFnZSwKICAgICAgICAgSUZyYW1lLApAQCAtMTE2LDYgKzExNyw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzVGFibGVXcmFwcGVyQm94KCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxlbWVu
dFR5cGUgPT0gRWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveDsgfQogICAgIGJvb2wgaXNUYWJs
ZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMgJiYgbV9lbGVtZW50QXR0
cmlidXRlcy52YWx1ZSgpLmVsZW1lbnRUeXBlID09IEVsZW1lbnRUeXBlOjpUYWJsZUJveDsgfQog
ICAgIGJvb2wgaXNUYWJsZUNhcHRpb24oKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOyB9CisgICAgYm9vbCBpc1RhYmxlSGVhZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1
dGVzLnZhbHVlKCkuZWxlbWVudFR5cGUgPT0gRWxlbWVudFR5cGU6OlRhYmxlSGVhZGVyR3JvdXA7
IH0KKyAgICBib29sIGlzVGFibGVCb2R5KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QXR0cmli
dXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxlbWVudFR5cGUgPT0gRWxlbWVu
dFR5cGU6OlRhYmxlQm9keUdyb3VwOyB9CisgICAgYm9vbCBpc1RhYmxlRm9vdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVzLnZhbHVl
KCkuZWxlbWVudFR5cGUgPT0gRWxlbWVudFR5cGU6OlRhYmxlRm9vdGVyR3JvdXA7IH0KICAgICBi
b29sIGlzVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBdHRyaWJ1dGVzICYmIG1f
ZWxlbWVudEF0dHJpYnV0ZXMudmFsdWUoKS5lbGVtZW50VHlwZSA9PSBFbGVtZW50VHlwZTo6VGFi
bGVSb3c7IH0KICAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbDs7IH0KICAgICBib29sIGlzUmVwbGFj
ZWQoKSBjb25zdCB7IHJldHVybiBpc0ltYWdlKCkgfHwgaXNJRnJhbWUoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IDAwMjdkZDBiZWUxNTJmODQyMGMyZDRkZTUwODg4NTU2YjgxYWNmY2EuLmFiMjg0ZWEw
OTliOGZhM2ZmYTcyNzRlMDZlNGNlY2NhZjg0NzQzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTExMCw4
ICsxMTAsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0
Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAgIHJldHVy
biBCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVSb3dHcm91
cCB9OwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0aGVh
ZFRhZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBC
b3g6OkVsZW1lbnRUeXBlOjpUYWJsZUhlYWRlckdyb3VwIH07Ci0gICAgICAgICAgICBpZiAoZWxl
bWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRmb290VGFnKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlRm9v
dGVyR3JvdXAgfTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dGJvZHlUYWcpKQorICAgICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1lbnRBdHRyaWJ1
dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb2R5R3JvdXAgfTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGZvb3RUYWcpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFi
bGVGb290ZXJHcm91cCB9OwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjppbWdUYWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxl
Zm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZGFm
ZDRiNTQ3YjQ5NGNhMTc3ODg0MTFhYzAzZWU1NzU3YmYxNDU5ZS4uMzQwNGRiZjMwZDFiYWNiZDY4
YjIyMDRlNzJlY2YxZDE3YzM2N2U0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC00NCw2ICs0NCwyMSBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUZvcm1hdHRp
bmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LAogCiB2b2lkIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCgpIGNvbnN0CiB7CisgICAgLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL2Nzcy10YWJsZXMtMy8jdGFibGUtbGF5b3V0LWFsZ29yaXRobQorICAgIC8vIFRv
IGxheW91dCBhIHRhYmxlLCB1c2VyIGFnZW50cyBtdXN0IGFwcGx5IHRoZSBmb2xsb3dpbmcgYWN0
aW9uczoKKworICAgIC8vIDEuIEVuc3VyZSBlYWNoIGNlbGwgc2xvdCBpcyBvY2N1cGllZCBieSBh
dCBsZWFzdCBvbmUgY2VsbC4KKyAgICBlbnN1cmVUYWJsZUdyaWQoKTsKKyAgICAvLyAyLiBDb21w
dXRlIHRoZSBtaW5pbXVtIHdpZHRoIG9mIGVhY2ggY29sdW1uLgorICAgIGNvbXB1dGVQcmVmZXJy
ZWRXaWR0aEZvckNvbHVtbnMoKTsKKyAgICAvLyAzLiBDb21wdXRlIHRoZSB3aWR0aCBvZiB0aGUg
dGFibGUuCisgICAgY29tcHV0ZVRhYmxlV2lkdGgoKTsKKyAgICAvLyA0LiBEaXN0cmlidXRlIHRo
ZSB3aWR0aCBvZiB0aGUgdGFibGUgYW1vbmcgY29sdW1ucy4KKyAgICBkaXN0cmlidXRlQXZhaWxh
YmVXaWR0aCgpOworICAgIC8vIDUuIENvbXB1dGUgdGhlIGhlaWdodCBvZiB0aGUgdGFibGUuCisg
ICAgY29tcHV0ZVRhYmxlSGVpZ2h0KCk7CisgICAgLy8gNi4gRGlzdHJpYnV0ZSB0aGUgaGVpZ2h0
IG9mIHRoZSB0YWJsZSBhbW9uZyByb3dzLgorICAgIGRpc3RyaWJ1dGVBdmFpbGFibGVIZWlnaHQo
KTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkg
Y29uc3QKQEAgLTUxLDYgKzY2LDQzIEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50CiAgICAgcmV0
dXJuIHsgfTsKIH0KIAordm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjplbnN1cmVUYWJsZUdy
aWQoKSBjb25zdAoreworICAgIGF1dG8mIHRhYmxlV3JhcHBlckJveCA9IGRvd25jYXN0PENvbnRh
aW5lcj4ocm9vdCgpKTsKKyAgICBhdXRvJiB0YWJsZUdyaWQgPSBmb3JtYXR0aW5nU3RhdGUoKS50
YWJsZUdyaWQoKTsKKworICAgIGZvciAoYXV0byogc2VjdGlvbiA9IHRhYmxlV3JhcHBlckJveC5m
aXJzdENoaWxkKCk7IHNlY3Rpb247IHNlY3Rpb24gPSBzZWN0aW9uLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIEFTU0VSVChzZWN0aW9uLT5pc1RhYmxlSGVhZGVyKCkgfHwgc2VjdGlvbi0+aXNU
YWJsZUJvZHkoKSB8fCBzZWN0aW9uLT5pc1RhYmxlRm9vdGVyKCkpOworICAgICAgICBmb3IgKGF1
dG8qIHJvdyA9IGRvd25jYXN0PENvbnRhaW5lcj4oKnNlY3Rpb24pLmZpcnN0Q2hpbGQoKTsgcm93
OyByb3cgPSByb3ctPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChyb3ctPmlz
VGFibGVSb3coKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGNlbGwgPSBkb3duY2FzdDxDb250
YWluZXI+KCpyb3cpLmZpcnN0Q2hpbGQoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoY2VsbC0+aXNUYWJsZUNlbGwoKSk7CisgICAg
ICAgICAgICAgICAgdGFibGVHcmlkLmFwcGVuZENlbGwoKmNlbGwpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVQcmVmZXJyZWRXaWR0aEZvckNvbHVtbnMoKSBjb25zdAoreworfQorCit2b2lkIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVUYWJsZVdpZHRoKCkgY29uc3QKK3sKK30KKwordm9pZCBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpkaXN0cmlidXRlQXZhaWxhYmVXaWR0aCgpIGNvbnN0Cit7
Cit9CisKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVRhYmxlSGVpZ2h0KCkg
Y29uc3QKK3sKK30KKwordm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpkaXN0cmlidXRlQXZh
aWxhYmxlSGVpZ2h0KCkgY29uc3QKK3sKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5oCmluZGV4IDliOTFiMjM2ODIyMWNhZDQ4YWIzYTM3MGQxYWQ0YzMyYmRiYTAxMmYuLjQx
Zjc0MzVhNzQwYmM4MjhlZGI1ZTlmMTRlYTQ5OTA2ZWQ3NmE4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC00NCw2ICs0NCwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZW5zdXJlVGFibGVHcmlkKCkgY29uc3Q7
CisgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zKCkgY29uc3Q7CisgICAg
dm9pZCBjb21wdXRlVGFibGVXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgZGlzdHJpYnV0ZUF2YWls
YWJlV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVUYWJsZUhlaWdodCgpIGNvbnN0Owor
ICAgIHZvaWQgZGlzdHJpYnV0ZUF2YWlsYWJsZUhlaWdodCgpIGNvbnN0OworCisgICAgVGFibGVG
b3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRl
KCkpOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVm
b3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggM2QzNDAzOTRmYmUy
YmExMmRjZjhkNmUwOTJjNDJiZDhmN2M5NDY3Yi4uN2JmMmUxNmI1NjUwZDk4MmZlOTNjYjQ0MTY3
MGM5NDVjMTRmZGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9y
bWF0dGluZy9UYWJsZUZvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRm9y
bWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiVGFibGVHcmlkLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw2ICs0MCwxMSBAQCBjbGFz
cyBUYWJsZUZvcm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3RhdGUgewogcHVibGlj
OgogICAgIFRhYmxlRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmLCBMYXlvdXRT
dGF0ZSYpOwogICAgIHZpcnR1YWwgflRhYmxlRm9ybWF0dGluZ1N0YXRlKCk7CisKKyAgICBUYWJs
ZUdyaWQmIHRhYmxlR3JpZCgpIHsgcmV0dXJuIG1fdGFibGVHcmlkOyB9CisKK3ByaXZhdGU6Cisg
ICAgVGFibGVHcmlkIG1fdGFibGVHcmlkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExOTgz
NTJlNzQxNTkwNWU1ZTZiZmM2MGRjNmE2NjIxNTgwMDkyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGFibGVHcmlkLmgiCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKwor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBMYXlvdXQgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGFibGVH
cmlkKTsKKworVGFibGVHcmlkOjpDZWxsSW5mbzo6Q2VsbEluZm8oY29uc3QgQm94JiB0YWJsZUNl
bGxCb3gsIFNsb3RQb3NpdGlvbiBwb3NpdGlvbiwgQ2VsbFNpemUgc2l6ZSkKKyAgICA6IHRhYmxl
Q2VsbEJveCh0YWJsZUNlbGxCb3gpCisgICAgLCBwb3NpdGlvbihwb3NpdGlvbikKKyAgICAsIHNp
emUoc2l6ZSkKK3sKK30KKworVGFibGVHcmlkOjpTbG90SW5mbzo6U2xvdEluZm8oQ2VsbEluZm8m
IGNlbGwpCisgICAgOiBjZWxsKG1ha2VXZWFrUHRyKGNlbGwpKQoreworfQorCitUYWJsZUdyaWQ6
OlRhYmxlR3JpZCgpCit7Cit9CisKK3ZvaWQgVGFibGVHcmlkOjphcHBlbmRDZWxsKGNvbnN0IEJv
eCYgdGFibGVDZWxsQm94KQoreworICAgIGludCByb3dTcGFuID0gdGFibGVDZWxsQm94LnJvd1Nw
YW4oKTsKKyAgICBpbnQgY29sdW1uU3BhbiA9IHRhYmxlQ2VsbEJveC5jb2x1bW5TcGFuKCk7Cisg
ICAgYXV0byBpbml0aWFsU2xvdFBvc2l0aW9uID0gU2xvdFBvc2l0aW9uIHsgfTsKKworICAgIGlm
ICghbV9jZWxsTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgbGFzdENlbGwgPSBtX2Nl
bGxMaXN0Lmxhc3QoKTsKKyAgICAgICAgYXV0byBsYXN0U2xvdFBvc2l0aW9uID0gbGFzdENlbGwt
PnBvc2l0aW9uOworICAgICAgICAvLyBGaXJzdCB0YWJsZSBjZWxsIGluIHRoaXMgcm93PworICAg
ICAgICBpZiAoIXRhYmxlQ2VsbEJveC5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAgIGlu
aXRpYWxTbG90UG9zaXRpb24gPSBTbG90UG9zaXRpb24geyAwLCBsYXN0U2xvdFBvc2l0aW9uLnko
KSArIDEgfTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5pdGlhbFNsb3RQb3NpdGlvbiA9
IFNsb3RQb3NpdGlvbiB7IGxhc3RTbG90UG9zaXRpb24ueCgpICsgMSwgbGFzdFNsb3RQb3NpdGlv
bi55KCkgfTsKKworICAgICAgICAvLyBQaWNrIHRoZSBuZXh0IGF2YWlsYWJsZSBzbG90IGJ5IGF2
b2lkaW5nIHJvdyBhbmQgY29sdW1uIHNwYW5uZXJzLgorICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgaWYgKCFtX3Nsb3RNYXAuY29udGFpbnMoaW5pdGlhbFNsb3RQb3NpdGlvbikp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpbml0aWFsU2xvdFBvc2l0aW9u
Lm1vdmUoMSwgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXV0byBjZWxsSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2VsbEluZm8+KHRhYmxlQ2VsbEJveCwgaW5pdGlhbFNsb3RQb3NpdGlvbiwg
Q2VsbFNpemUgeyByb3dTcGFuLCBjb2x1bW5TcGFuIH0pOworICAgIC8vIFJvdyBhbmQgY29sdW1u
IHNwYW5uZXJzIGNyZWF0ZSBhZGRpdGlvbmFsIHNsb3RzLgorICAgIGZvciAoaW50IHJvdyA9IDE7
IHJvdyA8PSByb3dTcGFuOyArK3JvdykgeworICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAxOyBj
b2x1bW4gPD0gY29sdW1uU3BhbjsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgIGF1dG8gcG9zaXRp
b24gPSBTbG90UG9zaXRpb24geyBpbml0aWFsU2xvdFBvc2l0aW9uLngoKSArIHJvdyAtIDEsIGlu
aXRpYWxTbG90UG9zaXRpb24ueSgpICsgY29sdW1uIC0gMSB9OworICAgICAgICAgICAgQVNTRVJU
KCFtX3Nsb3RNYXAuY29udGFpbnMocG9zaXRpb24pKTsKKyAgICAgICAgICAgIG1fc2xvdE1hcC5h
ZGQocG9zaXRpb24sIFNsb3RJbmZvIHsgKmNlbGxJbmZvIH0pOworICAgICAgICB9CisgICAgfQor
ICAgIG1fY2VsbExpc3QuYWRkKFdURk1vdmUoY2VsbEluZm8pKTsKK30KKwordm9pZCBUYWJsZUdy
aWQ6Omluc2VydENlbGwoY29uc3QgQm94JiB0YWJsZUNlbGxCb3gsIGNvbnN0IEJveCYgYmVmb3Jl
KQoreworICAgIFVOVVNFRF9QQVJBTSh0YWJsZUNlbGxCb3gpOworICAgIFVOVVNFRF9QQVJBTShi
ZWZvcmUpOworfQorCit2b2lkIFRhYmxlR3JpZDo6cmVtb3ZlQ2VsbChjb25zdCBCb3gmIHRhYmxl
Q2VsbEJveCkKK3sKKyAgICBVTlVTRURfUEFSQU0odGFibGVDZWxsQm94KTsKK30KKworfQorfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJs
ZUdyaWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYTk4YzZkYjZjM2Q4MTlhNGMyN2NiZDIyMzNhMGIxZjI4NzVj
NmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUdyaWQuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUg
IkludFBvaW50SGFzaC5oIgorI2luY2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBUYWJsZUdyaWQgeworICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoVGFibGVHcmlkKTsKK3B1YmxpYzoKKyAgICBUYWJsZUdyaWQoKTsKKwor
ICAgIHZvaWQgYXBwZW5kQ2VsbChjb25zdCBCb3gmKTsKKyAgICB2b2lkIGluc2VydENlbGwoY29u
c3QgQm94JiwgY29uc3QgQm94JiBiZWZvcmUpOworICAgIHZvaWQgcmVtb3ZlQ2VsbChjb25zdCBC
b3gmKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBTbG90UG9zaXRpb24gPSBJbnRQb2ludDsKKyAg
ICB1c2luZyBDZWxsU2l6ZSA9IEludFNpemU7CisgICAgdXNpbmcgU2xvdExvZ2ljYWxTaXplID0g
TGF5b3V0U2l6ZTsKKworICAgIHN0cnVjdCBDZWxsSW5mbyA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxDZWxsSW5mbz4geworICAgICAgICBDZWxsSW5mbyhjb25zdCBCb3gmIHRhYmxlQ2VsbEJveCwg
U2xvdFBvc2l0aW9uLCBDZWxsU2l6ZSk7CisKKyAgICAgICAgY29uc3QgQm94JiB0YWJsZUNlbGxC
b3g7CisgICAgICAgIFNsb3RQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICAgICAgQ2VsbFNpemUgc2l6
ZTsKKyAgICB9OworCisgICAgc3RydWN0IFNsb3RJbmZvIHsKKyAgICAgICAgU2xvdEluZm8oKSA9
IGRlZmF1bHQ7CisgICAgICAgIFNsb3RJbmZvKENlbGxJbmZvJik7CisKKyAgICAgICAgV2Vha1B0
cjxDZWxsSW5mbz4gY2VsbDsKKyAgICAgICAgU2xvdExvZ2ljYWxTaXplIHNpemU7CisgICAgfTsK
KworICAgIHVzaW5nIENlbGxMaXN0ID0gV1RGOjpMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8
Q2VsbEluZm8+PjsKKyAgICB1c2luZyBTbG90TWFwID0gV1RGOjpIYXNoTWFwPFNsb3RQb3NpdGlv
biwgU2xvdEluZm8+OworICAgIFNsb3RNYXAgbV9zbG90TWFwOworICAgIENlbGxMaXN0IG1fY2Vs
bExpc3Q7Cit9OworCit9Cit9CisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>