<?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>68121</bug_id>
          
          <creation_ts>2011-09-14 14:47:43 -0700</creation_ts>
          <short_desc>[chromium] LayerRendererChromium shouldn&apos;t be RefCounted</short_desc>
          <delta_ts>2011-09-14 16:00: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>New Bugs</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>66995</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>467357</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 14:47:43 -0700</bug_when>
    <thetext>[chromium] LayerRendererChromium shouldn&apos;t be RefCounted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467358</commentid>
    <comment_count>1</comment_count>
      <attachid>107397</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 14:50:18 -0700</bug_when>
    <thetext>Created attachment 107397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467370</commentid>
    <comment_count>2</comment_count>
      <attachid>107397</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-09-14 14:58:30 -0700</bug_when>
    <thetext>Comment on attachment 107397
Patch

I think this is a net positive change.  I totally agree that OwnPtr&lt;&gt; reduces the chance of reference cycles, but I worry that making them raw pointers instead of RefPtr&lt;&gt;s increases the chance that a layer is holding onto a stale layer renderer pointer.

Maybe this is a naive suggestion, but do you think it would be an improvement to pass a LayerRendererChromium* into the CCLayerImpl::draw() function to avoid having to store it on the layers themselves and thereby avoiding any chance that it&apos;s stale?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467371</commentid>
    <comment_count>3</comment_count>
      <attachid>107397</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-09-14 14:58:51 -0700</bug_when>
    <thetext>Comment on attachment 107397
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:253
&gt; +    LayerRendererChromium* m_layerRenderer;

Does the CCLayerImpl still need this pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467373</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 15:00:45 -0700</bug_when>
    <thetext>The most interesting lifecycle bit here is on lost context, which triggers a LayerRendererChromium recreation.  Here&apos;s what happens then (in the CCSingleThreadProxy case which we use today, will be CCThreadProxy in the future):

Initial state: LayerRendererChromium A, tree of CCLayerImpls that have (weak) pointers to A

CCSingleThreadProxy detects a lost context and calls CCSingleThreadProxy::recreateContextIfNeeded()
CCSingleThreadProxy::recreateContextIfNeeded() calls CCLayerTreeHostImpl::initializeLayerRenderer()
  CCLayerTreeHostImpl::initializeLayerRenderer() constructs a new LayerRendererChromium (B) with an initially empty CCLayerImpl tree
  CCLayerTreeHostImpl::initializeLayerRenderer() calls LayerRendererChromium::close() on A, which drops all rendersurface refs to CCLayerImpls
  CCLayerTreeHostImpl::initializeLayerRenderer() deletes the old LayerRendererChromium, which drops the last reference to its CCLayerImpl tree and destroys all CCLayerImpls
(CCSingleThreadProxy::recreateContextIfNeeded() returns)
CCSingleThreadProxy::compositeImmediately() calls commitIfTo, which calls the TreeSynchronizer, which constructs a new CCLayerImpl tree under LayerRendererChromium B
LayerRendererChromium::drawLayers on B calls setLayerRendererRecursive() on all CCLayerImpls in the new tree and sets the LayerRendererChromium weak pointers


Technically speaking we don&apos;t need LayerRendererChromium weak pointers on CCLayerImpls at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467376</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 15:01:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 107397 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107397&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:253
&gt; &gt; +    LayerRendererChromium* m_layerRenderer;
&gt; 
&gt; Does the CCLayerImpl still need this pointer?

It doesn&apos;t.  I can try to remove this as part of this patch if you&apos;d like (it seems useful)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467377</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 15:01:42 -0700</bug_when>
    <thetext>Looks like all 3 of us posted at the same time that CCLayerImpl weak pointer should go away :P.  I&apos;ll kill it too and update this patch - hopefully that doesn&apos;t grow the thing too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467397</commentid>
    <comment_count>7</comment_count>
      <attachid>107402</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 15:20:46 -0700</bug_when>
    <thetext>Created attachment 107402
remove LayerRendererChromium weak ptrs in favor of draw time parameter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467410</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 15:29:58 -0700</bug_when>
    <thetext>Updated, PTAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467424</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-09-14 15:40:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Updated, PTAL.

This looks great.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467439</commentid>
    <comment_count>10</comment_count>
      <attachid>107402</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-14 15:51:02 -0700</bug_when>
    <thetext>Comment on attachment 107402
remove LayerRendererChromium weak ptrs in favor of draw time parameter

I was concerned that the dependency from the cc/ classes to LayerRendererChromium was a conceptual layering violation, but jamesr assures me that it&apos;s just that the LRC needs to be renamed to something like CCGLRendererImpl. This looks fine to me in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467445</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 15:55:08 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=68130 to track the poor name for LRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467448</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 16:00:41 -0700</bug_when>
    <thetext>Committed r95135: &lt;http://trac.webkit.org/changeset/95135&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107397</attachid>
            <date>2011-09-14 14:50:18 -0700</date>
            <delta_ts>2011-09-14 15:20:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68121-20110914145017.patch</filename>
            <type>text/plain</type>
            <size>7935</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzkxODdlZmJmNjE1ZWRj
N2JmYTBkZmIyMTM5MjkyNDI2MDFhM2Y0Li5iY2ZlNDY0ODdjZDFlNWFiZGY4NGFkYzk4ZTNhOWE1
MTUyM2Y3MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTEtMDktMTQgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSBzaG91bGRuJ3QgYmUgUmVmQ291bnRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0g
aXMgb3duZWQgZXhjbHVzaXZlbHkgYnkgQ0NMYXllclRyZWVIb3N0SW1wbCwgc28gdGhlcmUncyBu
byByZWFzb24gdG8gaGF2ZSBpdCBiZQorICAgICAgICByZWZjb3VudGVkLiBNYWtpbmcgaXQgYW4g
T3duUHRyPD4gbWFrZXMgdGhlIGxpZmVjeWNsZSBmb3IgdGhlc2Ugb2JqZWN0cyBtdWNoIGNsZWFu
ZXIgYW5kIHJlZHVjZXMgdGhlIGNoYW5jZSBvZgorICAgICAgICBpbnRyb2R1Y2luZyBhY2NpZGVu
dGFsIHJlZmVyZW5jZSBjeWNsZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBjb21wb3NpdGluZy8g
dGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJSZW5k
ZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorCisyMDExLTA5LTE0ICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW3NraWFdIGZhc3QvY2Fu
dmFzL3NldFdpZHRoUmVzZXRBZnRlckZvcmNlZFJlbmRlciBpcyBmbGFreQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc5NTUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYzcyODE2OTc1ZDIyNDQ4NzZlMTgxY2I5MDc0
MDdiOWVlYTE1YWIxZi4uYTMwZjFhZDI3YTNkOGQxOTc5MWU0NGY5ZmQ3N2Q1YjRmZDBjMDlkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMjksMTUgKzEyOSwx
NSBAQCBib29sIGNvbnRleHRTdXBwb3J0c0FjY2VsZXJhdGVkUGFpbnRpbmcoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1QYXNzUmVmUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NM
YXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiB7CiAjaWYgVVNFKFNLSUEpCiAgICAgaWYgKG93bmVy
LT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZyAmJiAhY29udGV4dFN1cHBvcnRzQWNjZWxl
cmF0ZWRQYWludGluZyhjb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogI2VuZGlmCi0gICAgUmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFJlZihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKG93bmVy
LCBjb250ZXh0KSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVu
ZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShvd25lciwgY29udGV4dCkp
KTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGxheWVyUmVuZGVyZXIu
cmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA1ZDgw
NGFkMWYxNjIyMDg2ODc2ZmRjZDI0MWViNjdlY2IxMDBjNGQ3Li4yZTZkNzM2MzY5ZDVlY2IyYjU3
YTJhNWEwYjJhOTAwMDFmZjMwZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0
ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQbHVnaW5MYXllckltcGwuaCIKICNp
bmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCkBAIC02NSwxNiArNjQsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0hlYWRzVXBEaXNwbGF5OwogY2xhc3MgQ0NMYXllcklt
cGw7Ci1jbGFzcyBDQ0xheWVyVHJlZUhvc3Q7IC8vIEZJWE1FOiByZW1vdmUgcG9pbnRlcnMgdG8g
dGhpcy4KIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBHZW9tZXRyeUJpbmRpbmc7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIg
bGF5ZXJzIHVzaW5nIEdMLgotY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIFJl
ZkNvdW50ZWQ8TGF5ZXJSZW5kZXJlckNocm9taXVtPiB7CitjbGFzcyBMYXllclJlbmRlcmVyQ2hy
b21pdW0geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBj
cmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShD
Q0xheWVyVHJlZUhvc3RJbXBsKiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogCiAg
ICAgLy8gTXVzdCBiZSBjYWxsZWQgaW4gb3JkZXIgdG8gYWxsb3cgdGhlIExheWVyUmVuZGVyZXJD
aHJvbWl1bSB0byBkZXN0cnVjdAogICAgIHZvaWQgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CmluZGV4IGM1YzE4NWExMzMzZDJlY2RhMTdhYzAxZWFjZTNjNWFmYjdjNDA0MDUuLjEzNjNlOGRk
ZjcwZmZkMzViNjkxNmM1MDRjMDFkMzJmZWQ1M2VlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApA
QCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihM
YXllclJlbmRlcmVyQ2hyb21pdW0qKTsKICAgICB2b2lkIHNldExheWVyUmVuZGVyZXJSZWN1cnNp
dmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBs
YXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9Cisg
ICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllclJlbmRlcmVyOyB9CiAKICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2Uo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2UuZ2V0KCk7IH0KICAgICB2b2lkIGNyZWF0
ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIEludFJl
Y3QgbV9kcmF3YWJsZUNvbnRlbnRSZWN0OwogCiAgICAgLy8gUG9pbnRzIHRvIHRoZSBsYXllciBy
ZW5kZXJlciB0aGF0IHVwZGF0ZXMgYW5kIGRyYXdzIHRoaXMgbGF5ZXIuCi0gICAgUmVmUHRyPExh
eWVyUmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOworICAgIExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbV9sYXllclJlbmRlcmVyOwogfTsKIAogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxS
ZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8UmVmUHRyPENDTGF5
ZXJJbXBsPiA+OjppdGVyYXRvciBlbmQsIENDTGF5ZXJTb3J0ZXIqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKaW5kZXggYzcxM2YwM2U3YWQyMzE3OWFjODc3NjMwYTIzYzlmNDc4MWI3MWM1
Ny4uMzc3ZjY5MWQyMTZlYThlYTY1MzdlYmUwMTY0NWI3OTI1MTVlMzk5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgQ0NUaHJlYWQ7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBMYXllclBh
aW50ZXJDaHJvbWl1bTsKLWNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNzIEdyYXBo
aWNzTGF5ZXI7CiBjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CiBjbGFzcyBUZXh0dXJl
TWFuYWdlcjsKQEAgLTE3NCw4ICsxNzMsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpbml0aWFs
aXplKCk7CiAKLSAgICBQYXNzUmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlTGF5
ZXJSZW5kZXJlcigpOwotCiAgICAgYm9vbCBtX2FuaW1hdGluZzsKIAogICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IGJlYzdjMDJkMjVlZTUxM2E5Mjg1Njc1Y2M3NGI5MDU0NDE5MzU5MmIuLmIzMDQ4
MzY4ZGFhMjA3NmZhNDlkYmExNGJiOWM5MzY5OGI2NzZlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIAogYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVy
UmVuZGVyZXI7CisgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJl
cjsKICAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhp
cywgY29udGV4dCk7CiAKICAgICAvLyBJZiBjcmVhdGlvbiBmYWlsZWQsIGFuZCB3ZSBoYWQgYXNr
ZWQgZm9yIGFjY2VsZXJhdGVkIHBhaW50aW5nLCBkaXNhYmxlIGFjY2VsZXJhdGVkIHBhaW50aW5n
CkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPgogICAgICAgICBtX2xh
eWVyUmVuZGVyZXItPmNsb3NlKCk7CiAgICAgfQogCi0gICAgbV9sYXllclJlbmRlcmVyID0gbGF5
ZXJSZW5kZXJlcjsKKyAgICBtX2xheWVyUmVuZGVyZXIgPSBsYXllclJlbmRlcmVyLnJlbGVhc2Uo
KTsKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKaW5kZXggZGZmOTY4MDZkODVmMjBiMThjMGY0NDgxY2ExNGYwMjk1Y2Vj
OGM2ZS4uYzc1MmUwMDE0MDBhNTIxYmI5M2ZkNTY1YzM3OWI2YmQ3OWUzMTJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtODQsNyArODQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgaW50IG1fZnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPExheWVyUmVu
ZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOworICAgIE93blB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fcm9v
dExheWVySW1wbDsKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3Zp
ZXdwb3J0U2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107402</attachid>
            <date>2011-09-14 15:20:46 -0700</date>
            <delta_ts>2011-09-14 15:51:02 -0700</delta_ts>
            <desc>remove LayerRendererChromium weak ptrs in favor of draw time parameter</desc>
            <filename>bug-68121-20110914152045.patch</filename>
            <type>text/plain</type>
            <size>41509</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzkxODdlZmJmNjE1ZWRj
N2JmYTBkZmIyMTM5MjkyNDI2MDFhM2Y0Li42ZTc5ZDY0Y2Q2MThlNTk0MWJmZGMzZGE4MTAzNDgx
MTBjZjJkODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTkgQEAKIDIwMTEtMDktMTQgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSBzaG91bGRuJ3QgYmUgUmVmQ291bnRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0g
aXMgb3duZWQgZXhjbHVzaXZlbHkgYnkgQ0NMYXllclRyZWVIb3N0SW1wbCwgc28gdGhlcmUncyBu
byByZWFzb24gdG8gaGF2ZSBpdCBiZQorICAgICAgICByZWZjb3VudGVkLiBNYWtpbmcgaXQgYW4g
T3duUHRyPD4gbWFrZXMgdGhlIGxpZmVjeWNsZSBmb3IgdGhlc2Ugb2JqZWN0cyBtdWNoIGNsZWFu
ZXIgYW5kIHJlZHVjZXMgdGhlIGNoYW5jZSBvZgorICAgICAgICBpbnRyb2R1Y2luZyBhY2NpZGVu
dGFsIHJlZmVyZW5jZSBjeWNsZXMuICBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgTGF5ZXJSZW5kZXJl
ckNocm9taXVtIHBvaW50ZXJzIGZyb20gQ0NMYXllckltcGxzCisgICAgICAgIHNpbmNlIGl0IG9u
bHkgbmVlZGVkIGF0IGRyYXcgdGltZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGNvbXBvc2l0aW5n
LyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5
T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDQ2FudmFzTGF5ZXJJbXBsOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6ZHJhd0RlYnVnQm9yZGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdp
bkxheWVySW1wbDo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQbHVnaW5MYXllckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJT
dXJmYWNlOjpjbGVhbnVwUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clN1cmZhY2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpiaW5kQ29udGVu
dHNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZHJhd1lVVik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkcmF3UkdCQSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorCisyMDExLTA5LTE0ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW3NraWFdIGZhc3Qv
Y2FudmFzL3NldFdpZHRoUmVzZXRBZnRlckZvcmNlZFJlbmRlciBpcyBmbGFreQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc5NTUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYzcyODE2OTc1ZDIyNDQ4NzZlMTgxY2I5
MDc0MDdiOWVlYTE1YWIxZi4uZjNiYTBjNWQ3NmQ0ZDY1NjYzMmZkNzZmZGE2NTU5ZTk0NzI4OTAw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMjksMTUgKzEy
OSwxNSBAQCBib29sIGNvbnRleHRTdXBwb3J0c0FjY2VsZXJhdGVkUGFpbnRpbmcoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQpCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1QYXNzUmVm
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUo
Q0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiB7CiAjaWYgVVNFKFNLSUEpCiAgICAgaWYgKG93
bmVyLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZyAmJiAhY29udGV4dFN1cHBvcnRzQWNj
ZWxlcmF0ZWRQYWludGluZyhjb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCi0gICAgUmVmUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFJlZihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKG93
bmVyLCBjb250ZXh0KSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVy
UmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShvd25lciwgY29udGV4
dCkpKTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGxheWVyUmVuZGVy
ZXIucmVsZWFzZSgpOwogfQpAQCAtMjM0LDggKzIzNCw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3TGF5ZXJzKCkKIAogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAvLyBGSVhNRTogTm8gbmVlZCB0byB3YWxrIHRoZSB0cmVlIGhlcmUuIFRoaXMg
Y291bGQgYmUgcGFzc2VkIHZpYSBkcmF3LgotICAgIHJvb3RMYXllcigpLT5zZXRMYXllclJlbmRl
cmVyUmVjdXJzaXZlKHRoaXMpOwogCiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIt
PnNldE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKCkgLSBt
X2NvbnRlbnRzVGV4dHVyZU1lbW9yeVVzZUJ5dGVzKTsKICAgICBkcmF3TGF5ZXJzSW50ZXJuYWwo
KTsKQEAgLTQzMyw3ICs0MzEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9m
ZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKQogICAgICAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0
ZTNkKDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkud2lkdGgoKSwg
MC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKSwgMCk7
CiAgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPnNldERyYXdUcmFuc2Zvcm0oZHJhd1Ry
YW5zZm9ybSk7CiAgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPnNldERyYXdPcGFjaXR5
KDEpOwotICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3KG1fZGVmYXVsdFJlbmRl
clN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNl
LT5kcmF3KHRoaXMsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOwogICAg
IH0KIH0KIApAQCAtNDU1LDcgKzQ1Myw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1
c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKIAogICAgIEdM
QyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKLSAgICBp
ZiAoIXJlbmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUoKSkKKyAgICBpZiAoIXJl
bmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUodGhpcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCkpOwpAQCAtNDc0LDcgKzQ3Miw3IEBAIGJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSog
cmVuZGVyU3VyZmFjZSkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXIoQ0NM
YXllckltcGwqIGxheWVyLCBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UpCiB7CiAgICAg
aWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSB0
YXJnZXRTdXJmYWNlKSB7Ci0gICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXcobGF5
ZXItPmdldERyYXdSZWN0KCkpOworICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3
KHRoaXMsIGxheWVyLT5nZXREcmF3UmVjdCgpKTsKICAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZh
Y2UoKS0+cmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTEyLDEwICs1MTAsMTAgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXll
cihDQ0xheWVySW1wbCogbGF5ZXIsIENDUmVuZGVyU3VyZmFjZSogdGFyZ2UKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBsYXllci0+ZHJhdygpOworICAgIGxheWVyLT5kcmF3KHRo
aXMpOwogCiAgICAgLy8gRHJhdyB0aGUgZGVidWcgYm9yZGVyIGlmIHRoZXJlIGlzIG9uZS4KLSAg
ICBsYXllci0+ZHJhd0RlYnVnQm9yZGVyKCk7CisgICAgbGF5ZXItPmRyYXdEZWJ1Z0JvcmRlcih0
aGlzKTsKIH0KIAogLy8gU2V0cyB0aGUgc2Npc3NvciByZWdpb24gdG8gdGhlIGdpdmVuIHJlY3Rh
bmdsZS4gVGhlIGNvb3JkaW5hdGUgc3lzdGVtIGZvciB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKaW5kZXggNWQ4MDRhZDFmMTYyMjA4Njg3NmZkY2QyNDFlYjY3ZWNiMTAwYzRk
Ny4uMmU2ZDczNjM2OWQ1ZWNiMmI1N2EyYTVhMGIyYTkwMDAxZmYzMGQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJjYy9D
Q0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyU29ydGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
UGx1Z2luTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgpAQCAt
NjUsMTYgKzY0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NIZWFkc1VwRGlz
cGxheTsKIGNsYXNzIENDTGF5ZXJJbXBsOwotY2xhc3MgQ0NMYXllclRyZWVIb3N0OyAvLyBGSVhN
RTogcmVtb3ZlIHBvaW50ZXJzIHRvIHRoaXMuCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwog
Y2xhc3MgR2VvbWV0cnlCaW5kaW5nOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q7CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3aW5n
IG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KLWNsYXNzIExheWVyUmVuZGVy
ZXJDaHJvbWl1bSA6IHB1YmxpYyBSZWZDb3VudGVkPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gewor
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
YXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExh
eWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5k
ZXJlckNocm9taXVtPiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCosIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+KTsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIGluIG9yZGVyIHRvIGFs
bG93IHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gdG8gZGVzdHJ1Y3QKICAgICB2b2lkIGNsb3Nl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAKaW5kZXggOGNjMjIzZTJhMmYx
ZWRiNTIwYzlhYjIzYjliYWFhYjQzYWZlNzU0Ni4uNTY2NzFiMDYxYTIyMzRhMDAzMmYzYzFjZTRi
YzMxNjlhZDE2NGEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcApAQCAt
NDgsMTMgKzQ4LDEyIEBAIENDQ2FudmFzTGF5ZXJJbXBsOjp+Q0NDYW52YXNMYXllckltcGwoKQog
ewogfQogCi12b2lkIENDQ2FudmFzTGF5ZXJJbXBsOjpkcmF3KCkKK3ZvaWQgQ0NDYW52YXNMYXll
ckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGxheWVyUmVuZGVy
ZXIoKSk7Ci0gICAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlByb2dyYW0qIHByb2dyYW0gPSBs
YXllclJlbmRlcmVyKCktPmNhbnZhc0xheWVyUHJvZ3JhbSgpOworICAgIGNvbnN0IENDQ2FudmFz
TGF5ZXJJbXBsOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+Y2FudmFzTGF5ZXJQ
cm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyKCktPmNvbnRl
eHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNv
bnRleHQoKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKSk7CiAgICAg
aWYgKCFtX2hhc0FscGhhKSB7CkBAIC02Nyw4ICs2Niw4IEBAIHZvaWQgQ0NDYW52YXNMYXllcklt
cGw6OmRyYXcoKQogICAgIH0KICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShw
cm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFp
KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBM
YXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+
cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgZHJh
d09wYWNpdHkoKSwgbGF5ZXJSZW5kZXJlcigpLT5zaGFyZWRHZW9tZXRyeVF1YWQoKSwKKyAgICBM
YXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnBy
b2plY3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdP
cGFjaXR5KCksIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4
TG9jYXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKaW5kZXgg
NmZjZjg0MDQwMTkyNTUyMGMxN2U0Nzc2ZDFkZTBhNWE4MjIzZjc1NC4uMzgyNjcwODZmNGI0M2U2
NTc3YzdkOWM3MTVkZTk4NDg2NDNlZGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFBy
b2dyYW07CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdygpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclBy
b3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKaW5kZXggYjAyZjFlZjMxNjQ0YWNlOTk1Y2NkNmVjNTlkYjBiYTRiMDIwZTgzYS4u
ODQ1NDA2NDM1Yjg3ZjIwM2QxNzcwOGRjNDc1NDljNmJhNmU5YTJmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcApAQCAtNzcsNyArNzcsNiBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50
IGlkKQogICAgICwgbV9kcmF3T3BhY2l0eSgwKQogICAgICwgbV9kZWJ1Z0JvcmRlckNvbG9yKDAs
IDAsIDAsIDApCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKLSAgICAsIG1fbGF5ZXJSZW5k
ZXJlcigwKQogewogfQogCkBAIC0xMTUsMjQgKzExNCw2IEBAIHZvaWQgQ0NMYXllckltcGw6OmNs
ZWFyQ2hpbGRMaXN0KCkKICAgICBtX2NoaWxkcmVuLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0NMYXll
ckltcGw6OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiByZW5kZXJlcikK
LXsKLSAgICBtX2xheWVyUmVuZGVyZXIgPSByZW5kZXJlcjsKLX0KLQotdm9pZCBDQ0xheWVySW1w
bDo6c2V0TGF5ZXJSZW5kZXJlclJlY3Vyc2l2ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIHJlbmRl
cmVyKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsr
aSkKLSAgICAgICAgY2hpbGRyZW4oKVtpXS0+c2V0TGF5ZXJSZW5kZXJlclJlY3Vyc2l2ZShyZW5k
ZXJlcik7Ci0KLSAgICBpZiAobWFza0xheWVyKCkpCi0gICAgICAgIG1hc2tMYXllcigpLT5zZXRM
YXllclJlbmRlcmVyUmVjdXJzaXZlKHJlbmRlcmVyKTsKLSAgICBpZiAocmVwbGljYUxheWVyKCkp
Ci0gICAgICAgIHJlcGxpY2FMYXllcigpLT5zZXRMYXllclJlbmRlcmVyUmVjdXJzaXZlKHJlbmRl
cmVyKTsKLQotICAgIHNldExheWVyUmVuZGVyZXIocmVuZGVyZXIpOwotfQotCiB2b2lkIENDTGF5
ZXJJbXBsOjpjcmVhdGVSZW5kZXJTdXJmYWNlKCkKIHsKICAgICBBU1NFUlQoIW1fcmVuZGVyU3Vy
ZmFjZSk7CkBAIC0xNDgsMTMgKzEyOSwxNCBAQCBib29sIENDTGF5ZXJJbXBsOjpkZXNjZW5kYW50
RHJhd3NDb250ZW50KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6
OmRyYXcoKQordm9pZCBDQ0xheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpiaW5k
Q29udGVudHNUZXh0dXJlKCkKK3ZvaWQgQ0NMYXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUo
TGF5ZXJSZW5kZXJlckNocm9taXVtKikKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAogdm9pZCBDQ0xheWVySW1wbDo6Y2xlYW51cFJlc291cmNlcygpCkBAIC0xNzIsMjEgKzE1NCwy
MCBAQCBjb25zdCBJbnRSZWN0IENDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1hcHBlZFJlY3Q7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmRyYXdEZWJ1Z0JvcmRl
cigpCit2b2lkIENDTGF5ZXJJbXBsOjpkcmF3RGVidWdCb3JkZXIoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKQogewogICAgIHN0YXRpYyBmbG9hdCBnbE1hdHJpeFsxNl07CiAg
ICAgaWYgKCFkZWJ1Z0JvcmRlckNvbG9yKCkuYWxwaGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQgPSBsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKTsKLSAgICBjb25zdCBMYXllckNocm9taXVt
OjpCb3JkZXJQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT5ib3JkZXJQcm9ncmFt
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5jb250
ZXh0KCk7CisgICAgY29uc3QgTGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogcHJvZ3JhbSA9
IGxheWVyUmVuZGVyZXItPmJvcmRlclByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBw
cm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJv
Z3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJl
bmRlck1hdHJpeCA9IGRyYXdUcmFuc2Zvcm0oKTsKICAgICByZW5kZXJNYXRyaXguc2NhbGUzZChi
b3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgMSk7Ci0gICAgdG9HTE1hdHJpeCgm
Z2xNYXRyaXhbMF0sIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVy
TWF0cml4KTsKKyAgICB0b0dMTWF0cml4KCZnbE1hdHJpeFswXSwgbGF5ZXJSZW5kZXJlci0+cHJv
amVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KTsKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2NhdGlvbigpLCBk
ZWJ1Z0JvcmRlckNvbG9yKCkucmVkKCkgLyAyNTUuMCwgZGVidWdCb3JkZXJDb2xvcigpLmdyZWVu
KCkgLyAyNTUuMCwgZGVidWdCb3JkZXJDb2xvcigpLmJsdWUoKSAvIDI1NS4wLCAxKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaAppbmRleCBjNWMxODVhMTMzM2QyZWNkYTE3YWMwMWVhY2UzYzVhZmI3YzQw
NDA1Li5jYzM4MDUzZGJkNTdhNjE4ZjkwYTkzYzYwOTg5Mzk5ZTgyZmVlZWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKQEAgLTcwLDkgKzcwLDkgQEAgcHVibGljOgogICAgIGludCBkZWJ1Z0lEKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z0lEOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBk
cmF3KCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAg
ICAgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYmlu
ZENvbnRlbnRzVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJl
KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
bGF5ZXIgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAgICB2b2lkIHNldERyYXdzQ29udGVudChib29s
IGRyYXdzQ29udGVudCkgeyBtX2RyYXdzQ29udGVudCA9IGRyYXdzQ29udGVudDsgfQpAQCAtMTIy
LDExICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0
IHdpZHRoKSB7IG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOyB9CiAgICAgZmxvYXQgZGVidWdC
b3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQogCi0gICAg
dm9pZCBkcmF3RGVidWdCb3JkZXIoKTsKLQotICAgIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXll
clJlbmRlcmVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIHNldExheWVyUmVuZGVyZXJSZWN1cnNpdmUo
TGF5ZXJSZW5kZXJlckNocm9taXVtKik7Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CisgICAg
dm9pZCBkcmF3RGVidWdCb3JkZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKICAgICBDQ1Jl
bmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZh
Y2UuZ2V0KCk7IH0KICAgICB2b2lkIGNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTI0OCw5ICsy
NDQsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gSGllcmFyY2hpY2FsIGJvdW5kaW5nIHJlY3QgY29u
dGFpbmluZyB0aGUgbGF5ZXIgYW5kIGl0cyBkZXNjZW5kYW50cy4KICAgICBJbnRSZWN0IG1fZHJh
d2FibGVDb250ZW50UmVjdDsKLQotICAgIC8vIFBvaW50cyB0byB0aGUgbGF5ZXIgcmVuZGVyZXIg
dGhhdCB1cGRhdGVzIGFuZCBkcmF3cyB0aGlzIGxheWVyLgotICAgIFJlZlB0cjxMYXllclJlbmRl
cmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKIH07CiAKIHZvaWQgc29ydExheWVycyhWZWN0
b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRvciBmaXJzdCwgVmVjdG9yPFJlZlB0cjxD
Q0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IGM3MTNmMDNlN2FkMjMxNzlhYzg3NzYzMGEyM2M5ZjQ3ODFi
NzFjNTcuLjM3N2Y2OTFkMjE2ZWE4ZWE2NTM3ZWJlMDE2NDViNzkyNTE1ZTM5OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIENDVGhyZWFkOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5
ZXJQYWludGVyQ2hyb21pdW07Ci1jbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBjbGFzcyBH
cmFwaGljc0xheWVyOwogY2xhc3MgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogY2xhc3MgVGV4
dHVyZU1hbmFnZXI7CkBAIC0xNzQsOCArMTczLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOwogCi0gICAgUGFzc1JlZlB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0
ZUxheWVyUmVuZGVyZXIoKTsKLQogICAgIGJvb2wgbV9hbmltYXRpbmc7CiAKICAgICBDQ0xheWVy
VHJlZUhvc3RDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBiZWM3YzAyZDI1ZWU1MTNhOTI4NTY3NWNjNzRiOTA1NDQxOTM1OTJiLi5i
MzA0ODM2OGRhYTIwNzZmYTQ5ZGJhMTRiYjljOTM2OThiNjc2ZTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAKIGJvb2wgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBs
YXllclJlbmRlcmVyOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVu
ZGVyZXI7CiAgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRl
KHRoaXMsIGNvbnRleHQpOwogCiAgICAgLy8gSWYgY3JlYXRpb24gZmFpbGVkLCBhbmQgd2UgaGFk
IGFza2VkIGZvciBhY2NlbGVyYXRlZCBwYWludGluZywgZGlzYWJsZSBhY2NlbGVyYXRlZCBwYWlu
dGluZwpAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4KICAgICAgICAg
bV9sYXllclJlbmRlcmVyLT5jbG9zZSgpOwogICAgIH0KIAotICAgIG1fbGF5ZXJSZW5kZXJlciA9
IGxheWVyUmVuZGVyZXI7CisgICAgbV9sYXllclJlbmRlcmVyID0gbGF5ZXJSZW5kZXJlci5yZWxl
YXNlKCk7CiAgICAgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGRmZjk2ODA2ZDg1ZjIwYjE4YzBmNDQ4MWNhMTRmMDI5
NWNlYzhjNmUuLmM3NTJlMDAxNDAwYTUyMWJiOTNmZDU2NWMzNzliNmJkNzllMzEyYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJvdGVj
dGVkOgogICAgIGludCBtX2ZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxMYXll
clJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKKyAgICBPd25QdHI8TGF5ZXJSZW5k
ZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBt
X3Jvb3RMYXllckltcGw7CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUg
bV92aWV3cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKaW5kZXgg
MGYxNjViZTJhMWY5OThkODlkMmJiNTg3MjI2NGJkMjNkZWQwMmI5Zi4uNzAzMDYxNzE0OTVlYTU3
NmVkNmU3N2QxMmM1ODYwNzA4NjEzYmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJ
bXBsLmNwcApAQCAtNDYsMTMgKzQ2LDEyIEBAIENDUGx1Z2luTGF5ZXJJbXBsOjp+Q0NQbHVnaW5M
YXllckltcGwoKQogewogfQogCi12b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkcmF3KCkKK3ZvaWQg
Q0NQbHVnaW5MYXllckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNTRVJU
KGxheWVyUmVuZGVyZXIoKSk7Ci0gICAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0q
IHByb2dyYW0gPSBsYXllclJlbmRlcmVyKCktPnBsdWdpbkxheWVyUHJvZ3JhbSgpOworICAgIGNv
bnN0IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+
cGx1Z2luTGF5ZXJQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRl
cmVyKCktPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVy
ZUlkKSk7CiAKQEAgLTY1LDggKzY0LDggQEAgdm9pZCBDQ1BsdWdpbkxheWVySW1wbDo6ZHJhdygp
CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFt
KCkpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBMYXllckNocm9taXVtOjpk
cmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJp
eCgpLCBkcmF3VHJhbnNmb3JtKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwgbGF5
ZXJSZW5kZXJlcigpLT5zaGFyZWRHZW9tZXRyeVF1YWQoKSwKKyAgICBMYXllckNocm9taXVtOjpk
cmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXItPnByb2plY3Rpb25NYXRyaXgo
KSwgZHJhd1RyYW5zZm9ybSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym91bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVy
UmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuYWxwaGFMb2NhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggZTRjOGIyMGE3ODgzOGFk
YmI2ZTRmNWY5ZTFmZjJmNTEzNmQ4ZDQ2OS4uM2RiNzA2Y2YwMzRlMzI1OWYzYWYzMjYwNjU1MDlj
MDBmNDY5ZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
UG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dyYW07CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhdygpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJD
aHJvbWl1bSopOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0
cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cAppbmRleCAyYTliMGU1NDE1NmZkZjVlZGZjN2E3YmIxZmJiNGRmM2QzMDc1NGQ1Li4zMGU0N2E5
YjUyMDdmNTk5NjJjYTY0MjM2NjdhNTI5M2U5MDI5ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHAKQEAgLTU3LDE3ICs1Nyw5IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpjbGVh
bnVwUmVzb3VyY2VzKCkKICAgICBpZiAoIW1fY29udGVudHNUZXh0dXJlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLQogICAgIG1fY29udGVudHNUZXh0
dXJlLmNsZWFyKCk7CiB9CiAKLUxheWVyUmVuZGVyZXJDaHJvbWl1bSogQ0NSZW5kZXJTdXJmYWNl
OjpsYXllclJlbmRlcmVyKCkKLXsKLSAgICBBU1NFUlQobV9vd25pbmdMYXllcik7Ci0gICAgcmV0
dXJuIG1fb3duaW5nTGF5ZXItPmxheWVyUmVuZGVyZXIoKTsKLX0KLQogRmxvYXRSZWN0IENDUmVu
ZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0
IGxvY2FsQ29udGVudFJlY3QoLTAuNSAqIG1fY29udGVudFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1f
Y29udGVudFJlY3QuaGVpZ2h0KCksCkBAIC03OSwxMCArNzEsMTAgQEAgRmxvYXRSZWN0IENDUmVu
ZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGRyYXdh
YmxlQ29udGVudFJlY3Q7CiB9CiAKLWJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQ29udGVu
dHNUZXh0dXJlKCkKK2Jvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQ29udGVudHNUZXh0dXJl
KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIHsKICAgICBJbnRTaXplIHJl
cXVpcmVkU2l6ZShtX2NvbnRlbnRSZWN0LnNpemUoKSk7Ci0gICAgVGV4dHVyZU1hbmFnZXIqIHRl
eHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlcigpLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFn
ZXIoKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVy
LT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlmICghbV9jb250ZW50c1Rl
eHR1cmUpCiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0
ZSh0ZXh0dXJlTWFuYWdlcik7CkBAIC0xMDYsNyArOTgsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFj
ZTo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpCiAgICAgbV9jb250ZW50c1RleHR1cmUtPnVucmVz
ZXJ2ZSgpOwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhdyhjb25zdCBJbnRSZWN0JikK
K3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlciwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX2Nv
bnRlbnRzVGV4dHVyZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxLDMwICsxMTMsMzAgQEAgdm9p
ZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXcoY29uc3QgSW50UmVjdCYpCiAgICAgICAgIHJlcGxpY2FN
YXNrTGF5ZXIgPSBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCk7CiAK
ICAgICBpZiAobV9vd25pbmdMYXllci0+cGFyZW50KCkgJiYgbV9vd25pbmdMYXllci0+cGFyZW50
KCktPnVzZXNMYXllclNjaXNzb3IoKSkKLSAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5zZXRTY2lz
c29yVG9SZWN0KG1fc2Npc3NvclJlY3QpOworICAgICAgICBsYXllclJlbmRlcmVyLT5zZXRTY2lz
c29yVG9SZWN0KG1fc2Npc3NvclJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgR0xDKGxheWVyUmVu
ZGVyZXIoKS0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKS0+ZGlzYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CisgICAgICAgIEdMQyhsYXllclJlbmRl
cmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+ZGlzYWJsZShHcmFwaGlj
c0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CiAKICAgICAvLyBSZWZsZWN0aW9uIGRyYXdzIGJl
Zm9yZSB0aGUgbGF5ZXIuCiAgICAgaWYgKG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQot
ICAgICAgICBkcmF3TGF5ZXIocmVwbGljYU1hc2tMYXllciwgbV9yZXBsaWNhRHJhd1RyYW5zZm9y
bSk7CisgICAgICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCByZXBsaWNhTWFza0xheWVyLCBt
X3JlcGxpY2FEcmF3VHJhbnNmb3JtKTsKIAotICAgIGRyYXdMYXllcihtX21hc2tMYXllciwgbV9k
cmF3VHJhbnNmb3JtKTsKKyAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIs
IG1fZHJhd1RyYW5zZm9ybSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIo
Q0NMYXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdU
cmFuc2Zvcm0pCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd0xheWVyKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pCiB7CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9ybTsKICAgICAvLyBBcHBseSBhIHNjYWxp
bmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUu
CiAgICAgcmVuZGVyTWF0cml4LnNjYWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRl
bnRSZWN0LmhlaWdodCgpLCAxKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1h
dHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGxheWVyUmVuZGVyZXIoKS0+d2luZG93TWF0cml4
KCkgKiBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCku
dG8yZFRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KGxheWVyUmVuZGVyZXItPndpbmRvd01hdHJpeCgpICogbGF5
ZXJSZW5kZXJlci0+cHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KS50bzJkVHJhbnNm
b3JtKCk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBp
cyBpbnZlcnRpYmxlLgogICAgIGlmICghZGV2aWNlTWF0cml4LmlzSW52ZXJ0aWJsZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGbG9hdFF1YWQgcXVhZCA9IGRldmljZU1hdHJpeC5tYXBRdWFk
KGxheWVyUmVuZGVyZXIoKS0+c2hhcmVkR2VvbWV0cnlRdWFkKCkpOworICAgIEZsb2F0UXVhZCBx
dWFkID0gZGV2aWNlTWF0cml4Lm1hcFF1YWQobGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlR
dWFkKCkpOwogICAgIENDTGF5ZXJRdWFkIGxheWVyUXVhZCA9IENDTGF5ZXJRdWFkKHF1YWQpOwog
CiAjaWYgZGVmaW5lZChPU19DSFJPTUVPUykKQEAgLTE2NSwyNyArMTU3LDI3IEBAIHZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoQ0NMYXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyCiAKICAgICBpZiAodXNlTWFzaykgewogICAgICAgICBpZiAodXNlQUEp
IHsKLSAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRl
cmVyKCktPnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7Ci0gICAgICAgICAgICBkcmF3U3Vy
ZmFjZShtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgbGF5ZXJRdWFkLCBw
cm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwg
cHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFt
QUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgp
OworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3
VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGxheWVyUXVhZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCksIHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRp
b24oKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBNYXNrUHJvZ3JhbSog
cHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0g
ICAgICAgICAgICBkcmF3U3VyZmFjZShtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1h
dHJpeCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tT
YW1wbGVyTG9jYXRpb24oKSwgLTEsIC0xKTsKKyAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFt
KiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Cisg
ICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFu
c2Zvcm0sIGRldmljZU1hdHJpeCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgLTEsIC0xKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmICh1c2VBQSkgewotICAgICAgICAgICAgY29uc3QgUHJvZ3Jh
bUFBKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCk7
Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmlj
ZU1hdHJpeCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
cG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigp
KTsKKyAgICAgICAgICAgIGNvbnN0IFByb2dyYW1BQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIt
PnJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVy
UmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBsYXllclF1
YWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCks
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIo
KS0+cmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKLSAgICAgICAgICAgIGRyYXdTdXJmYWNlKG1hc2tM
YXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBsYXllclF1YWQsIHByb2dyYW0sIC0x
LCAtMSwgLTEpOworICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShs
YXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgbGF5
ZXJRdWFkLCBwcm9ncmFtLCAtMSwgLTEsIC0xKTsKICAgICAgICAgfQogICAgIH0KIH0KIAogdGVt
cGxhdGUgPGNsYXNzIFQ+Ci12b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoQ0NMYXll
ckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zv
cm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IEND
TGF5ZXJRdWFkJiBsYXllclF1YWQsIGNvbnN0IFQqIHByb2dyYW0sIGludCBzaGFkZXJNYXNrU2Ft
cGxlckxvY2F0aW9uLCBpbnQgc2hhZGVyUXVhZExvY2F0aW9uLCBpbnQgc2hhZGVyRWRnZUxvY2F0
aW9uKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IENDTGF5ZXJRdWFkJiBsYXllclF1YWQsIGNvbnN0IFQq
IHByb2dyYW0sIGludCBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uLCBpbnQgc2hhZGVyUXVhZExv
Y2F0aW9uLCBpbnQgc2hhZGVyRWRnZUxvY2F0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0M0QgPSBsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dDNEID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogCiAgICAgY29u
dGV4dDNELT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0
M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CkBAIC0xOTcsNyArMTg5LDcgQEAg
dm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWEKICAgICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlv
biAhPSAtMSkgewogICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CiAgICAgICAgIEdMQyhjb250ZXh0M0Qs
IGNvbnRleHQzRC0+dW5pZm9ybTFpKHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIDEpKTsKLSAg
ICAgICAgbWFza0xheWVyLT5iaW5kQ29udGVudHNUZXh0dXJlKCk7CisgICAgICAgIG1hc2tMYXll
ci0+YmluZENvbnRlbnRzVGV4dHVyZShsYXllclJlbmRlcmVyKTsKICAgICAgICAgR0xDKGNvbnRl
eHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MCkpOwogICAgIH0KIApAQCAtMjEwLDcgKzIwMiw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpk
cmF3U3VyZmFjZShDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
CiAgICAgLy8gTWFwIGRldmljZSBzcGFjZSBxdWFkIHRvIGxheWVyIHNwYWNlLgogICAgIEZsb2F0
UXVhZCBxdWFkID0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKS5tYXBRdWFkKGxheWVyUXVhZC5m
bG9hdFF1YWQoKSk7CiAKLSAgICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGxheWVy
UmVuZGVyZXIoKS0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgo
KSwgZHJhd1RyYW5zZm9ybSwKKyAgICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGxh
eWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+cHJvamVjdGlvbk1hdHJpeCgp
LCBkcmF3VHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9j
b250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLCBtX2RyYXdPcGFjaXR5
LCBxdWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5h
bHBoYUxvY2F0aW9uKCksIHNoYWRlclF1YWRMb2NhdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oCmluZGV4IGU0ZmRmZTEzOWNhNGU4ZmU2M2QwOWMzMmNmNmQ5YmY5ZjYxNzNmMjUu
LmM5MzQ3YWEzYjkyZmM5YzQ4MWU1MjI4ZmVjNWI3NmEyYWIyYWYzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oCkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IENDUmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCopOwogICAgIH5DQ1JlbmRlclN1cmZhY2UoKTsK
IAotICAgIGJvb2wgcHJlcGFyZUNvbnRlbnRzVGV4dHVyZSgpOworICAgIGJvb2wgcHJlcGFyZUNv
bnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKICAgICB2b2lkIHJlbGVhc2VD
b250ZW50c1RleHR1cmUoKTsKICAgICB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKLSAgICB2b2lk
IGRyYXcoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QpOworICAgIHZvaWQgZHJhdyhM
YXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdCk7
CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZvaWQgZHVtcFN1cmZhY2UoVGV4dFN0
cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwpAQCAtOTgsMTAgKzk4LDkgQEAgcHVibGljOgogCiAg
ICAgaW50IG93bmluZ0xheWVySWQoKSBjb25zdDsKIHByaXZhdGU6Ci0gICAgTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyKCk7Ci0gICAgdm9pZCBkcmF3TGF5ZXIoQ0NMYXllcklt
cGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgZHJhd0xheWVyKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdTdXJmYWNlKEND
TGF5ZXJJbXBsKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IENDTGF5ZXJR
dWFkJiwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGlu
dCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pOworICAgIHZvaWQg
ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmLCBjb25zdCBUKiBwcm9n
cmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRMb2NhdGlv
biwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbik7CiAKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdM
YXllcjsKICAgICBDQ0xheWVySW1wbCogbV9tYXNrTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwCmluZGV4IDEyM2Q4NTAxNTU4Y2E0NjJkNmI0MGM3NDQ2MzQ4YzM1ZDc1ZTFi
MjUuLjFmOTZkYWVhMTE3ZjE3NGIzYmE2ZjJhNTg3YjQwMmY4NTVlOTJlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENDVGlsZWRMYXllcklt
cGw6On5DQ1RpbGVkTGF5ZXJJbXBsKCkKIHsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpi
aW5kQ29udGVudHNUZXh0dXJlKCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6YmluZENvbnRlbnRz
VGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBzaW5nbGUgdGV4dHVyZSBsYXllcnMsIGUu
Zy4gbWFza3MuCiAgICAgQVNTRVJUKG1fdGlsZXIpOwpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEND
VGlsZWRMYXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUoKQogICAgIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkID0gdGlsZSA/IHRpbGUtPnRleHR1cmVJZCgpIDogMDsKICAgICBBU1NFUlQo
dGV4dHVyZUlkKTsKIAotICAgIGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpLT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICBsYXllclJl
bmRlcmVyLT5jb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlSWQpOwogfQogCiB2b2lkIENDVGlsZWRMYXllckltcGw6OmR1bXBMYXllclBy
b3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CkBAIC05MiwxNCArOTIs
MTQgQEAgRHJhd2FibGVUaWxlKiBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGVUaWxlKGludCBpLCBp
bnQgaikKICAgICByZXR1cm4gdGlsZS5nZXQoKTsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjpkcmF3KCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIpCiB7CiAgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlz
aWJsZUxheWVyUmVjdCgpOwogCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX3RpbGVyIHx8IG1f
dGlsZXItPmlzRW1wdHkoKSB8fCBsYXllclJlY3QuaXNFbXB0eSgpIHx8ICFsYXllclJlbmRlcmVy
KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX3RpbGVyIHx8IG1fdGlsZXItPmlzRW1wdHko
KSB8fCBsYXllclJlY3QuaXNFbXB0eSgpIHx8ICFsYXllclJlbmRlcmVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VNYXRyaXggPSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeChsYXllclJlbmRlcmVyKCktPndpbmRvd01hdHJpeCgpICogbGF5ZXJSZW5kZXJl
cigpLT5wcm9qZWN0aW9uTWF0cml4KCkgKiBtX3RpbGluZ1RyYW5zZm9ybSkudG8yZFRyYW5zZm9y
bSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KGxheWVyUmVuZGVyZXItPndpbmRvd01hdHJpeCgpICogbGF5ZXJSZW5kZXJlci0+
cHJvamVjdGlvbk1hdHJpeCgpICogbV90aWxpbmdUcmFuc2Zvcm0pLnRvMmRUcmFuc2Zvcm0oKTsK
IAogICAgIC8vIERvbid0IGRyYXcgYW55IHRpbGVzIHdoZW4gZGV2aWNlIG1hdHJpeCBpcyBub3Qg
aW52ZXJ0aWJsZS4KICAgICBpZiAoIWRldmljZU1hdHJpeC5pc0ludmVydGlibGUoKSkKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXcoKQogICAgIGlmICh1c2VB
QSkKICAgICAgICAgbGF5ZXJRdWFkLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyKCktPmNvbnRleHQo
KTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRl
eHQoKTsKICAgICBpZiAoaXNSb290TGF5ZXIoKSkgewogICAgICAgICBjb250ZXh0LT5jb2xvck1h
c2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKQEAgLTEyOCwyMCArMTI4LDIw
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhdygpCiAgICAgc3dpdGNoIChtX3NhbXBsZWRU
ZXhlbEZvcm1hdCkgewogICAgIGNhc2UgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0UkdCQToKICAgICAgICAgaWYgKHVzZUFBKSB7Ci0gICAgICAgICAgICBjb25zdCBQcm9n
cmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCk7Ci0gICAg
ICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlcigpLCBsYXllclJlY3QsIG1fdGlsaW5nVHJh
bnNmb3JtLCBkZXZpY2VNYXRyaXgsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwg
cHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCks
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOworICAgICAgICAgICAg
Y29uc3QgUHJvZ3JhbUFBKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtQUEo
KTsKKyAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIG1fdGls
aW5nVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJv
Z3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0
aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVu
ZGVyZXIoKS0+dGlsZXJQcm9ncmFtKCk7Ci0gICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5k
ZXJlcigpLCBsYXllclJlY3QsIG1fdGlsaW5nVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGxheWVy
UXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKKyAgICAgICAgICAgIGNvbnN0
IFByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW0oKTsKKyAgICAg
ICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIG1fdGlsaW5nVHJhbnNm
b3JtLCBkZXZpY2VNYXRyaXgsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEs
IC0xKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE6CiAgICAgICAgIGlmICh1c2VBQSkgewotICAg
ICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGVBQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIo
KS0+dGlsZXJQcm9ncmFtU3dpenpsZUFBKCk7Ci0gICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJS
ZW5kZXJlcigpLCBsYXllclJlY3QsIG1fdGlsaW5nVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGxh
eWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuZWRnZUxvY2F0aW9uKCkpOworICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGVBQSog
cHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOworICAgICAg
ICAgICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbV90aWxpbmdUcmFuc2Zv
cm0sIGRldmljZU1hdHJpeCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgcHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBjb25zdCBQcm9ncmFtU3dpenpsZSogcHJvZ3JhbSA9IGxheWVyUmVuZGVy
ZXIoKS0+dGlsZXJQcm9ncmFtU3dpenpsZSgpOwotICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVy
UmVuZGVyZXIoKSwgbGF5ZXJSZWN0LCBtX3RpbGluZ1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBs
YXllclF1YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIC0xLCAtMSk7CisgICAgICAgICAgICBj
b25zdCBQcm9ncmFtU3dpenpsZSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3Jh
bVN3aXp6bGUoKTsKKyAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJl
Y3QsIG1fdGlsaW5nVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGxheWVyUXVhZCwgZHJhd09wYWNp
dHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4IGQwZGUzODcxNjc2OWQ5
NmVhMGNjZDg0YmY0MWZmZDAyNTM0ODBhZGEuLjgwNzFiZWJhZmQxOGFhZGI4YTZhZmI4Mjc2NGYy
MWQ3OGMwYWJmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQzLDggKzQz
LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhdygpOwotICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNU
ZXh0dXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7
CisgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFt
JiwgaW50IGluZGVudCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAK
aW5kZXggMjkzZGI0MmQxMDRkMDYyODE1N2E1OTg4ZjJjYzFlYTVhMDdjNDQ2Ny4uMmU3YjZmNjVm
NzIyOWJkNDVkYzFmN2RiZDM0YTg4MTY0N2MwOGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5jcHAKQEAgLTc3LDI2ICs3NywyMCBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OnNl
dFRleHR1cmUoc2l6ZV90IGluZGV4LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29ucwog
ICAgIG1fdGV4dHVyZXNbaW5kZXhdLnZpc2libGVTaXplID0gdmlzaWJsZVNpemU7CiB9CiAKLXZv
aWQgQ0NWaWRlb0xheWVySW1wbDo6ZHJhdygpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmRyYXco
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAKICAgICBpZiAobV9za2lwc0RyYXcpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwotICAgIGNvbnN0IFJHQkFQcm9n
cmFtKiByZ2JhUHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dmlkZW9MYXllclJHQkFQcm9ncmFt
KCk7Ci0gICAgQVNTRVJUKHJnYmFQcm9ncmFtICYmIHJnYmFQcm9ncmFtLT5pbml0aWFsaXplZCgp
KTsKLSAgICBjb25zdCBZVVZQcm9ncmFtKiB5dXZQcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT52
aWRlb0xheWVyWVVWUHJvZ3JhbSgpOwotICAgIEFTU0VSVCh5dXZQcm9ncmFtICYmIHl1dlByb2dy
YW0tPmluaXRpYWxpemVkKCkpOwotCiAgICAgc3dpdGNoIChtX2ZyYW1lRm9ybWF0KSB7CiAgICAg
Y2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTI6CiAgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21p
dW06OllWMTY6Ci0gICAgICAgIGRyYXdZVVYoeXV2UHJvZ3JhbSk7CisgICAgICAgIGRyYXdZVVYo
bGF5ZXJSZW5kZXJlcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9t
aXVtOjpSR0JBOgotICAgICAgICBkcmF3UkdCQShyZ2JhUHJvZ3JhbSk7CisgICAgICAgIGRyYXdS
R0JBKGxheWVyUmVuZGVyZXIpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IG90aGVyIHBhdGhzLgpAQCAtMTA1LDkgKzk5LDEyIEBAIHZv
aWQgQ0NWaWRlb0xheWVySW1wbDo6ZHJhdygpCiAgICAgfQogfQogCi12b2lkIENDVmlkZW9MYXll
ckltcGw6OmRyYXdZVVYoY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6WVVWUHJvZ3JhbSogcHJvZ3Jh
bSkgY29uc3QKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHJhd1lVVihMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQgPSBsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKTsKKyAgICBjb25zdCBZVVZQcm9ncmFt
KiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dmlkZW9MYXllcllVVlByb2dyYW0oKTsKKyAgICBB
U1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKKworICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIENDVmlk
ZW9MYXllckltcGw6OlRleHR1cmUgeVRleHR1cmUgPSBtX3RleHR1cmVzW1ZpZGVvRnJhbWVDaHJv
bWl1bTo6eVBsYW5lXTsKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpUZXh0dXJlIHVUZXh0dXJlID0g
bV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnVQbGFuZV07CiAgICAgQ0NWaWRlb0xheWVy
SW1wbDo6VGV4dHVyZSB2VGV4dHVyZSA9IG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjp2
UGxhbmVdOwpAQCAtMTM0LDcgKzEzMSw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZHJhd1lV
Vihjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtKiBwcm9ncmFtKSBjb25zCiAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYocHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXIoKS5jY01hdHJpeExvY2F0aW9uKCksIDAsIGNvbnN0X2Nhc3Q8ZmxvYXQqPih5dXYyUkdC
KSwgMSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtM2Z2KHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkueXV2QWRqTG9jYXRpb24oKSwgY29uc3RfY2FzdDxmbG9hdCo+KHl1dkFk
anVzdCksIDEpKTsKIAotICAgIExheWVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29udGV4
dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwK
KyAgICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVy
ZXItPnByb2plY3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCks
IGRyYXdPcGFjaXR5KCksIEZsb2F0UXVhZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
YWxwaGFMb2NhdGlvbigpLApAQCAtMTQ0LDkgKzE0MSwxMiBAQCB2b2lkIENDVmlkZW9MYXllcklt
cGw6OmRyYXdZVVYoY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6WVVWUHJvZ3JhbSogcHJvZ3JhbSkg
Y29ucwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFMCkpOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmRyYXdSR0JB
KGNvbnN0IENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFtKiBwcm9ncmFtKSBjb25zdAordm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkcmF3UkdCQShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXll
clJlbmRlcmVyKCktPmNvbnRleHQoKTsKKyAgICBjb25zdCBSR0JBUHJvZ3JhbSogcHJvZ3JhbSA9
IGxheWVyUmVuZGVyZXItPnZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9n
cmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOworCisgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5jb250ZXh0KCk7CiAgICAgQ0NWaWRlb0xheWVySW1w
bDo6VGV4dHVyZSB0ZXh0dXJlID0gbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBs
YW5lXTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOwpAQCAtMTU4LDggKzE1OCw4IEBAIHZvaWQgQ0NWaWRlb0xh
eWVySW1wbDo6ZHJhd1JHQkEoY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHBy
b2dyYW0pIGNvCiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIAotICAgIExheWVyQ2hy
b21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0
aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3T3BhY2l0
eSgpLCBsYXllclJlbmRlcmVyKCktPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAorICAgIExheWVyQ2hy
b21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlci0+cHJvamVjdGlv
bk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgZHJhd09wYWNpdHko
KSwgbGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggNmJmMzUyOTFl
YzBiZDBmOGRhZDkwZjUxODhlNWI1YTMxNWMzZWNiNC4uZTZhNTQ0ZDhmNTg2ZDM4MjNhY2RjM2Nl
NTYzNWU0Mzg3MDQwYzkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUkdCQVBy
b2dyYW07CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZT
dHJldGNoLCBGcmFnbWVudFNoYWRlcllVVlZpZGVvPiBZVVZQcm9ncmFtOwogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21p
dW0qKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0m
LCBpbnQgaW5kZW50KSBjb25zdDsKIApAQCAtNjYsOCArNjYsOCBAQCBwcml2YXRlOgogICAgICAg
ICBJbnRTaXplIHZpc2libGVTaXplOwogICAgIH07CiAKLSAgICB2b2lkIGRyYXdZVVYoY29uc3Qg
WVVWUHJvZ3JhbSopIGNvbnN0OwotICAgIHZvaWQgZHJhd1JHQkEoY29uc3QgUkdCQVByb2dyYW0q
KSBjb25zdDsKKyAgICB2b2lkIGRyYXdZVVYoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgY29uc3Q7
CisgICAgdm9pZCBkcmF3UkdCQShMYXllclJlbmRlcmVyQ2hyb21pdW0qKSBjb25zdDsKIAogICAg
IHN0YXRpYyBjb25zdCBmbG9hdCB5dXYyUkdCWzldOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCB5
dXZBZGp1c3RbM107Cg==
</data>
<flag name="review"
          id="104095"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>