<?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>83611</bug_id>
          
          <creation_ts>2012-04-10 13:18:57 -0700</creation_ts>
          <short_desc>[Cairo] Wrap cairo surfaces in a class when storing native images</short_desc>
          <delta_ts>2012-04-26 16:02:25 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599564</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-10 13:18:57 -0700</bug_when>
    <thetext>When WebCore stores an image in the &quot;native format&quot; now it stores a Cairo surface. By storing a class that we control, we can store cached versions that have been resampled or created for different backends. This follows the Skia backend&apos;s approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599688</commentid>
    <comment_count>1</comment_count>
      <attachid>136550</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-10 15:04:48 -0700</bug_when>
    <thetext>Created attachment 136550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599950</commentid>
    <comment_count>2</comment_count>
      <attachid>136550</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-10 19:40:44 -0700</bug_when>
    <thetext>Comment on attachment 136550
Patch

Attachment 136550 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12379786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600355</commentid>
    <comment_count>3</comment_count>
      <attachid>136688</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-11 10:15:21 -0700</bug_when>
    <thetext>Created attachment 136688
Try to fix the EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600402</commentid>
    <comment_count>4</comment_count>
      <attachid>136688</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-11 10:46:08 -0700</bug_when>
    <thetext>Comment on attachment 136688
Try to fix the EFL build

Attachment 136688 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12382928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600418</commentid>
    <comment_count>5</comment_count>
      <attachid>136703</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-11 10:55:05 -0700</bug_when>
    <thetext>Created attachment 136703
Try once again to fix the EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600476</commentid>
    <comment_count>6</comment_count>
      <attachid>136703</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-11 12:12:55 -0700</bug_when>
    <thetext>Comment on attachment 136703
Try once again to fix the EFL build

Attachment 136703 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12383937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600575</commentid>
    <comment_count>7</comment_count>
      <attachid>136746</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-11 13:58:17 -0700</bug_when>
    <thetext>Created attachment 136746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600656</commentid>
    <comment_count>8</comment_count>
      <attachid>136746</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-11 15:51:43 -0700</bug_when>
    <thetext>Comment on attachment 136746
Patch

Attachment 136746 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12385858</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603508</commentid>
    <comment_count>9</comment_count>
      <attachid>137417</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-16 15:27:43 -0700</bug_when>
    <thetext>Created attachment 137417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603556</commentid>
    <comment_count>10</comment_count>
      <attachid>137417</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-16 16:35:28 -0700</bug_when>
    <thetext>Comment on attachment 137417
Patch

Attachment 137417 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12417280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603587</commentid>
    <comment_count>11</comment_count>
      <attachid>137434</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-16 17:08:12 -0700</bug_when>
    <thetext>Created attachment 137434
One more time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606074</commentid>
    <comment_count>12</comment_count>
      <attachid>137434</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-04-19 16:04:31 -0700</bug_when>
    <thetext>Comment on attachment 137434
One more time

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

Looks good to me, you have to check TextureMapperGL.cpp compilation, it requires a modification to compile.

&gt; Source/WebCore/platform/graphics/cairo/BitmapImageCairo.cpp:2
&gt; + * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.

Check if the copyright is the same in the original file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607226</commentid>
    <comment_count>13</comment_count>
      <attachid>138243</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-21 10:14:04 -0700</bug_when>
    <thetext>Created attachment 138243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609870</commentid>
    <comment_count>14</comment_count>
      <attachid>138243</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-04-25 10:13:46 -0700</bug_when>
    <thetext>Comment on attachment 138243
Patch

Great LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609873</commentid>
    <comment_count>15</comment_count>
      <attachid>138243</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 10:20:03 -0700</bug_when>
    <thetext>Comment on attachment 138243
Patch

Rejecting attachment 138243 from commit-queue.

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

Alejandro G found in /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12530640</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611051</commentid>
    <comment_count>16</comment_count>
      <attachid>138243</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-26 16:02:13 -0700</bug_when>
    <thetext>Comment on attachment 138243
Patch

Clearing flags on attachment: 138243

Committed r115385: &lt;http://trac.webkit.org/changeset/115385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611052</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-26 16:02:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136550</attachid>
            <date>2012-04-10 15:04:48 -0700</date>
            <delta_ts>2012-04-11 10:15:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83611-20120410150448.patch</filename>
            <type>text/plain</type>
            <size>25604</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5MTRiMzg3ZTE3Y2Nh
ZDc2MTBjOTUyZGU4MGI5YjVjNDA1ZmZhYS4uNGRkZTc0MDQ2Y2IyMzQ1MGVmZWY4NmVhYjNkZjJj
MGYzY2YzM2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzYxMS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCAzOGFjMTM1N2M1MjVmMjZlMTY1NGY5NTA3OGNjMzg5NGVkNmM0MWRiLi4zOTQyMGM5YTc3OTVm
ZmY2OThmODJmNGFkNjZhNDNjMjcxNjBmM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDQtMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtDYWlyb10gV3JhcCBjYWlybyBzdXJmYWNlcyBpbiBhIGNsYXNzIHdoZW4gc3Rvcmlu
ZyBuYXRpdmUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6IFVwZGF0ZWQgdG8gcmVm
bGVjdCB0aGUgYWRkaXRpb24gb2YgTmF0aXZlSW1hZ2VDYWlyby4KKwogMjAxMi0wNC0xMCAgRGlu
dSBKYWNvYiAgPGRpbnUuamFjb2JAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBBc3Nl
cnRpb24gZmFpbHVyZSBvbiBsb2FkaW5nIG5ldyBwYWdlIGFmdGVyIHBhbm5pbmcvem9vbWluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZDM2NzM0ODE4MzY4NmM3Y2NkYWI0YTkw
YTVlNGYwZGZmODdmNjJlNS4uMGRjYWNkODMxYzc5NmYzYzhkYzU0ZGU0ODE0YmM5OTI0ZjRmNWQy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zMDgyLDYgKzMwODIsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yU3BhY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
bG9hdFJlY3RDYWlyby5jcHAgXApAQCAtMzA5Miw2ICszMDkzLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckRhdGFDYWlyby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW50UmVjdENhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vT3duUHRyQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Pd25QdHJDYWlyby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGM2Y2E2M2FhN2EyMGE4ZWEwMzEyN2Zk
ZDJiMjZhYWFlYTY2MjZiZTMuLjAwZjBjNWU0MDk1ZjQ3NDQ1YTBkNmY1NDVmYTJmOTc0MDBlMGFk
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTYwLDYgKzE2MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCwgTFBTSVpFKTsKICNlbmRpZgogCisjaWYgVVNFKENBSVJPKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoY2Fpcm9fc3VyZmFjZV90Kik7
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0
R2RrUGl4YnVmKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCmluZGV4IDNhN2ZhZmM5MGYzZWUzZWUyODg4YTVjYzBmNmZmZjYxOGMy
NjI0MTEuLjc2YTIxNjM2YzkwMzZmZTk0MDI3MGY5Y2RkZGNkMjdiNDJlODU2MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNDYsOCAr
NDYsNyBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFQaXhtYXA7CiBRVF9FTkRfTkFNRVNQ
QUNFCiAjZWxpZiBVU0UoQ0FJUk8pCi1zdHJ1Y3QgX2NhaXJvX3N1cmZhY2U7Ci10eXBlZGVmIHN0
cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VDYWlyby5oIgogI2VsaWYgVVNFKFNLSUEpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBO
YXRpdmVJbWFnZVNraWE7CkBAIC05MCw3ICs4OSw3IEBAIHR5cGVkZWYgd3hHcmFwaGljc0JpdG1h
cCogTmF0aXZlSW1hZ2VQdHI7CiB0eXBlZGVmIHd4Qml0bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNl
bmRpZgogI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIE5hdGl2ZUlt
YWdlUHRyOwordHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBOYXRpdmVJbWFnZVB0
cjsKICNlbGlmIFVTRShTS0lBKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIE5h
dGl2ZUltYWdlUHRyOwogI2VsaWYgT1MoV0lOQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM3OTJjMzY3MjZhMmE2NjMzYmZmY2EwY2RkMGE4NDg0NjlkMTRiNzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKworI2luY2x1ZGUgIklt
YWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUo
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQoreworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKG5ldyBOYXRpdmVJbWFnZUNhaXJvKHN1cmZhY2UpKTsKK30KKworQml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9jdXJyZW50RnJhbWUoMCkK
KyAgICAsIG1fZnJhbWVzKDApCisgICAgLCBtX2ZyYW1lVGltZXIoMCkKKyAgICAsIG1fcmVwZXRp
dGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQorICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMo
VW5rbm93bikKKyAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQorICAgICwgbV9kZWNvZGVk
U2l6ZSgwKQorICAgICwgbV9mcmFtZUNvdW50KDEpCisgICAgLCBtX2lzU29saWRDb2xvcihmYWxz
ZSkKKyAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCisgICAgLCBtX2FuaW1hdGlv
bkZpbmlzaGVkKHRydWUpCisgICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQorICAgICwgbV9o
YXZlU2l6ZSh0cnVlKQorICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCisgICAgLCBtX2hhdmVG
cmFtZUNvdW50KHRydWUpCit7CisgICAgaW5pdFBsYXRmb3JtRGF0YSgpOworCisgICAgY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKTsKKyAgICBpbnQgd2lk
dGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAgICBpbnQgaGVp
Z2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworICAgIG1fZGVj
b2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KTsKKworICAgIG1fZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0ubV9m
cmFtZSA9IG5hdGl2ZUltYWdlOworICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19z
dXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7CisgICAg
bV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOworICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7CisgICAgRmxvYXRSZWN0
IHNyY1JlY3Qoc3JjKTsKKyAgICBGbG9hdFJlY3QgZHN0UmVjdChkc3QpOworCisgICAgaWYgKCFk
c3RSZWN0LndpZHRoKCkgfHwgIWRzdFJlY3QuaGVpZ2h0KCkgfHwgIXNyY1JlY3Qud2lkdGgoKSB8
fCAhc3JjUmVjdC5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhcnRBbmltYXRp
b24oKTsKKworICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gZnJhbWVBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKSAvLyBJZiBpdCdzIHRvbyBl
YXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkc3RSZWN0LCBzb2xpZENvbG9yKCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGV4dC0+c2F2ZSgpOworCisgICAgLy8g
U2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCisgICAgaWYgKG9wID09IENvbXBvc2l0ZVNv
dXJjZU92ZXIgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKKyAgICAg
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOworICAgIGVs
c2UKKyAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQobmF0aXZlSW1hZ2Ut
PnN1cmZhY2UoKSwgZHN0UmVjdCwgc3JjUmVjdCwgY29udGV4dCk7CisKKyAgICBjb250ZXh0LT5y
ZXN0b3JlKCk7CisKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2Vy
dmVyKCktPmRpZERyYXcodGhpcyk7Cit9CisKK3ZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29s
aWRDb2xvcigpCit7CisgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKKyAgICBtX2NoZWNrZWRG
b3JTb2xpZENvbG9yID0gdHJ1ZTsKKworICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQorICAgICAg
ICByZXR1cm47CisKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGZyYW1lQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkgLy8gSWYgaXQncyB0
b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCk7Cisg
ICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFD
RV9UWVBFX0lNQUdFKTsKKworICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKHN1cmZhY2UpOworICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZSk7CisKKyAgICBpZiAod2lkdGggIT0gMSB8fCBoZWlnaHQgIT0gMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7
CisgICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29s
b3IpOworCisgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworfQorCitib29sIEZyYW1lRGF0YTo6
Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQoreworICAgIGlmIChjbGVhck1ldGFkYXRhKQorICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOworCisgICAgaWYgKG1fZnJhbWUpIHsKKyAgICAg
ICAgZGVsZXRlIG1fZnJhbWU7CisgICAgICAgIG1fZnJhbWUgPSAwOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggYWQ3ZGI0MWQzZGZk
NTc0OGE5MTgyMzk1YzlkNTg4YmE2ZTlhYzY3Ni4uOGQzOTY5MjE0MThkZDMxZTEwNDMwYTA5NzZh
Y2VmZjI2OThhMDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTE1
Nyw5ICsxNTcsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2Uq
IGltYWdlLCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZAogICAgICAgICBkZWNvZGVyLnNl
dERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNv
dW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFt
ZUF0SW5kZXgoMCk7CisgICAgICAgIGltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVB
dEluZGV4KDApLT5zdXJmYWNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW1hZ2VTdXJmYWNl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGltYWdlU3Vy
ZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5zdXJmYWNlKCk7CiAg
ICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIGFscGhhT3AgPSBBbHBo
YURvVW5tdWx0aXBseTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDAwODRiNDIzNGEzOWZlZjEwZjYx
MGI1YTAxZjU5YmI5NzlkYzE1ZTUuLjUxY2E2NDM5NjBiNzIzNTdmZTY5YTE0ZWI0YTQ4Zjg2ZjFl
YmM2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0yNiwxNDcgKzI2LDM2IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIK
IAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1
ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJQbGF0Zm9y
bUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VPYnNlcnZlci5oIgotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSAiTmF0aXZl
SW1hZ2VDYWlyby5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVk
ZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFy
TWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFk
YXRhID0gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBjYWlyb19zdXJmYWNl
X2Rlc3Ryb3kobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1CaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
LSAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9jdXJyZW50RnJhbWUoMCkKLSAgICAsIG1f
ZnJhbWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIoMCkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50
KGNBbmltYXRpb25Ob25lKQotICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikK
LSAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVkU2l6ZSgwKQot
ICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAs
IG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVk
KHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAgICwgbV9oYXZlU2l6ZSh0
cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBtX2hhdmVGcmFtZUNvdW50
KHRydWUpCi17Ci0gICAgaW5pdFBsYXRmb3JtRGF0YSgpOwotCi0gICAgLy8gVE9ETzogY2hlY2sg
dG8gYmUgc3VyZSB0aGlzIGlzIGFuIGltYWdlIHN1cmZhY2UKLQotICAgIGludCB3aWR0aCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwotICAgIGludCBoZWlnaHQgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7Ci0gICAgbV9kZWNvZGVkU2l6
ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWln
aHQpOwotCi0gICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0g
c3VyZmFjZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRf
Y29udGVudChzdXJmYWNlKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotICAgIG1fZnJhbWVzWzBd
Lm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLX0KLQot
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQotewotICAgIEZsb2F0UmVjdCBzcmNSZWN0KHNy
Yyk7Ci0gICAgRmxvYXRSZWN0IGRzdFJlY3QoZHN0KTsKLQotICAgIGlmIChkc3RSZWN0LndpZHRo
KCkgPT0gMC4wZiB8fCBkc3RSZWN0LmhlaWdodCgpID09IDAuMGYgfHwKLSAgICAgICAgc3JjUmVj
dC53aWR0aCgpID09IDAuMGYgfHwgc3JjUmVjdC5oZWlnaHQoKSA9PSAwLjBmKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzdGFydEFuaW1hdGlvbigpOwotCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBp
bWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFpbWFnZSkgLy8g
SWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewotICAgICAgICBmaWxs
V2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9y
U3BhY2UsIG9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnRleHQtPnNhdmUo
KTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgotICAgIGlmIChvcCA9
PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmICFmcmFtZUhhc0FscGhhQXRJbmRleChtX2N1cnJlbnRG
cmFtZSkpCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVD
b3B5KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0
KGltYWdlLCBkc3RSZWN0LCBzcmNSZWN0LCBjb250ZXh0KTsKLQotICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIo
KS0+ZGlkRHJhdyh0aGlzKTsKLX0KLQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBjYWlyb19zdXJmYWNl
X3QqIGltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBOYXRpdmVJbWFn
ZUNhaXJvKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFp
bWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgaW1hZ2UsIHNp
emUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Io
b3ApLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgaW1hZ2Ut
PnN1cmZhY2UoKSwgc2l6ZSgpLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRv
Q2Fpcm9PcGVyYXRvcihvcCksIGRlc3RSZWN0KTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkp
CiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotdm9pZCBCaXRt
YXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBtX2lzU29saWRDb2xvciA9IGZh
bHNlOwotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwotCi0gICAgaWYgKGZyYW1l
Q291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogZnJh
bWVTdXJmYWNlID0gZnJhbWVBdEluZGV4KDApOwotICAgIGlmICghZnJhbWVTdXJmYWNlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShmcmFtZVN1
cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7Ci0KLSAgICBpbnQgd2lkdGggPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChmcmFtZVN1cmZhY2UpOwotICAgIGludCBoZWln
aHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoZnJhbWVTdXJmYWNlKTsKLQotICAg
IGlmICh3aWR0aCAhPSAxIHx8IGhlaWdodCAhPSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1
bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKGZyYW1lU3VyZmFjZSkpOwotICAgIG1fc29saWRDb2xvciA9
IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENvbG9yKTsKLQotICAgIG1faXNTb2xp
ZENvbG9yID0gdHJ1ZTsKLX0KLQogfQogCiAjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFn
ZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjdhZGJiMWJjZWI2NTQyOWU1ZWI1MDNhMTU2MTliZWZk
MzIwMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoYykgMjAxMiwgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TmF0aXZlSW1hZ2VDYWlyby5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNp
bmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05hdGl2ZUltYWdlQ2Fp
cm86Ok5hdGl2ZUltYWdlQ2Fpcm8oKQoreworfQorCitOYXRpdmVJbWFnZUNhaXJvOjpOYXRpdmVJ
bWFnZUNhaXJvKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKKyAgICA6IG1fc3VyZmFjZShhZG9w
dFJlZihzdXJmYWNlKSkKK3sKK30KKworTmF0aXZlSW1hZ2VDYWlybzo6fk5hdGl2ZUltYWdlQ2Fp
cm8oKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzlkYzFkYmIyM2NmMGM0NjBlZDk1ZDVmNmE3MTczOGYzYjc3MjkyYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2
ZUltYWdlQ2Fpcm8uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEy
LCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTmF0aXZlSW1hZ2VDYWlyb19oCisjZGVmaW5lIE5hdGl2ZUltYWdl
Q2Fpcm9faAorCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBOYXRpdmVJbWFnZUNhaXJvIHsKK3B1YmxpYzoKKyAgICBOYXRpdmVJbWFnZUNh
aXJvKCk7CisgICAgfk5hdGl2ZUltYWdlQ2Fpcm8oKTsKKyAgICBleHBsaWNpdCBOYXRpdmVJbWFn
ZUNhaXJvKGNhaXJvX3N1cmZhY2VfdCopOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSAo
KSB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7Cit9OworCit9CisjZW5kaWYgLy8gTmF0aXZlSW1hZ2VD
YWlyb19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IGIwNjdhY2MyMGI2NjIzMzA4ZGFkZjllMzY3OWI1
Y2ViMDA3YmU4MjEuLjIyMzY4YjhjMDJiNzExNWJjM2Y3ZmZhYjFkNGRkN2Q5YjU4ZjQ4YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5D
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0
dGVybkNhaXJvLmNwcApAQCAtMjgsMTggKzI4LDE3IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQogI2luY2x1ZGUgPGNhaXJv
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgTmF0aXZlSW1hZ2VDYWlybyog
aW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBp
ZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0
dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UpOworICAgIGNh
aXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNl
KGltYWdlLT5zdXJmYWNlKCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBh
bmQgdXNlciBzcGFjZSBpdHNlbGYKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSBtX3BhdHRl
cm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKaW5kZXggYzVhNTE5NGQwZTA5M2UyYjBmZmY5ZDhlMzNl
ODY3Nzc1YWZkYThjNC4uNzU1NWUxNDdjNDRlZGVlMGJhMGZhYWY4ZTljOTFlMzFlMGZhNDFiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsu
Y3BwCkBAIC0xMTIsMTAgKzExMiw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxh
dGZvcm1UaGVtZUljb24oY29uc3QgY2hhciogbmFtZSwgaW50IHNpemUpCiAKIEdka1BpeGJ1Ziog
Qml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBmcmFt
ZSA9IGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYoZnJh
bWUpOworICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIGltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKKyAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb0ltYWdlU3VyZmFjZVRvR2RrUGl4YnVm
KGltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCA2YWMzODdmZWExZmYyNzQ5YTBiMTRkNWFjNGRi
MDY4ZGZmYTgyMzU5Li4wMTk4ZGVjMjhkYzU5OTQ4OTJjYzk4OGYyMDM5ZjQxMWM5ODk3Mzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtNzUs
NyArNzUsOCBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJ
bWFnZVJlZiBpbWFnZSwgZmxvYXQgZnJhY3Rpb24pCiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0p
CiB7Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBuYXRpdmVJ
bWFnZSA/IGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkpIDog
MDsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKaW5kZXggNjE4
YzFkMGY1MDNlODdhYzk1MDU4OTY4OGQ3MjdiMjcxZGYxNjYwYS4uNDE3NjI4ZDMyODViMzJlOTE4
YmNkYTE2NDJmYzg5YTAyNGQ4YmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcApAQCAtMzIsMTAgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOYXRpdmVJbWFn
ZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCi0gICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4oCi0gICAgICAgICAg
ICBtX2J5dGVzKSksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgpLAotICAg
ICAgICB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSkpOworICAgIHJldHVybiBuZXcgTmF0aXZl
SW1hZ2VDYWlybyhjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKKyAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPiht
X2J5dGVzKSksCisgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdodCgp
LCB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAppbmRleCA4YjgwMmU5Zjc1MTdlYWM5MTgwMjc4NWVkOTJhZDgyNDE1YWFiNjQ3Li43YmNkMzNm
OWM5OWZiYjcxZTkwNWVlMjY5NmY1NWQyMWFiN2YyZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtNzEsMTAgKzcxLDExIEBAIHN0
YXRpYyBib29sIGRlY29kZUltYWdlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgR1JlZlB0cjxH
ZGtQaXhidWY+JiBwaXhidWYpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIE5hdGl2ZUltYWdlQ2Fpcm8q
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
aWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKTsKICAgICBwaXhidWYgPSBh
ZG9wdEdSZWYoZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9zdXJmYWNlKHN1cmZhY2UsIDAsIDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChz
dXJmYWNlKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136688</attachid>
            <date>2012-04-11 10:15:21 -0700</date>
            <delta_ts>2012-04-11 10:55:01 -0700</delta_ts>
            <desc>Try to fix the EFL build</desc>
            <filename>bug-83611-20120411101520.patch</filename>
            <type>text/plain</type>
            <size>28785</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5MTRiMzg3ZTE3Y2Nh
ZDc2MTBjOTUyZGU4MGI5YjVjNDA1ZmZhYS4uNGRkZTc0MDQ2Y2IyMzQ1MGVmZWY4NmVhYjNkZjJj
MGYzY2YzM2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzYxMS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCA0M2RlMDY1MTlkNGM5YmZkMmFkODU2ODg5ZDkxZWZjMjNkNDM0NGUzLi44NDE0YjZm
Nzk5M2E0MmE0ZDM1NzgzNjFkZWY4ODg1Mzc4M2ZiYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDQtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtDYWlyb10gV3JhcCBjYWlybyBzdXJmYWNlcyBpbiBhIGNsYXNz
IHdoZW4gc3RvcmluZyBuYXRpdmUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDogVXBkYXRlZCB0byByZWZs
ZWN0IGFkZGl0aW9uIG9mIE5hdGl2ZUltYWdlQ2FyaW8uCisgICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6IERpdHRvLgorCiAyMDEyLTA0LTEwICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIExheW91dFRl
c3RDb250cm9sbGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGFkZFVzZXJTdHlsZVNoZWV0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMzhhYzEzNTdjNTI1ZjI2ZTE2NTRmOTUwNzhjYzM4OTRlZDZjNDFkYi4uMzk0
MjBjOWE3Nzk1ZmZmNjk4ZjgyZjRhZDY2YTQzYzI3MTYwZjNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTA0LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdyYXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3
aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOiBVcGRh
dGVkIHRvIHJlZmxlY3QgdGhlIGFkZGl0aW9uIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisKIDIwMTIt
MDQtMTAgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
W1dLMl0gQXNzZXJ0aW9uIGZhaWx1cmUgb24gbG9hZGluZyBuZXcgcGFnZSBhZnRlciBwYW5uaW5n
L3pvb21pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQzNjczNDgxODM2ODZj
N2NjZGFiNGE5MGE1ZTRmMGRmZjg3ZjYyZTUuLjBkY2FjZDgzMWM3OTZmM2M4ZGM1NGRlNDgxNGJj
OTkyNGY0ZjVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzA4Miw2ICsz
MDgyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwIFwKQEAgLTMwOTIsNiArMzA5Myw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCBjNmNhNjNhYTdhMjBh
OGVhMDMxMjdmZGQyYjI2YWFhZWE2NjI2YmUzLi4wMGYwYzVlNDA5NWY0NzQ0NWEwZDZmNTQ1ZmEy
Zjk3NDAwZTBhZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKQEAgLTE2MCw2ICsxNjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIExQU0laRSk7CiAjZW5kaWYKIAorI2lmIFVTRShD
QUlSTykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKGNhaXJvX3N1
cmZhY2VfdCopOworI2VuZGlmCisKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCBHZGtQ
aXhidWYqIGdldEdka1BpeGJ1ZigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCAzYTdmYWZjOTBmM2VlM2VlMjg4OGE1Y2Mw
ZjZmZmY2MThjMjYyNDExLi43NmEyMTYzNmM5MDM2ZmU5NDAyNzBmOWNkZGRjZDI3YjQyZTg1NjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
QEAgLTQ2LDggKzQ2LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRUGl4bWFwOwogUVRf
RU5EX05BTUVTUEFDRQogI2VsaWYgVVNFKENBSVJPKQotc3RydWN0IF9jYWlyb19zdXJmYWNlOwot
dHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OworI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlQ2Fpcm8uaCIKICNlbGlmIFVTRShTS0lBKQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTmF0aXZlSW1hZ2VTa2lhOwpAQCAtOTAsNyArODksNyBAQCB0eXBlZGVmIHd4R3Jh
cGhpY3NCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiB3eEJpdG1hcCogTmF0aXZlSW1h
Z2VQdHI7CiAjZW5kaWYKICNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90
KiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgV2ViQ29yZTo6TmF0aXZlSW1hZ2VDYWlybyogTmF0
aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoU0tJQSkKIHR5cGVkZWYgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VTa2lhKiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIE9TKFdJTkNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNzkyYzM2NzI2YTJhNjYzM2JmZmNhMGNkZDBhODQ4NDY5ZDE0Yjc3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisKKyNp
bmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VDYWlyby5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICByZXR1cm4gQml0bWFw
SW1hZ2U6OmNyZWF0ZShuZXcgTmF0aXZlSW1hZ2VDYWlybyhzdXJmYWNlKSk7Cit9CisKK0JpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fY3VycmVu
dEZyYW1lKDApCisgICAgLCBtX2ZyYW1lcygwKQorICAgICwgbV9mcmFtZVRpbWVyKDApCisgICAg
LCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKKyAgICAsIG1fcmVwZXRpdGlvbkNv
dW50U3RhdHVzKFVua25vd24pCisgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKKyAgICAs
IG1fZGVjb2RlZFNpemUoMCkKKyAgICAsIG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9pc1NvbGlk
Q29sb3IoZmFsc2UpCisgICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQorICAgICwg
bV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkK
KyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQorICAg
ICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAgIGluaXRQbGF0Zm9ybURhdGEoKTsKKwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCk7Cisg
ICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7Cisg
ICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsK
KyAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6ZSA9IElu
dFNpemUod2lkdGgsIGhlaWdodCk7CisKKyAgICBtX2ZyYW1lcy5ncm93KDEpOworICAgIG1fZnJh
bWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsKKyAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhh
ID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChzdXJmYWNlKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOworICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICBjaGVja0Zv
clNvbGlkQ29sb3IoKTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAg
IEZsb2F0UmVjdCBzcmNSZWN0KHNyYyk7CisgICAgRmxvYXRSZWN0IGRzdFJlY3QoZHN0KTsKKwor
ICAgIGlmICghZHN0UmVjdC53aWR0aCgpIHx8ICFkc3RSZWN0LmhlaWdodCgpIHx8ICFzcmNSZWN0
LndpZHRoKCkgfHwgIXNyY1JlY3QuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0
YXJ0QW5pbWF0aW9uKCk7CisKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGZy
YW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkgLy8gSWYg
aXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgeworICAgICAgICBmaWxsV2l0
aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnNhdmUoKTsK
KworICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBD
b21wb3NpdGVTb3VyY2VPdmVyICYmICFmcmFtZUhhc0FscGhhQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSkpCisgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7
CisgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KG5h
dGl2ZUltYWdlLT5zdXJmYWNlKCksIGRzdFJlY3QsIHNyY1JlY3QsIGNvbnRleHQpOworCisgICAg
Y29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7CisgICAg
bV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7CisKKyAgICBpZiAoZnJhbWVDb3VudCgpID4g
MSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2Ug
PSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGlmICghbmF0aXZlSW1hZ2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgICAgICBy
ZXR1cm47CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3Vy
ZmFjZSgpOworICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpID09IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CisKKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworCisgICAgaWYgKHdpZHRoICE9IDEgfHwgaGVp
Z2h0ICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
c3VyZmFjZSkpOworICAgIG1fc29saWRDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KCpwaXhlbENvbG9yKTsKKworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKK30KKworYm9vbCBG
cmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKK3sKKyAgICBpZiAoY2xlYXJNZXRh
ZGF0YSkKKyAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKKworICAgIGlmIChtX2ZyYW1l
KSB7CisgICAgICAgIGRlbGV0ZSBtX2ZyYW1lOworICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGFk
N2RiNDFkM2RmZDU3NDhhOTE4MjM5NWM5ZDU4OGJhNmU5YWM2NzYuLjhkMzk2OTIxNDE4ZGQzMWUx
MDQzMGEwOTc2YWNlZmYyNjk4YTAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwCkBAIC0xNTcsOSArMTU3LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VE
YXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAg
ZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGltYWdlU3VyZmFjZSA9IGRlY29kZXIu
Y3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBpbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNy
ZWF0ZUZyYW1lQXRJbmRleCgwKS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlt
YWdlU3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAg
ICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+c3Vy
ZmFjZSgpOwogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBhbHBo
YU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCAwMDg0YjQyMzRh
MzlmZWYxMGY2MTBiNWEwMWY1OWJiOTc5ZGMxNWU1Li41MWNhNjQzOTYwYjcyMzU3ZmU2OWExNGVi
NGE0OGY4NmYxZWJjNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMjYsMTQ3ICsyNiwzNiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUg
IkltYWdlLmgiCiAKICNpZiBVU0UoQ0FJUk8pCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5o
IgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIo
Ym9vbCBjbGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBt
X2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShvYnNlcnZlcikKLSAgICAsIG1fY3VycmVudEZyYW1lKDAp
Ci0gICAgLCBtX2ZyYW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCi0gICAgLCBtX3JlcGV0
aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVz
KFVua25vd24pCi0gICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2Rl
ZFNpemUoMCkKLSAgICAsIG1fZnJhbWVDb3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFs
c2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9hbmltYXRp
b25GaW5pc2hlZCh0cnVlKQotICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKLSAgICAsIG1f
aGF2ZVNpemUodHJ1ZSkKLSAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQotICAgICwgbV9oYXZl
RnJhbWVDb3VudCh0cnVlKQotewotICAgIGluaXRQbGF0Zm9ybURhdGEoKTsKLQotICAgIC8vIFRP
RE86IGNoZWNrIHRvIGJlIHN1cmUgdGhpcyBpcyBhbiBpbWFnZSBzdXJmYWNlCi0KLSAgICBpbnQg
d2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKLSAgICBpbnQg
aGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwotICAgIG1f
ZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgbV9zaXplID0gSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKLQotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0u
bV9mcmFtZSA9IHN1cmZhY2U7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1
cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBt
X2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgY2hlY2tGb3JTb2xpZENvbG9y
KCk7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsKLSAgICBGbG9hdFJlY3Qg
c3JjUmVjdChzcmMpOwotICAgIEZsb2F0UmVjdCBkc3RSZWN0KGRzdCk7Ci0KLSAgICBpZiAoZHN0
UmVjdC53aWR0aCgpID09IDAuMGYgfHwgZHN0UmVjdC5oZWlnaHQoKSA9PSAwLjBmIHx8Ci0gICAg
ICAgIHNyY1JlY3Qud2lkdGgoKSA9PSAwLjBmIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0gMC4wZikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLQotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlmICgh
aW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0Lgot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkpIHsKLSAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250
ZXh0LT5zYXZlKCk7Ci0KLSAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAg
ICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiAhZnJhbWVIYXNBbHBoYUF0SW5kZXgo
bV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlQ29weSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24ob3ApOwotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFj
ZVRvQ29udGV4dChpbWFnZSwgZHN0UmVjdCwgc3JjUmVjdCwgY29udGV4dCk7Ci0KLSAgICBjb250
ZXh0LT5yZXN0b3JlKCk7Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFn
ZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Ci19Ci0KIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
TmF0aXZlSW1hZ2VDYWlybyogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwog
ICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1h
Z2UgeWV0LgogICAgICAgICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3Is
IGltYWdlLCBzaXplKCksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWly
b09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQo
Y3IsIGltYWdlLT5zdXJmYWNlKCksIHNpemUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VP
YnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAK
LXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9pc1NvbGlk
Q29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKLQotICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYWlyb19zdXJm
YWNlX3QqIGZyYW1lU3VyZmFjZSA9IGZyYW1lQXRJbmRleCgwKTsKLSAgICBpZiAoIWZyYW1lU3Vy
ZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUoZnJhbWVTdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCi0gICAgaW50
IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoZnJhbWVTdXJmYWNlKTsKLSAg
ICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KGZyYW1lU3VyZmFj
ZSk7Ci0KLSAgICBpZiAod2lkdGggIT0gMSB8fCBoZWlnaHQgIT0gMSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVk
Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmcmFtZVN1cmZhY2UpKTsKLSAgICBtX3Nv
bGlkQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7Ci0KLSAg
ICBtX2lzU29saWRDb2xvciA9IHRydWU7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDQUlSTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2
ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YWRiYjFiY2ViNjU0MjllNWViNTAz
YTE1NjE5YmVmZDMyMDI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOYXRp
dmVJbWFnZUNhaXJvOjpOYXRpdmVJbWFnZUNhaXJvKCkKK3sKK30KKworTmF0aXZlSW1hZ2VDYWly
bzo6TmF0aXZlSW1hZ2VDYWlybyhjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCisgICAgOiBtX3N1
cmZhY2UoYWRvcHRSZWYoc3VyZmFjZSkpCit7Cit9CisKK05hdGl2ZUltYWdlQ2Fpcm86On5OYXRp
dmVJbWFnZUNhaXJvKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWly
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VD
YWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc5ZGMxZGJiMjNjZjBjNDYwZWQ5NWQ1ZjZhNzE3MzhmM2I3NzI5
MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoYykgMjAxMiwgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5hdGl2ZUltYWdlQ2Fpcm9faAorI2RlZmluZSBO
YXRpdmVJbWFnZUNhaXJvX2gKKworI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTmF0aXZlSW1hZ2VDYWlybyB7CitwdWJsaWM6CisgICAgTmF0
aXZlSW1hZ2VDYWlybygpOworICAgIH5OYXRpdmVJbWFnZUNhaXJvKCk7CisgICAgZXhwbGljaXQg
TmF0aXZlSW1hZ2VDYWlybyhjYWlyb19zdXJmYWNlX3QqKTsKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UgKCkgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOworfTsKKworfQorI2VuZGlmIC8vIE5h
dGl2ZUltYWdlQ2Fpcm9faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBiMDY3YWNjMjBiNjYyMzMwOGRh
ZGY5ZTM2NzliNWNlYjAwN2JlODIxLi4yMjM2OGI4YzAyYjcxMTViYzNmN2ZmYWIxZDRkZDdkOWI1
OGY0OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTI4LDE4ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNs
dWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCog
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNv
bnN0CiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gdGlsZUltYWdlKCktPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIE5hdGl2ZUlt
YWdlQ2Fpcm8qIGltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjYWlyb19wYXR0
ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNl
KTsKKyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9m
b3Jfc3VyZmFjZShpbWFnZS0+c3VyZmFjZSgpKTsKIAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0
ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCiAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4
ID0gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGM1YTUxOTRkMGUwOTNlMmIw
ZmZmOWQ4ZTMzZTg2Nzc3NWFmZGE4YzQuLjc1NTVlMTQ3YzQ0ZWRlZTBiYTBmYWFmOGU5YzkxZTMx
ZTBmYTQxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ltYWdlR3RrLmNwcApAQCAtMTEyLDEwICsxMTIsOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFn
ZTo6bG9hZFBsYXRmb3JtVGhlbWVJY29uKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzaXplKQogCiBH
ZGtQaXhidWYqIEJpdG1hcEltYWdlOjpnZXRHZGtQaXhidWYoKQogewotICAgIGNhaXJvX3N1cmZh
Y2VfdCogZnJhbWUgPSBmcmFtZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjYWlyb0ltYWdlU3VyZmFjZVRvR2Rr
UGl4YnVmKGZyYW1lKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBpbWFnZSA9IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlID8gY2Fpcm9JbWFnZVN1cmZhY2VU
b0dka1BpeGJ1ZihpbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKaW5kZXggNmFjMzg3ZmVhMWZmMjc0OWEw
YjE0ZDVhYzRkYjA2OGRmZmE4MjM1OS4uMDE5OGRlYzI4ZGM1OTk0ODkyY2M5ODhmMjAzOWY0MTFj
OTg5NzM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5j
cHAKQEAgLTc1LDcgKzc1LDggQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFj
dGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtKQogewotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0
aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1
cm4gbmF0aXZlSW1hZ2UgPyBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShuYXRpdmVJbWFnZS0+c3Vy
ZmFjZSgpKSA6IDA7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2Fj
aGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3Bw
CmluZGV4IDYxOGMxZDBmNTAzZTg3YWM5NTA1ODk2ODhkNzI3YjI3MWRmMTY2MGEuLjQxNzYyOGQz
Mjg1YjMyZTkxOGJjZGExNjQyZmM4OWEwMjRkOGJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURl
Y29kZXJDYWlyby5jcHAKQEAgLTMyLDEwICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAotICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KAot
ICAgICAgICAgICAgbV9ieXRlcykpLCBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCgpLCBoZWln
aHQoKSwKLSAgICAgICAgd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpKTsKKyAgICByZXR1cm4g
bmV3IE5hdGl2ZUltYWdlQ2Fpcm8oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEo
CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4
ZWxEYXRhKj4obV9ieXRlcykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCgp
LCBoZWlnaHQoKSwgd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlz
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IGMw
YTBiMTg1ZGExMDBkM2U0ZmIyYmFkZDNiNjIyODA1ODFkMzFmOWYuLjIwMWMxNGUwNTc5ZGIzMDE4
NDZlNjI0OTQwOWNmYTI2NDZmM2QyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5
LmNwcApAQCAtMzQxLDcgKzM0MSw5IEBAIGNhaXJvX3N1cmZhY2VfdCogZXdrX2hpc3RvcnlfaXRl
bV9pY29uX3N1cmZhY2VfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiAgICAgICAg
IEVSUigiaWNvbiBpcyBOVUxMLiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0
dXJuIGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisKKyAgICBOYXRpdmVJbWFn
ZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSA6IDA7CiB9
CiAKIEV2YXNfT2JqZWN0KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChjb25zdCBF
d2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBFdmFzKiBjYW52YXMpCkBAIC0zNTYsOCArMzU4LDggQEAg
RXZhc19PYmplY3QqIGV3a19oaXN0b3J5X2l0ZW1faWNvbl9vYmplY3RfYWRkKGNvbnN0IEV3a19I
aXN0b3J5X0l0ZW0qIGl0ZW0sIEV2YXMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
c3VyZmFjZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0dXJu
IGV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoY2FudmFzLCBzdXJmYWNlKTsK
KyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gZXdrX3V0aWxfaW1hZ2Vf
ZnJvbV9jYWlyb19zdXJmYWNlX2FkZChjYW52YXMsIG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkpIDog
MDsKIH0KIAogRWluYV9Cb29sIGV3a19oaXN0b3J5X2l0ZW1fcGFnZV9jYWNoZV9leGlzdHMoY29u
c3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5n
cy5jcHAKaW5kZXggMDBlOTdiZTg3ZGQxODI0NjI0OGZmZDA4YmM1NTE4ZDFjMDc1NWE4Zi4uMGRh
OTAyNTJiMjA5NWI0ZjZhZTQ0NmU0ZTEzNjYwZDA0NGVmNTAzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZXR0aW5ncy5jcHAKQEAgLTIyNSw3ICsyMjUsOCBAQCBjYWlyb19zdXJmYWNlX3Qq
IGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciog
dXJsKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gaWNvbi0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFn
ZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5hdGl2
ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSA6IDA7CiB9CiAKIEV2YXNfT2JqZWN0KiBl
d2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29uc3QgY2hhciogdXJs
LCBFdmFzKiBjYW52YXMpCkBAIC0yNDIsOCArMjQzLDggQEAgRXZhc19PYmplY3QqIGV3a19zZXR0
aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2dldChjb25zdCBjaGFyKiB1cmwsIEV2YXMq
IGMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3VyZmFjZSA9IGljb24tPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIGV3a191dGlsX2ltYWdlX2Zyb21f
Y2Fpcm9fc3VyZmFjZV9hZGQoY2FudmFzLCBzdXJmYWNlKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJv
KiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
cmV0dXJuIG5hdGl2ZUltYWdlID8gZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2Fk
ZChjYW52YXMsIG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0KIAogdm9pZCBld2tfc2V0
dGluZ3Nfb2JqZWN0X2NhY2hlX2NhcGFjaXR5X3NldCh1bnNpZ25lZCBtaW5EZWFkQ2FwYWNpdHks
IHVuc2lnbmVkIG1heERlYWRDYXBhY2l0eSwgdW5zaWduZWQgdG90YWxDYXBhY2l0eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggOGI4
MDJlOWY3NTE3ZWFjOTE4MDI3ODVlZDkyYWQ4MjQxNWFhYjY0Ny4uN2JjZDMzZjljOTlmYmI3MWU5
MDVlZTI2OTZmNTVkMjFhYjdmMmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTcxLDEwICs3MSwxMSBAQCBzdGF0aWMgYm9vbCBk
ZWNvZGVJbWFnZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEdSZWZQdHI8R2RrUGl4YnVmPiYg
cGl4YnVmKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZl
SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCk7CiAgICAgcGl4YnVmID0gYWRvcHRHUmVmKGdk
a19waXhidWZfZ2V0X2Zyb21fc3VyZmFjZShzdXJmYWNlLCAwLCAwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136703</attachid>
            <date>2012-04-11 10:55:05 -0700</date>
            <delta_ts>2012-04-11 13:58:13 -0700</delta_ts>
            <desc>Try once again to fix the EFL build</desc>
            <filename>bug-83611-20120411105504.patch</filename>
            <type>text/plain</type>
            <size>29758</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5MTRiMzg3ZTE3Y2Nh
ZDc2MTBjOTUyZGU4MGI5YjVjNDA1ZmZhYS4uNGRkZTc0MDQ2Y2IyMzQ1MGVmZWY4NmVhYjNkZjJj
MGYzY2YzM2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzYxMS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCA0M2RlMDY1MTlkNGM5YmZkMmFkODU2ODg5ZDkxZWZjMjNkNDM0NGUzLi44NDE0YjZm
Nzk5M2E0MmE0ZDM1NzgzNjFkZWY4ODg1Mzc4M2ZiYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDQtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtDYWlyb10gV3JhcCBjYWlybyBzdXJmYWNlcyBpbiBhIGNsYXNz
IHdoZW4gc3RvcmluZyBuYXRpdmUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDogVXBkYXRlZCB0byByZWZs
ZWN0IGFkZGl0aW9uIG9mIE5hdGl2ZUltYWdlQ2FyaW8uCisgICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6IERpdHRvLgorCiAyMDEyLTA0LTEwICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIExheW91dFRl
c3RDb250cm9sbGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGFkZFVzZXJTdHlsZVNoZWV0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMzhhYzEzNTdjNTI1ZjI2ZTE2NTRmOTUwNzhjYzM4OTRlZDZjNDFkYi4uMzk0
MjBjOWE3Nzk1ZmZmNjk4ZjgyZjRhZDY2YTQzYzI3MTYwZjNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTA0LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdyYXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3
aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOiBVcGRh
dGVkIHRvIHJlZmxlY3QgdGhlIGFkZGl0aW9uIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisKIDIwMTIt
MDQtMTAgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
W1dLMl0gQXNzZXJ0aW9uIGZhaWx1cmUgb24gbG9hZGluZyBuZXcgcGFnZSBhZnRlciBwYW5uaW5n
L3pvb21pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQzNjczNDgxODM2ODZj
N2NjZGFiNGE5MGE1ZTRmMGRmZjg3ZjYyZTUuLjBkY2FjZDgzMWM3OTZmM2M4ZGM1NGRlNDgxNGJj
OTkyNGY0ZjVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzA4Miw2ICsz
MDgyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwIFwKQEAgLTMwOTIsNiArMzA5Myw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCBjNmNhNjNhYTdhMjBh
OGVhMDMxMjdmZGQyYjI2YWFhZWE2NjI2YmUzLi4wMGYwYzVlNDA5NWY0NzQ0NWEwZDZmNTQ1ZmEy
Zjk3NDAwZTBhZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKQEAgLTE2MCw2ICsxNjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIExQU0laRSk7CiAjZW5kaWYKIAorI2lmIFVTRShD
QUlSTykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKGNhaXJvX3N1
cmZhY2VfdCopOworI2VuZGlmCisKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCBHZGtQ
aXhidWYqIGdldEdka1BpeGJ1ZigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCAzYTdmYWZjOTBmM2VlM2VlMjg4OGE1Y2Mw
ZjZmZmY2MThjMjYyNDExLi43NmEyMTYzNmM5MDM2ZmU5NDAyNzBmOWNkZGRjZDI3YjQyZTg1NjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
QEAgLTQ2LDggKzQ2LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRUGl4bWFwOwogUVRf
RU5EX05BTUVTUEFDRQogI2VsaWYgVVNFKENBSVJPKQotc3RydWN0IF9jYWlyb19zdXJmYWNlOwot
dHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OworI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlQ2Fpcm8uaCIKICNlbGlmIFVTRShTS0lBKQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTmF0aXZlSW1hZ2VTa2lhOwpAQCAtOTAsNyArODksNyBAQCB0eXBlZGVmIHd4R3Jh
cGhpY3NCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiB3eEJpdG1hcCogTmF0aXZlSW1h
Z2VQdHI7CiAjZW5kaWYKICNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90
KiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgV2ViQ29yZTo6TmF0aXZlSW1hZ2VDYWlybyogTmF0
aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoU0tJQSkKIHR5cGVkZWYgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VTa2lhKiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIE9TKFdJTkNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNzkyYzM2NzI2YTJhNjYzM2JmZmNhMGNkZDBhODQ4NDY5ZDE0Yjc3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisKKyNp
bmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VDYWlyby5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICByZXR1cm4gQml0bWFw
SW1hZ2U6OmNyZWF0ZShuZXcgTmF0aXZlSW1hZ2VDYWlybyhzdXJmYWNlKSk7Cit9CisKK0JpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fY3VycmVu
dEZyYW1lKDApCisgICAgLCBtX2ZyYW1lcygwKQorICAgICwgbV9mcmFtZVRpbWVyKDApCisgICAg
LCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKKyAgICAsIG1fcmVwZXRpdGlvbkNv
dW50U3RhdHVzKFVua25vd24pCisgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKKyAgICAs
IG1fZGVjb2RlZFNpemUoMCkKKyAgICAsIG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9pc1NvbGlk
Q29sb3IoZmFsc2UpCisgICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQorICAgICwg
bV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkK
KyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQorICAg
ICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAgIGluaXRQbGF0Zm9ybURhdGEoKTsKKwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCk7Cisg
ICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7Cisg
ICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsK
KyAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6ZSA9IElu
dFNpemUod2lkdGgsIGhlaWdodCk7CisKKyAgICBtX2ZyYW1lcy5ncm93KDEpOworICAgIG1fZnJh
bWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsKKyAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhh
ID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChzdXJmYWNlKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOworICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICBjaGVja0Zv
clNvbGlkQ29sb3IoKTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAg
IEZsb2F0UmVjdCBzcmNSZWN0KHNyYyk7CisgICAgRmxvYXRSZWN0IGRzdFJlY3QoZHN0KTsKKwor
ICAgIGlmICghZHN0UmVjdC53aWR0aCgpIHx8ICFkc3RSZWN0LmhlaWdodCgpIHx8ICFzcmNSZWN0
LndpZHRoKCkgfHwgIXNyY1JlY3QuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0
YXJ0QW5pbWF0aW9uKCk7CisKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGZy
YW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkgLy8gSWYg
aXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgeworICAgICAgICBmaWxsV2l0
aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnNhdmUoKTsK
KworICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBD
b21wb3NpdGVTb3VyY2VPdmVyICYmICFmcmFtZUhhc0FscGhhQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSkpCisgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7
CisgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KG5h
dGl2ZUltYWdlLT5zdXJmYWNlKCksIGRzdFJlY3QsIHNyY1JlY3QsIGNvbnRleHQpOworCisgICAg
Y29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7CisgICAg
bV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7CisKKyAgICBpZiAoZnJhbWVDb3VudCgpID4g
MSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2Ug
PSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGlmICghbmF0aXZlSW1hZ2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgICAgICBy
ZXR1cm47CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3Vy
ZmFjZSgpOworICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpID09IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CisKKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworCisgICAgaWYgKHdpZHRoICE9IDEgfHwgaGVp
Z2h0ICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
c3VyZmFjZSkpOworICAgIG1fc29saWRDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KCpwaXhlbENvbG9yKTsKKworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKK30KKworYm9vbCBG
cmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKK3sKKyAgICBpZiAoY2xlYXJNZXRh
ZGF0YSkKKyAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKKworICAgIGlmIChtX2ZyYW1l
KSB7CisgICAgICAgIGRlbGV0ZSBtX2ZyYW1lOworICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGFk
N2RiNDFkM2RmZDU3NDhhOTE4MjM5NWM5ZDU4OGJhNmU5YWM2NzYuLjhkMzk2OTIxNDE4ZGQzMWUx
MDQzMGEwOTc2YWNlZmYyNjk4YTAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwCkBAIC0xNTcsOSArMTU3LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VE
YXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAg
ZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGltYWdlU3VyZmFjZSA9IGRlY29kZXIu
Y3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBpbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNy
ZWF0ZUZyYW1lQXRJbmRleCgwKS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlt
YWdlU3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAg
ICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+c3Vy
ZmFjZSgpOwogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBhbHBo
YU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCAwMDg0YjQyMzRh
MzlmZWYxMGY2MTBiNWEwMWY1OWJiOTc5ZGMxNWU1Li41MWNhNjQzOTYwYjcyMzU3ZmU2OWExNGVi
NGE0OGY4NmYxZWJjNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMjYsMTQ3ICsyNiwzNiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUg
IkltYWdlLmgiCiAKICNpZiBVU0UoQ0FJUk8pCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5o
IgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIo
Ym9vbCBjbGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBt
X2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShvYnNlcnZlcikKLSAgICAsIG1fY3VycmVudEZyYW1lKDAp
Ci0gICAgLCBtX2ZyYW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCi0gICAgLCBtX3JlcGV0
aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVz
KFVua25vd24pCi0gICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2Rl
ZFNpemUoMCkKLSAgICAsIG1fZnJhbWVDb3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFs
c2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9hbmltYXRp
b25GaW5pc2hlZCh0cnVlKQotICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKLSAgICAsIG1f
aGF2ZVNpemUodHJ1ZSkKLSAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQotICAgICwgbV9oYXZl
RnJhbWVDb3VudCh0cnVlKQotewotICAgIGluaXRQbGF0Zm9ybURhdGEoKTsKLQotICAgIC8vIFRP
RE86IGNoZWNrIHRvIGJlIHN1cmUgdGhpcyBpcyBhbiBpbWFnZSBzdXJmYWNlCi0KLSAgICBpbnQg
d2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKLSAgICBpbnQg
aGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwotICAgIG1f
ZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgbV9zaXplID0gSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKLQotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0u
bV9mcmFtZSA9IHN1cmZhY2U7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1
cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBt
X2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgY2hlY2tGb3JTb2xpZENvbG9y
KCk7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsKLSAgICBGbG9hdFJlY3Qg
c3JjUmVjdChzcmMpOwotICAgIEZsb2F0UmVjdCBkc3RSZWN0KGRzdCk7Ci0KLSAgICBpZiAoZHN0
UmVjdC53aWR0aCgpID09IDAuMGYgfHwgZHN0UmVjdC5oZWlnaHQoKSA9PSAwLjBmIHx8Ci0gICAg
ICAgIHNyY1JlY3Qud2lkdGgoKSA9PSAwLjBmIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0gMC4wZikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLQotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlmICgh
aW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0Lgot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkpIHsKLSAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250
ZXh0LT5zYXZlKCk7Ci0KLSAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAg
ICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiAhZnJhbWVIYXNBbHBoYUF0SW5kZXgo
bV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlQ29weSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24ob3ApOwotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFj
ZVRvQ29udGV4dChpbWFnZSwgZHN0UmVjdCwgc3JjUmVjdCwgY29udGV4dCk7Ci0KLSAgICBjb250
ZXh0LT5yZXN0b3JlKCk7Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFn
ZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Ci19Ci0KIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
TmF0aXZlSW1hZ2VDYWlybyogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwog
ICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1h
Z2UgeWV0LgogICAgICAgICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3Is
IGltYWdlLCBzaXplKCksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWly
b09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQo
Y3IsIGltYWdlLT5zdXJmYWNlKCksIHNpemUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VP
YnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAK
LXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9pc1NvbGlk
Q29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKLQotICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYWlyb19zdXJm
YWNlX3QqIGZyYW1lU3VyZmFjZSA9IGZyYW1lQXRJbmRleCgwKTsKLSAgICBpZiAoIWZyYW1lU3Vy
ZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUoZnJhbWVTdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCi0gICAgaW50
IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoZnJhbWVTdXJmYWNlKTsKLSAg
ICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KGZyYW1lU3VyZmFj
ZSk7Ci0KLSAgICBpZiAod2lkdGggIT0gMSB8fCBoZWlnaHQgIT0gMSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVk
Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmcmFtZVN1cmZhY2UpKTsKLSAgICBtX3Nv
bGlkQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7Ci0KLSAg
ICBtX2lzU29saWRDb2xvciA9IHRydWU7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDQUlSTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2
ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YWRiYjFiY2ViNjU0MjllNWViNTAz
YTE1NjE5YmVmZDMyMDI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOYXRp
dmVJbWFnZUNhaXJvOjpOYXRpdmVJbWFnZUNhaXJvKCkKK3sKK30KKworTmF0aXZlSW1hZ2VDYWly
bzo6TmF0aXZlSW1hZ2VDYWlybyhjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCisgICAgOiBtX3N1
cmZhY2UoYWRvcHRSZWYoc3VyZmFjZSkpCit7Cit9CisKK05hdGl2ZUltYWdlQ2Fpcm86On5OYXRp
dmVJbWFnZUNhaXJvKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWly
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VD
YWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc5ZGMxZGJiMjNjZjBjNDYwZWQ5NWQ1ZjZhNzE3MzhmM2I3NzI5
MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoYykgMjAxMiwgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5hdGl2ZUltYWdlQ2Fpcm9faAorI2RlZmluZSBO
YXRpdmVJbWFnZUNhaXJvX2gKKworI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTmF0aXZlSW1hZ2VDYWlybyB7CitwdWJsaWM6CisgICAgTmF0
aXZlSW1hZ2VDYWlybygpOworICAgIH5OYXRpdmVJbWFnZUNhaXJvKCk7CisgICAgZXhwbGljaXQg
TmF0aXZlSW1hZ2VDYWlybyhjYWlyb19zdXJmYWNlX3QqKTsKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UgKCkgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOworfTsKKworfQorI2VuZGlmIC8vIE5h
dGl2ZUltYWdlQ2Fpcm9faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBiMDY3YWNjMjBiNjYyMzMwOGRh
ZGY5ZTM2NzliNWNlYjAwN2JlODIxLi4yMjM2OGI4YzAyYjcxMTViYzNmN2ZmYWIxZDRkZDdkOWI1
OGY0OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTI4LDE4ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNs
dWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCog
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNv
bnN0CiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gdGlsZUltYWdlKCktPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIE5hdGl2ZUlt
YWdlQ2Fpcm8qIGltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjYWlyb19wYXR0
ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNl
KTsKKyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9m
b3Jfc3VyZmFjZShpbWFnZS0+c3VyZmFjZSgpKTsKIAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0
ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCiAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4
ID0gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGM1YTUxOTRkMGUwOTNlMmIw
ZmZmOWQ4ZTMzZTg2Nzc3NWFmZGE4YzQuLjc1NTVlMTQ3YzQ0ZWRlZTBiYTBmYWFmOGU5YzkxZTMx
ZTBmYTQxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ltYWdlR3RrLmNwcApAQCAtMTEyLDEwICsxMTIsOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFn
ZTo6bG9hZFBsYXRmb3JtVGhlbWVJY29uKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzaXplKQogCiBH
ZGtQaXhidWYqIEJpdG1hcEltYWdlOjpnZXRHZGtQaXhidWYoKQogewotICAgIGNhaXJvX3N1cmZh
Y2VfdCogZnJhbWUgPSBmcmFtZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjYWlyb0ltYWdlU3VyZmFjZVRvR2Rr
UGl4YnVmKGZyYW1lKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBpbWFnZSA9IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlID8gY2Fpcm9JbWFnZVN1cmZhY2VU
b0dka1BpeGJ1ZihpbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKaW5kZXggNmFjMzg3ZmVhMWZmMjc0OWEw
YjE0ZDVhYzRkYjA2OGRmZmE4MjM1OS4uMDE5OGRlYzI4ZGM1OTk0ODkyY2M5ODhmMjAzOWY0MTFj
OTg5NzM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5j
cHAKQEAgLTc1LDcgKzc1LDggQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFj
dGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtKQogewotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0
aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1
cm4gbmF0aXZlSW1hZ2UgPyBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShuYXRpdmVJbWFnZS0+c3Vy
ZmFjZSgpKSA6IDA7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2Fj
aGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3Bw
CmluZGV4IDYxOGMxZDBmNTAzZTg3YWM5NTA1ODk2ODhkNzI3YjI3MWRmMTY2MGEuLjQxNzYyOGQz
Mjg1YjMyZTkxOGJjZGExNjQyZmM4OWEwMjRkOGJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURl
Y29kZXJDYWlyby5jcHAKQEAgLTMyLDEwICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAotICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KAot
ICAgICAgICAgICAgbV9ieXRlcykpLCBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCgpLCBoZWln
aHQoKSwKLSAgICAgICAgd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpKTsKKyAgICByZXR1cm4g
bmV3IE5hdGl2ZUltYWdlQ2Fpcm8oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEo
CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4
ZWxEYXRhKj4obV9ieXRlcykpLAorICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCgp
LCBoZWlnaHQoKSwgd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlz
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IGMw
YTBiMTg1ZGExMDBkM2U0ZmIyYmFkZDNiNjIyODA1ODFkMzFmOWYuLmZkOGZkMGE2NzEwNWI0YTg1
MTY0ODY0MzI2NmU3NTAzN2JjZDczY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZUNhaXJvLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCkBAIC0zNDEsNyArMzQyLDkgQEAgY2Fpcm9fc3VyZmFj
ZV90KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogaXRlbSkKICAgICAgICAgRVJSKCJpY29uIGlzIE5VTEwuIik7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KLSAgICByZXR1cm4gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKworICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaWNvbi0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFn
ZS0+c3VyZmFjZSgpIDogMDsKIH0KIAogRXZhc19PYmplY3QqIGV3a19oaXN0b3J5X2l0ZW1faWNv
bl9vYmplY3RfYWRkKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIEV2YXMqIGNhbnZhcykK
QEAgLTM0OSwxNSArMzUyLDE0IEBAIEV2YXNfT2JqZWN0KiBld2tfaGlzdG9yeV9pdGVtX2ljb25f
b2JqZWN0X2FkZChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBFdmFzCiAgICAgRVdLX0hJ
U1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgV2ViQ29yZTo6SW1hZ2Uq
IGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvcmUtPnVybCgpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoImljb24gaXMg
TlVMTC4iKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3VyZmFjZSA9IGljb24t
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIGV3a191dGlsX2ltYWdl
X2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoY2FudmFzLCBzdXJmYWNlKTsKKyAgICBOYXRpdmVJbWFn
ZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJm
YWNlX2FkZChjYW52YXMsIG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0KIAogRWluYV9C
b29sIGV3a19oaXN0b3J5X2l0ZW1fcGFnZV9jYWNoZV9leGlzdHMoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXggMDBl
OTdiZTg3ZGQxODI0NjI0OGZmZDA4YmM1NTE4ZDFjMDc1NWE4Zi4uMzI0ZmVjNTBmOGZkOWRlZThl
NmZmZmFmOTljM2ViYTg2ZjhhZTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5n
cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VD
YWlyby5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKQEAgLTIyNSw3ICsyMjYsOCBAQCBjYWlyb19zdXJmYWNl
X3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hh
ciogdXJsKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gaWNvbi0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJ
bWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5h
dGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSA6IDA7CiB9CiAKIEV2YXNfT2JqZWN0
KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29uc3QgY2hhciog
dXJsLCBFdmFzKiBjYW52YXMpCkBAIC0yMzUsMTUgKzIzNywxNCBAQCBFdmFzX09iamVjdCogZXdr
X3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfZ2V0KGNvbnN0IGNoYXIqIHVybCwg
RXZhcyogYwogCiAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFdlYkNvcmU6OkltYWdlKiBpY29uID0gV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygp
LCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIs
IHVybCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHN1cmZhY2UgPSBpY29uLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIHJldHVybiBld2tfdXRpbF9pbWFnZV9m
cm9tX2NhaXJvX3N1cmZhY2VfYWRkKGNhbnZhcywgc3VyZmFjZSk7CisgICAgTmF0aXZlSW1hZ2VD
YWlybyogbmF0aXZlSW1hZ2UgPSBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
ICAgIHJldHVybiBuYXRpdmVJbWFnZSA/IGV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFj
ZV9hZGQoY2FudmFzLCBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIHZvaWQgZXdr
X3NldHRpbmdzX29iamVjdF9jYWNoZV9jYXBhY2l0eV9zZXQodW5zaWduZWQgbWluRGVhZENhcGFj
aXR5LCB1bnNpZ25lZCBtYXhEZWFkQ2FwYWNpdHksIHVuc2lnbmVkIHRvdGFsQ2FwYWNpdHkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4
IDhiODAyZTlmNzUxN2VhYzkxODAyNzg1ZWQ5MmFkODI0MTVhYWI2NDcuLjdiY2QzM2Y5Yzk5ZmJi
NzFlOTA1ZWUyNjk2ZjU1ZDIxYWI3ZjJkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC03MSwxMCArNzEsMTEgQEAgc3RhdGljIGJv
b2wgZGVjb2RlSW1hZ2UoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBHUmVmUHRyPEdka1BpeGJ1
Zj4mIHBpeGJ1ZikKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5h
dGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAgIHBpeGJ1ZiA9IGFkb3B0R1Jl
ZihnZGtfcGl4YnVmX2dldF9mcm9tX3N1cmZhY2Uoc3VyZmFjZSwgMCwgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3dpZHRoKHN1cmZhY2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2Up
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136746</attachid>
            <date>2012-04-11 13:58:17 -0700</date>
            <delta_ts>2012-04-16 15:27:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83611-20120411135816.patch</filename>
            <type>text/plain</type>
            <size>30040</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5MTRiMzg3ZTE3Y2Nh
ZDc2MTBjOTUyZGU4MGI5YjVjNDA1ZmZhYS4uNGRkZTc0MDQ2Y2IyMzQ1MGVmZWY4NmVhYjNkZjJj
MGYzY2YzM2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzYxMS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCA0M2RlMDY1MTlkNGM5YmZkMmFkODU2ODg5ZDkxZWZjMjNkNDM0NGUzLi44NDE0YjZm
Nzk5M2E0MmE0ZDM1NzgzNjFkZWY4ODg1Mzc4M2ZiYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDQtMTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtDYWlyb10gV3JhcCBjYWlybyBzdXJmYWNlcyBpbiBhIGNsYXNz
IHdoZW4gc3RvcmluZyBuYXRpdmUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDogVXBkYXRlZCB0byByZWZs
ZWN0IGFkZGl0aW9uIG9mIE5hdGl2ZUltYWdlQ2FyaW8uCisgICAgICAgICogZXdrL2V3a19zZXR0
aW5ncy5jcHA6IERpdHRvLgorCiAyMDEyLTA0LTEwICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIExheW91dFRl
c3RDb250cm9sbGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGFkZFVzZXJTdHlsZVNoZWV0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMzhhYzEzNTdjNTI1ZjI2ZTE2NTRmOTUwNzhjYzM4OTRlZDZjNDFkYi4uMzk0
MjBjOWE3Nzk1ZmZmNjk4ZjgyZjRhZDY2YTQzYzI3MTYwZjNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTA0LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdyYXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3
aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOiBVcGRh
dGVkIHRvIHJlZmxlY3QgdGhlIGFkZGl0aW9uIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisKIDIwMTIt
MDQtMTAgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
W1dLMl0gQXNzZXJ0aW9uIGZhaWx1cmUgb24gbG9hZGluZyBuZXcgcGFnZSBhZnRlciBwYW5uaW5n
L3pvb21pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQzNjczNDgxODM2ODZj
N2NjZGFiNGE5MGE1ZTRmMGRmZjg3ZjYyZTUuLjBkY2FjZDgzMWM3OTZmM2M4ZGM1NGRlNDgxNGJj
OTkyNGY0ZjVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzA4Miw2ICsz
MDgyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwIFwKQEAgLTMwOTIsNiArMzA5Myw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IGMzNWRiNmQwZTkxZjY3YTEwYTk2YmZjM2EzNmRjNWY4M2MyZTJiYWYu
LjQxNzFiNTI4MGQ4MTUzZWIyMDAxMDMyZDI2MDQyODRiMTgxYTNjMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xMjQsNiArMTI0LDcgQEAgSUYgKFdURl9VU0VfQ0FJUk8pCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3duUHRy
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGM2Y2E2M2FhN2EyMGE4
ZWEwMzEyN2ZkZDJiMjZhYWFlYTY2MjZiZTMuLjAwZjBjNWU0MDk1ZjQ3NDQ1YTBkNmY1NDVmYTJm
OTc0MDBlMGFkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaApAQCAtMTYwLDYgKzE2MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgTFBTSVpFKTsKICNlbmRpZgogCisjaWYgVVNFKENB
SVJPKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoY2Fpcm9fc3Vy
ZmFjZV90Kik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIEdka1Bp
eGJ1ZiogZ2V0R2RrUGl4YnVmKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDNhN2ZhZmM5MGYzZWUzZWUyODg4YTVjYzBm
NmZmZjYxOGMyNjI0MTEuLjc2YTIxNjM2YzkwMzZmZTk0MDI3MGY5Y2RkZGNkMjdiNDJlODU2MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApA
QCAtNDYsOCArNDYsNyBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFQaXhtYXA7CiBRVF9F
TkRfTkFNRVNQQUNFCiAjZWxpZiBVU0UoQ0FJUk8pCi1zdHJ1Y3QgX2NhaXJvX3N1cmZhY2U7Ci10
eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CisjaW5jbHVkZSAi
TmF0aXZlSW1hZ2VDYWlyby5oIgogI2VsaWYgVVNFKFNLSUEpCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBOYXRpdmVJbWFnZVNraWE7CkBAIC05MCw3ICs4OSw3IEBAIHR5cGVkZWYgd3hHcmFw
aGljc0JpdG1hcCogTmF0aXZlSW1hZ2VQdHI7CiB0eXBlZGVmIHd4Qml0bWFwKiBOYXRpdmVJbWFn
ZVB0cjsKICNlbmRpZgogI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBjYWlyb19zdXJmYWNlX3Qq
IE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBOYXRp
dmVJbWFnZVB0cjsKICNlbGlmIFVTRShTS0lBKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVNraWEqIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgT1MoV0lOQ0UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3OTJjMzY3MjZhMmE2NjMzYmZmY2EwY2RkMGE4NDg0NjlkMTRiNzcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKworI2lu
Y2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdl
OjpjcmVhdGUoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQoreworICAgIHJldHVybiBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKG5ldyBOYXRpdmVJbWFnZUNhaXJvKHN1cmZhY2UpKTsKK30KKworQml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlLCBJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9jdXJyZW50
RnJhbWUoMCkKKyAgICAsIG1fZnJhbWVzKDApCisgICAgLCBtX2ZyYW1lVGltZXIoMCkKKyAgICAs
IG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQorICAgICwgbV9yZXBldGl0aW9uQ291
bnRTdGF0dXMoVW5rbm93bikKKyAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQorICAgICwg
bV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9mcmFtZUNvdW50KDEpCisgICAgLCBtX2lzU29saWRD
b2xvcihmYWxzZSkKKyAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCisgICAgLCBt
X2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCisgICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQor
ICAgICwgbV9oYXZlU2l6ZSh0cnVlKQorICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCisgICAg
LCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCit7CisgICAgaW5pdFBsYXRmb3JtRGF0YSgpOworCisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKTsKKyAg
ICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAg
ICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwor
ICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisgICAgbV9zaXplID0gSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKworICAgIG1fZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFt
ZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOworICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEg
PSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpICE9IENBSVJPX0NPTlRFTlRfQ09M
T1I7CisgICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOworICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7CisgICAg
RmxvYXRSZWN0IHNyY1JlY3Qoc3JjKTsKKyAgICBGbG9hdFJlY3QgZHN0UmVjdChkc3QpOworCisg
ICAgaWYgKCFkc3RSZWN0LndpZHRoKCkgfHwgIWRzdFJlY3QuaGVpZ2h0KCkgfHwgIXNyY1JlY3Qu
d2lkdGgoKSB8fCAhc3JjUmVjdC5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3Rh
cnRBbmltYXRpb24oKTsKKworICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gZnJh
bWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKSAvLyBJZiBp
dCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7CisgICAgICAgIGZpbGxXaXRo
U29saWRDb2xvcihjb250ZXh0LCBkc3RSZWN0LCBzb2xpZENvbG9yKCksIHN0eWxlQ29sb3JTcGFj
ZSwgb3ApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGV4dC0+c2F2ZSgpOwor
CisgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCisgICAgaWYgKG9wID09IENv
bXBvc2l0ZVNvdXJjZU92ZXIgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1l
KSkKKyAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkp
OworICAgIGVsc2UKKyAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsK
KyAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQobmF0
aXZlSW1hZ2UtPnN1cmZhY2UoKSwgZHN0UmVjdCwgc3JjUmVjdCwgY29udGV4dCk7CisKKyAgICBj
b250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBp
bWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Cit9CisKK3ZvaWQgQml0bWFwSW1hZ2U6OmNo
ZWNrRm9yU29saWRDb2xvcigpCit7CisgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKKyAgICBt
X2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKKworICAgIGlmIChmcmFtZUNvdW50KCkgPiAx
KQorICAgICAgICByZXR1cm47CisKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9
IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkgLy8g
SWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAgICAgIHJl
dHVybjsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJm
YWNlKCk7CisgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJ
Uk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKKworICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOworICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7CisKKyAgICBpZiAod2lkdGggIT0gMSB8fCBoZWln
aHQgIT0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShz
dXJmYWNlKSk7CisgICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0Io
KnBpeGVsQ29sb3IpOworCisgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworfQorCitib29sIEZy
YW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQoreworICAgIGlmIChjbGVhck1ldGFk
YXRhKQorICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOworCisgICAgaWYgKG1fZnJhbWUp
IHsKKyAgICAgICAgZGVsZXRlIG1fZnJhbWU7CisgICAgICAgIG1fZnJhbWUgPSAwOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggYWQ3
ZGI0MWQzZGZkNTc0OGE5MTgyMzk1YzlkNTg4YmE2ZTlhYzY3Ni4uOGQzOTY5MjE0MThkZDMxZTEw
NDMwYTA5NzZhY2VmZjI2OThhMDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHAKQEAgLTE1Nyw5ICsxNTcsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURh
dGEoSW1hZ2UqIGltYWdlLCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZAogICAgICAgICBk
ZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5j
cmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIGltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3Jl
YXRlRnJhbWVBdEluZGV4KDApLT5zdXJmYWNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW1h
Z2VTdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAg
IGltYWdlU3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5zdXJm
YWNlKCk7CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIGFscGhh
T3AgPSBBbHBoYURvVW5tdWx0aXBseTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDAwODRiNDIzNGEz
OWZlZjEwZjYxMGI1YTAxZjU5YmI5NzlkYzE1ZTUuLjUxY2E2NDM5NjBiNzIzNTdmZTY5YTE0ZWI0
YTQ4Zjg2ZjFlYmM2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0yNiwxNDcgKzI2LDM2IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAi
SW1hZ2UuaCIKIAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VDYWlyby5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihi
b29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1f
aGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3kobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1CaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKLSAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9jdXJyZW50RnJhbWUoMCkK
LSAgICAsIG1fZnJhbWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIoMCkKLSAgICAsIG1fcmVwZXRp
dGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQotICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMo
VW5rbm93bikKLSAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVk
U2l6ZSgwKQotICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxz
ZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlv
bkZpbmlzaGVkKHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAgICwgbV9o
YXZlU2l6ZSh0cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBtX2hhdmVG
cmFtZUNvdW50KHRydWUpCi17Ci0gICAgaW5pdFBsYXRmb3JtRGF0YSgpOwotCi0gICAgLy8gVE9E
TzogY2hlY2sgdG8gYmUgc3VyZSB0aGlzIGlzIGFuIGltYWdlIHN1cmZhY2UKLQotICAgIGludCB3
aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwotICAgIGludCBo
ZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7Ci0gICAgbV9k
ZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBtX3NpemUgPSBJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpOwotCi0gICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5t
X2ZyYW1lID0gc3VyZmFjZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3Vy
ZmFjZV9nZXRfY29udGVudChzdXJmYWNlKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotICAgIG1f
ZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBjaGVja0ZvclNvbGlkQ29sb3Io
KTsKLX0KLQotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQotewotICAgIEZsb2F0UmVjdCBz
cmNSZWN0KHNyYyk7Ci0gICAgRmxvYXRSZWN0IGRzdFJlY3QoZHN0KTsKLQotICAgIGlmIChkc3RS
ZWN0LndpZHRoKCkgPT0gMC4wZiB8fCBkc3RSZWN0LmhlaWdodCgpID09IDAuMGYgfHwKLSAgICAg
ICAgc3JjUmVjdC53aWR0aCgpID09IDAuMGYgfHwgc3JjUmVjdC5oZWlnaHQoKSA9PSAwLjBmKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzdGFydEFuaW1hdGlvbigpOwotCi0gICAgY2Fpcm9fc3Vy
ZmFjZV90KiBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFp
bWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewotICAg
ICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0UmVjdCwgc29saWRDb2xvcigpLCBz
dHlsZUNvbG9yU3BhY2UsIG9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnRl
eHQtPnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgotICAg
IGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmICFmcmFtZUhhc0FscGhhQXRJbmRleCht
X2N1cnJlbnRGcmFtZSkpCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVDb3B5KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihvcCk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNl
VG9Db250ZXh0KGltYWdlLCBkc3RSZWN0LCBzcmNSZWN0LCBjb250ZXh0KTsKLQotICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdl
T2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKLX0KLQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBjYWly
b19zdXJmYWNlX3QqIGltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBO
YXRpdmVJbWFnZUNhaXJvKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAg
ICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFn
ZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwg
aW1hZ2UsIHNpemUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJv
T3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChj
ciwgaW1hZ2UtPnN1cmZhY2UoKSwgc2l6ZSgpLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHRvQ2Fpcm9PcGVyYXRvcihvcCksIGRlc3RSZWN0KTsKIAogICAgIGlmIChpbWFnZU9i
c2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAot
dm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBtX2lzU29saWRD
b2xvciA9IGZhbHNlOwotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwotCi0gICAg
aWYgKGZyYW1lQ291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhaXJvX3N1cmZh
Y2VfdCogZnJhbWVTdXJmYWNlID0gZnJhbWVBdEluZGV4KDApOwotICAgIGlmICghZnJhbWVTdXJm
YWNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlw
ZShmcmFtZVN1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7Ci0KLSAgICBpbnQg
d2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChmcmFtZVN1cmZhY2UpOwotICAg
IGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoZnJhbWVTdXJmYWNl
KTsKLQotICAgIGlmICh3aWR0aCAhPSAxIHx8IGhlaWdodCAhPSAxKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQq
PihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGZyYW1lU3VyZmFjZSkpOwotICAgIG1fc29s
aWRDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENvbG9yKTsKLQotICAg
IG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKLX0KLQogfQogCiAjZW5kaWYgLy8gVVNFKENBSVJPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZl
SW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjdhZGJiMWJjZWI2NTQyOWU1ZWI1MDNh
MTU2MTliZWZkMzIwMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiwgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2VDYWlyby5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05hdGl2
ZUltYWdlQ2Fpcm86Ok5hdGl2ZUltYWdlQ2Fpcm8oKQoreworfQorCitOYXRpdmVJbWFnZUNhaXJv
OjpOYXRpdmVJbWFnZUNhaXJvKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKKyAgICA6IG1fc3Vy
ZmFjZShhZG9wdFJlZihzdXJmYWNlKSkKK3sKK30KKworTmF0aXZlSW1hZ2VDYWlybzo6fk5hdGl2
ZUltYWdlQ2Fpcm8oKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzlkYzFkYmIyM2NmMGM0NjBlZDk1ZDVmNmE3MTczOGYzYjc3Mjky
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL05hdGl2ZUltYWdlQ2Fpcm8uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0
IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChjKSAyMDEyLCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmF0aXZlSW1hZ2VDYWlyb19oCisjZGVmaW5lIE5h
dGl2ZUltYWdlQ2Fpcm9faAorCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBOYXRpdmVJbWFnZUNhaXJvIHsKK3B1YmxpYzoKKyAgICBOYXRp
dmVJbWFnZUNhaXJvKCk7CisgICAgfk5hdGl2ZUltYWdlQ2Fpcm8oKTsKKyAgICBleHBsaWNpdCBO
YXRpdmVJbWFnZUNhaXJvKGNhaXJvX3N1cmZhY2VfdCopOworICAgIGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSAoKSB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7Cit9OworCit9CisjZW5kaWYgLy8gTmF0
aXZlSW1hZ2VDYWlyb19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IGIwNjdhY2MyMGI2NjIzMzA4ZGFk
ZjllMzY3OWI1Y2ViMDA3YmU4MjEuLjIyMzY4YjhjMDJiNzExNWJjM2Y3ZmZhYjFkNGRkN2Q5YjU4
ZjQ4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMjgsMTggKzI4LDE3IEBACiAKICNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQogI2luY2x1
ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29u
c3QKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgTmF0aXZlSW1h
Z2VDYWlybyogaW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNhaXJvX3BhdHRl
cm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2Up
OworICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zv
cl9zdXJmYWNlKGltYWdlLT5zdXJmYWNlKCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRl
ciBzcGFjZSBhbmQgdXNlciBzcGFjZSBpdHNlbGYKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXgg
PSBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKaW5kZXggYzVhNTE5NGQwZTA5M2UyYjBm
ZmY5ZDhlMzNlODY3Nzc1YWZkYThjNC4uNzU1NWUxNDdjNDRlZGVlMGJhMGZhYWY4ZTljOTFlMzFl
MGZhNDFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCkBAIC0xMTIsMTAgKzExMiw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdl
Ojpsb2FkUGxhdGZvcm1UaGVtZUljb24oY29uc3QgY2hhciogbmFtZSwgaW50IHNpemUpCiAKIEdk
a1BpeGJ1ZiogQml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgY2Fpcm9fc3VyZmFj
ZV90KiBmcmFtZSA9IGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQ
aXhidWYoZnJhbWUpOworICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIGltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb0ltYWdlU3VyZmFjZVRv
R2RrUGl4YnVmKGltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCA2YWMzODdmZWExZmYyNzQ5YTBi
MTRkNWFjNGRiMDY4ZGZmYTgyMzU5Li4wMTk4ZGVjMjhkYzU5OTQ4OTJjYzk4OGYyMDM5ZjQxMWM5
ODk3Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdl
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cApAQCAtNzUsNyArNzUsOCBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0
aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQgZnJhY3Rpb24pCiAKIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0pCiB7Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVy
biBuYXRpdmVJbWFnZSA/IGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG5hdGl2ZUltYWdlLT5zdXJm
YWNlKCkpIDogMDsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNo
ZWRJbWFnZShDYWNoZWRJbWFnZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAK
aW5kZXggNjE4YzFkMGY1MDNlODdhYzk1MDU4OTY4OGQ3MjdiMjcxZGYxNjYwYS4uNDE3NjI4ZDMy
ODViMzJlOTE4YmNkYTE2NDJmYzg5YTAyNGQ4YmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVj
b2RlckNhaXJvLmNwcApAQCAtMzIsMTAgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBO
YXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCi0gICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4oCi0g
ICAgICAgICAgICBtX2J5dGVzKSksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCksIGhlaWdo
dCgpLAotICAgICAgICB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSkpOworICAgIHJldHVybiBu
ZXcgTmF0aXZlSW1hZ2VDYWlybyhjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhl
bERhdGEqPihtX2J5dGVzKSksCisgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoKCks
IGhlaWdodCgpLCB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSkpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggYzBh
MGIxODVkYTEwMGQzZTRmYjJiYWRkM2I2MjI4MDU4MWQzMWY5Zi4uMWE0ZTliNzFmYjc1MDhmNjRj
OGQ4ZTA0MjA2MmEwNzRlMDI4YzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3Rvcnku
Y3BwCkBAIC0zNDEsNyArMzQxLDkgQEAgY2Fpcm9fc3VyZmFjZV90KiBld2tfaGlzdG9yeV9pdGVt
X2ljb25fc3VyZmFjZV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKICAgICAgICAg
RVJSKCJpY29uIGlzIE5VTEwuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1
cm4gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKworICAgIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+c3VyZmFjZSgp
IDogMDsKIH0KIAogRXZhc19PYmplY3QqIGV3a19oaXN0b3J5X2l0ZW1faWNvbl9vYmplY3RfYWRk
KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIEV2YXMqIGNhbnZhcykKQEAgLTM0OSwxNSAr
MzUxLDE0IEBAIEV2YXNfT2JqZWN0KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChj
b25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBFdmFzCiAgICAgRVdLX0hJU1RPUllfSVRFTV9D
T1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgV2ViQ29yZTo6SW1hZ2UqIGljb24gPSBXZWJD
b3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvcmUtPnVybCgp
LCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoImljb24gaXMgTlVMTC4iKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3VyZmFjZSA9IGljb24tPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIGV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9f
c3VyZmFjZV9hZGQoY2FudmFzLCBzdXJmYWNlKTsKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUNh
aXJvKiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNl
X2FkZChjYW52YXMsIG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0KIAogRWluYV9Cb29s
IGV3a19oaXN0b3J5X2l0ZW1fcGFnZV9jYWNoZV9leGlzdHMoY29uc3QgRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXggMDBlOTdi
ZTg3ZGQxODI0NjI0OGZmZDA4YmM1NTE4ZDFjMDc1NWE4Zi4uNzg2NmNkZTQ3YjFlMjE1MGVjNjFj
MjlkYjFlZmUyNWMyNmU4ZjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5j
cHAKQEAgLTIyNSw3ICsyMjUsOCBAQCBjYWlyb19zdXJmYWNlX3QqIGV3a19zZXR0aW5nc19pY29u
X2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciogdXJsKQogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGljb24t
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8g
bmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSA6IDA7CiB9CiAKIEV2YXNfT2JqZWN0KiBld2tfc2V0dGlu
Z3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29uc3QgY2hhciogdXJsLCBFdmFzKiBj
YW52YXMpCkBAIC0yMzUsMTUgKzIzNiwxNCBAQCBFdmFzX09iamVjdCogZXdrX3NldHRpbmdzX2lj
b25fZGF0YWJhc2VfaWNvbl9vYmplY3RfZ2V0KGNvbnN0IGNoYXIqIHVybCwgRXZhcyogYwogCiAg
ICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHVybCkpOwogICAgIFdlYkNvcmU6OkltYWdlKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFi
YXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJ
bnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTsKIAogICAgIGlm
ICghaWNvbikgewogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIsIHVybCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHN1cmZhY2UgPSBpY29uLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIHJldHVybiBld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1
cmZhY2VfYWRkKGNhbnZhcywgc3VyZmFjZSk7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VDYWly
byogbmF0aXZlSW1hZ2UgPSBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IHJldHVybiBuYXRpdmVJbWFnZSA/IGV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9h
ZGQoY2FudmFzLCBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIHZvaWQgZXdrX3Nl
dHRpbmdzX29iamVjdF9jYWNoZV9jYXBhY2l0eV9zZXQodW5zaWduZWQgbWluRGVhZENhcGFjaXR5
LCB1bnNpZ25lZCBtYXhEZWFkQ2FwYWNpdHksIHVuc2lnbmVkIHRvdGFsQ2FwYWNpdHkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDhi
ODAyZTlmNzUxN2VhYzkxODAyNzg1ZWQ5MmFkODI0MTVhYWI2NDcuLjdiY2QzM2Y5Yzk5ZmJiNzFl
OTA1ZWUyNjk2ZjU1ZDIxYWI3ZjJkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC03MSwxMCArNzEsMTEgQEAgc3RhdGljIGJvb2wg
ZGVjb2RlSW1hZ2UoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBHUmVmUHRyPEdka1BpeGJ1Zj4m
IHBpeGJ1ZikKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAgIHBpeGJ1ZiA9IGFkb3B0R1JlZihn
ZGtfcGl4YnVmX2dldF9mcm9tX3N1cmZhY2Uoc3VyZmFjZSwgMCwgMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKHN1cmZhY2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137417</attachid>
            <date>2012-04-16 15:27:43 -0700</date>
            <delta_ts>2012-04-16 17:08:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83611-20120416152742.patch</filename>
            <type>text/plain</type>
            <size>29963</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJjMTliOGYyOWFkY2Mw
N2I0OWQwZTUxNzliNjAxMTg5OGZmODkyMC4uOGQ5YzU1Mzc2NTVlMjU3NTQ0MmJjNjljOTE2NjJl
NmEyZWY3NzA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTE2ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSB0byB1cGRhdGVaT3JkZXJMaXN0c1Nsb3dDYXNlIHRvIHJlYnVp
bGRaT3JkZXJMaXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGNiZGJlMDQxOWEwM2Y0NmU1MWJhMDFm
ZDA3OWUxNTg0N2E4MjkwYmMuLjgwODhiNDBlMzIwNTZjYTFmYjhlYzFkNjBkMzFmY2ZhZDg5MmZm
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0xNiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0NhaXJvXSBXcmFw
IGNhaXJvIHN1cmZhY2VzIGluIGEgY2xhc3Mgd2hlbiBzdG9yaW5nIG5hdGl2ZSBpbWFnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBld2svZXdrX2hp
c3RvcnkuY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgYWRkaXRpb24gb2YgTmF0aXZlSW1hZ2VDYXJp
by4KKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDogRGl0dG8uCisKIDIwMTItMDQtMTMg
IFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgY29sb3IgY2hvb3NlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg3N2Mz
MDZjMjVmNWYwMmMzZmU4MDRkZTI2NDk2OTdkOTBmYmM1YTUuLjg3MzAxYTEwZTc0NmE5YWJjMjRl
OTNiYzFkY2E4ZTI5YjA5ZDBmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0w
NC0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBXcmFwIGNhaXJvIHN1cmZhY2VzIGluIGEgY2xhc3Mgd2hlbiBzdG9yaW5nIG5hdGl2
ZSBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDogVXBkYXRlZCB0byByZWZsZWN0IHRo
ZSBhZGRpdGlvbiBvZiBOYXRpdmVJbWFnZUNhaXJvLgorCiAyMDEyLTA0LTE2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTmlnaHRseSBCYWNrL0Zvcndh
cmQgbm8gbG9uZ2VyIGNhbGxzIHBsdWctaW4ncyBOUFBfTmV3U3RyZWFtCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA0YmQ1ZGZkYTdhMzNhNGE5NjBiNzgyNTkwNDFkOTMwOWQ3N2Vl
MmNjLi41MTFlNDFkOTMyMTdkMzU4ZTI5ZTcwYWJkYzg2NGJmOGE2YWMzMjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwOTIsNiArMzA5Miw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zsb2F0UmVjdENhaXJv
LmNwcCBcCkBAIC0zMTAyLDYgKzMxMDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbnRSZWN0Q2Fpcm8u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFn
ZUNhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0
aXZlSW1hZ2VDYWlyby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Pd25QdHJDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL093blB0ckNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwZjNlZTNh
YmNlOWIzYmVjMzMyOWYyNWRjMjdlYWY4Yzk4Nzk4MDFhLi4zOGVlMjFjODg2NmFjODE5MDBhNDRj
NTU2Y2QyZTRjNDNmNTgwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTI1LDYg
KzEyNSw3IEBAIElGIChXVEZfVVNFX0NBSVJPKQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWly
by5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXR0ZXJuQ2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaAppbmRleCBjNmNhNjNhYTdhMjBhOGVhMDMxMjdmZGQyYjI2YWFhZWE2NjI2
YmUzLi4wMGYwYzVlNDA5NWY0NzQ0NWEwZDZmNTQ1ZmEyZjk3NDAwZTBhZDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE2MCw2ICsx
NjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAsIExQU0laRSk7CiAjZW5kaWYKIAorI2lmIFVTRShDQUlSTykKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKGNhaXJvX3N1cmZhY2VfdCopOworI2VuZGlmCisKICNp
ZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAppbmRleCAzYTdmYWZjOTBmM2VlM2VlMjg4OGE1Y2MwZjZmZmY2MThjMjYyNDExLi43NmEyMTYz
NmM5MDM2ZmU5NDAyNzBmOWNkZGRjZDI3YjQyZTg1NjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTQ2LDggKzQ2LDcgQEAgUVRfQkVH
SU5fTkFNRVNQQUNFCiBjbGFzcyBRUGl4bWFwOwogUVRfRU5EX05BTUVTUEFDRQogI2VsaWYgVVNF
KENBSVJPKQotc3RydWN0IF9jYWlyb19zdXJmYWNlOwotdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1
cmZhY2UgY2Fpcm9fc3VyZmFjZV90OworI2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKICNl
bGlmIFVTRShTS0lBKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmF0aXZlSW1hZ2VTa2lh
OwpAQCAtOTAsNyArODksNyBAQCB0eXBlZGVmIHd4R3JhcGhpY3NCaXRtYXAqIE5hdGl2ZUltYWdl
UHRyOwogdHlwZWRlZiB3eEJpdG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZW5kaWYKICNlbGlmIFVT
RShDQUlSTykKLXR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVk
ZWYgV2ViQ29yZTo6TmF0aXZlSW1hZ2VDYWlybyogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0Uo
U0tJQSkKIHR5cGVkZWYgV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhKiBOYXRpdmVJbWFnZVB0cjsK
ICNlbGlmIE9TKFdJTkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzkyYzM2
NzI2YTJhNjYzM2JmZmNhMGNkZDBhODQ4NDY5ZDE0Yjc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAK
QEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisKKyNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgi
CisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VDYWlyby5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dENhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQ
YXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSkKK3sKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShuZXcgTmF0aXZl
SW1hZ2VDYWlybyhzdXJmYWNlKSk7Cit9CisKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRp
dmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAg
OiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fY3VycmVudEZyYW1lKDApCisgICAgLCBtX2ZyYW1l
cygwKQorICAgICwgbV9mcmFtZVRpbWVyKDApCisgICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5p
bWF0aW9uTm9uZSkKKyAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCisgICAg
LCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKKyAgICAsIG1fZGVjb2RlZFNpemUoMCkKKyAgICAs
IG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9pc1NvbGlkQ29sb3IoZmFsc2UpCisgICAgLCBtX2No
ZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVl
KQorICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkK
KyAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVl
KQoreworICAgIGluaXRQbGF0Zm9ybURhdGEoKTsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCk7CisgICAgaW50IHdpZHRoID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CisgICAgaW50IGhlaWdodCA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsKKyAgICBtX2RlY29kZWRTaXplID0gd2lk
dGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CisK
KyAgICBtX2ZyYW1lcy5ncm93KDEpOworICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJ
bWFnZTsKKyAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29u
dGVudChzdXJmYWNlKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKK30KKwordm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIEZsb2F0UmVjdCBzcmNSZWN0KHNyYyk7
CisgICAgRmxvYXRSZWN0IGRzdFJlY3QoZHN0KTsKKworICAgIGlmICghZHN0UmVjdC53aWR0aCgp
IHx8ICFkc3RSZWN0LmhlaWdodCgpIHx8ICFzcmNSZWN0LndpZHRoKCkgfHwgIXNyY1JlY3QuaGVp
Z2h0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisKKyAgICBO
YXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3Qg
aGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtYXlGaWxsV2l0
aFNvbGlkQ29sb3IoKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0
UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnRleHQtPnNhdmUoKTsKKworICAgIC8vIFNldCB0aGUgY29tcG9z
aXRpbmcgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmICFm
cmFtZUhhc0FscGhhQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpCisgICAgICAgIGNvbnRleHQtPnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICBlbHNlCisgICAgICAgIGNv
bnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KG5hdGl2ZUltYWdlLT5zdXJmYWNlKCksIGRz
dFJlY3QsIHNyY1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC0+cmVzdG9yZSgpOworCisg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KHRoaXMpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQorewor
ICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9
IHRydWU7CisKKyAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50
RnJhbWUpOworICAgIGlmICghbmF0aXZlSW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdv
bid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgICAgICByZXR1cm47CisKKyAgICBjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOworICAgIEFTU0VSVChjYWly
b19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7
CisKKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNl
KTsKKyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZh
Y2UpOworCisgICAgaWYgKHdpZHRoICE9IDEgfHwgaGVpZ2h0ICE9IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIG1fc29saWRD
b2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENvbG9yKTsKKworICAgIG1f
aXNTb2xpZENvbG9yID0gdHJ1ZTsKK30KKworYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xl
YXJNZXRhZGF0YSkKK3sKKyAgICBpZiAoY2xlYXJNZXRhZGF0YSkKKyAgICAgICAgbV9oYXZlTWV0
YWRhdGEgPSBmYWxzZTsKKworICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgIGRlbGV0ZSBtX2Zy
YW1lOworICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGFkN2RiNDFkM2RmZDU3NDhhOTE4MjM5NWM5
ZDU4OGJhNmU5YWM2NzYuLjhkMzk2OTIxNDE4ZGQzMWUxMDQzMGEwOTc2YWNlZmYyNjk4YTAzMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0xNTcsOSArMTU3LDkgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWdu
ZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5k
YXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNv
ZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOwor
ICAgICAgICBpbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKS0+c3Vy
ZmFjZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGltYWdlU3VyZmFjZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+c3VyZmFjZSgpOwogICAgICAgICBpZiAoIXBy
ZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBhbHBoYU9wID0gQWxwaGFEb1VubXVsdGlwbHk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUNhaXJvLmNwcAppbmRleCAwMDg0YjQyMzRhMzlmZWYxMGY2MTBiNWEwMWY1OWJiOTc5
ZGMxNWU1Li41MWNhNjQzOTYwYjcyMzU3ZmU2OWExNGViNGE0OGY4NmYxZWJjNjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJv
LmNwcApAQCAtMjYsMTQ3ICsyNiwzNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlLmgiCiAKICNpZiBVU0UoQ0FJ
Uk8pCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYWlyb1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIK
LSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAj
aW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQotewot
ICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwot
Ci0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fZnJh
bWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShv
YnNlcnZlcikKLSAgICAsIG1fY3VycmVudEZyYW1lKDApCi0gICAgLCBtX2ZyYW1lcygwKQotICAg
ICwgbV9mcmFtZVRpbWVyKDApCi0gICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9u
ZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCi0gICAgLCBtX3JlcGV0
aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2RlZFNpemUoMCkKLSAgICAsIG1fZnJhbWVD
b3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JT
b2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQotICAgICwg
bV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKLSAgICAsIG1faGF2ZVNpemUodHJ1ZSkKLSAgICAsIG1f
c2l6ZUF2YWlsYWJsZSh0cnVlKQotICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQotewotICAg
IGluaXRQbGF0Zm9ybURhdGEoKTsKLQotICAgIC8vIFRPRE86IGNoZWNrIHRvIGJlIHN1cmUgdGhp
cyBpcyBhbiBpbWFnZSBzdXJmYWNlCi0KLSAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlKTsKLSAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwotICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhl
aWdodCAqIDQ7Ci0gICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLQotICAgIG1f
ZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IHN1cmZhY2U7Ci0gICAg
bV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFj
ZSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0
YSA9IHRydWU7Ci0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7Ci19Ci0KLXZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKLXsKLSAgICBGbG9hdFJlY3Qgc3JjUmVjdChzcmMpOwotICAgIEZsb2F0
UmVjdCBkc3RSZWN0KGRzdCk7Ci0KLSAgICBpZiAoZHN0UmVjdC53aWR0aCgpID09IDAuMGYgfHwg
ZHN0UmVjdC5oZWlnaHQoKSA9PSAwLjBmIHx8Ci0gICAgICAgIHNyY1JlY3Qud2lkdGgoKSA9PSAw
LjBmIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0gMC4wZikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c3RhcnRBbmltYXRpb24oKTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBmcmFtZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVh
cmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9y
KGNvbnRleHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0KLSAgICAvLyBT
ZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291
cmNlT3ZlciAmJiAhZnJhbWVIYXNBbHBoYUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAg
ICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgZWxz
ZQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwotICAgIGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChpbWFnZSwgZHN0UmVj
dCwgc3JjUmVjdCwgY29udGV4dCk7Ci0KLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7Ci0KLSAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7Ci19Ci0KIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgTmF0aXZlSW1hZ2VDYWlybyogaW1hZ2Ug
PSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghaW1hZ2UpIC8vIElmIGl0
J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47
CiAKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwot
ICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIGltYWdlLCBzaXplKCksIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJlY3Qp
OworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIGltYWdlLT5zdXJmYWNlKCksIHNp
emUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Io
b3ApLCBkZXN0UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFn
ZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNr
Rm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBtX2No
ZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBjYWlyb19zdXJmYWNlX3QqIGZyYW1lU3VyZmFjZSA9IGZy
YW1lQXRJbmRleCgwKTsKLSAgICBpZiAoIWZyYW1lU3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoZnJhbWVTdXJmYWNlKSA9PSBDQUlS
T19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCi0gICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgoZnJhbWVTdXJmYWNlKTsKLSAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KGZyYW1lU3VyZmFjZSk7Ci0KLSAgICBpZiAod2lkdGggIT0g
MSB8fCBoZWlnaHQgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQqIHBpeGVs
Q29sb3IgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShmcmFtZVN1cmZhY2UpKTsKLSAgICBtX3NvbGlkQ29sb3IgPSBjb2xvckZyb21QcmVt
dWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7Ci0KLSAgICBtX2lzU29saWRDb2xvciA9IHRydWU7
Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWY2NzRkNDcxYWZhMDYxNDE5MjQxMzM4OGRiYTk4MTk5NGI4YWQ0OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2
ZUltYWdlQ2Fpcm8uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTIsIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fp
cm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOYXRpdmVJbWFnZUNhaXJvOjpOYXRpdmVJ
bWFnZUNhaXJvKCkKK3sKK30KKworTmF0aXZlSW1hZ2VDYWlybzo6TmF0aXZlSW1hZ2VDYWlybyhj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCisgICAgOiBtX3N1cmZhY2UoYWRvcHRSZWYoc3VyZmFj
ZSkpCit7Cit9CisKK05hdGl2ZUltYWdlQ2Fpcm86On5OYXRpdmVJbWFnZUNhaXJvKCkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5
ZGMxZGJiMjNjZjBjNDYwZWQ5NWQ1ZjZhNzE3MzhmM2I3NzI5MmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiwgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIE5hdGl2ZUltYWdlQ2Fpcm9faAorI2RlZmluZSBOYXRpdmVJbWFnZUNhaXJvX2gKKwor
I2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TmF0aXZlSW1hZ2VDYWlybyB7CitwdWJsaWM6CisgICAgTmF0aXZlSW1hZ2VDYWlybygpOworICAg
IH5OYXRpdmVJbWFnZUNhaXJvKCk7CisgICAgZXhwbGljaXQgTmF0aXZlSW1hZ2VDYWlybyhjYWly
b19zdXJmYWNlX3QqKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgKCkgeyByZXR1cm4g
bV9zdXJmYWNlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbV9zdXJmYWNlOworfTsKKworfQorI2VuZGlmIC8vIE5hdGl2ZUltYWdlQ2Fpcm9faAorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJu
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcAppbmRleCBiMDY3YWNjMjBiNjYyMzMwOGRhZGY5ZTM2NzliNWNlYjAwN2JlODIx
Li4yMjM2OGI4YzAyYjcxMTViYzNmN2ZmYWIxZDRkZDdkOWI1OGY0OGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAKQEAgLTI4LDE4ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIGltYWdlID0gdGls
ZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWly
b19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNlKTsKKyAgICBjYWlyb19wYXR0ZXJu
X3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShpbWFnZS0+c3Vy
ZmFjZSgpKTsKIAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0ZXIgc3BhY2UgYW5kIHVzZXIgc3Bh
Y2UgaXRzZWxmCiAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4ID0gbV9wYXR0ZXJuU3BhY2VUcmFu
c2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCmluZGV4IGM1YTUxOTRkMGUwOTNlMmIwZmZmOWQ4ZTMzZTg2Nzc3NWFmZGE4
YzQuLjc1NTVlMTQ3YzQ0ZWRlZTBiYTBmYWFmOGU5YzkxZTMxZTBmYTQxYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtMTEy
LDEwICsxMTIsOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtVGhlbWVJ
Y29uKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzaXplKQogCiBHZGtQaXhidWYqIEJpdG1hcEltYWdl
OjpnZXRHZGtQaXhidWYoKQogewotICAgIGNhaXJvX3N1cmZhY2VfdCogZnJhbWUgPSBmcmFtZUF0
SW5kZXgoY3VycmVudEZyYW1lKCkpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBjYWlyb0ltYWdlU3VyZmFjZVRvR2RrUGl4YnVmKGZyYW1lKTsKKyAgICBO
YXRpdmVJbWFnZUNhaXJvKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgcmV0dXJuIGltYWdlID8gY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZihpbWFnZS0+c3Vy
ZmFjZSgpKSA6IDA7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJ
bWFnZUd0ay5jcHAKaW5kZXggNmFjMzg3ZmVhMWZmMjc0OWEwYjE0ZDVhYzRkYjA2OGRmZmE4MjM1
OS4uMDE5OGRlYzI4ZGM1OTk0ODkyY2M5ODhmMjAzOWY0MTFjOTg5NzM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTc1LDcgKzc1LDggQEAg
RHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1h
Z2UsIGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWFnZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQogewotICAgIHJl
dHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSk7CisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UgPyBjYWly
b19zdXJmYWNlX3JlZmVyZW5jZShuYXRpdmVJbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2Uq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fp
cm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDYxOGMxZDBmNTAzZTg3
YWM5NTA1ODk2ODhkNzI3YjI3MWRmMTY2MGEuLjQxNzYyOGQzMjg1YjMyZTkxOGJjZGExNjQyZmM4
OWEwMjRkOGJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAgLTMy
LDEwICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmF0aXZlSW1hZ2VQdHIgSW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAotICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KAotICAgICAgICAgICAgbV9ieXRlcykp
LCBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCgpLCBoZWlnaHQoKSwKLSAgICAgICAgd2lkdGgo
KSAqIHNpemVvZihQaXhlbERhdGEpKTsKKyAgICByZXR1cm4gbmV3IE5hdGl2ZUltYWdlQ2Fpcm8o
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCisgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLAor
ICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCgpLCBoZWlnaHQoKSwgd2lkdGgoKSAq
IHNpemVvZihQaXhlbERhdGEpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IGMwYTBiMTg1ZGExMDBkM2U0ZmIyYmFk
ZDNiNjIyODA1ODFkMzFmOWYuLjFhNGU5YjcxZmI3NTA4ZjY0YzhkOGUwNDIwNjJhMDc0ZTAyOGM2
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtMzQxLDcgKzM0MSw5
IEBAIGNhaXJvX3N1cmZhY2VfdCogZXdrX2hpc3RvcnlfaXRlbV9pY29uX3N1cmZhY2VfZ2V0KGNv
bnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiAgICAgICAgIEVSUigiaWNvbiBpcyBOVUxMLiIp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIGljb24tPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBuYXRp
dmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJu
IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSA6IDA7CiB9CiAKIEV2YXNfT2Jq
ZWN0KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChjb25zdCBFd2tfSGlzdG9yeV9J
dGVtKiBpdGVtLCBFdmFzKiBjYW52YXMpCkBAIC0zNDksMTUgKzM1MSwxNCBAQCBFdmFzX09iamVj
dCogZXdrX2hpc3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQoY29uc3QgRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSwgRXZhcwogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0
ZW0sIGNvcmUsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMs
IDApOwogICAgIFdlYkNvcmU6OkltYWdlKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCku
c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb3JlLT51cmwoKSwgV2ViQ29yZTo6SW50U2l6ZSgx
NiwgMTYpKTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CiAKICAgICBpZiAoIWljb24p
IHsKICAgICAgICAgRVJSKCJpY29uIGlzIE5VTEwuIik7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIHN1cmZhY2UgPSBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwot
ICAgIHJldHVybiBld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKGNhbnZhcywg
c3VyZmFjZSk7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UgPSBp
Y29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBuYXRpdmVJbWFn
ZSA/IGV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoY2FudmFzLCBuYXRpdmVJ
bWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9pdGVtX3Bh
Z2VfY2FjaGVfZXhpc3RzKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDAwZTk3YmU4N2RkMTgyNDYyNDhmZmQwOGJj
NTUxOGQxYzA3NTVhOGYuLjc4NjZjZGU0N2IxZTIxNTBlYzYxYzI5ZGIxZWZlMjVjMjZlOGY1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC0yMjUsNyArMjI1LDgg
QEAgY2Fpcm9fc3VyZmFjZV90KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZh
Y2VfZ2V0KGNvbnN0IGNoYXIqIHVybCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
cmV0dXJuIGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UgPSBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIHJldHVybiBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5zdXJmYWNl
KCkgOiAwOwogfQogCiBFdmFzX09iamVjdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNv
bl9vYmplY3RfZ2V0KGNvbnN0IGNoYXIqIHVybCwgRXZhcyogY2FudmFzKQpAQCAtMjM1LDE1ICsy
MzYsMTQgQEAgRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2Jq
ZWN0X2dldChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGMKIAogICAgIFdlYkNvcmU6OktVUkwga3Vy
bChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBXZWJD
b3JlOjpJbWFnZSogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNv
bkZvclBhZ2VVUkwoa3VybC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKLSAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CiAKICAgICBpZiAoIWljb24pIHsKICAgICAgICAg
RVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBzdXJmYWNlID0gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAg
ICByZXR1cm4gZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChjYW52YXMsIHN1
cmZhY2UpOworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaWNv
bi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2Ug
PyBld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKGNhbnZhcywgbmF0aXZlSW1h
Z2UtPnN1cmZhY2UoKSkgOiAwOwogfQogCiB2b2lkIGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVf
Y2FwYWNpdHlfc2V0KHVuc2lnbmVkIG1pbkRlYWRDYXBhY2l0eSwgdW5zaWduZWQgbWF4RGVhZENh
cGFjaXR5LCB1bnNpZ25lZCB0b3RhbENhcGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCA4YjgwMmU5Zjc1MTdlYWM5MTgwMjc4
NWVkOTJhZDgyNDE1YWFiNjQ3Li43YmNkMzNmOWM5OWZiYjcxZTkwNWVlMjY5NmY1NWQyMWFiN2Yy
ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcApAQCAtNzEsMTAgKzcxLDExIEBAIHN0YXRpYyBib29sIGRlY29kZUltYWdlKEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgR1JlZlB0cjxHZGtQaXhidWY+JiBwaXhidWYpCiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJm
YWNlKQorICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Ut
PnN1cmZhY2UoKTsKICAgICBwaXhidWYgPSBhZG9wdEdSZWYoZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9z
dXJmYWNlKHN1cmZhY2UsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137434</attachid>
            <date>2012-04-16 17:08:12 -0700</date>
            <delta_ts>2012-04-21 10:14:00 -0700</delta_ts>
            <desc>One more time</desc>
            <filename>bug-83611-20120416170811.patch</filename>
            <type>text/plain</type>
            <size>30237</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJjMTliOGYyOWFkY2Mw
N2I0OWQwZTUxNzliNjAxMTg5OGZmODkyMC4uOGQ5YzU1Mzc2NTVlMjU3NTQ0MmJjNjljOTE2NjJl
NmEyZWY3NzA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTE2ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSB0byB1cGRhdGVaT3JkZXJMaXN0c1Nsb3dDYXNlIHRvIHJlYnVp
bGRaT3JkZXJMaXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGNiZGJlMDQxOWEwM2Y0NmU1MWJhMDFm
ZDA3OWUxNTg0N2E4MjkwYmMuLjgwODhiNDBlMzIwNTZjYTFmYjhlYzFkNjBkMzFmY2ZhZDg5MmZm
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0xNiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0NhaXJvXSBXcmFw
IGNhaXJvIHN1cmZhY2VzIGluIGEgY2xhc3Mgd2hlbiBzdG9yaW5nIG5hdGl2ZSBpbWFnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBld2svZXdrX2hp
c3RvcnkuY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgYWRkaXRpb24gb2YgTmF0aXZlSW1hZ2VDYXJp
by4KKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDogRGl0dG8uCisKIDIwMTItMDQtMTMg
IFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgY29sb3IgY2hvb3NlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg3N2Mz
MDZjMjVmNWYwMmMzZmU4MDRkZTI2NDk2OTdkOTBmYmM1YTUuLjg3MzAxYTEwZTc0NmE5YWJjMjRl
OTNiYzFkY2E4ZTI5YjA5ZDBmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0w
NC0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBXcmFwIGNhaXJvIHN1cmZhY2VzIGluIGEgY2xhc3Mgd2hlbiBzdG9yaW5nIG5hdGl2
ZSBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDogVXBkYXRlZCB0byByZWZsZWN0IHRo
ZSBhZGRpdGlvbiBvZiBOYXRpdmVJbWFnZUNhaXJvLgorCiAyMDEyLTA0LTE2ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTmlnaHRseSBCYWNrL0Zvcndh
cmQgbm8gbG9uZ2VyIGNhbGxzIHBsdWctaW4ncyBOUFBfTmV3U3RyZWFtCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA0YmQ1ZGZkYTdhMzNhNGE5NjBiNzgyNTkwNDFkOTMwOWQ3N2Vl
MmNjLi41MTFlNDFkOTMyMTdkMzU4ZTI5ZTcwYWJkYzg2NGJmOGE2YWMzMjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwOTIsNiArMzA5Miw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zsb2F0UmVjdENhaXJv
LmNwcCBcCkBAIC0zMTAyLDYgKzMxMDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbnRSZWN0Q2Fpcm8u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFn
ZUNhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0
aXZlSW1hZ2VDYWlyby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Pd25QdHJDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL093blB0ckNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwZjNlZTNh
YmNlOWIzYmVjMzMyOWYyNWRjMjdlYWY4Yzk4Nzk4MDFhLi41ZDcxYTUzOWY0YTM5ZWQ5ZDA2NDY4
NzYxZmI5OTlkNjNkODNlM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTE5LDEy
ICsxMTksMTQgQEAgSUYgKFdURl9VU0VfQ0FJUk8pCiAgICkKICAgTElTVChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhZGllbnRDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Pd25QdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNh
aXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggYzZjYTYzYWE3YTIwYThlYTAzMTI3ZmRkMmIyNmFhYWVhNjYyNmJlMy4uMDBmMGM1
ZTQwOTVmNDc0NDVhMGQ2ZjU0NWZhMmY5NzQwMGUwYWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNjAsNiArMTYwLDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQLCBMUFNJWkUp
OwogI2VuZGlmCiAKKyNpZiBVU0UoQ0FJUk8pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFw
SW1hZ2U+IGNyZWF0ZShjYWlyb19zdXJmYWNlX3QqKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggM2E3
ZmFmYzkwZjNlZTNlZTI4ODhhNWNjMGY2ZmZmNjE4YzI2MjQxMS4uNzZhMjE2MzZjOTAzNmZlOTQw
MjcwZjljZGRkY2QyN2I0MmU4NTYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC00Niw4ICs0Niw3IEBAIFFUX0JFR0lOX05BTUVTUEFD
RQogY2xhc3MgUVBpeG1hcDsKIFFUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFVTRShDQUlSTykKLXN0
cnVjdCBfY2Fpcm9fc3VyZmFjZTsKLXR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJv
X3N1cmZhY2VfdDsKKyNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCiAjZWxpZiBVU0UoU0tJ
QSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5hdGl2ZUltYWdlU2tpYTsKQEAgLTkwLDcg
Kzg5LDcgQEAgdHlwZWRlZiB3eEdyYXBoaWNzQml0bWFwKiBOYXRpdmVJbWFnZVB0cjsKIHR5cGVk
ZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAjZWxpZiBVU0UoQ0FJUk8pCi10
eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlQ2Fpcm8qIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFNLSUEpCiB0eXBl
ZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYSogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBPUyhX
SU5DRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc5MmMzNjcyNmEyYTY2MzNi
ZmZjYTBjZGQwYTg0ODQ2OWQxNGI3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC0wLDAgKzEs
MTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJCaXRtYXBJbWFnZS5oIgorCisjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlQ2Fpcm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgor
I2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxC
aXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Cit7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2ZUltYWdlQ2Fpcm8o
c3VyZmFjZSkpOworfQorCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VDYWly
byogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2Jz
ZXJ2ZXIpCisgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQorICAgICwgbV9mcmFtZXMoMCkKKyAgICAs
IG1fZnJhbWVUaW1lcigwKQorICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUp
CisgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQorICAgICwgbV9yZXBldGl0
aW9uc0NvbXBsZXRlKDApCisgICAgLCBtX2RlY29kZWRTaXplKDApCisgICAgLCBtX2ZyYW1lQ291
bnQoMSkKKyAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQorICAgICwgbV9jaGVja2VkRm9yU29s
aWRDb2xvcihmYWxzZSkKKyAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKKyAgICAsIG1f
YWxsRGF0YVJlY2VpdmVkKHRydWUpCisgICAgLCBtX2hhdmVTaXplKHRydWUpCisgICAgLCBtX3Np
emVBdmFpbGFibGUodHJ1ZSkKKyAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKK3sKKyAgICBp
bml0UGxhdGZvcm1EYXRhKCk7CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRp
dmVJbWFnZS0+c3VyZmFjZSgpOworICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKHN1cmZhY2UpOworICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9oZWlnaHQoc3VyZmFjZSk7CisgICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0
ICogNDsKKyAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworCisgICAgbV9mcmFt
ZXMuZ3JvdygxKTsKKyAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7CisgICAg
bV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFj
ZSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKKyAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0
YSA9IHRydWU7CisgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7Cit9CisKK3ZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKK3sKKyAgICBGbG9hdFJlY3Qgc3JjUmVjdChzcmMpOworICAgIEZsb2F0
UmVjdCBkc3RSZWN0KGRzdCk7CisKKyAgICBpZiAoIWRzdFJlY3Qud2lkdGgoKSB8fCAhZHN0UmVj
dC5oZWlnaHQoKSB8fCAhc3JjUmVjdC53aWR0aCgpIHx8ICFzcmNSZWN0LmhlaWdodCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGFydEFuaW1hdGlvbigpOworCisgICAgTmF0aXZlSW1hZ2VD
YWlybyogbmF0aXZlSW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1h
Z2UgeWV0LgorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9y
KCkpIHsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdFJlY3QsIHNvbGlk
Q29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb250ZXh0LT5zYXZlKCk7CisKKyAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJh
dGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiAhZnJhbWVIYXNBbHBo
YUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKQorICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24ob3ApOworICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5k
cmF3U3VyZmFjZVRvQ29udGV4dChuYXRpdmVJbWFnZS0+c3VyZmFjZSgpLCBkc3RSZWN0LCBzcmNS
ZWN0LCBjb250ZXh0KTsKKworICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIGlmIChpbWFn
ZU9ic2VydmVyKCkpCisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKK30K
Kwordm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKK3sKKyAgICBtX2lzU29s
aWRDb2xvciA9IGZhbHNlOworICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOworCisg
ICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCisgICAgICAgIHJldHVybjsKKworICAgIE5hdGl2ZUlt
YWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAg
ICBpZiAoIW5hdGl2ZUltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFu
IGltYWdlIHlldC4KKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlID0gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKTsKKyAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShzdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOworCisgICAgaW50
IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CisgICAgaW50
IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsKKworICAg
IGlmICh3aWR0aCAhPSAxIHx8IGhlaWdodCAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBtX3NvbGlkQ29sb3IgPSBjb2xv
ckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7CisKKyAgICBtX2lzU29saWRDb2xv
ciA9IHRydWU7Cit9CisKK2Jvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEp
Cit7CisgICAgaWYgKGNsZWFyTWV0YWRhdGEpCisgICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFs
c2U7CisKKyAgICBpZiAobV9mcmFtZSkgeworICAgICAgICBkZWxldGUgbV9mcmFtZTsKKyAgICAg
ICAgbV9mcmFtZSA9IDA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRENhaXJvLmNwcAppbmRleCBhZDdkYjQxZDNkZmQ1NzQ4YTkxODIzOTVjOWQ1ODhiYTZlOWFj
Njc2Li44ZDM5NjkyMTQxOGRkMzFlMTA0MzBhMDk3NmFjZWZmMjY5OGEwMzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMTU3LDkgKzE1Nyw5IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVuc2lnbmVkIGludCBmb3Jt
YXQsIHVuc2lnbmVkCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVl
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlz
Q29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
bWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgaW1h
Z2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCktPnN1cmZhY2UoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICAgICAgaW1hZ2VTdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnN1cmZhY2UoKTsKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFs
cGhhKQogICAgICAgICAgICAgYWxwaGFPcCA9IEFscGhhRG9Vbm11bHRpcGx5OwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWly
by5jcHAKaW5kZXggMDA4NGI0MjM0YTM5ZmVmMTBmNjEwYjVhMDFmNTliYjk3OWRjMTVlNS4uNTFj
YTY0Mzk2MGI3MjM1N2ZlNjlhMTRlYjRhNDhmODZmMWViYzYyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKQEAgLTI2
LDE0NyArMjYsMzYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgogCiAjaWYgVVNFKENBSVJPKQogCiAjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPG1h
dGguaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ym9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKLXsKLSAgICBpZiAoY2xl
YXJNZXRhZGF0YSkKLSAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKLQotICAgIGlmICht
X2ZyYW1lKSB7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX2ZyYW1lKTsKLSAgICAg
ICAgbV9mcmFtZSA9IDA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0g
ICAgLCBtX2N1cnJlbnRGcmFtZSgwKQotICAgICwgbV9mcmFtZXMoMCkKLSAgICAsIG1fZnJhbWVU
aW1lcigwKQotICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0gICAgLCBt
X3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9uc0NvbXBs
ZXRlKDApCi0gICAgLCBtX2RlY29kZWRTaXplKDApCi0gICAgLCBtX2ZyYW1lQ291bnQoMSkKLSAg
ICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihm
YWxzZSkKLSAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKLSAgICAsIG1fYWxsRGF0YVJl
Y2VpdmVkKHRydWUpCi0gICAgLCBtX2hhdmVTaXplKHRydWUpCi0gICAgLCBtX3NpemVBdmFpbGFi
bGUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKLXsKLSAgICBpbml0UGxhdGZv
cm1EYXRhKCk7Ci0KLSAgICAvLyBUT0RPOiBjaGVjayB0byBiZSBzdXJlIHRoaXMgaXMgYW4gaW1h
Z2Ugc3VyZmFjZQotCi0gICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoc3VyZmFjZSk7Ci0gICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzdXJmYWNlKTsKLSAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0Owot
ICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Ci0KLSAgICBtX2ZyYW1lcy5ncm93
KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBzdXJmYWNlOwotICAgIG1fZnJhbWVzWzBd
Lm1faGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpICE9IENBSVJP
X0NPTlRFTlRfQ09MT1I7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwot
ICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCi17Ci0gICAgRmxvYXRSZWN0IHNyY1JlY3Qoc3JjKTsKLSAgICBGbG9hdFJlY3QgZHN0UmVj
dChkc3QpOwotCi0gICAgaWYgKGRzdFJlY3Qud2lkdGgoKSA9PSAwLjBmIHx8IGRzdFJlY3QuaGVp
Z2h0KCkgPT0gMC4wZiB8fAotICAgICAgICBzcmNSZWN0LndpZHRoKCkgPT0gMC4wZiB8fCBzcmNS
ZWN0LmhlaWdodCgpID09IDAuMGYpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0
aW9uKCk7Ci0KLSAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKLSAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24n
dCBoYXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1heUZpbGxX
aXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBk
c3RSZWN0LCBzb2xpZENvbG9yKCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY29udGV4dC0+c2F2ZSgpOwotCi0gICAgLy8gU2V0IHRoZSBjb21w
b3NpdGluZyBvcGVyYXRpb24uCi0gICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYg
IWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAgICAgICAgY29udGV4dC0+
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgIGVsc2UKLSAgICAgICAg
Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKLSAgICBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoaW1hZ2UsIGRzdFJlY3QsIHNyY1JlY3Qs
IGNvbnRleHQpOwotCi0gICAgY29udGV4dC0+cmVzdG9yZSgpOwotCi0gICAgaWYgKGltYWdlT2Jz
ZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwotfQotCiB2
b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQogewotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIGltYWdlID0gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJs
eSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBkcmF3UGF0
dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBpbWFnZSwgc2l6ZSgpLCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9PcGVyYXRvcihvcCksIGRlc3RSZWN0KTsKKyAgICBkcmF3
UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBpbWFnZS0+c3VyZmFjZSgpLCBzaXplKCksIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJl
Y3QpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5kaWREcmF3KHRoaXMpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29s
b3IoKQotewotICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29s
aWRDb2xvciA9IHRydWU7Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBmcmFtZVN1cmZhY2UgPSBmcmFtZUF0SW5kZXgo
MCk7Ci0gICAgaWYgKCFmcmFtZVN1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VS
VChjYWlyb19zdXJmYWNlX2dldF90eXBlKGZyYW1lU3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9U
WVBFX0lNQUdFKTsKLQotICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dp
ZHRoKGZyYW1lU3VyZmFjZSk7Ci0gICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2hlaWdodChmcmFtZVN1cmZhY2UpOwotCi0gICAgaWYgKHdpZHRoICE9IDEgfHwgaGVpZ2h0
ICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZnJh
bWVTdXJmYWNlKSk7Ci0gICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFS
R0IoKnBpeGVsQ29sb3IpOwotCi0gICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotfQotCiB9CiAK
ICNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFm
Njc0ZDQ3MWFmYTA2MTQxOTI0MTMzODhkYmE5ODE5OTRiOGFkNDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTmF0aXZlSW1hZ2VDYWlybzo6TmF0aXZlSW1hZ2VDYWlybygp
Cit7Cit9CisKK05hdGl2ZUltYWdlQ2Fpcm86Ok5hdGl2ZUltYWdlQ2Fpcm8oY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKQorICAgIDogbV9zdXJmYWNlKGFkb3B0UmVmKHN1cmZhY2UpKQoreworfQor
CitOYXRpdmVJbWFnZUNhaXJvOjp+TmF0aXZlSW1hZ2VDYWlybygpCit7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWRjMWRiYjIzY2Yw
YzQ2MGVkOTVkNWY2YTcxNzM4ZjNiNzcyOTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5oCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOYXRp
dmVJbWFnZUNhaXJvX2gKKyNkZWZpbmUgTmF0aXZlSW1hZ2VDYWlyb19oCisKKyNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdGl2ZUltYWdl
Q2Fpcm8geworcHVibGljOgorICAgIE5hdGl2ZUltYWdlQ2Fpcm8oKTsKKyAgICB+TmF0aXZlSW1h
Z2VDYWlybygpOworICAgIGV4cGxpY2l0IE5hdGl2ZUltYWdlQ2Fpcm8oY2Fpcm9fc3VyZmFjZV90
Kik7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlICgpIHsgcmV0dXJuIG1fc3VyZmFjZS5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFj
ZTsKK307CisKK30KKyNlbmRpZiAvLyBOYXRpdmVJbWFnZUNhaXJvX2gKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAK
aW5kZXggYjA2N2FjYzIwYjY2MjMzMDhkYWRmOWUzNjc5YjVjZWIwMDdiZTgyMS4uMjIzNjhiOGMw
MmI3MTE1YmMzZjdmZmFiMWQ0ZGQ3ZDliNThmNDhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCkBAIC0yOCwx
OCArMjgsMTcgQEAKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgotCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlm
ICghc3VyZmFjZSkKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBpbWFnZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9j
cmVhdGVfZm9yX3N1cmZhY2Uoc3VyZmFjZSk7CisgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJu
ID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2UoaW1hZ2UtPnN1cmZhY2UoKSk7CiAK
ICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFuZCB1c2VyIHNwYWNlIGl0c2VsZgog
ICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNw
cAppbmRleCBjNWE1MTk0ZDBlMDkzZTJiMGZmZjlkOGUzM2U4Njc3NzVhZmRhOGM0Li43NTU1ZTE0
N2M0NGVkZWUwYmEwZmFhZjhlOWM5MWUzMWUwZmE0MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTExMiwxMCArMTEyLDgg
QEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVRoZW1lSWNvbihjb25zdCBj
aGFyKiBuYW1lLCBpbnQgc2l6ZSkKIAogR2RrUGl4YnVmKiBCaXRtYXBJbWFnZTo6Z2V0R2RrUGl4
YnVmKCkKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIGZyYW1lID0gZnJhbWVBdEluZGV4KGN1cnJl
bnRGcmFtZSgpKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZihmcmFtZSk7CisgICAgTmF0aXZlSW1hZ2VD
YWlybyogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBp
bWFnZSA/IGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYoaW1hZ2UtPnN1cmZhY2UoKSkgOiAw
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0lt
YWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3Bw
CmluZGV4IDZhYzM4N2ZlYTFmZjI3NDlhMGIxNGQ1YWM0ZGIwNjhkZmZhODIzNTkuLjAxOThkZWMy
OGRjNTk5NDg5MmNjOTg4ZjIwMzlmNDExYzk4OTczODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBAIC03NSw3ICs3NSw4IEBAIERyYWdJbWFnZVJl
ZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdlLCBmbG9hdCBm
cmFjdGlvbikKIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSog
aW1hZ2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkKIHsKLSAgICByZXR1cm4gY2Fpcm9f
c3VyZmFjZV9yZWZlcmVuY2UoaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwor
ICAgIE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gY2Fpcm9fc3VyZmFjZV9y
ZWZlcmVuY2UobmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSkgOiAwOwogfQogCiBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlKENhY2hlZEltYWdlKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVj
b2RlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Nh
aXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAppbmRleCA2MThjMWQwZjUwM2U4N2FjOTUwNTg5Njg4
ZDcyN2IyNzFkZjE2NjBhLi40MTc2MjhkMzI4NWIzMmU5MThiY2RhMTY0MmZjODlhMDI0ZDhiYmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCkBAIC0zMiwxMCArMzIsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2Ny
ZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
Y29uc3RfY2FzdDxQaXhlbERhdGEqPigKLSAgICAgICAgICAgIG1fYnl0ZXMpKSwgQ0FJUk9fRk9S
TUFUX0FSR0IzMiwgd2lkdGgoKSwgaGVpZ2h0KCksCi0gICAgICAgIHdpZHRoKCkgKiBzaXplb2Yo
UGl4ZWxEYXRhKSk7CisgICAgcmV0dXJuIG5ldyBOYXRpdmVJbWFnZUNhaXJvKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAorICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMpKSwKKyAgICAgICAgQ0FJ
Uk9fRk9STUFUX0FSR0IzMiwgd2lkdGgoKSwgaGVpZ2h0KCksIHdpZHRoKCkgKiBzaXplb2YoUGl4
ZWxEYXRhKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19oaXN0b3J5LmNwcAppbmRleCBjMGEwYjE4NWRhMTAwZDNlNGZiMmJhZGQzYjYyMjgwNTgx
ZDMxZjlmLi4xYTRlOWI3MWZiNzUwOGY2NGM4ZDhlMDQyMDYyYTA3NGUwMjhjNjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKQEAgLTM0MSw3ICszNDEsOSBAQCBjYWlyb19z
dXJmYWNlX3QqIGV3a19oaXN0b3J5X2l0ZW1faWNvbl9zdXJmYWNlX2dldChjb25zdCBFd2tfSGlz
dG9yeV9JdGVtKiBpdGVtKQogICAgICAgICBFUlIoImljb24gaXMgTlVMTC4iKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworCisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UgPSBp
Y29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBuYXRpdmVJbWFn
ZSA/IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkgOiAwOwogfQogCiBFdmFzX09iamVjdCogZXdrX2hp
c3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSwg
RXZhcyogY2FudmFzKQpAQCAtMzQ5LDE1ICszNTEsMTQgQEAgRXZhc19PYmplY3QqIGV3a19oaXN0
b3J5X2l0ZW1faWNvbl9vYmplY3RfYWRkKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIEV2
YXMKICAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAw
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKICAgICBX
ZWJDb3JlOjpJbWFnZSogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwoY29yZS0+dXJsKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7Ci0g
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOwogCiAgICAgaWYgKCFpY29uKSB7CiAgICAgICAg
IEVSUigiaWNvbiBpcyBOVUxMLiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBz
dXJmYWNlID0gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICByZXR1cm4g
ZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChjYW52YXMsIHN1cmZhY2UpOwor
ICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaWNvbi0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UgPyBld2tfdXRp
bF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKGNhbnZhcywgbmF0aXZlSW1hZ2UtPnN1cmZh
Y2UoKSkgOiAwOwogfQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfaXRlbV9wYWdlX2NhY2hlX2V4
aXN0cyhjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3NldHRpbmdzLmNwcAppbmRleCAwMGU5N2JlODdkZDE4MjQ2MjQ4ZmZkMDhiYzU1MThkMWMwNzU1
YThmLi43ODY2Y2RlNDdiMWUyMTUwZWM2MWMyOWRiMWVmZTI1YzI2ZThmNTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcApAQCAtMjI1LDcgKzIyNSw4IEBAIGNhaXJvX3N1
cmZhY2VfdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChjb25z
dCBjaGFyKiB1cmwpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBpY29u
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdl
Q2Fpcm8qIG5hdGl2ZUltYWdlID0gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICByZXR1cm4gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpIDogMDsKIH0K
IAogRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2dl
dChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGNhbnZhcykKQEAgLTIzNSwxNSArMjM2LDE0IEBAIEV2
YXNfT2JqZWN0KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29u
c3QgY2hhciogdXJsLCBFdmFzKiBjCiAKICAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6
S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7CiAgICAgV2ViQ29yZTo6SW1hZ2Uq
IGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7Ci0gICAgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlOwogCiAgICAgaWYgKCFpY29uKSB7CiAgICAgICAgIEVSUigibm8gaWNv
biBmb3IgdXJsICVzIiwgdXJsKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3Vy
ZmFjZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIGV3
a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoY2FudmFzLCBzdXJmYWNlKTsKKyAg
ICBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gZXdrX3V0aWxf
aW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChjYW52YXMsIG5hdGl2ZUltYWdlLT5zdXJmYWNl
KCkpIDogMDsKIH0KIAogdm9pZCBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2NhcGFjaXR5X3Nl
dCh1bnNpZ25lZCBtaW5EZWFkQ2FwYWNpdHksIHVuc2lnbmVkIG1heERlYWRDYXBhY2l0eSwgdW5z
aWduZWQgdG90YWxDYXBhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKaW5kZXggOGI4MDJlOWY3NTE3ZWFjOTE4MDI3ODVlZDkyYWQ4MjQx
NWFhYjY0Ny4uN2JjZDMzZjljOTlmYmI3MWU5MDVlZTI2OTZmNTVkMjFhYjdmMmRkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTcx
LDEwICs3MSwxMSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVJbWFnZShBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIEdSZWZQdHI8R2RrUGl4YnVmPiYgcGl4YnVmKQogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBO
YXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNlKCk7
CiAgICAgcGl4YnVmID0gYWRvcHRHUmVmKGdka19waXhidWZfZ2V0X2Zyb21fc3VyZmFjZShzdXJm
YWNlLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138243</attachid>
            <date>2012-04-21 10:14:04 -0700</date>
            <delta_ts>2012-04-26 16:02:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83611-20120421101403.patch</filename>
            <type>text/plain</type>
            <size>31363</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0ODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhmNTUyNjA2YjBjNjBk
N2RjZmVhNTU3NjczNjlhNGMyZjY1YjNkYS4uM2IwMDBlOWIxYjI2OTRhZDNiZDEyNjg0ZDlmZjRh
Y2I1NGVkODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTIwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFdy
YXAgY2Fpcm8gc3VyZmFjZXMgaW4gYSBjbGFzcyB3aGVuIHN0b3JpbmcgbmF0aXZlIGltYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLiBUaGlzIHNob3VsZG4ndCBjaGFuZ2UKKyAg
ICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGRlZCBjbGFzcyB0aGF0IHdyYXBzIENh
aXJvIGltYWdlcyBzdXJmYWNlcyB0byBzZXJ2ZSBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIKKyAgICAg
ICAgdHlwZSBmb3IgdGhlIENhaXJvIHBsYXRmb3JtLiBUaGlzIHdpbGwgYWxsb3cgdGhlIGFkZGl0
aW9uIG9mIGNhY2hpbmcgcmVzYW1wbGVkCisgICAgICAgIGltYWdlcyBhcyB3ZWxsIGFzIHZlcnNp
b25zIG9mIHRoZSBpbWFnZSBmb3Igbm9uLWltYWdlIENhaXJvIGJhY2tlbmRzLiBBbHNvCisgICAg
ICAgIHNwbGl0IG91dCBCaXRtYXBJbWFnZUNhaXJvLmNwcCBmcm9tIEltYWdlQ2Fpcm8uY3BwIHNp
bmNlIHRoZXNlIGNsYXNzZXMgYXJlCisgICAgICAgIGRlZmluZWQgaW4gdHdvIGhlYWRlcnMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQWRkZWQgYSBmYWN0b3J5IG1ldGhv
ZCB0aGF0IHRha2VzIGFuIGltYWdlIHN1cmZhY2UgdG8KKyAgICAgICAgcmVkdWNlIGNvZGUgY2h1
cm4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogTmF0aXZlSW1h
Z2VQdHIgaXMgbm93IE5hdGl2ZUltYWdlQ2Fpcm8qLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOiBVcGRhdGVkIHRvIHJlZmxlY3QgdXNlIG9mIE5hdGl2ZUltYWdlQ2Fpcm8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWly
by5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB1c2Ugb2YgTmF0aXZlSW1hZ2VDYWlyby4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6IERp
dHRvLgorCiAyMDEyLTA0LTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE0NzY4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDYyYjI2NWYyMzQyMzYyZGVkNWU3YjU4NGViYjNhODkyZWFiNjM1ODAuLmEw
Y2M1YzU5ODIyYzQyODQyYmY2MmM3YTJkOWVkZWQ5ZmE3ZGZmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0yMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0NhaXJvXSBXcmFwIGNhaXJvIHN1cmZhY2VzIGluIGEg
Y2xhc3Mgd2hlbiBzdG9yaW5nIG5hdGl2ZSBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOiBVcGRhdGVkIHRv
IHJlZmxlY3QgYWRkaXRpb24gb2YgTmF0aXZlSW1hZ2VDYXJpby4KKyAgICAgICAgKiBld2svZXdr
X3NldHRpbmdzLmNwcDogRGl0dG8uCisKIDIwMTItMDQtMjAgIFRoaWFnbyBNYXJjb3MgUC4gU2Fu
dG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIFNlY3Vy
aXR5IE9yaWdpbiBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5ZDc3OWY0NWEyOWVjMWE1ODY4YWFiZmRhOWNh
NWZlZTBiYTQxNTVkLi41YWU2ZTM4YjQzZWE5MWNhOGZmM2UyNDk5OGExNDZhYWVlOGZiY2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDQtMjAgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDYWlyb10gV3JhcCBjYWlybyBzdXJm
YWNlcyBpbiBhIGNsYXNzIHdoZW4gc3RvcmluZyBuYXRpdmUgaW1hZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYxMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHA6IFVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgYWRkaXRpb24gb2YgTmF0aXZlSW1h
Z2VDYWlyby4KKwogMjAxMi0wNC0yMCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSB0aGUgV2ViIEluc3BlY3RvciBiZSB0aGUgZmlyc3QgcmVzcG9u
ZGVyIHdoZW4gb3BlbmluZyBkb2NrZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCAzNmM4NDAwYmJjMDFhMDliODgxM2EzNDc5NTNkN2FlZjk4ZjJmYTk1Li4zZTAxMDA1YTAwYjRi
YTg2YmExYmZlMzdmZWY3OWVmMTQ5MWQ5NjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTMwOTgsNiArMzA5OCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zsb2F0UmVjdENhaXJvLmNwcCBcCkBAIC0zMTA4LDYg
KzMxMDksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbnRSZWN0Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Pd25QdHJDYWlyby5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL093blB0ckNhaXJvLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwZjNlZTNhYmNlOWIzYmVjMzMyOWYyNWRj
MjdlYWY4Yzk4Nzk4MDFhLi41ZDcxYTUzOWY0YTM5ZWQ5ZDA2NDY4NzYxZmI5OTlkNjNkODNlM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTE5LDEyICsxMTksMTQgQEAgSUYgKFdU
Rl9VU0VfQ0FJUk8pCiAgICkKICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9P
d25QdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggYzZjYTYzYWE3
YTIwYThlYTAzMTI3ZmRkMmIyNmFhYWVhNjYyNmJlMy4uMDBmMGM1ZTQwOTVmNDc0NDVhMGQ2ZjU0
NWZhMmY5NzQwMGUwYWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCkBAIC0xNjAsNiArMTYwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZ2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQLCBMUFNJWkUpOwogI2VuZGlmCiAKKyNpZiBV
U0UoQ0FJUk8pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShjYWly
b19zdXJmYWNlX3QqKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwg
R2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggZGJiNzY0NTczYjhjMTIwMjFlYzVl
M2U0NThkZTE1MjRjOTIwMmEzYS4uMzA3NzM3ZjIwMTFkYmQ5MDZlZDc0MDJmYTZiMjhhMzhkYzdk
MzJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCkBAIC00Niw4ICs0Niw3IEBAIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVBpeG1hcDsK
IFFUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFVTRShDQUlSTykKLXN0cnVjdCBfY2Fpcm9fc3VyZmFj
ZTsKLXR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKyNpbmNs
dWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCiAjZWxpZiBVU0UoU0tJQSkKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE5hdGl2ZUltYWdlU2tpYTsKQEAgLTkwLDcgKzg5LDcgQEAgdHlwZWRlZiB3
eEdyYXBoaWNzQml0bWFwKiBOYXRpdmVJbWFnZVB0cjsKIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2
ZUltYWdlUHRyOwogI2VuZGlmCiAjZWxpZiBVU0UoQ0FJUk8pCi10eXBlZGVmIGNhaXJvX3N1cmZh
Y2VfdCogTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fpcm8q
IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFNLSUEpCiB0eXBlZGVmIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlU2tpYSogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBPUyhXSU5DRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc5ZGZlZDFiMjY3YjY1YWNlODE1ZmYyM2YwMmU1OGMwMzEw
N2Q5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5v
cmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgi
CisKKyNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VDYWly
by5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRt
YXBJbWFnZTo6Y3JlYXRlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICByZXR1cm4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShuZXcgTmF0aXZlSW1hZ2VDYWlybyhzdXJmYWNlKSk7Cit9CisK
K0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1f
Y3VycmVudEZyYW1lKDApCisgICAgLCBtX2ZyYW1lcygwKQorICAgICwgbV9mcmFtZVRpbWVyKDAp
CisgICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKKyAgICAsIG1fcmVwZXRp
dGlvbkNvdW50U3RhdHVzKFVua25vd24pCisgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkK
KyAgICAsIG1fZGVjb2RlZFNpemUoMCkKKyAgICAsIG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9p
c1NvbGlkQ29sb3IoZmFsc2UpCisgICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQor
ICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQo
dHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVl
KQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAgIGluaXRQbGF0Zm9ybURhdGEo
KTsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJmYWNl
KCk7CisgICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFj
ZSk7CisgICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJm
YWNlKTsKKyAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6
ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CisKKyAgICBtX2ZyYW1lcy5ncm93KDEpOworICAg
IG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsKKyAgICBtX2ZyYW1lc1swXS5tX2hh
c0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChzdXJmYWNlKSAhPSBDQUlST19DT05U
RU5UX0NPTE9SOworICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICBj
aGVja0ZvclNvbGlkQ29sb3IoKTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQor
eworICAgIEZsb2F0UmVjdCBzcmNSZWN0KHNyYyk7CisgICAgRmxvYXRSZWN0IGRzdFJlY3QoZHN0
KTsKKworICAgIGlmICghZHN0UmVjdC53aWR0aCgpIHx8ICFkc3RSZWN0LmhlaWdodCgpIHx8ICFz
cmNSZWN0LndpZHRoKCkgfHwgIXNyY1JlY3QuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFn
ZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkg
Ly8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgeworICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNv
bG9yU3BhY2UsIG9wKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnNh
dmUoKTsKKworICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgorICAgIGlmIChv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmICFmcmFtZUhhc0FscGhhQXRJbmRleChtX2N1cnJl
bnRGcmFtZSkpCisgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250
ZXh0KG5hdGl2ZUltYWdlLT5zdXJmYWNlKCksIGRzdFJlY3QsIHNyY1JlY3QsIGNvbnRleHQpOwor
CisgICAgY29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOworfQorCit2b2lkIEJpdG1hcElt
YWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7
CisgICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7CisKKyAgICBpZiAoZnJhbWVDb3Vu
dCgpID4gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZl
SW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGlmICghbmF0aXZlSW1h
Z2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAg
ICAgICByZXR1cm47CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFn
ZS0+c3VyZmFjZSgpOworICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2Up
ID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CisKKyAgICBpbnQgd2lkdGggPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworCisgICAgaWYgKHdpZHRoICE9IDEg
fHwgaGVpZ2h0ICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkKiBwaXhlbENv
bG9yID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2RhdGEoc3VyZmFjZSkpOworICAgIG1fc29saWRDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxp
ZWRBUkdCKCpwaXhlbENvbG9yKTsKKworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKK30KKwor
Ym9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKK3sKKyAgICBpZiAoY2xl
YXJNZXRhZGF0YSkKKyAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKKworICAgIGlmICht
X2ZyYW1lKSB7CisgICAgICAgIGRlbGV0ZSBtX2ZyYW1lOworICAgICAgICBtX2ZyYW1lID0gMDsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmlu
ZGV4IGFkN2RiNDFkM2RmZDU3NDhhOTE4MjM5NWM5ZDU4OGJhNmU5YWM2NzYuLjhkMzk2OTIxNDE4
ZGQzMWUxMDQzMGEwOTc2YWNlZmYyNjk4YTAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCkBAIC0xNTcsOSArMTU3LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAg
ICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAo
IWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
MCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGltYWdlU3VyZmFjZSA9IGRl
Y29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBpbWFnZVN1cmZhY2UgPSBkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGltYWdlU3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
ICAgICAgICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KS0+c3VyZmFjZSgpOwogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAg
ICBhbHBoYU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCAwMDg0
YjQyMzRhMzlmZWYxMGY2MTBiNWEwMWY1OWJiOTc5ZGMxNWU1Li41MWNhNjQzOTYwYjcyMzU3ZmU2
OWExNGViNGE0OGY4NmYxZWJjNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMjYsMTQ3ICsyNiwzNiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2lu
Y2x1ZGUgIkltYWdlLmgiCiAKICNpZiBVU0UoQ0FJUk8pCiAKICNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNvbG9yLmgi
Ci0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6
Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQml0
bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShvYnNlcnZlcikKLSAgICAsIG1fY3VycmVudEZy
YW1lKDApCi0gICAgLCBtX2ZyYW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCi0gICAgLCBt
X3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50
U3RhdHVzKFVua25vd24pCi0gICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1f
ZGVjb2RlZFNpemUoMCkKLSAgICAsIG1fZnJhbWVDb3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29s
b3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9h
bmltYXRpb25GaW5pc2hlZCh0cnVlKQotICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKLSAg
ICAsIG1faGF2ZVNpemUodHJ1ZSkKLSAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQotICAgICwg
bV9oYXZlRnJhbWVDb3VudCh0cnVlKQotewotICAgIGluaXRQbGF0Zm9ybURhdGEoKTsKLQotICAg
IC8vIFRPRE86IGNoZWNrIHRvIGJlIHN1cmUgdGhpcyBpcyBhbiBpbWFnZSBzdXJmYWNlCi0KLSAg
ICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKLSAg
ICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwot
ICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgbV9zaXplID0gSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLQotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFt
ZXNbMF0ubV9mcmFtZSA9IHN1cmZhY2U7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNh
aXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsK
LSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgY2hlY2tGb3JTb2xp
ZENvbG9yKCk7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsKLSAgICBGbG9h
dFJlY3Qgc3JjUmVjdChzcmMpOwotICAgIEZsb2F0UmVjdCBkc3RSZWN0KGRzdCk7Ci0KLSAgICBp
ZiAoZHN0UmVjdC53aWR0aCgpID09IDAuMGYgfHwgZHN0UmVjdC5oZWlnaHQoKSA9PSAwLjBmIHx8
Ci0gICAgICAgIHNyY1JlY3Qud2lkdGgoKSA9PSAwLjBmIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0g
MC4wZikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLQotICAgIGNh
aXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAg
IGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2Ug
eWV0LgotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkp
IHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdFJlY3QsIHNvbGlkQ29s
b3IoKSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb250ZXh0LT5zYXZlKCk7Ci0KLSAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlv
bi4KLSAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRDb21w
b3NpdGVPcGVyYXRpb24ob3ApOwotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3
U3VyZmFjZVRvQ29udGV4dChpbWFnZSwgZHN0UmVjdCwgc3JjUmVjdCwgY29udGV4dCk7Ci0KLSAg
ICBjb250ZXh0LT5yZXN0b3JlKCk7Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAg
ICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Ci19Ci0KIHZvaWQgSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0g
ICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgTmF0aXZlSW1hZ2VDYWlybyogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwogICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUg
YW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKICAgICBjYWlyb190KiBjciA9IGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRl
eHQoY3IsIGltYWdlLCBzaXplKCksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
dG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0Nv
bnRleHQoY3IsIGltYWdlLT5zdXJmYWNlKCksIHNpemUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CiAKICAgICBpZiAo
aW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7
CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9p
c1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsK
LQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYWly
b19zdXJmYWNlX3QqIGZyYW1lU3VyZmFjZSA9IGZyYW1lQXRJbmRleCgwKTsKLSAgICBpZiAoIWZy
YW1lU3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoZnJhbWVTdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCi0g
ICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoZnJhbWVTdXJmYWNl
KTsKLSAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KGZyYW1l
U3VyZmFjZSk7Ci0KLSAgICBpZiAod2lkdGggIT0gMSB8fCBoZWlnaHQgIT0gMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmcmFtZVN1cmZhY2UpKTsKLSAg
ICBtX3NvbGlkQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7
Ci0KLSAgICBtX2lzU29saWRDb2xvciA9IHRydWU7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShD
QUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L05hdGl2ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY2NzRkNDcxYWZhMDYxNDE5
MjQxMzM4OGRiYTk4MTk5NGI4YWQ0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitOYXRpdmVJbWFnZUNhaXJvOjpOYXRpdmVJbWFnZUNhaXJvKCkKK3sKK30KKworTmF0aXZl
SW1hZ2VDYWlybzo6TmF0aXZlSW1hZ2VDYWlybyhjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCisg
ICAgOiBtX3N1cmZhY2UoYWRvcHRSZWYoc3VyZmFjZSkpCit7Cit9CisKK05hdGl2ZUltYWdlQ2Fp
cm86On5OYXRpdmVJbWFnZUNhaXJvKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZl
SW1hZ2VDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0
aXZlSW1hZ2VDYWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZGMxZGJiMjNjZjBjNDYwZWQ5NWQ1ZjZhNzE3
MzhmM2I3NzI5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxMiwgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5hdGl2ZUltYWdlQ2Fpcm9faAor
I2RlZmluZSBOYXRpdmVJbWFnZUNhaXJvX2gKKworI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF0aXZlSW1hZ2VDYWlybyB7CitwdWJsaWM6
CisgICAgTmF0aXZlSW1hZ2VDYWlybygpOworICAgIH5OYXRpdmVJbWFnZUNhaXJvKCk7CisgICAg
ZXhwbGljaXQgTmF0aXZlSW1hZ2VDYWlybyhjYWlyb19zdXJmYWNlX3QqKTsKKyAgICBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UgKCkgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOworfTsKKworfQorI2Vu
ZGlmIC8vIE5hdGl2ZUltYWdlQ2Fpcm9faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBiMDY3YWNjMjBi
NjYyMzMwOGRhZGY5ZTM2NzliNWNlYjAwN2JlODIxLi4yMjM2OGI4YzAyYjcxMTViYzNmN2ZmYWIx
ZDRkZDdkOWI1OGY0OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTI4LDE4ICsyOCwxNyBAQAogCiAj
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
Ci0KICNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3Bh
dHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpIGNvbnN0CiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gdGlsZUltYWdl
KCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAg
IE5hdGl2ZUltYWdlQ2Fpcm8qIGltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBj
YWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFj
ZShzdXJmYWNlKTsKKyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJu
X2NyZWF0ZV9mb3Jfc3VyZmFjZShpbWFnZS0+c3VyZmFjZSgpKTsKIAogICAgIC8vIGNhaXJvIG1l
cmdlcyBwYXR0ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCiAgICAgY2Fpcm9fbWF0cml4
X3QgbWF0cml4ID0gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGM1YTUxOTRk
MGUwOTNlMmIwZmZmOWQ4ZTMzZTg2Nzc3NWFmZGE4YzQuLjc1NTVlMTQ3YzQ0ZWRlZTBiYTBmYWFm
OGU5YzkxZTMxZTBmYTQxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtMTEyLDEwICsxMTIsOCBAQCBQYXNzUmVmUHRyPElt
YWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtVGhlbWVJY29uKGNvbnN0IGNoYXIqIG5hbWUsIGludCBz
aXplKQogCiBHZGtQaXhidWYqIEJpdG1hcEltYWdlOjpnZXRHZGtQaXhidWYoKQogewotICAgIGNh
aXJvX3N1cmZhY2VfdCogZnJhbWUgPSBmcmFtZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjYWlyb0ltYWdlU3Vy
ZmFjZVRvR2RrUGl4YnVmKGZyYW1lKTsKKyAgICBOYXRpdmVJbWFnZUNhaXJvKiBpbWFnZSA9IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlID8gY2Fpcm9JbWFn
ZVN1cmZhY2VUb0dka1BpeGJ1ZihpbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKaW5kZXggODk0ZWJiZjU2NDllYjI1NzU5OGRmZDc2Y2VmYWVlZWI3OGQw
ZTcwZS4uZGQwZjUxOGNmYjUwZDgwZDU0MzZkOGU0YzRiMmUxMGUyYmZlNTZjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKQEAgLTQ5MCw4ICs0OTAsOSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6
dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBj
bwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHF0SW1hZ2Uu
Y29uc3RCaXRzKCkpOwogICAgIGJ5dGVzUGVyTGluZSA9IHF0SW1hZ2UuYnl0ZXNQZXJMaW5lKCk7
CiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmcmFtZUltYWdlKSk7Ci0gICAg
Ynl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGZyYW1lSW1hZ2Up
OworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UtPnN1cmZhY2UoKTsK
KyAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBieXRlc1BlckxpbmUgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAjZW5kaWYKIAogICAgIHVwZGF0ZUNv
bnRlbnRzKGltYWdlRGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRlc1BlckxpbmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCA2YWMzODdm
ZWExZmYyNzQ5YTBiMTRkNWFjNGRiMDY4ZGZmYTgyMzU5Li4wMTk4ZGVjMjhkYzU5OTQ4OTJjYzk4
OGYyMDM5ZjQxMWM5ODk3Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJh
Z0ltYWdlR3RrLmNwcApAQCAtNzUsNyArNzUsOCBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQgZnJhY3Rpb24pCiAKIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0pCiB7Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJl
bmNlKGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKKyAgICBOYXRpdmVJbWFn
ZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIHJldHVybiBuYXRpdmVJbWFnZSA/IGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG5hdGl2
ZUltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUljb25Gb3JDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29k
ZXJDYWlyby5jcHAKaW5kZXggNjE4YzFkMGY1MDNlODdhYzk1MDU4OTY4OGQ3MjdiMjcxZGYxNjYw
YS4uNDE3NjI4ZDMyODViMzJlOTE4YmNkYTE2NDJmYzg5YTAyNGQ4YmJlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVy
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Nh
aXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAtMzIsMTAgKzMyLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEo
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4
ZWxEYXRhKj4oCi0gICAgICAgICAgICBtX2J5dGVzKSksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdp
ZHRoKCksIGhlaWdodCgpLAotICAgICAgICB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSkpOwor
ICAgIHJldHVybiBuZXcgTmF0aXZlSW1hZ2VDYWlybyhjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZV9mb3JfZGF0YSgKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29u
c3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCisgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdC
MzIsIHdpZHRoKCksIGhlaWdodCgpLCB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5j
cHAKaW5kZXggYzBhMGIxODVkYTEwMGQzZTRmYjJiYWRkM2I2MjI4MDU4MWQzMWY5Zi4uMWE0ZTli
NzFmYjc1MDhmNjRjOGQ4ZTA0MjA2MmEwNzRlMDI4YzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2hpc3RvcnkuY3BwCkBAIC0zNDEsNyArMzQxLDkgQEAgY2Fpcm9fc3VyZmFjZV90KiBld2tf
aGlzdG9yeV9pdGVtX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRl
bSkKICAgICAgICAgRVJSKCJpY29uIGlzIE5VTEwuIik7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KLSAgICByZXR1cm4gaWNvbi0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKworICAg
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlID0gaWNvbi0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFn
ZS0+c3VyZmFjZSgpIDogMDsKIH0KIAogRXZhc19PYmplY3QqIGV3a19oaXN0b3J5X2l0ZW1faWNv
bl9vYmplY3RfYWRkKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIEV2YXMqIGNhbnZhcykK
QEAgLTM0OSwxNSArMzUxLDE0IEBAIEV2YXNfT2JqZWN0KiBld2tfaGlzdG9yeV9pdGVtX2ljb25f
b2JqZWN0X2FkZChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBFdmFzCiAgICAgRVdLX0hJ
U1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgV2ViQ29yZTo6SW1hZ2Uq
IGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvcmUtPnVybCgpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoImljb24gaXMg
TlVMTC4iKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3VyZmFjZSA9IGljb24t
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIGV3a191dGlsX2ltYWdl
X2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoY2FudmFzLCBzdXJmYWNlKTsKKyAgICBXZWJDb3JlOjpO
YXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlID8gZXdrX3V0aWxfaW1hZ2VfZnJvbV9j
YWlyb19zdXJmYWNlX2FkZChjYW52YXMsIG5hdGl2ZUltYWdlLT5zdXJmYWNlKCkpIDogMDsKIH0K
IAogRWluYV9Cb29sIGV3a19oaXN0b3J5X2l0ZW1fcGFnZV9jYWNoZV9leGlzdHMoY29uc3QgRXdr
X0hpc3RvcnlfSXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAK
aW5kZXggMDBlOTdiZTg3ZGQxODI0NjI0OGZmZDA4YmM1NTE4ZDFjMDc1NWE4Zi4uNzg2NmNkZTQ3
YjFlMjE1MGVjNjFjMjlkYjFlZmUyNWMyNmU4ZjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19zZXR0aW5ncy5jcHAKQEAgLTIyNSw3ICsyMjUsOCBAQCBjYWlyb19zdXJmYWNlX3QqIGV3a19z
ZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hhciogdXJsKQog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gaWNvbi0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJ
bWFnZSA9IGljb24tPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIG5h
dGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKSA6IDA7CiB9CiAKIEV2YXNfT2JqZWN0
KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29uc3QgY2hhciog
dXJsLCBFdmFzKiBjYW52YXMpCkBAIC0yMzUsMTUgKzIzNiwxNCBAQCBFdmFzX09iamVjdCogZXdr
X3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9vYmplY3RfZ2V0KGNvbnN0IGNoYXIqIHVybCwg
RXZhcyogYwogCiAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFdlYkNvcmU6OkltYWdlKiBpY29uID0gV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygp
LCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZTsKIAogICAgIGlmICghaWNvbikgewogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIs
IHVybCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHN1cmZhY2UgPSBpY29uLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIHJldHVybiBld2tfdXRpbF9pbWFnZV9m
cm9tX2NhaXJvX3N1cmZhY2VfYWRkKGNhbnZhcywgc3VyZmFjZSk7CisgICAgV2ViQ29yZTo6TmF0
aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UgPSBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworICAgIHJldHVybiBuYXRpdmVJbWFnZSA/IGV3a191dGlsX2ltYWdlX2Zyb21fY2Fp
cm9fc3VyZmFjZV9hZGQoY2FudmFzLCBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpKSA6IDA7CiB9CiAK
IHZvaWQgZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9jYXBhY2l0eV9zZXQodW5zaWduZWQgbWlu
RGVhZENhcGFjaXR5LCB1bnNpZ25lZCBtYXhEZWFkQ2FwYWNpdHksIHVuc2lnbmVkIHRvdGFsQ2Fw
YWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCmluZGV4IDhiODAyZTlmNzUxN2VhYzkxODAyNzg1ZWQ5MmFkODI0MTVhYWI2NDcuLjdiY2Qz
M2Y5Yzk5ZmJiNzFlOTA1ZWUyNjk2ZjU1ZDIxYWI3ZjJkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC03MSwxMCArNzEsMTEgQEAg
c3RhdGljIGJvb2wgZGVjb2RlSW1hZ2UoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBHUmVmUHRy
PEdka1BpeGJ1Zj4mIHBpeGJ1ZikKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgTmF0aXZlSW1hZ2VDYWly
byogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAgIHBpeGJ1ZiA9
IGFkb3B0R1JlZihnZGtfcGl4YnVmX2dldF9mcm9tX3N1cmZhY2Uoc3VyZmFjZSwgMCwgMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0
KHN1cmZhY2UpKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>