<?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>66433</bug_id>
          
          <creation_ts>2011-08-17 16:51:27 -0700</creation_ts>
          <short_desc>[chromium] Remove LayerRendererChromium references from TiledLayerChromium</short_desc>
          <delta_ts>2011-08-23 11:27:41 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66430</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>alokp</cc>
    
    <cc>enne</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452732</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-17 16:51:27 -0700</bug_when>
    <thetext>LayerChromium-derived classes should not have direct access to LayerRendererChromium, as it lives on the compositor thread.  So, refactor it so it doesn&apos;t need it.  This also requires updating all of the texture updaters to not cache memeber pointers to GraphicsContext3D and instead take them as function args when needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454109</commentid>
    <comment_count>1</comment_count>
      <attachid>104571</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-19 14:49:35 -0700</bug_when>
    <thetext>Created attachment 104571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454237</commentid>
    <comment_count>2</comment_count>
      <attachid>104571</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-19 17:32:43 -0700</bug_when>
    <thetext>Comment on attachment 104571
Patch

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

I gotta run, but I still owe you this review.

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:97
&gt; +    ImageLayerTextureUpdater(bool useMapTexSubImage)

guess what keyword this constructor now gets!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454266</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-19 18:31:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 104571 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104571&amp;action=review
&gt; 
&gt; I gotta run, but I still owe you this review.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:97
&gt; &gt; +    ImageLayerTextureUpdater(bool useMapTexSubImage)
&gt; 
&gt; guess what keyword this constructor now gets!

I need to figure out how to hook this up in the style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454834</commentid>
    <comment_count>4</comment_count>
      <attachid>104721</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-22 13:12:07 -0700</bug_when>
    <thetext>Created attachment 104721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454836</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-22 13:12:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=104721) [details]
&gt; Patch

Now with more &apos;explicit&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454855</commentid>
    <comment_count>6</comment_count>
      <attachid>104721</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-22 13:31:47 -0700</bug_when>
    <thetext>Comment on attachment 104721
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:132
&gt; +    m_textureUpdater = LayerTextureUpdaterBitmap::create(ContentLayerPainter::create(m_owner), host-&gt;contextSupportsMapSub());

contextSuportsMapSub is moving to the LayerRendererSide. Is there any way to not need this at construction time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454860</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-22 13:38:40 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 104721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104721&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:132
&gt; &gt; +    m_textureUpdater = LayerTextureUpdaterBitmap::create(ContentLayerPainter::create(m_owner), host-&gt;contextSupportsMapSub());
&gt; 
&gt; contextSuportsMapSub is moving to the LayerRendererSide. Is there any way to not need this at construction time?

My expectation was that we would have an explicit init phase where we queried the graphics context for things like max texture sizes and support for features.  So, we would have those settings on both sides.  You&apos;re going to need to know those things before the first commit anyway.

Is this not feasible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454862</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-22 13:39:25 -0700</bug_when>
    <thetext>We don&apos;t need to know if we have mapSub or not until updateCompositorResources()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454964</commentid>
    <comment_count>9</comment_count>
      <attachid>104721</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-22 14:59:21 -0700</bug_when>
    <thetext>Comment on attachment 104721
Patch

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

Looks like a step in the right direction.

For max texture size it makes sense to grab that information during initialization and stash it. To be truly exhaustive, we should be refetching this on every lost context, since the new context could have a different limit (if the user changed their gfx driver on win7, or they switched to some other output device or whatever).  For mapSub support and bestTextureFormat, we shouldn&apos;t need that until upload time so I wonder if we can do something fancier.  No great harm in stashing it for now, though.

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdaterCanvas.h:55
&gt; +    LayerTextureUpdaterCanvas(PassOwnPtr&lt;LayerPainterChromium&gt;);

harro one-arg constructor~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455520</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-23 11:09:08 -0700</bug_when>
    <thetext>Committed r93615: &lt;http://trac.webkit.org/changeset/93615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455535</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-23 11:27:41 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 104721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104721&amp;action=review
&gt; 
&gt; Looks like a step in the right direction.
&gt; 
&gt; For max texture size it makes sense to grab that information during initialization and stash it. To be truly exhaustive, we should be refetching this on every lost context, since the new context could have a different limit (if the user changed their gfx driver on win7, or they switched to some other output device or whatever).  For mapSub support and bestTextureFormat, we shouldn&apos;t need that until upload time so I wonder if we can do something fancier.  No great harm in stashing it for now, though.

I&apos;d categorize these with scroll offset, as properties we can pull from the compositor thread when requesting a frame.  And, if any of these properties change, we can just invalidate the world.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdaterCanvas.h:55
&gt; &gt; +    LayerTextureUpdaterCanvas(PassOwnPtr&lt;LayerPainterChromium&gt;);
&gt; 
&gt; harro one-arg constructor~~~~~~

/me mumbles.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104571</attachid>
            <date>2011-08-19 14:49:35 -0700</date>
            <delta_ts>2011-08-22 13:12:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66433-20110819144934.patch</filename>
            <type>text/plain</type>
            <size>30816</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjdjYzRmMTY0N2I2YTNj
NmNmNTA2OTI5ODRjZTI3OTAyMThmZmQ5Li43MWYwMmU3OTFhYTZlMjE4Mjk5NjZkZWFiZmMxZjJi
OTk2YmQ0NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDgtMTkgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92
ZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gcmVmZXJlbmNlcyBmcm9tIFRpbGVkTGF5ZXJDaHJvbWl1
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY0MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIFVwZGF0ZWQgVGlsZWRMYXllckNocm9taXVt
IGFuZCB0aGUgdGV4dHVyZSB1cGRhdGVyIGNsYXNzZXMgdG8gbm90CisgICAgICAgIGFjY2VzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW0gb3IgY2FjaGUgR3JhcGhpY3NDb250ZXh0M0QuIFNvbWUgc2V0
dGluZ3MKKyAgICAgICAgbGlrZSBtYXggdGV4dHVyZSBzaXplIHdlcmUgbW92ZWQgZnJvbSBMYXll
clJlbmRlcmVyQ2hyb21pdW0gdG8KKyAgICAgICAgQ0NMYXllclRyZWVIb3N0IGluIG9yZGVyIHRv
IGZhY2lsaXRhdGUgdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICBMYXllclRleHR1cmVVcGRh
dGVyU2tQaWN0dXJlIGhhcyBiZWVuICNpZmRlZidkIHRvIG9ubHkgd29yayB3aGVuIHRoZQorICAg
ICAgICBjb21wb3NpdG9yIGlzIG5vdCB0aHJlYWRlZC4gSXQgd2lsbCBuZWVkIHRvIGJlIHJlZmFj
dG9yZWQgbW9yZSBpbgorICAgICAgICBvcmRlciB0byBub3Qgb3duIGdyYXBoaWNzIHJlc291cmNl
cyBmcm9tIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldExheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6TGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpMYXllclRleHR1
cmVVcGRhdGVyQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJC
aXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyQml0
bWFwOjpMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQ
aWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6
OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRl
eHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6bGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHRTdXBwb3J0c01hcFN1Yik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Om1heFRleHR1cmVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVzdFRleHR1cmVGb3JtYXQpOgorCiAyMDExLTA4LTE4ICBB
ZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBS
ZWZhY3RvciB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHRvIHRha2UgYW4gZXhwbGljaXQgR3Jh
cGhpY3NDb250ZXh0M0QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA4
ODEyZGY2MWNiYWE5ZGMzY2Y1NTViMzg2MzA1ZTZlMzk5NWU1ZWRkLi41OWMyY2NhMWQ5MmNkM2Fl
ZjYzYTQ3MDFlMDViZDFmYmFhY2I4NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtQnJpZGdlLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk0LDcgKzk1
LDYgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiB2b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiB7CiAgICAgQVNT
RVJUKGRyYXdzQ29udGVudCgpKTsKLSAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKIAogICAg
IHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKQEAgLTExOCwxOCArMTE4LDE4IEBA
IGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fb3duZXIgJiYgbV9vd25lci0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNocm9t
aXVtOjpkcmF3c0NvbnRlbnQoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpj
cmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7Ci0gICAg
aWYgKG1fdGV4dHVyZVVwZGF0ZXIpCi0gICAgICAgIHJldHVybjsKLQorI2lmICFVU0UoVEhSRUFE
RURfQ09NUE9TSVRJTkcpCiAjaWYgVVNFKFNLSUEpCi0gICAgaWYgKGxheWVyUmVuZGVyZXIoKS0+
c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpIHsKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRl
ciA9IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyQ29u
dGV4dCgpLCBDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9vd25lciksIGxheWVyUmVuZGVy
ZXIoKS0+c2tpYUNvbnRleHQoKSk7CisgICAgaWYgKGhvc3QtPnNldHRpbmdzKCkuYWNjZWxlcmF0
ZVBhaW50aW5nKSB7CisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBMYXllclRleHR1cmVVcGRh
dGVyU2tQaWN0dXJlOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fb3duZXIp
LCBob3N0LT5sYXllclJlbmRlcmVyKCktPnNraWFDb250ZXh0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2VuZGlmCi0gICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0
ZXJCaXRtYXA6OmNyZWF0ZShsYXllclJlbmRlcmVyQ29udGV4dCgpLCBDb250ZW50TGF5ZXJQYWlu
dGVyOjpjcmVhdGUobV9vd25lciksIGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dFN1cHBvcnRzTWFw
U3ViKCkpOworI2VuZGlmIC8vIFNLSUEKKyNlbmRpZiAvLyAhVEhSRUFERURfQ09NUE9TSVRJTkcK
KworICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpjcmVh
dGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fb3duZXIpLCBob3N0LT5jb250ZXh0U3Vw
cG9ydHNNYXBTdWIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IGEwZTk2YzM0YTIwZDU0MmExZGE2ZTg3MTYwNTU4NGMwZjkxZWVjODYuLmJhYzQxZjljODhh
NGYwOTEzMWExNGI2OTRhNGZhYjA0OTJkOWY1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFudXBSZXNvdXJjZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0Kik7
CiAgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KIAogICAgIE93blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyPiBtX3RleHR1cmVVcGRhdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggYTExMWEyYzczY2I4N2NlZTc0OWYwZjYxMmRlYjRlMTQxYTRjYjc2Yi4uMDJi
Y2RkYmZhZjU0MDY2N2ZmYTczM2NmMzI4NDQ3ZTUyM2NlNzNjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCkBAIC0zNCwyMiArMzQsMjIgQEAKIAogI2luY2x1ZGUgIkltYWdlTGF5
ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIgotI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIk1h
bmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI+IGNy
ZWF0ZShib29sIHVzZU1hcFRleFN1YkltYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoY29udGV4dCwgdXNlTWFwVGV4U3ViSW1h
Z2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIodXNlTWFwVGV4U3ViSW1hZ2UpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBt
X3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNv
bnRleHQoKSk7CisgICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQpOwogCiAgICAg
ICAgIC8vIFNvdXJjZSByZWN0IHNob3VsZCBuZXZlciBnbyBvdXRzaWRlIHRoZSBpbWFnZSBwaXhl
bHMsIGV2ZW4gaWYgdGhpcwogICAgICAgICAvLyBpcyByZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4
dHVyZSBleHRlbmRzIG91dHNpZGUgdGhlIGltYWdlLgpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5tb3ZlKGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9u
KCkgLSBzb3VyY2VSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0
U2l6ZShjbGlwcGVkU291cmNlUmVjdC5zaXplKCkpOwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2Uu
dXBsb2FkKG1faW1hZ2UucGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwg
Y2xpcHBlZERlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCgpKTsKKyAgICAgICAg
bV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBw
ZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0
KTsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSkKQEAgLTk0LDkgKzk0LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCi0gICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcihjb250
ZXh0KQotICAgICAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgSW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyKGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgICAgIDog
bV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKICAgICB7CiAgICAgfQogCkBAIC0xNDcs
OCArMTQ2LDYgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBj
b250ZW50cykKIAogdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KCkKIHsKLSAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLQogICAgIGlmICghbV9kaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFn
ZShtX2NvbnRlbnRzLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKICAgICAgICAgdXBk
YXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKQEAgLTE4MiwxMCArMTc5LDkgQEAgYm9vbCBJ
bWFnZUxheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
dGVudHMgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKIH0KIAotdm9pZCBJ
bWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQordm9pZCBJ
bWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVl
SG9zdCogaG9zdCkKIHsKLSAgICBpZiAoIW1fdGV4dHVyZVVwZGF0ZXIpCi0gICAgICAgIG1fdGV4
dHVyZVVwZGF0ZXIgPSBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShsYXllclJlbmRl
cmVyQ29udGV4dCgpLCBsYXllclJlbmRlcmVyKCktPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKTsK
KyAgICBtX3RleHR1cmVVcGRhdGVyID0gSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
aG9zdC0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDk5NTMzODA5OTNkY2MyYTkwMmY1YzZmMDkxZWJlNTM1NWNjYzFiMTcu
LmQ2OTc5MTMxYjU4OGQ1MjI4MzM5YWI1M2VhZjBiMDNiOTgxMzdmZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VMYXll
ckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwogCiAgICAgdmlydHVhbCB2
b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVw
ZGF0ZXJJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihj
b25zdCBDQ0xheWVyVHJlZUhvc3QqKTsKICAgICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdP
cHRpb24pOwogCiAgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
cigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA4ZTNlMTc4MDAyZTA3YjU2ZDdi
MDdjMWQwNjM5MmNmYTE5ODI0MDJkLi4wNGYyOWEzODdhNTgxZDU2YWRkOTE5N2NjODE5ZmZjMjk1
ZTgyMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTA3LDYgKzEwNywxNCBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBy
ZW5kZXJlcikKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQogICAgIG1fbGF5ZXJS
ZW5kZXJlciA9IHJlbmRlcmVyOworCisgICAgLy8gRklYTUU6IE9uY2Ugc2V0TGF5ZXJSZW5kZXJl
ciBpcyBubyBsb25nZXIgbmVlZGVkIG9uIHRoZSBMYXllckNocm9taXVtCisgICAgLy8gdHJlZSwg
bW92ZSB0aGlzIGNhbGwgdG8gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwYWludExheWVyQ29udGVu
dHMuCisgICAgc2V0TGF5ZXJUcmVlSG9zdChyZW5kZXJlci0+b3duZXIoKSk7Cit9CisKK3ZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKQorewogfQog
CiB2b2lkIExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApp
bmRleCAyNWI0ZTI2MjFhZjIyMTMxZjVjNzg1YmY0ZTJkNTljMDg3ZDYxM2Y4Li40MWRkM2NhODNi
OGNlOTE5ZjJhYzM5ZTM3YWQyMzY0YzgwNGZhZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC01
Myw2ICs1Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW07CiAKQEAgLTE1OCw2ICsxNTksOCBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUUsIHJlcGxhY2Ugd2l0aCBDQ0xheWVyVHJlZUhvc3QuCiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKKwogICAgIHZvaWQgc2V0
T3duZXIoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikgeyBtX293bmVyID0gb3duZXI7IH0K
IAogICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyKSB7IG1fcmVw
bGljYUxheWVyID0gbGF5ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CmluZGV4IDI1MmMyYjA3M2Y2MjQwZWE0YzBhNWEyMmQxMjVhNjFlYWI2OGJhM2IuLjQyMGFjMDVj
OTJjMjYxNDBhZDAzZjUxNjgzMTVjOWM2MmIyNzVhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVy
ZVVwZGF0ZXJDYW52YXMuaCIKICNpbmNsdWRlICJOb25Db21wb3NpdGVkQ29udGVudEhvc3QuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKQEAgLTUzOCwxMSArNTM3LDYgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VUZXh0dXJlcygpCiAgICAgbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX2NvbnRleHQuZ2V0
KCkpOwogfQogCi1HQzNEZW51bSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlc3RUZXh0dXJlRm9y
bWF0KCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6YmVzdFRleHR1cmVGb3JtYXQoY29u
dGV4dCgpKTsKLX0KLQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdl
ZCgpCiB7CiAgICAgaWYgKG1fY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggYmUyM2Q1MmI2MjdjNjM1ZjU3OTgxNTk5MTg3MmUxM2I3NWZmNjNiYS4uMTRiZmQ1
MjBiM2IxNjkzOTNmYTA0YjA5NGExNTVlZWVjNmU2ODQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTE1Myw4ICsxNTMsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dExheWVyUmVuZGVyZXJSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSopOwogCi0gICAgR0MzRGVudW0g
YmVzdFRleHR1cmVGb3JtYXQoKTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBz
X2luUGFpbnRMYXllckNvbnRlbnRzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggOTc2ZDc5ZWM5OTNiM2ZhZTkyNTgxYmUyM2UzOGEzZWI0ZDFjNmY0NC4uNWM2ZWIy
MGEzYzgxYzVmNWJjMmU2NWFkOWU1MzJjMjRhZDRhYzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNz
IExheWVyVGV4dHVyZVVwZGF0ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyVGV4
dHVyZVVwZGF0ZXIpOwogcHVibGljOgorICAgIExheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KICAg
ICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICBlbnVtIE9yaWVudGF0
aW9uIHsKQEAgLTYyLDE4ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgZm9ybWF0IGlz
IFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRl
clRleGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChNYW5hZ2Vk
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBMYXllclRleHR1cmVVcGRhdGVy
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KSA6IG1fY29udGV4dChjb250ZXh0KSB7IH0KLQot
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
OyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gVGhlIGdyYXBoaWNzIGNvbnRleHQgd2l0aCB3aGljaCB0
byB1cGRhdGUgdGV4dHVyZXMuCi0gICAgLy8gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB0ZXh0dXJl
cyBhcmUgZWl0aGVyIGNyZWF0ZWQgaW4gdGhlIHNhbWUgY29udGV4dAotICAgIC8vIG9yIHNoYXJl
ZCB3aXRoIHRoaXMgY29udGV4dC4KLSAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0Owor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIE1h
bmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKaW5kZXggMTAxMjU1OWNiYWU3MmY3ODNm
ZmIwMDhiMmQ5Y2YzOWQ5ZmE2MDZkMy4uMzBjMThlN2U3NzNiZmQzMGNlMjgzZGEzYWQ2NDdkZDdm
YzBmMDQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAK
QEAgLTQ2LDkgKzQ2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1MYXllclRleHR1cmVV
cGRhdGVyQ2FudmFzOjpMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZXh0KQotICAgICwgbV9wYWludGVyKHBhaW50ZXIp
CitMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCisgICAgOiBtX3BhaW50ZXIo
cGFpbnRlcikKIHsKIH0KIApAQCAtNjIsMTMgKzYxLDEzIEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhczo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEluCiAgICAgbV9jb250ZW50UmVjdCA9IGNvbnRlbnRSZWN0OwogfQogCi1QYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK1Bhc3NPd25QdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlckJpdG1hcD4gTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6Y3JlYXRlKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3Vi
SW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRleHR1cmVVcGRhdGVyQml0
bWFwKGNvbnRleHQsIHBhaW50ZXIsIHVzZU1hcFRleFN1YkltYWdlKSk7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKHBhaW50ZXIsIHVzZU1hcFRleFN1
YkltYWdlKSk7CiB9CiAKLUxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJCaXRtYXAoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCi0gICAgOiBM
YXllclRleHR1cmVVcGRhdGVyQ2FudmFzKGNvbnRleHQsIHBhaW50ZXIpCitMYXllclRleHR1cmVV
cGRhdGVyQml0bWFwOjpMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgOiBM
YXllclRleHR1cmVVcGRhdGVyQ2FudmFzKHBhaW50ZXIpCiAgICAgLCBtX3RleFN1YkltYWdlKHVz
ZU1hcFRleFN1YkltYWdlKQogewogfQpAQCAtOTQsMjMgKzkzLDI1IEBAIHZvaWQgTGF5ZXJUZXh0
dXJlVXBkYXRlckJpdG1hcDo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zCiAgICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNv
bnRlbnRSZWN0KTsKIH0KIAotdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjp1cGRhdGVU
ZXh0dXJlUmVjdChNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJC
aXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2Vy
KCZtX2NhbnZhcyk7CiAKLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0KCkpOwotICAg
IG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KCkpOworICAgIHRl
eHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQpOworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxv
Y2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1
cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKIH0KIAorI2lmICFVU0UoVEhSRUFERURfQ09NUE9TSVRJ
TkcpCiAjaWYgVVNFKFNLSUEpCi1QYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1
cmU+IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgR3JD
b250ZXh0KiBza2lhQ29udGV4dCkKK1Bhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGlj
dHVyZT4gTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIEdyQ29udGV4dCogc2tpYUNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKGNvbnRl
eHQsIHBhaW50ZXIsIHNraWFDb250ZXh0KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXll
clRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKHBhaW50ZXIsIHNraWFDb250ZXh0KSk7CiB9CiAKLUxh
eWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21p
dW0+IHBhaW50ZXIsIEdyQ29udGV4dCogc2tpYUNvbnRleHQpCi0gICAgOiBMYXllclRleHR1cmVV
cGRhdGVyQ2FudmFzKGNvbnRleHQsIHBhaW50ZXIpCitMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0
dXJlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIsIEdyQ29udGV4dCogc2tpYUNvbnRleHQpCisgICAgOiBMYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzKHBhaW50ZXIpCiAgICAgLCBtX3NraWFDb250ZXh0KHNraWFDb250
ZXh0KQorICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX2NyZWF0ZUZyYW1lQnVmZmVyKGZhbHNl
KQogICAgICwgbV9mYm8oMCkKICAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCkBAIC0xNDUs
OCArMTQ2LDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6cHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjCiAgICAgbV9waWN0dXJlLmVuZFJl
Y29yZGluZygpOwogfQogCi12b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OnVwZGF0
ZVRleHR1cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRl
clNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbXBvc2l0
b3JDb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRleHQg
fHwgbV9jb250ZXh0ID09IGNvbXBvc2l0b3JDb250ZXh0KTsKKyAgICBtX2NvbnRleHQgPSBjb21w
b3NpdG9yQ29udGV4dDsKKwogICAgIGlmIChtX2NyZWF0ZUZyYW1lQnVmZmVyKSB7CiAgICAgICAg
IGRlbGV0ZUZyYW1lQnVmZmVyKCk7CiAgICAgICAgIGNyZWF0ZUZyYW1lQnVmZmVyKCk7CkBAIC0y
NTAsNyArMjU0LDcgQEAgYm9vbCBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjcmVhdGVG
cmFtZUJ1ZmZlcigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYgLy8gU0tJQQorI2VuZGlm
IC8vICFUSFJFQURFRF9DT01QT1NJVElORwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2Fu
dmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmgKaW5kZXggODdiMWEwZjhmMzNlYWM3YjMzMGM4NmFhMmFiZjRi
NmEyNzQ5YWUwOC4uYWUyYmQwMDRhMjUzOTRlMTAyZDMyMWM1N2VkODNhNzRhMjViNTgxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaApAQCAtNTEsMTEgKzUxLDgg
QEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIg
d2l0aCBhbiBpbnRlcm5hbCBjYW52YXMuCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMpOwotcHVibGljOgotICAgIHZpcnR1YWwgfkxheWVy
VGV4dHVyZVVwZGF0ZXJDYW52YXMoKSB7IH0KLQogcHJvdGVjdGVkOgotICAgIExheWVyVGV4dHVy
ZVVwZGF0ZXJDYW52YXMoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPik7CisgICAgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyhQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPik7CiAKICAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogICAgIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQpAQCAtNzAsMzgg
KzY3LDQwIEBAIHByaXZhdGU6CiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXApOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCos
IFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKLSAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyQml0bWFwKCkgeyB9CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcD4gY3JlYXRlKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKIAogICAg
IHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVV
cGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGV4dHVyZVJlY3QoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6
Ci0gICAgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcChHcmFwaGljc0NvbnRleHQzRCosIFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKKyAg
ICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21p
dW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKICAgICBQbGF0Zm9ybUNhbnZhcyBtX2NhbnZh
czsKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIAorI2lmICFV
U0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCiAjaWYgVVNFKFNLSUEpCiBjbGFzcyBMYXllclRleHR1
cmVVcGRhdGVyU2tQaWN0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1
cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBHckNvbnRleHQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRleHR1cmVV
cGRhdGVyU2tQaWN0dXJlPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4s
IEdyQ29udGV4dCopOwogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUo
KTsKIAogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXll
clRleHR1cmVVcGRhdGVyOjpUb3BEb3duT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBs
ZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAog
cHJpdmF0ZToKLSAgICBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIEdyQ29udGV4dCopOworICAg
IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4sIEdyQ29udGV4dCopOwogICAgIHZvaWQgZGVsZXRlRnJhbWVCdWZmZXIoKTsKICAgICBi
b29sIGNyZWF0ZUZyYW1lQnVmZmVyKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQo
KSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIEdyQ29udGV4dCogbV9za2lhQ29udGV4dDsg
Ly8gU0tJQSBncmFwaGljcyBjb250ZXh0LgorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRl
eHQ7CiAKICAgICBib29sIG1fY3JlYXRlRnJhbWVCdWZmZXI7IC8vIE5lZWQgdG8gY3JlYXRlIEZC
TyBpZiB0cnVlLgogICAgIFNrUGljdHVyZSBtX3BpY3R1cmU7IC8vIFJlY29yZGluZyBjYW52YXMu
CkBAIC0xMTEsOCArMTEwLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U2tDYW52YXM+IG1fY2Fu
dmFzOyAvLyBHUFUgYWNjZWxlcmF0ZWQgY2FudmFzLgogfTsKICNlbmRpZiAvLyBTS0lBCisjZW5k
aWYgLy8gIVRIUkVBREVEX0NPTVBPU0lUSU5HCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjZW5kaWYgLy8gTGF5ZXJUZXh0
dXJlVXBkYXRlckNhbnZhc19oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IGJmZDA4YzU1NGJlNzczZWIzYzM0YWU4ZGVjZmNjNGVjMzVhNjhiYTcuLjJmZDY2N2Q3NDNmMzg4
NWY0OGZmMmZlY2M4ZTAzODNiNTVjZGYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtOTIsMTIgKzkyLDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmNsZWFudXBS
ZXNvdXJjZXMoKQogICAgIG1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBs
YXllclJlbmRlcmVyKQotewotICAgIExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIobGF5
ZXJSZW5kZXJlcik7Ci0gICAgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwotfQotCiB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogewogICAgIGlm
ICghbV90aWxlcikKQEAgLTE0MCwxNyArMTM0LDE2IEBAIGJvb2wgVGlsZWRMYXllckNocm9taXVt
OjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiAhbV9za2lwc0RyYXc7CiB9CiAKLXZv
aWQgVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKK3ZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsK
ICAgICBpZiAobV90aWxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3JlYXRlVGV4dHVyZVVw
ZGF0ZXJJZk5lZWRlZCgpOworICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGhvc3QpOwogCi0gICAg
bV90ZXh0dXJlRm9ybWF0ID0gbGF5ZXJSZW5kZXJlcigpLT5iZXN0VGV4dHVyZUZvcm1hdCgpOwor
ICAgIG1fdGV4dHVyZUZvcm1hdCA9IGhvc3QtPmJlc3RUZXh0dXJlRm9ybWF0KCk7CiAgICAgbV90
ZXh0dXJlT3JpZW50YXRpb24gPSB0ZXh0dXJlVXBkYXRlcigpLT5vcmllbnRhdGlvbigpOwogICAg
IG1fc2FtcGxlZFRleGVsRm9ybWF0ID0gdGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVsRm9y
bWF0KG1fdGV4dHVyZUZvcm1hdCk7Ci0KICAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6
OmNyZWF0ZSgKICAgICAgICAgSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6
ZSksCiAgICAgICAgIGlzUm9vdExheWVyKCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMgOiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKQEAgLTIwOCw3ICsy
MDEsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsKICAgICAgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCkpOwogCi0gICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0
dXJlUmVjdCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAg
ICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRpbGUtPnRl
eHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICAgICAgdGlsZS0+Y2xlYXJE
aXJ0eSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzI3LDcgKzMyMCw3IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjppbnZhbGlkYXRlVGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkKIHsKLSAgICBpZiAoY29udGVudFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tp
cHNEcmF3KQorICAgIGlmICghbV90aWxlciB8fCBjb250ZW50UmVjdC5pc0VtcHR5KCkgfHwgbV9z
a2lwc0RyYXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdGlsZXItPmdyb3dMYXllclRvQ29u
dGFpbihjb250ZW50UmVjdCk7CkBAIC0zNzYsNiArMzY5LDggQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAK
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpCiB7CisgICAgQVNTRVJUKG1fdGlsZXIpOworCiAgICAgbV9za2lwc0RyYXcg
PSBmYWxzZTsKIAogICAgIGlmIChjb250ZW50UmVjdC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmgKaW5kZXggYmQ1M2UxZjYwNTM2NTlkODZhMGI2NTY2YzNmZWI0ZmVkNjJh
MDU4Ny4uNTg1NjkxODE0NDA2OTNmNjBmNmRkNmIyOTljYmI5ZGM4OWQxYTQ1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgdm9pZCB1cGRhdGVUaWxlU2l6ZUFu
ZFRpbGluZ09wdGlvbigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVy
SWZOZWVkZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNv
bnN0IENDTGF5ZXJUcmVlSG9zdCopID0gMDsKICAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0IGludmFsaWRhdGlv
bnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KQEAgLTc2LDcg
Kzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwogCiAgICAgdm9pZCBjcmVhdGVUaWxl
cklmTmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDFmM2I5Nzk3OTAwMDQ3YzMzZmY0YzM2
YTBlMmViMWYwOThlMjJmMzAuLjlmMzU5MThkOGVhNmI2MDk0NzYxYjI0MzEzMWU3NGYwNjQ2ZDky
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RDb21taXR0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgiCkBAIC00Niw2ICs0Nyw4IEBAIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0
PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVuCiAK
IENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCog
Y2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1fcmVjcmVhdGluZ0dy
YXBoaWNzQ29udGV4dChmYWxzZSkKKyAgICAsIG1fbWF4VGV4dHVyZVNpemUoMCkKKyAgICAsIG1f
Y29udGV4dFN1cHBvcnRzTWFwU3ViKGZhbHNlKQogICAgICwgbV9hbmltYXRpbmcoZmFsc2UpCiAg
ICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCkBAIC02MCw2ICs2
MywxMiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAgaWYgKCFtX2xh
eWVyUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIEZJWE1FOiBJbiB0
aGUgdGhyZWFkZWQgY2FzZSwgdGhlc2UgdmFsdWVzIHdpbGwgbmVlZCB0byBiZSBpbml0aWFsaXpl
ZAorICAgIC8vIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFuIG1fbGF5ZXJSZW5kZXJlci4KKyAgICBt
X21heFRleHR1cmVTaXplID0gbV9sYXllclJlbmRlcmVyLT5tYXhUZXh0dXJlU2l6ZSgpOworICAg
IG1fYmVzdFRleHR1cmVGb3JtYXQgPSBQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdCht
X2xheWVyUmVuZGVyZXItPmNvbnRleHQoKSk7CisgICAgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIg
PSBtX2xheWVyUmVuZGVyZXItPmNvbnRleHRTdXBwb3J0c01hcFN1YigpOworCiAgICAgbV9yb290
TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1f
cm9vdExheWVyLT5zZXROYW1lKCJyb290IGxheWVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IGIwN2EyNWZjYTYyY2JjYjVhZGNjYTkxODljYWJlYWRkM2U1ZTBkOTkuLjhjNDE5
NzZjMjg1OWQ3Y2E3ODgzZjY5YmFiNWQ3ZGMzOTRkZTAzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDTGF5ZXJUcmVlSG9zdF9oCiAj
ZGVmaW5lIENDTGF5ZXJUcmVlSG9zdF9oCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbWl0
dGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbFByb3h5LmgiCkBAIC0xMTMs
MTAgKzExNCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gVGVtcG9yYXJ5IGhvbWUgZm9yIHRoZSBub24t
dGhyZWFkZWQgcmVuZGVyaW5nIHBhdGguCiAjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykK
ICAgICB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCk7CisgICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgp
OyB9CiAjZW5kaWYKIAogICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCogbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0KCkgY29uc3QgeyByZXR1cm4gbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Qu
Z2V0KCk7IH0KIAorICAgIGJvb2wgY29udGV4dFN1cHBvcnRzTWFwU3ViKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0U3VwcG9ydHNNYXBTdWI7IH0KKyAgICBpbnQgbWF4VGV4dHVyZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX21heFRleHR1cmVTaXplOyB9CisgICAgR0MzRGVudW0gYmVzdFRleHR1
cmVGb3JtYXQoKSB7IHJldHVybiBtX2Jlc3RUZXh0dXJlRm9ybWF0OyB9CisKIHByb3RlY3RlZDoK
ICAgICBDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NTZXR0
aW5ncyYpOwogCkBAIC0xMzQsNiArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOwogI2VuZGlmCiAKKyAgICBpbnQgbV9t
YXhUZXh0dXJlU2l6ZTsKKyAgICBHQzNEZW51bSBtX2Jlc3RUZXh0dXJlRm9ybWF0OworICAgIGJv
b2wgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWI7CisKICAgICBib29sIG1fYW5pbWF0aW5nOwogCiAg
ICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBtX2NsaWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104721</attachid>
            <date>2011-08-22 13:12:07 -0700</date>
            <delta_ts>2011-08-22 14:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66433-20110822131206.patch</filename>
            <type>text/plain</type>
            <size>30788</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTkxZmFhYjViYTczZjgx
ZGI5ZjBhMjQ0NjdkNTQ2ZGUwMzUzMjNiLi4xYzhmNWVhNTQzNWZkNTFiYzlmZjY3N2Y2ZDBjNDVm
NmVmOWFmZTc4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDgtMTkgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92
ZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gcmVmZXJlbmNlcyBmcm9tIFRpbGVkTGF5ZXJDaHJvbWl1
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY0MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIFVwZGF0ZWQgVGlsZWRMYXllckNocm9taXVt
IGFuZCB0aGUgdGV4dHVyZSB1cGRhdGVyIGNsYXNzZXMgdG8gbm90CisgICAgICAgIGFjY2VzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW0gb3IgY2FjaGUgR3JhcGhpY3NDb250ZXh0M0QuIFNvbWUgc2V0
dGluZ3MKKyAgICAgICAgbGlrZSBtYXggdGV4dHVyZSBzaXplIHdlcmUgbW92ZWQgZnJvbSBMYXll
clJlbmRlcmVyQ2hyb21pdW0gdG8KKyAgICAgICAgQ0NMYXllclRyZWVIb3N0IGluIG9yZGVyIHRv
IGZhY2lsaXRhdGUgdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICBMYXllclRleHR1cmVVcGRh
dGVyU2tQaWN0dXJlIGhhcyBiZWVuICNpZmRlZidkIHRvIG9ubHkgd29yayB3aGVuIHRoZQorICAg
ICAgICBjb21wb3NpdG9yIGlzIG5vdCB0aHJlYWRlZC4gSXQgd2lsbCBuZWVkIHRvIGJlIHJlZmFj
dG9yZWQgbW9yZSBpbgorICAgICAgICBvcmRlciB0byBub3Qgb3duIGdyYXBoaWNzIHJlc291cmNl
cyBmcm9tIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldExheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6TGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpMYXllclRleHR1
cmVVcGRhdGVyQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJC
aXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyQml0
bWFwOjpMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQ
aWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6
OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRl
eHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6bGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNvbnRleHRTdXBwb3J0c01hcFN1Yik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Om1heFRleHR1cmVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVzdFRleHR1cmVGb3JtYXQpOgorCiAyMDExLTA4LTIyICBO
YXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5sb2FkIGV2ZW50
cyBjYW4gY3Jhc2ggdXMgd2hlbiB0aGV5IGJsYW5rIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDg4MTJkZjYxY2JhYTlkYzNjZjU1NWIzODYzMDVlNmUzOTk1ZTVl
ZGQuLjU5YzJjY2ExZDkyY2QzYWVmNjNhNDcwMWUwNWJkMWZiYWFjYjg0ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJM
YXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyQ2Fu
dmFzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3QuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtOTQsNyArOTUsNiBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjbGVh
bnVwUmVzb3VyY2VzKCkKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJ
ZkRpcnR5KCkKIHsKICAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOwotICAgIEFTU0VSVChsYXll
clJlbmRlcmVyKCkpOwogCiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIApA
QCAtMTE4LDE4ICsxMTgsMTggQEAgYm9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQo
KSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpOwogfQogCi12b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKK3ZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVl
SG9zdCogaG9zdCkKIHsKLSAgICBpZiAobV90ZXh0dXJlVXBkYXRlcikKLSAgICAgICAgcmV0dXJu
OwotCisjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykKICNpZiBVU0UoU0tJQSkKLSAgICBp
ZiAobGF5ZXJSZW5kZXJlcigpLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZykgewotICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6Y3Jl
YXRlKGxheWVyUmVuZGVyZXJDb250ZXh0KCksIENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSht
X293bmVyKSwgbGF5ZXJSZW5kZXJlcigpLT5za2lhQ29udGV4dCgpKTsKKyAgICBpZiAoaG9zdC0+
c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpIHsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRl
ciA9IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWlu
dGVyOjpjcmVhdGUobV9vd25lciksIGhvc3QtPmxheWVyUmVuZGVyZXIoKS0+c2tpYUNvbnRleHQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKLSAgICBtX3RleHR1cmVVcGRhdGVy
ID0gTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6Y3JlYXRlKGxheWVyUmVuZGVyZXJDb250ZXh0
KCksIENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX293bmVyKSwgbGF5ZXJSZW5kZXJlcigp
LT5jb250ZXh0U3VwcG9ydHNNYXBTdWIoKSk7CisjZW5kaWYgLy8gU0tJQQorI2VuZGlmIC8vICFU
SFJFQURFRF9DT01QT1NJVElORworCisgICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVy
ZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9vd25l
ciksIGhvc3QtPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmgKaW5kZXggYTBlOTZjMzRhMjBkNTQyYTFkYTZlODcxNjA1NTg0YzBm
OTFlZWM4Ni4uYmFjNDFmOWM4OGE0ZjA5MTMxYTE0YjY5NGE0ZmFiMDQ5MmQ5ZjU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0
ZXJJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25z
dCBDQ0xheWVyVHJlZUhvc3QqKTsKICAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRl
eHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlci5nZXQoKTsgfQog
CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fdGV4dHVyZVVwZGF0ZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCBhMTExYTJjNzNjYjg3Y2VlNzQ5ZjBmNjEy
ZGViNGUxNDFhNGNiNzZiLi4yM2M4NTU1ZjUwYmUxNmU4ZjhiZjMxOTFmOGVjNTc4MTlkMmNjNWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDIyICszNCwyMiBAQAog
CiAjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0xheWVy
SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJMYXllclRleHR1
cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRl
ICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKKyNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1
YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEltYWdlTGF5
ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihjb250
ZXh0LCB1c2VNYXBUZXhTdWJJbWFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcih1c2VNYXBUZXhTdWJJbWFnZSkpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNjcsOSArNjcsOSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXpl
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsKLSAgICAgICAgdGV4
dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCgpKTsKKyAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1
cmUoY29udGV4dCk7CiAKICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91
dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJlcXVl
c3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERlc3RSZWN0Lm1vdmUoY2xpcHBl
ZFNvdXJjZVJlY3QubG9jYXRpb24oKSAtIHNvdXJjZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAg
IGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNsaXBwZWRTb3VyY2VSZWN0LnNpemUoKSk7CiAKLSAg
ICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCks
IGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBj
b250ZXh0KCkpOworICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygp
LCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgdGV4dHVy
ZS0+Zm9ybWF0KCksIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgdXBkYXRlRnJvbUltYWdl
KE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKQpAQCAtOTQsOSArOTQsOCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKLSAgICAgICAgOiBMYXll
clRleHR1cmVVcGRhdGVyKGNvbnRleHQpCi0gICAgICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBU
ZXhTdWJJbWFnZSkKKyAgICBleHBsaWNpdCBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoYm9vbCB1
c2VNYXBUZXhTdWJJbWFnZSkKKyAgICAgICAgOiBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1Yklt
YWdlKQogICAgIHsKICAgICB9CiAKQEAgLTE0Nyw4ICsxNDYsNiBAQCB2b2lkIEltYWdlTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogCiB2b2lkIEltYWdlTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogewotICAgIEFTU0VSVChsYXllclJlbmRl
cmVyKCkpOwotCiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90
ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpOwogICAgICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigp
OwpAQCAtMTgyLDEwICsxNzksOSBAQCBib29sIEltYWdlTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50cyAmJiBUaWxlZExheWVyQ2hyb21pdW06
OmRyYXdzQ29udGVudCgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4
dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4
dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewotICAgIGlmICghbV90
ZXh0dXJlVXBkYXRlcikKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEltYWdlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKGxheWVyUmVuZGVyZXJDb250ZXh0KCksIGxheWVyUmVuZGVyZXIo
KS0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpOworICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShob3N0LT5jb250ZXh0U3VwcG9ydHNNYXBTdWIo
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggOTk1MzM4MDk5M2Rj
YzJhOTAyZjVjNmYwOTFlYmU1MzU1Y2NjMWIxNy4uZDY5NzkxMzFiNTg4ZDUyMjgzMzlhYjUzZWFm
MGIwM2I5ODEzN2ZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwotICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CisgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopOwogICAg
IHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbik7CiAKICAgICB2aXJ0dWFsIExheWVy
VGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDhlM2UxNzgwMDJlMDdiNTZkN2IwN2MxZDA2MzkyY2ZhMTk4MjQwMmQuLjA0ZjI5
YTM4N2E1ODFkNTZhZGQ5MTk3Y2M4MTlmZmMyOTVlODIyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC0xMDcsNiArMTA3LDE0IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5k
ZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIHJlbmRlcmVyKQogICAgICAgICBzZXROZWVkc0Rp
c3BsYXkoKTsKICAgICB9CiAgICAgbV9sYXllclJlbmRlcmVyID0gcmVuZGVyZXI7CisKKyAgICAv
LyBGSVhNRTogT25jZSBzZXRMYXllclJlbmRlcmVyIGlzIG5vIGxvbmdlciBuZWVkZWQgb24gdGhl
IExheWVyQ2hyb21pdW0KKyAgICAvLyB0cmVlLCBtb3ZlIHRoaXMgY2FsbCB0byBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnBhaW50TGF5ZXJDb250ZW50cy4KKyAgICBzZXRMYXllclRyZWVIb3N0KHJl
bmRlcmVyLT5vd25lcigpKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVI
b3N0KENDTGF5ZXJUcmVlSG9zdCopCit7CiB9CiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNDb21taXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRjNzJmYjY4ZTUyNzY3MDg4ZTkxNDRj
YWFkY2NmOTc0ZTAyMDlhNjcuLjQ5MjQ3NDQ5YTAxYzdlYTNiOWExNjVhOWIxYzQ1ODBiYzY4NzJm
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTUzLDYgKzUzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIApAQCAt
MTU3LDYgKzE1OCw4IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRSwgcmVwbGFjZSB3aXRoIENDTGF5
ZXJUcmVlSG9zdC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRl
cmVyQ2hyb21pdW0qKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5
ZXJUcmVlSG9zdCopOworCiAgICAgdm9pZCBzZXRPd25lcihHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyKSB7IG1fb3duZXIgPSBvd25lcjsgfQogCiAgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIo
TGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSBsYXllcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMjUyYzJiMDczZjYyNDBlYTRjMGE1
YTIyZDEyNWE2MWVhYjY4YmEzYi4uNDIwYWMwNWM5MmMyNjE0MGFkMDNmNTE2ODMxNWM5YzYyYjI3
NWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00NSw3ICs0
NSw2IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgogI2luY2x1ZGUg
Ik5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdl
ci5oIgpAQCAtNTM4LDExICs1MzcsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVs
ZWFzZVRleHR1cmVzKCkKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZGVsZXRl
RXZpY3RlZFRleHR1cmVzKG1fY29udGV4dC5nZXQoKSk7CiB9CiAKLUdDM0RlbnVtIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6YmVzdFRleHR1cmVGb3JtYXQoKQotewotICAgIHJldHVybiBQbGF0Zm9y
bUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdChjb250ZXh0KCkpOwotfQotCiB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobV9jb250ZXh0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBiZTIzZDUyYjYyN2M2MzVmNTc5
ODE1OTkxODcyZTEzYjc1ZmY2M2JhLi4xNGJmZDUyMGIzYjE2OTM5M2ZhMDRiMDk0YTE1NWVlZWM2
ZTY4NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTUzLDggKzE1
Myw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGF5ZXJSZW5kZXJlclJlY3Vyc2l2ZShMYXll
ckNocm9taXVtKik7CiAKLSAgICBHQzNEZW51bSBiZXN0VGV4dHVyZUZvcm1hdCgpOwotCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIHNfaW5QYWludExheWVyQ29udGVudHM7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NzZkNzllYzk5M2IzZmFlOTI1
ODFiZTIzZTM4YTNlYjRkMWM2ZjQ0Li41YzZlYjIwYTNjODFjNWY1YmMyZTY1YWQ5ZTUzMmMyNGFk
NGFjMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Miw2ICs0Miw3IEBA
IGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRlcik7CiBwdWJsaWM6CisgICAg
TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0
ZXIoKSB7IH0KIAogICAgIGVudW0gT3JpZW50YXRpb24gewpAQCAtNjIsMTggKzYzLDcgQEAgcHVi
bGljOgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMg
Ymx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBz
YW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRleHR1cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLQotcHJvdGVjdGVkOgotICAg
IGV4cGxpY2l0IExheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQp
IDogbV9jb250ZXh0KGNvbnRleHQpIHsgfQotCi0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBUaGUg
Z3JhcGhpY3MgY29udGV4dCB3aXRoIHdoaWNoIHRvIHVwZGF0ZSB0ZXh0dXJlcy4KLSAgICAvLyBJ
dCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRleHR1cmVzIGFyZSBlaXRoZXIgY3JlYXRlZCBpbiB0aGUg
c2FtZSBjb250ZXh0Ci0gICAgLy8gb3Igc2hhcmVkIHdpdGggdGhpcyBjb250ZXh0LgotICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
LmNwcAppbmRleCAxMDEyNTU5Y2JhZTcyZjc4M2ZmYjAwOGIyZDljZjM5ZDlmYTYwNmQzLi4zMGMx
OGU3ZTc3M2JmZDMwY2UyODNkYTNhZDY0N2RkN2ZjMGYwNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2Fu
dmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcApAQCAtNDYsOSArNDYsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyKGNvbnRl
eHQpCi0gICAgLCBtX3BhaW50ZXIocGFpbnRlcikKK0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6
OkxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4gcGFpbnRlcikKKyAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewogfQogCkBAIC02MiwxMyAr
NjEsMTMgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpwYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW4KICAgICBtX2NvbnRlbnRSZWN0ID0gY29u
dGVudFJlY3Q7CiB9CiAKLVBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcD4gTGF5
ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKQorUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyQml0bWFwPiBMYXllclRl
eHR1cmVVcGRhdGVyQml0bWFwOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoY29udGV4dCwgcGFpbnRlciwgdXNlTWFw
VGV4U3ViSW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVVwZGF0
ZXJCaXRtYXAocGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKIH0KIAotTGF5ZXJUZXh0dXJl
VXBkYXRlckJpdG1hcDo6TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9v
bCB1c2VNYXBUZXhTdWJJbWFnZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoY29u
dGV4dCwgcGFpbnRlcikKK0xheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJCaXRtYXAoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9v
bCB1c2VNYXBUZXhTdWJJbWFnZSkKKyAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMocGFp
bnRlcikKICAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCiB7CiB9CkBAIC05
NCwyMyArOTMsMjUgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnMKICAgICBwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOwogfQogCi12b2lkIExheWVy
VGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3ZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBQbGF0
Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKIAotICAgIHRleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQoKSk7Ci0gICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2Vy
LnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+
Zm9ybWF0KCksIGNvbnRleHQoKSk7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCk7
CisgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOwogfQog
CisjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykKICNpZiBVU0UoU0tJQSkKLVBhc3NPd25Q
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZT4gTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGlj
dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiBwYWludGVyLCBHckNvbnRleHQqIHNraWFDb250ZXh0KQorUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlPiBMYXllclRleHR1cmVVcGRhdGVyU2tQ
aWN0dXJlOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwg
R3JDb250ZXh0KiBza2lhQ29udGV4dCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVy
VGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoY29udGV4dCwgcGFpbnRlciwgc2tpYUNvbnRleHQpKTsK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUocGFp
bnRlciwgc2tpYUNvbnRleHQpKTsKIH0KIAotTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6
TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgR3JDb250ZXh0KiBza2lh
Q29udGV4dCkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoY29udGV4dCwgcGFpbnRl
cikKK0xheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1Bp
Y3R1cmUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgR3JDb250ZXh0
KiBza2lhQ29udGV4dCkKKyAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMocGFpbnRlcikK
ICAgICAsIG1fc2tpYUNvbnRleHQoc2tpYUNvbnRleHQpCisgICAgLCBtX2NvbnRleHQoMCkKICAg
ICAsIG1fY3JlYXRlRnJhbWVCdWZmZXIoZmFsc2UpCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9k
ZXB0aFN0ZW5jaWxCdWZmZXIoMCkKQEAgLTE0NSw4ICsxNDYsMTEgQEAgdm9pZCBMYXllclRleHR1
cmVVcGRhdGVyU2tQaWN0dXJlOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGMKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKLXZvaWQgTGF5ZXJU
ZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJlY3QoTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQordm9pZCBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjp1cGRhdGVUZXh0dXJlUmVj
dChHcmFwaGljc0NvbnRleHQzRCogY29tcG9zaXRvckNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKKyAgICBBU1NFUlQoIW1fY29udGV4dCB8fCBtX2NvbnRleHQgPT0gY29tcG9zaXRvckNv
bnRleHQpOworICAgIG1fY29udGV4dCA9IGNvbXBvc2l0b3JDb250ZXh0OworCiAgICAgaWYgKG1f
Y3JlYXRlRnJhbWVCdWZmZXIpIHsKICAgICAgICAgZGVsZXRlRnJhbWVCdWZmZXIoKTsKICAgICAg
ICAgY3JlYXRlRnJhbWVCdWZmZXIoKTsKQEAgLTI1MCw3ICsyNTQsNyBAQCBib29sIExheWVyVGV4
dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZUZyYW1lQnVmZmVyKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KICNlbmRpZiAvLyBTS0lBCisjZW5kaWYgLy8gIVRIUkVBREVEX0NPTVBPU0lUSU5HCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaAppbmRleCA4
N2IxYTBmOGYzM2VhYzdiMzMwYzg2YWEyYWJmNGI2YTI3NDlhZTA4Li5hZTJiZDAwNGEyNTM5NGUx
MDJkMzIxYzU3ZWQ4M2E3NGEyNWI1ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhcy5oCkBAIC01MSwxMSArNTEsOCBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1
bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4KIGNs
YXNzIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyk7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcygpIHsgfQot
CiBwcm90ZWN0ZWQ6Ci0gICAgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyhHcmFwaGljc0NvbnRl
eHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKKyAgICBMYXllclRleHR1
cmVVcGRhdGVyQ2FudmFzKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAogICAg
IHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRSZWN0OyB9CkBAIC03MCwzOCArNjcsNDAgQEAgcHJpdmF0ZToKIGNsYXNzIExh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZh
cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1h
cD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwotICAgIHZpcnR1YWwgfkxheWVyVGV4dHVy
ZVVwZGF0ZXJCaXRtYXAoKSB7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRleHR1cmVV
cGRhdGVyQml0bWFwPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwogCiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247
IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChNYW5hZ2Vk
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKLSAgICBMYXllclRleHR1cmVVcGRhdGVyQml0
bWFwKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4s
IGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2Up
OwogICAgIFBsYXRmb3JtQ2FudmFzIG1fY2FudmFzOwogICAgIExheWVyVGV4dHVyZVN1YkltYWdl
IG1fdGV4U3ViSW1hZ2U7CiB9OwogCisjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykKICNp
ZiBVU0UoU0tJQSkKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5
ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIEdyQ29udGV4dCopOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU+IGNyZWF0ZShQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgR3JDb250ZXh0Kik7CiAgICAgdmlydHVhbCB+
TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZSgpOwogCiAgICAgdmlydHVhbCBPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25Pcmll
bnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IGJvcmRlclRleGVscyk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0
KE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgotICAgIExheWVyVGV4dHVyZVVw
ZGF0ZXJTa1BpY3R1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPiwgR3JDb250ZXh0Kik7CisgICAgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVy
ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgR3JDb250ZXh0Kik7CiAgICAgdm9p
ZCBkZWxldGVGcmFtZUJ1ZmZlcigpOwogICAgIGJvb2wgY3JlYXRlRnJhbWVCdWZmZXIoKTsKKyAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCiAg
ICAgR3JDb250ZXh0KiBtX3NraWFDb250ZXh0OyAvLyBTS0lBIGdyYXBoaWNzIGNvbnRleHQuCisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKIAogICAgIGJvb2wgbV9jcmVhdGVGcmFt
ZUJ1ZmZlcjsgLy8gTmVlZCB0byBjcmVhdGUgRkJPIGlmIHRydWUuCiAgICAgU2tQaWN0dXJlIG1f
cGljdHVyZTsgLy8gUmVjb3JkaW5nIGNhbnZhcy4KQEAgLTExMSw4ICsxMTAsOCBAQCBwcml2YXRl
OgogICAgIE93blB0cjxTa0NhbnZhcz4gbV9jYW52YXM7IC8vIEdQVSBhY2NlbGVyYXRlZCBjYW52
YXMuCiB9OwogI2VuZGlmIC8vIFNLSUEKKyNlbmRpZiAvLyAhVEhSRUFERURfQ09NUE9TSVRJTkcK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICNlbmRpZiAvLyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzX2gKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmZkMDhjNTU0YmU3NzNlYjNjMzRhZThkZWNm
Y2M0ZWMzNWE2OGJhNy4uMmZkNjY3ZDc0M2YzODg1ZjQ4ZmYyZmVjYzhlMDM4M2I1NWNkZjJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC05MiwxMiArOTIsNiBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgbV91cGRhdGVSZWN0
ID0gSW50UmVjdCgpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5k
ZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCi17Ci0gICAgTGF5ZXJD
aHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihsYXllclJlbmRlcmVyKTsKLSAgICBjcmVhdGVUaWxl
cklmTmVlZGVkKCk7Ci19Ci0KIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpCiB7CiAgICAgaWYgKCFtX3RpbGVyKQpAQCAtMTQwLDE3ICsxMzQs
MTYgQEAgYm9vbCBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAg
cmV0dXJuICFtX3NraXBzRHJhdzsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0
ZVRpbGVySWZOZWVkZWQoKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhv
c3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewogICAgIGlmIChtX3RpbGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CisgICAgY3JlYXRl
VGV4dHVyZVVwZGF0ZXIoaG9zdCk7CiAKLSAgICBtX3RleHR1cmVGb3JtYXQgPSBsYXllclJlbmRl
cmVyKCktPmJlc3RUZXh0dXJlRm9ybWF0KCk7CisgICAgbV90ZXh0dXJlRm9ybWF0ID0gaG9zdC0+
YmVzdFRleHR1cmVGb3JtYXQoKTsKICAgICBtX3RleHR1cmVPcmllbnRhdGlvbiA9IHRleHR1cmVV
cGRhdGVyKCktPm9yaWVudGF0aW9uKCk7CiAgICAgbV9zYW1wbGVkVGV4ZWxGb3JtYXQgPSB0ZXh0
dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxGb3JtYXQobV90ZXh0dXJlRm9ybWF0KTsKLQogICAg
IG1fdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKAogICAgICAgICBJbnRTaXplKGRl
ZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVTaXplKSwKICAgICAgICAgaXNSb290TGF5ZXIoKSA/
IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdEYXRhOjpI
YXNCb3JkZXJUZXhlbHMpOwpAQCAtMjA4LDcgKzIwMSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CiAKLSAgICAgICAgICAg
IHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KHRpbGUtPnRleHR1cmUoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
VGV4dHVyZVJlY3QoY29udGV4dCwgdGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CiAgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0zMjcsNyArMzIwLDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVUaWxl
cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogewotICAgIGlmIChj
b250ZW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0RyYXcpCisgICAgaWYgKCFtX3RpbGVyIHx8
IGNvbnRlbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV90aWxlci0+Z3Jvd0xheWVyVG9Db250YWluKGNvbnRlbnRSZWN0KTsKQEAgLTM3Niw2
ICszNjksOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRpbGVUZXh0dXJlcyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIHsKKyAgICBBU1NFUlQo
bV90aWxlcik7CisKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogCiAgICAgaWYgKGNvbnRlbnRS
ZWN0LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCBiZDUzZTFm
NjA1MzY1OWQ4NmEwYjY1NjZjM2ZlYjRmZWQ2MmEwNTg3Li41ODU2OTE4MTQ0MDY5M2Y2MGY2ZGQ2
YjI5OWNiYjlkYzg5ZDFhNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNjAs
NyArNjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMo
KTsKICAgICB2b2lkIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikgPSAwOwog
ICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCA9
IDA7CiAKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50
ZWQgZHVyaW5nIHVwZGF0ZSgpLgpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNv
bnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKik7CisgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVI
b3N0Kik7CiAKICAgICB2b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsKICAgICB2b2lkIHNldFRp
bGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggMWYzYjk3OTc5MDAwNDdjMzNmZjRjMzZhMGUyZWIxZjA5OGUyMmYzMC4uOWYzNTkxOGQ4
ZWE2YjYwOTQ3NjFiMjQzMTMxZTc0ZjA2NDZkOTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJOb25D
b21wb3NpdGVkQ29udGVudEhvc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1pdHRl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKQEAgLTQ2LDYgKzQ3LDgg
QEAgUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKEND
TGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW4KIAogQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJl
ZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKQogICAgIDogbV9yZWNyZWF0aW5nR3JhcGhpY3NDb250ZXh0KGZhbHNlKQorICAgICwg
bV9tYXhUZXh0dXJlU2l6ZSgwKQorICAgICwgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIoZmFsc2Up
CiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fZnJhbWVOdW1iZXIoMCkKQEAgLTYwLDYgKzYzLDEyIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
Ojppbml0aWFsaXplKCkKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgLy8gRklYTUU6IEluIHRoZSB0aHJlYWRlZCBjYXNlLCB0aGVzZSB2YWx1
ZXMgd2lsbCBuZWVkIHRvIGJlIGluaXRpYWxpemVkCisgICAgLy8gYnkgc29tZXRoaW5nIG90aGVy
IHRoYW4gbV9sYXllclJlbmRlcmVyLgorICAgIG1fbWF4VGV4dHVyZVNpemUgPSBtX2xheWVyUmVu
ZGVyZXItPm1heFRleHR1cmVTaXplKCk7CisgICAgbV9iZXN0VGV4dHVyZUZvcm1hdCA9IFBsYXRm
b3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KG1fbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpKTsK
KyAgICBtX2NvbnRleHRTdXBwb3J0c01hcFN1YiA9IG1fbGF5ZXJSZW5kZXJlci0+Y29udGV4dFN1
cHBvcnRzTWFwU3ViKCk7CisKICAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0
ZSgwKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9yb290TGF5ZXItPnNldE5hbWUoInJvb3QgbGF5
ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYjA3YTI1ZmNhNjJjYmNiNWFk
Y2NhOTE4OWNhYmVhZGQzZTVlMGQ5OS4uOGM0MTk3NmMyODU5ZDdjYTc4ODNmNjliYWI1ZDdkYzM5
NGRlMDMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpZm5kZWYgQ0NMYXllclRyZWVIb3N0X2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0X2gKIAor
I2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21taXR0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsUHJveHkuaCIKQEAgLTExMywxMCArMTE0LDE1IEBAIHB1YmxpYzoKICAgICAv
LyBUZW1wb3JhcnkgaG9tZSBmb3IgdGhlIG5vbi10aHJlYWRlZCByZW5kZXJpbmcgcGF0aC4KICNp
ZiAhVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgY29tcG9zaXRlKGJvb2wgZmlu
aXNoKTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICNlbmRpZgogCiAgICAgTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0KiBub25Db21wb3NpdGVkQ29udGVudEhvc3QoKSBjb25zdCB7IHJldHVy
biBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5nZXQoKTsgfQogCisgICAgYm9vbCBjb250ZXh0
U3VwcG9ydHNNYXBTdWIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRTdXBwb3J0c01hcFN1Yjsg
fQorICAgIGludCBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VGV4dHVyZVNp
emU7IH0KKyAgICBHQzNEZW51bSBiZXN0VGV4dHVyZUZvcm1hdCgpIHsgcmV0dXJuIG1fYmVzdFRl
eHR1cmVGb3JtYXQ7IH0KKwogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVy
VHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CiAKQEAgLTEzNCw2ICsxNDAsMTAg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVu
ZGVyZXI7CiAjZW5kaWYKIAorICAgIGludCBtX21heFRleHR1cmVTaXplOworICAgIEdDM0RlbnVt
IG1fYmVzdFRleHR1cmVGb3JtYXQ7CisgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c01hcFN1YjsK
KwogICAgIGJvb2wgbV9hbmltYXRpbmc7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIG1f
Y2xpZW50Owo=
</data>
<flag name="review"
          id="100659"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>