<?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>123944</bug_id>
          
          <creation_ts>2013-11-06 17:29:37 -0800</creation_ts>
          <short_desc>Remote Layer Tree: RemoteLayerBackingStore partial repaint is broken for the tile cache</short_desc>
          <delta_ts>2013-11-08 17:42:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948012</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-06 17:29:37 -0800</bug_when>
    <thetext>Because of the way repaint rects work through TileController, we&apos;re repainting the whole tile every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948485</commentid>
    <comment_count>1</comment_count>
      <attachid>216346</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-07 17:38:51 -0800</bug_when>
    <thetext>Created attachment 216346
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948486</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-07 17:41:29 -0800</bug_when>
    <thetext>Attachment 216346 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/platform/graphics/ca/PlatformCALayer.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileController.mm&apos;, u&apos;Source/WebCore/platform/graphics/mac/WebLayer.h&apos;, u&apos;Source/WebCore/platform/graphics/mac/WebLayer.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/mac/RemoteLayerBackingStore.h&apos;, u&apos;Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.h:144:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948496</commentid>
    <comment_count>3</comment_count>
      <attachid>216349</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-07 18:09:02 -0800</bug_when>
    <thetext>Created attachment 216349
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948514</commentid>
    <comment_count>4</comment_count>
      <attachid>216349</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-07 18:39:46 -0800</bug_when>
    <thetext>Comment on attachment 216349
patch

Attachment 216349 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/22778309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948522</commentid>
    <comment_count>5</comment_count>
      <attachid>216349</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-07 19:13:02 -0800</bug_when>
    <thetext>Comment on attachment 216349
patch

Attachment 216349 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/22538328</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948534</commentid>
    <comment_count>6</comment_count>
      <attachid>216349</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-07 20:08:28 -0800</bug_when>
    <thetext>Comment on attachment 216349
patch

Attachment 216349 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/22598413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948753</commentid>
    <comment_count>7</comment_count>
      <attachid>216416</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-08 11:25:50 -0800</bug_when>
    <thetext>Created attachment 216416
accidental SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948956</commentid>
    <comment_count>8</comment_count>
      <attachid>216416</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-11-08 17:35:00 -0800</bug_when>
    <thetext>Comment on attachment 216416
accidental SPI

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * platform/graphics/ca/PlatformCALayer.h:

High level summary please!

&gt; Source/WebCore/ChangeLog:30
&gt; +        has at least one layer in it (appending the clip bounds if we don&apos;t

one rect?

&gt; Source/WebCore/platform/graphics/mac/WebLayer.mm:112
&gt; +        graphicsContext.clip(rect);

In the one-rect case you&apos;re clipping here where you didn&apos;t before, but that&apos;s probably OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948961</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-08 17:42:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/158982</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216346</attachid>
            <date>2013-11-07 17:38:51 -0800</date>
            <delta_ts>2013-11-07 18:09:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>25952</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlODNkMGMxLi5lMDJhMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMTEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHBhcnRp
YWwgcmVwYWludCBpcyBicm9rZW4gZm9yIHRoZSB0aWxlIGNhY2hlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBTGF5ZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjplbnVtZXJh
dGVSZWN0c0JlaW5nRHJhd24pOgorICAgICAgICBBbGxvdyB0aGUgUGxhdGZvcm1DQUxheWVyIHRv
IGRlY2lkZSBob3cgdG8gZW51bWVyYXRlIHJlY3RzIHRvIHBhaW50LgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmg6
CisgICAgICAgIEFkZCBSZXBhaW50UmVjdExpc3QsIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IFdl
YkNvcmU6OnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAgRmFjdG9y
IGNvbGxlY3RSZWN0c1RvUGFpbnQgb3V0OyBpdCBqdXN0IGdyYWJzIHRoZSByZWN0cyBmcm9tCisg
ICAgICAgIHRoZSBsYXllciBhbmQgbWFrZXMgdGhlIGRlY2lzaW9uIHdoZXRoZXIgdG8gcmVwYWlu
dCB0aGUgYm91bmRzCisgICAgICAgIG9mIHRoZSBkaXJ0eSByZWdpb24gb3IganVzdCB0aGUgc3Vi
cmVnaW9ucy4KKworICAgICAgICBNb3ZlIGNhbGxzIHRvIGNvbGxlY3RSZWN0c1RvUGFpbnQoKSB0
byBjYWxsZXJzIG9mIGRyYXdMYXllckNvbnRlbnRzKCksCisgICAgICAgIHNvIHRoYXQgVGlsZUNv
bnRyb2xsZXIgY2FuIGNvbGxlY3QgcmVjdHMgZnJvbSB0aGUgYXBwcm9wcmlhdGUgc291cmNlCisg
ICAgICAgICh0aGUgVGlsZSBsYXllcikgYW5kIG90aGVyIGxheWVycyBqdXN0IGNvbnRpbnVlIGdy
YWJiaW5nIHRoZW0gZnJvbQorICAgICAgICB0aGVpciByZWxldmFudCBsYXllcnMuCisKKyAgICAg
ICAgTWFrZSBzdXJlIHRoYXQgdGhlIGxpc3QgdGhhdCBjb21lcyBmcm9tIGNvbGxlY3RSZWN0c1Rv
UGFpbnQoKSBhbHdheXMKKyAgICAgICAgaGFzIGF0IGxlYXN0IG9uZSBsYXllciBpbiBpdCAoYXBw
ZW5kaW5nIHRoZSBjbGlwIGJvdW5kcyBpZiB3ZSBkb24ndAorICAgICAgICB3YW50IHRvIHJlcGFp
bnQgc3VicmVnaW9ucykgc28gd2UgY2FuIHNpbXBsaWZ5IGxvZ2ljIGluIGRyYXdMYXllckNvbnRl
bnRzLgorCisgICAgICAgIChXZWJDb3JlOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAgICAgIFJl
bW92ZSBjb2RlIHRvIHN1cHBvcnQgQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwLCBhcyBp
dCdzIG9ubHkKKyAgICAgICAgdXNlZCBvbiBXaW5kb3dzLCBzbyB0aGlzIE1hYy1zcGVjaWZpYyBj
b2RlIGRvZXNuJ3QgbmVlZCB0byBzdXBwb3J0IGl0LgorCisgICAgICAgIFNpbXBsaWZ5IGxvZ2lj
IGdpdmVuIHRoYXQgZGlydHlSZWN0cyB3aWxsIGFsd2F5cyBiZSBub24tZW1wdHkuCisKKyAgICAg
ICAgKC1bV2ViTGF5ZXIgZHJhd0luQ29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5
ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9UaWxlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgQWRvcHQgY29sbGVj
dFJlY3RzVG9QYWludC4KKwogMjAxMy0xMS0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRShURVhUX1NFTEVDVElPTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggYTViOGFjNS4uNmU4MjM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTY5
MCw3ICs2OTAsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9uQzFFUk5TXzE0U1FM
aXRlRGF0YWJhc2VFYgogX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYKIF9fWk43
V2ViQ29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVk
UmVzb3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2FkZXJPcHRp
b25zRQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9i
amVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCi1fX1pON1dlYkNvcmUxN2Ry
YXdMYXllckNvbnRlbnRzRVA5Q0dDb250ZXh0UE5TXzE1UGxhdGZvcm1DQUxheWVyRU4zV1RGNlZl
Y3RvcklOU185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19fWk43V2Vi
Q29yZTE3ZHJhd0xheWVyQ29udGVudHNFUDlDR0NvbnRleHRQTlNfMTVQbGF0Zm9ybUNBTGF5ZXJF
Uk4zV1RGNlZlY3RvcklOU185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUK
IF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19aTjdXZWJDb3JlMTdvcGVuVGVt
cG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJv
bURPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0
cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUxheWVyLmgKaW5kZXggZTA2NmM3OC4uN2JiZDM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTIw
MCw2ICsyMDAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KikgY29uc3QgPSAwOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9p
ZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmLCB2b2lkICheYmxvY2spKENH
UmVjdCkpID0gMDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1DQUxheWVyKExh
eWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiAgICAgICAg
IDogbV9sYXllclR5cGUobGF5ZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oCmluZGV4IDAz
NWRhMTEuLjEwZjkwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmgKQEAgLTE0MSw2ICsxNDEs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBj
cmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCopIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGVudW1l
cmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShD
R1JlY3QpKSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNBTGF5ZXJNYWMoTGF5
ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBTGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCmluZGV4IGZjOWJjMzIuLjcwZDYyOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Bs
YXRmb3JtQ0FMYXllck1hYy5tbQpAQCAtNzMxLDQgKzczMSw5IEBAIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0
Zm9ybUNBCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllck1hYzo6Y3JlYXRlKGxheWVyVHlwZSwg
Y2xpZW50KTsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQorewor
ICAgIHdrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayhtX2xheWVyLmdl
dCgpLCBjb250ZXh0LCBibG9jayk7Cit9CisKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0KaW5kZXggN2U1NWEyOC4uNjQ2ZDk5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxl
Q29udHJvbGxlci5tbQpAQCAtMTcxLDcgKzE3MSw4IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnBs
YXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5
CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1sYXllck9yaWdpbi54KCksIC1sYXllck9yaWdp
bi55KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShtX3NjYWxlLCBtX3NjYWxl
KSk7CiAKLSAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgbV90aWxlQ2FjaGVMYXllcik7CisgICAgICAgIFJlcGFpbnRSZWN0TGlzdCBkaXJ0eVJlY3Rz
ID0gY29sbGVjdFJlY3RzVG9QYWludChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBwbGF0Zm9y
bUNBTGF5ZXIpOworICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBtX3RpbGVDYWNoZUxheWVyLCBkaXJ0eVJlY3RzKTsKICAgICB9CiAKICAgICBpbnQg
cmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRm
b3JtQ0FMYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5oCmluZGV4IDI1MGJkYWQuLjUyZGNiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCkBAIC00NiwxMCArNDYsMTIgQEAgY2xh
c3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIGNsYXNzIFBsYXRmb3Jt
Q0FMYXllckNsaWVudDsKIAordHlwZWRlZiBWZWN0b3I8RmxvYXRSZWN0LCB3ZWJMYXllck1heFJl
Y3RzVG9QYWludD4gUmVwYWludFJlY3RMaXN0OworCiAvLyBGdW5jdGlvbnMgYWxsb3dzIHVzIHRv
IHNoYXJlIGltcGxlbWVudGF0aW9uIGFjcm9zcyBXZWJUaWxlZExheWVyIGFuZCBXZWJMYXllcgot
dm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciopOwotdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYsIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllciosIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3QsIHdlYkxheWVyTWF4UmVj
dHNUb1BhaW50PiBkaXJ0eVJlY3RzKTsKLXZvaWQgZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250
ZXh0UmVmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENvdW50LCBDR0Nv
bG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CitSZXBhaW50UmVjdExpc3QgY29sbGVjdFJl
Y3RzVG9QYWludChDR0NvbnRleHRSZWYsIFBsYXRmb3JtQ0FMYXllciopOwordm9pZCBkcmF3TGF5
ZXJDb250ZW50cyhDR0NvbnRleHRSZWYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlz
dCYgZGlydHlSZWN0cyk7Cit2b2lkIGRyYXdSZXBhaW50SW5kaWNhdG9yKENHQ29udGV4dFJlZiwg
UGxhdGZvcm1DQUxheWVyKiwgaW50IHJlcGFpbnRDb3VudCwgQ0dDb2xvclJlZiBjdXN0b21CYWNr
Z3JvdW5kQ29sb3IpOwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxh
eWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1t
CmluZGV4IDAzMTk0ZTkuLjNhODZjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMzLDggKzMzLDYgQEAKICNpbXBvcnQgIkdy
YXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0ICJU
aGVtZU1hYy5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2ltcG9ydCA8
b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogQGlu
dGVyZmFjZSBDQUxheWVyKFdlYkNvcmVDQUxheWVyUHJpdmF0ZSkKQEAgLTQ1LDMyICs0MywzMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IGRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllcikKK1JlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNU
b1BhaW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FM
YXllcikKIHsKICAgICBfX2Jsb2NrIGRvdWJsZSB0b3RhbFJlY3RBcmVhID0gMDsKICAgICBfX2Js
b2NrIHVuc2lnbmVkIHJlY3RDb3VudCA9IDA7Ci0gICAgX19ibG9jayBWZWN0b3I8RmxvYXRSZWN0
LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gZGlydHlSZWN0czsKKyAgICBfX2Jsb2NrIFJlcGFp
bnRSZWN0TGlzdCBkaXJ0eVJlY3RzOwogCi0gICAgaWYgKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3Jt
TGF5ZXIgPSBwbGF0Zm9ybUNBTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkgewotICAgICAgICB3a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2socGxhdGZvcm1MYXllciwgY29u
dGV4dCwgXihDR1JlY3QgcmVjdCkgewotICAgICAgICAgICAgaWYgKCsrcmVjdENvdW50ID4gd2Vi
TGF5ZXJNYXhSZWN0c1RvUGFpbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIHBsYXRm
b3JtQ0FMYXllci0+ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKGNvbnRleHQsIF4oQ0dSZWN0IHJl
Y3QpIHsKKyAgICAgICAgaWYgKCsrcmVjdENvdW50ID4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQp
CisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHRvdGFsUmVjdEFyZWEgKz0gcmVj
dC5zaXplLndpZHRoICogcmVjdC5zaXplLmhlaWdodDsKLSAgICAgICAgICAgIGRpcnR5UmVjdHMu
YXBwZW5kKHJlY3QpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgICAgIHRvdGFsUmVjdEFyZWEg
Kz0gcmVjdC5zaXplLndpZHRoICogcmVjdC5zaXplLmhlaWdodDsKKyAgICAgICAgZGlydHlSZWN0
cy5hcHBlbmQocmVjdCk7CisgICAgfSk7CiAKICAgICBGbG9hdFJlY3QgY2xpcEJvdW5kcyA9IENH
Q29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KTsKICAgICBkb3VibGUgY2xpcEFyZWEg
PSBjbGlwQm91bmRzLndpZHRoKCkgKiBjbGlwQm91bmRzLmhlaWdodCgpOwogCi0gICAgaWYgKHJl
Y3RDb3VudCA+PSB3ZWJMYXllck1heFJlY3RzVG9QYWludCB8fCB0b3RhbFJlY3RBcmVhID49IGNs
aXBBcmVhICogd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCkKKyAgICBpZiAocmVjdENvdW50
ID49IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50IHx8IHRvdGFsUmVjdEFyZWEgPj0gY2xpcEFyZWEg
KiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkKSB7CiAgICAgICAgIGRpcnR5UmVjdHMuY2xl
YXIoKTsKKyAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQoY2xpcEJvdW5kcyk7CisgICAgfQogCi0g
ICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgcGxhdGZvcm1DQUxheWVyLCBkaXJ0eVJlY3Rz
KTsKKyAgICByZXR1cm4gZGlydHlSZWN0czsKIH0KIAotdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhD
R0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIsIFZlY3RvcjxGbG9hdFJlY3QsIHdlYkxheWVyTWF4UmVjdHNUb1BhaW50PiBkaXJ0eVJl
Y3RzKQordm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGly
dHlSZWN0cykKIHsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyQ29u
dGVudHMgPSBwbGF0Zm9ybUNBTGF5ZXItPm93bmVyKCk7CiAgICAgaWYgKCFsYXllckNvbnRlbnRz
KQpAQCAtNzgsMTEgKzc2LDggQEAgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYg
Y29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUMKIAogICAgIENHQ29u
dGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAgICBpZiAobGF5ZXJDb250ZW50cy0+cGxhdGZv
cm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkgewotICAgICAgICBGbG9hdFJlY3QgbGF5
ZXJCb3VuZHMgPSBwbGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpOwotICAgICAgICBDR0NvbnRleHRT
Y2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShj
b250ZXh0LCAwLCAtbGF5ZXJCb3VuZHMuaGVpZ2h0KCkpOwotICAgIH0KKyAgICAvLyBXZSBuZXZl
ciB1c2UgQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwIG9uIE1hYy4KKyAgICBBU1NFUlQo
bGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpID09IEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duKTsKIAogICAgIFtOU0dy
YXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CiAKQEAgLTExMiwyMCArMTA3LDExIEBA
IHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DCiAjZW5kaWYKICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNS
aW5nQ2xpcFJlY3QoZm9jdXNSaW5nQ2xpcFJlY3QpOwogCi0gICAgLy8gSWYgd2UgaGF2ZSBubyBk
aXJ0eSByZWN0cywgcmVwYWludCB0aGUgd2hvbGUgbGF5ZXIuCi0gICAgaWYgKGRpcnR5UmVjdHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveCgpIGdp
dmVzIHVzIHRoZSBib3VuZHMgb2YgdGhlIGRpcnR5IHJlZ2lvbiwgc28gY2xpcEJvdW5kcwotICAg
ICAgICAvLyBlbmNvbXBhc3NlcyBhbGwgdGhlIGRpcnR5IHJlY3RzLgotICAgICAgICBsYXllckNv
bnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKHBsYXRmb3JtQ0FMYXllciwgZ3Jh
cGhpY3NDb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KGNsaXBCb3VuZHMpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlydHlSZWN0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBjdXJyZW50UmVjdCA9IGRpcnR5UmVj
dHNbaV07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmNsaXAoY3VycmVudFJlY3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBsYXllckNv
bnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKHBsYXRmb3JtQ0FMYXllciwgZ3Jh
cGhpY3NDb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KGN1cnJlbnRSZWN0KSk7Ci0gICAgICAgIH0K
KyAgICBmb3IgKGF1dG8gcmVjdCA6IGRpcnR5UmVjdHMpIHsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5jbGlwKHJlY3QpOworICAgICAgICAKKyAgICAgICAgbGF5ZXJDb250ZW50cy0+
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29u
dGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgVGhlbWVNYWM6OnNl
dEZvY3VzUmluZ0NsaXBSZWN0KEZsb2F0UmVjdCgpKTsKQEAgLTE4OSw4ICsxNzUsMTAgQEAgdm9p
ZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRSZWYgY29udGV4dCwgUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9ybUNBTGF5ZXIKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVm
KWNvbnRleHQKIHsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVy
OjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7Ci0gICAgaWYgKGxheWVyKQotICAgICAgICBkcmF3TGF5
ZXJDb250ZW50cyhjb250ZXh0LCBsYXllcik7CisgICAgaWYgKGxheWVyKSB7CisgICAgICAgIFJl
cGFpbnRSZWN0TGlzdCByZWN0c1RvUGFpbnQgPSBjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQs
IGxheWVyKTsKKyAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgbGF5ZXIsIHJlY3Rz
VG9QYWludCk7CisgICAgfQogfQogCiBAZW5kIC8vIGltcGxlbWVudGF0aW9uIFdlYkxheWVyCkBA
IC0yMjMsMTcgKzIxMSwxMSBAQCB2b2lkIGRyYXdSZXBhaW50SW5kaWNhdG9yKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllcgogCiAgICAgaWYgKFBs
YXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkp
IHsKICAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgp
KSB7Ci0gICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNP
cmllbnRhdGlvbigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNCb3R0b21VcCkKLSAgICAgICAgICAgICAgICBkaXJ0eVJlY3Qub3JpZ2luLnkgPSBbc2Vs
ZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gZGlydHlSZWN0Lm9yaWdpbi55IC0gZGlydHlSZWN0LnNp
emUuaGVpZ2h0OwotCiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRp
cnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJT
aG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllcikpIHsKICAgICAgICAgICAgICAgICBDR1Jl
Y3QgYm91bmRzID0gW3NlbGYgYm91bmRzXTsKICAgICAgICAgICAgICAgICBDR1JlY3QgaW5kaWNh
dG9yUmVjdCA9IENHUmVjdE1ha2UoYm91bmRzLm9yaWdpbi54LCBib3VuZHMub3JpZ2luLnksIDUy
LCAyNyk7Ci0gICAgICAgICAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckNv
bnRlbnRzT3JpZW50YXRpb24oKSA9PSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzQm90dG9tVXApCi0gICAgICAgICAgICAgICAgICAgIGluZGljYXRvclJlY3Qu
b3JpZ2luLnkgPSBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gaW5kaWNhdG9yUmVjdC5vcmln
aW4ueSAtIGluZGljYXRvclJlY3Quc2l6ZS5oZWlnaHQ7Ci0KICAgICAgICAgICAgICAgICBbc3Vw
ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmluZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTc5YThiMS4uMDgxYzQyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDEzLTExLTA3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZSBwYXJ0aWFsIHJlcGFpbnQgaXMgYnJva2VuIGZvciB0aGUgdGlsZSBjYWNoZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzOTQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIFJlZGVmaW5lIFJlcGFpbnRSZWN0TGlz
dCBiZWNhdXNlIHdlIGNhbid0IGluY2x1ZGUgV2ViTGF5ZXIuaCBoZXJlIHlldC4KKyAgICAgICAg
UmVtb3ZlIGNyZWF0ZUJhY2tpbmdTdG9yZSwgd2hpY2ggd2FzIG5ldmVyIGltcGxlbWVudGVkLgor
ICAgICAgICBSZW1vdmUgbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qg
bmVlZCBpdCBvbiBNYWMuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnBhaW50aW5nUmVjdHMpOiBBZGRlZC4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNw
bGF5KToKKyAgICAgICAgU3RvcCB1c2luZyBtYXBUb0NvbnRlbnRDb29yZGluYXRlcy4KKworICAg
ICAgICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICBV
c2UgY2xpcHBpbmcgaW5zdGVhZCBvZiBwYWludGluZyB0aGUgaW1hZ2UgbXVsdGlwbGUgdGltZXMu
CisgICAgICAgIE5ldmVyIHJlcGFpbnQgbW9yZSB0aGFuIHRoZSBkaXJ0eSByZWdpb24ncyBib3Vu
ZHMuCisgICAgICAgIERvbid0IHdhc3RlIHRpbWUgd2l0aCBhbGwgb2YgdGhlIGRyYXdOYXRpdmVJ
bWFnZSBjb2RlLCBqdXN0IHVzZSBDRy4KKyAgICAgICAgVW5pbmRlbnQgdGhlIHN3aXRjaCdzIGNh
c2VzLgorICAgICAgICBTdG9yZSB0aGUgcmVjdHMgd2UncmUgcGFpbnRpbmcgc28gdGhhdCBlbnVt
ZXJhdGVSZWN0c0JlaW5nRHJhd24gY2FuIGdldCB0aGVtLgorICAgICAgICBQaXhlbC1zbmFwIHRo
ZSByZWN0cyB3ZSdyZSBwYWludGluZy4KKyAgICAgICAgQ2xpcCB0aGUgY29udGV4dCBiZWZvcmUg
Z29pbmcgdG8gcGFpbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVu
dW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgUmV0cmlldmUgdGhlIHJlY3RzIGN1
cnJlbnRseSBiZWluZyBwYWludGVkIGZyb20gb3VyIGJhY2tpbmcgc3RvcmUsIGFuZAorICAgICAg
ICB0cmFuc2Zvcm0gdGhlbSAobW9zdGx5KSBhY2NvcmRpbmcgdG8gdGhlIENUTSwgdG8gbWF0Y2gg
dGhlIHRyYW5zZm9ybWF0aW9uCisgICAgICAgIHRoYXQgd2lsbCBoYXZlIG9jY3VycmVkIHVuZGVy
bmVhdGggd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrLgorCiAyMDEz
LTExLTA2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvbW90
ZWQgV0tCcm93c2luZ0NvbnRleHRIaXN0b3J5RGVsZWdhdGUuaCB0byBwcml2YXRlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmlu
ZGV4IGEzMjczNDcuLjQ5MzRlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTMyLDYgKzMyLDExIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogCisv
LyBGSVhNRTogTWFrZSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIE9iamVjdGl2ZS1DIHNvIHdl
IGNhbiBpbmNsdWRlIFdlYkxheWVyLmggaGVyZSBhbmQgc2hhcmUgdGhlIHR5cGVkZWYuCituYW1l
c3BhY2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3QsIDU+IFJl
cGFpbnRSZWN0TGlzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTsKQEAgLTU1LDE1ICs2MCwxNCBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQogCisgICAg
V2ViQ29yZTo6UmVwYWludFJlY3RMaXN0IHBhaW50aW5nUmVjdHMoKSBjb25zdCB7IHJldHVybiBt
X3BhaW50aW5nUmVjdHM7IH0KKwogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXImLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOwogCiBwcml2YXRlOgotICAgIFdlYkNv
cmU6OkludFJlY3QgbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCkgY29uc3Q7Ci0KICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkgeyByZXR1cm4gbV9hY2NlbGVy
YXRlc0RyYXdpbmcgPyAhIW1fZnJvbnRTdXJmYWNlIDogISFtX2Zyb250QnVmZmVyOyB9CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVCYWNraW5n
U3RvcmUoKTsKICAgICB2b2lkIGRyYXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiwgQ0dJbWFnZVJlZiBmcm9udEltYWdlKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZSog
bV9sYXllcjsKQEAgLTc3LDYgKzgxLDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8SU9TdXJm
YWNlUmVmPiBtX2Zyb250U3VyZmFjZTsKIAogICAgIGJvb2wgbV9hY2NlbGVyYXRlc0RyYXdpbmc7
CisKKyAgICBXZWJDb3JlOjpSZXBhaW50UmVjdExpc3QgbV9wYWludGluZ1JlY3RzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCAyNTZkNjg5Li4wM2YyNTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW0KQEAgLTExMCwxOCArMTEwLDkgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGEKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotSW50UmVjdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6bWFwVG9D
b250ZW50Q29vcmRpbmF0ZXMoY29uc3QgSW50UmVjdCByZWN0KSBjb25zdAotewotICAgIEludFJl
Y3QgZmxpcHBlZFJlY3QgPSByZWN0OwotICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc0JvdHRvbVVwKQotICAgICAgICBmbGlwcGVkUmVjdC5zZXRZKG1fc2l6ZS5o
ZWlnaHQoKSAtIHJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIGZsaXBwZWRS
ZWN0OwotfQotCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXROZWVkc0Rpc3BsYXko
Y29uc3QgSW50UmVjdCByZWN0KQogewotICAgIEludFJlY3QgZmxpcHBlZFJlY3QgPSBtYXBUb0Nv
bnRlbnRDb29yZGluYXRlcyhyZWN0KTsKLSAgICBtX2RpcnR5UmVnaW9uLnVuaXRlKGZsaXBwZWRS
ZWN0KTsKKyAgICBtX2RpcnR5UmVnaW9uLnVuaXRlKHJlY3QpOwogfQogCiB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpzZXROZWVkc0Rpc3BsYXkoKQpAQCAtMTk3LDcgKzE4OCw3IEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX2RpcnR5UmVn
aW9uLnVuaXRlKEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXplKSk7CiAKICAgICBpZiAobV9sYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKG1fbGF5ZXIpKSB7
Ci0gICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdCA9IG1hcFRvQ29udGVudENvb3JkaW5hdGVz
KEludFJlY3QoMCwgMCwgNTIsIDI3KSk7CisgICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdCgw
LCAwLCA1MiwgMjcpOwogICAgICAgICBtX2RpcnR5UmVnaW9uLnVuaXRlKGluZGljYXRvclJlY3Qp
OwogICAgIH0KIApAQCAtMjMyLDcgKzIyMyw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGZyb250SW1hZ2UgPSBpbWFnZSgpOwotICAgICAgICBtX2Zyb250QnVmZmVy
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhwYW5kZWRJbnRTaXplKHNjYWxl
ZFNpemUpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgICAgICBtX2Zyb250
QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhwYW5kZWRTY2FsZWRT
aXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9mcm9udEJ1ZmZlci0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CiAgICAgICAgIGRyYXdJbkNvbnRleHQoKmNvbnRleHQsIGZyb250SW1h
Z2UuZ2V0KCkpOwogICAgIH0KQEAgLTI0Miw1NiArMjMzLDc5IEBAIGJvb2wgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
cmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZiBmcm9udElt
YWdlKQogewotICAgIFZlY3RvcjxJbnRSZWN0PiBkaXJ0eVJlY3RzID0gbV9kaXJ0eVJlZ2lvbi5y
ZWN0cygpOworICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoSW50UG9pbnQoKSwgbV9zaXplKTsKKyAg
ICBJbnRSZWN0IHNjYWxlZExheWVyQm91bmRzKEludFBvaW50KCksIGV4cGFuZGVkSW50U2l6ZSht
X3NpemUgKiBtX3NjYWxlKSk7CiAKLSAgICAvLyBJZiB3ZSBoYXZlIGxlc3MgdGhhbiB3ZWJMYXll
ck1heFJlY3RzVG9QYWludCByZWN0cyB0byBwYWludCBhbmQgdGhleSBjb3ZlciBsZXNzCi0gICAg
Ly8gdGhhbiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkIG9mIHRoZSBhcmVhLCB3ZSdsbCBk
byBhIHBhcnRpYWwgcmVwYWludC4KKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIFZlY3RvcjxGbG9hdFJlY3QsIHdlYkxheWVyTWF4
UmVjdHNUb1BhaW50PiByZWN0c1RvUGFpbnQ7Ci0gICAgaWYgKGRpcnR5UmVjdHMuc2l6ZSgpIDw9
IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPD0g
d2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCAqIG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhl
aWdodCgpKSB7Ci0gICAgICAgIC8vIENvcHkgb3ZlciB0aGUgcGFydHMgb2YgdGhlIGZyb250IGJ1
ZmZlciB0aGF0IHdlJ3JlIG5vdCBnb2luZyB0byByZXBhaW50LgotICAgICAgICBpZiAoZnJvbnRJ
bWFnZSkgewotICAgICAgICAgICAgUmVnaW9uIGNsZWFuUmVnaW9uKEludFJlY3QoSW50UG9pbnQo
KSwgbV9zaXplKSk7Ci0gICAgICAgICAgICBjbGVhblJlZ2lvbi5zdWJ0cmFjdChtX2RpcnR5UmVn
aW9uKTsKLQotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogY2xlYW5SZWdpb24u
cmVjdHMoKSkgewotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0ID0gcmVjdDsK
LSAgICAgICAgICAgICAgICBzY2FsZWRSZWN0LnNjYWxlKG1fc2NhbGUpOwotICAgICAgICAgICAg
ICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUoQ0dJbWFnZUdldFdpZHRoKGZyb250SW1hZ2UpLCBDR0lt
YWdlR2V0SGVpZ2h0KGZyb250SW1hZ2UpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShmcm9udEltYWdlLCBpbWFnZVNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNj
YWxlZFJlY3QsIHNjYWxlZFJlY3QpOwotICAgICAgICAgICAgfQorICAgIC8vIElmIHdlIGhhdmUg
bGVzcyB0aGFuIHdlYkxheWVyTWF4UmVjdHNUb1BhaW50IHJlY3RzIHRvIHBhaW50IGFuZCB0aGV5
IGNvdmVyIGxlc3MKKyAgICAvLyB0aGFuIHdlYkxheWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQgb2Yg
dGhlIHRvdGFsIGRpcnR5IGFyZWEsIHdlJ2xsIHJlcGFpbnQgZWFjaCByZWN0IHNlcGFyYXRlbHku
CisgICAgLy8gT3RoZXJ3aXNlLCByZXBhaW50IHRoZSBlbnRpcmUgYm91bmRpbmcgYm94IG9mIHRo
ZSBkaXJ0eSByZWdpb24uCisgICAgSW50UmVjdCBkaXJ0eUJvdW5kcyA9IG1fZGlydHlSZWdpb24u
Ym91bmRzKCk7CisgICAgVmVjdG9yPEludFJlY3Q+IGRpcnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9u
LnJlY3RzKCk7CisgICAgaWYgKGRpcnR5UmVjdHMuc2l6ZSgpIDw9IHdlYkxheWVyTWF4UmVjdHNU
b1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPD0gd2ViTGF5ZXJXYXN0ZWRTcGFj
ZVRocmVzaG9sZCAqIGRpcnR5Qm91bmRzLndpZHRoKCkgKiBkaXJ0eUJvdW5kcy5oZWlnaHQoKSkg
eworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiBkaXJ0eVJlY3RzKSB7CisgICAgICAg
ICAgICBGbG9hdFJlY3Qgc2NhbGVkUmVjdChyZWN0KTsKKyAgICAgICAgICAgIHNjYWxlZFJlY3Qu
c2NhbGUobV9zY2FsZSwgbV9zY2FsZSk7CisgICAgICAgICAgICBzY2FsZWRSZWN0ID0gZW5jbG9z
aW5nSW50UmVjdChzY2FsZWRSZWN0KTsKKyAgICAgICAgICAgIHNjYWxlZFJlY3Quc2NhbGUoMSAv
IG1fc2NhbGUsIDEgLyBtX3NjYWxlKTsKKyAgICAgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBl
bmQoc2NhbGVkUmVjdCk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBGbG9hdFJl
Y3Qgc2NhbGVkUmVjdChkaXJ0eUJvdW5kcyk7CisgICAgICAgIHNjYWxlZFJlY3Quc2NhbGUobV9z
Y2FsZSwgbV9zY2FsZSk7CisgICAgICAgIHNjYWxlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNj
YWxlZFJlY3QpOworICAgICAgICBzY2FsZWRSZWN0LnNjYWxlKDEgLyBtX3NjYWxlLCAxIC8gbV9z
Y2FsZSk7CisgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBlbmQoc2NhbGVkUmVjdCk7CisgICAg
fQogCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IGRpcnR5UmVjdHMpCi0gICAgICAg
ICAgICByZWN0c1RvUGFpbnQuYXBwZW5kKHJlY3QpOworICAgIENHUmVjdCBjZ1BhaW50aW5nUmVj
dHNbd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnRdOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBkaXJ0
eVJlY3RDb3VudCA9IG1fcGFpbnRpbmdSZWN0cy5zaXplKCk7IGkgPCBkaXJ0eVJlY3RDb3VudDsg
KytpKSB7CisgICAgICAgIEZsb2F0UmVjdCBzY2FsZWRQYWludGluZ1JlY3QgPSBtX3BhaW50aW5n
UmVjdHNbaV07CisgICAgICAgIHNjYWxlZFBhaW50aW5nUmVjdC5zY2FsZShtX3NjYWxlKTsKKyAg
ICAgICAgY2dQYWludGluZ1JlY3RzW2ldID0gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRQYWludGlu
Z1JlY3QpOwogICAgIH0KIAorICAgIGlmIChmcm9udEltYWdlKSB7CisgICAgICAgIENHQ29udGV4
dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNnQ29udGV4dCwga0NHQ29tcG9zaXRlQ29weSk7CisKKyAgICAgICAgQ0dDb250ZXh0
QWRkUmVjdChjZ0NvbnRleHQsIENHUmVjdEluZmluaXRlKTsKKyAgICAgICAgQ0dDb250ZXh0QWRk
UmVjdHMoY2dDb250ZXh0LCBjZ1BhaW50aW5nUmVjdHMsIG1fcGFpbnRpbmdSZWN0cy5zaXplKCkp
OworICAgICAgICBDR0NvbnRleHRFT0NsaXAoY2dDb250ZXh0KTsKKworICAgICAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAwLCBzY2FsZWRMYXllckJvdW5kcy5oZWlnaHQoKSk7
CisgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworICAgICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBzY2FsZWRMYXllckJvdW5kcywgZnJvbnRJbWFn
ZSk7CisgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKyAgICB9CisK
KyAgICBDR0NvbnRleHRDbGlwVG9SZWN0cyhjZ0NvbnRleHQsIGNnUGFpbnRpbmdSZWN0cywgbV9w
YWludGluZ1JlY3RzLnNpemUoKSk7CisKICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShtX3Nj
YWxlLCBtX3NjYWxlKSk7CiAKICAgICBzd2l0Y2ggKG1fbGF5ZXItPmxheWVyVHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKLSAgICAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoK
LSAgICAgICAgICAgIGlmIChyZWN0c1RvUGFpbnQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
IHJlY3RzVG9QYWludC5hcHBlbmQoSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpKTsKLSAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IHJlY3RzVG9QYWludCkKLSAgICAgICAgICAg
ICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG1fbGF5
ZXIsIGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJMYXllcjoKLSAgICAg
ICAgICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fbGF5
ZXIsIHJlY3RzVG9QYWludCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgotICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVXZWJUaWxlZExheWVyOgotICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVSb290TGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ3VzdG9tOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxl
TGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1Rp
bGVMYXllcjoKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRD
b250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJvdW5kcyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJMYXllcjoKKyAgICAgICAgZHJh
d0xheWVyQ29udGVudHMoY2dDb250ZXh0LCBtX2xheWVyLCBtX3BhaW50aW5nUmVjdHMpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXI6Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgorICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyOgorICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUN1c3RvbToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJy
ZWFrOwogICAgIH07CiAKICAgICBtX2RpcnR5UmVnaW9uID0gUmVnaW9uKCk7CisgICAgbV9wYWlu
dGluZ1JlY3RzLmNsZWFyKCk7CiAKICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCBmMjBhODNh
Li5jNjMzYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01MDIsNiArNTAy
LDIxIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9yCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50LCBtX2NvbnRleHQpOwogfQogCit2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4
dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit7CisgICAgQ0dBZmZpbmVUcmFu
c2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KENHQ29udGV4
dEdldENUTShjb250ZXh0KSk7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIHVuLWFwcGx5IHRo
ZSBmbGlwcGluZyBvciBjb250ZW50c1NjYWxlLAorICAgIC8vIGJlY2F1c2UgdGhleSdyZSBub3Qg
YXBwbGllZCB0byByZXBhaW50IHJlY3RzLgorICAgIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmlu
ZVRyYW5zZm9ybVNjYWxlKGludmVyc2VUcmFuc2Zvcm0sIG1fcHJvcGVydGllcy5jb250ZW50c1Nj
YWxlLCAtbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUpOworICAgIGludmVyc2VUcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShpbnZlcnNlVHJhbnNmb3JtLCAwLCAtbV9wcm9w
ZXJ0aWVzLnNpemUuaGVpZ2h0KCkpOworCisgICAgZm9yIChhdXRvIHJlY3QgOiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLnBhaW50aW5nUmVjdHMoKSkgeworICAgICAgICBDR1JlY3QgcmVjdFRv
RHJhdyA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKHJlY3QsIGludmVyc2VUcmFuc2Zvcm0p
OworICAgICAgICBibG9jayhyZWN0VG9EcmF3KTsKKyAgICB9Cit9CisKIHVpbnQzMl90IFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6aG9zdGluZ0NvbnRleHRJRCgpCiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA5YjFiNjQzLi43YzdkMDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVDb21wYXRp
YmxlTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNsaWVudCopIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lk
IGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dS
ZWN0KSkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHVpbnQzMl90IGhvc3RpbmdDb250ZXh0SUQo
KTsKIAogcHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216349</attachid>
            <date>2013-11-07 18:09:02 -0800</date>
            <delta_ts>2013-11-08 11:25:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>26034</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNmMzNjIyLi40OWVlNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMTEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHBhcnRp
YWwgcmVwYWludCBpcyBicm9rZW4gZm9yIHRoZSB0aWxlIGNhY2hlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBTGF5ZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjplbnVtZXJh
dGVSZWN0c0JlaW5nRHJhd24pOgorICAgICAgICBBbGxvdyB0aGUgUGxhdGZvcm1DQUxheWVyIHRv
IGRlY2lkZSBob3cgdG8gZW51bWVyYXRlIHJlY3RzIHRvIHBhaW50LgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmg6
CisgICAgICAgIEFkZCBSZXBhaW50UmVjdExpc3QsIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IFdl
YkNvcmU6OnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAgRmFjdG9y
IGNvbGxlY3RSZWN0c1RvUGFpbnQgb3V0OyBpdCBqdXN0IGdyYWJzIHRoZSByZWN0cyBmcm9tCisg
ICAgICAgIHRoZSBsYXllciBhbmQgbWFrZXMgdGhlIGRlY2lzaW9uIHdoZXRoZXIgdG8gcmVwYWlu
dCB0aGUgYm91bmRzCisgICAgICAgIG9mIHRoZSBkaXJ0eSByZWdpb24gb3IganVzdCB0aGUgc3Vi
cmVnaW9ucy4KKworICAgICAgICBNb3ZlIGNhbGxzIHRvIGNvbGxlY3RSZWN0c1RvUGFpbnQoKSB0
byBjYWxsZXJzIG9mIGRyYXdMYXllckNvbnRlbnRzKCksCisgICAgICAgIHNvIHRoYXQgVGlsZUNv
bnRyb2xsZXIgY2FuIGNvbGxlY3QgcmVjdHMgZnJvbSB0aGUgYXBwcm9wcmlhdGUgc291cmNlCisg
ICAgICAgICh0aGUgVGlsZSBsYXllcikgYW5kIG90aGVyIGxheWVycyBqdXN0IGNvbnRpbnVlIGdy
YWJiaW5nIHRoZW0gZnJvbQorICAgICAgICB0aGVpciByZWxldmFudCBsYXllcnMuCisKKyAgICAg
ICAgTWFrZSBzdXJlIHRoYXQgdGhlIGxpc3QgdGhhdCBjb21lcyBmcm9tIGNvbGxlY3RSZWN0c1Rv
UGFpbnQoKSBhbHdheXMKKyAgICAgICAgaGFzIGF0IGxlYXN0IG9uZSBsYXllciBpbiBpdCAoYXBw
ZW5kaW5nIHRoZSBjbGlwIGJvdW5kcyBpZiB3ZSBkb24ndAorICAgICAgICB3YW50IHRvIHJlcGFp
bnQgc3VicmVnaW9ucykgc28gd2UgY2FuIHNpbXBsaWZ5IGxvZ2ljIGluIGRyYXdMYXllckNvbnRl
bnRzLgorCisgICAgICAgIChXZWJDb3JlOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAgICAgIFJl
bW92ZSBjb2RlIHRvIHN1cHBvcnQgQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwLCBhcyBp
dCdzIG9ubHkKKyAgICAgICAgdXNlZCBvbiBXaW5kb3dzLCBzbyB0aGlzIE1hYy1zcGVjaWZpYyBj
b2RlIGRvZXNuJ3QgbmVlZCB0byBzdXBwb3J0IGl0LgorCisgICAgICAgIFNpbXBsaWZ5IGxvZ2lj
IGdpdmVuIHRoYXQgZGlydHlSZWN0cyB3aWxsIGFsd2F5cyBiZSBub24tZW1wdHkuCisKKyAgICAg
ICAgKC1bV2ViTGF5ZXIgZHJhd0luQ29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5
ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9UaWxlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgQWRvcHQgY29sbGVj
dFJlY3RzVG9QYWludC4KKwogMjAxMy0xMS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBET01Ub2tlbkxpc3Q6OmFkZCBjYW4gYWRkIGR1cGxpY2F0ZWQgdmFs
dWVzIGlmIGFyZ3VtZW50cyBoYWQgZHVwbGljYXRlZCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggZjBlZTQzNC4uODY0OWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTY5MSw3ICs2
OTEsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9uQzFFUk5TXzE0U1FMaXRlRGF0
YWJhc2VFYgogX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYKIF9fWk43V2ViQ29y
ZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVzb3Vy
Y2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2FkZXJPcHRpb25zRQog
X19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCi1fX1pON1dlYkNvcmUxN2RyYXdMYXll
ckNvbnRlbnRzRVA5Q0dDb250ZXh0UE5TXzE1UGxhdGZvcm1DQUxheWVyRU4zV1RGNlZlY3RvcklO
U185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19fWk43V2ViQ29yZTE3
ZHJhd0xheWVyQ29udGVudHNFUDlDR0NvbnRleHRQTlNfMTVQbGF0Zm9ybUNBTGF5ZXJFUk4zV1RG
NlZlY3RvcklOU185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43
V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5
RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVS
S05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKaW5kZXggZTA2NmM3OC4uN2JiZDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTIwMCw2ICsy
MDAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KikgY29uc3QgPSAwOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBlbnVt
ZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmLCB2b2lkICheYmxvY2spKENHUmVjdCkp
ID0gMDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1DQUxheWVyKExheWVyVHlw
ZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiAgICAgICAgIDogbV9s
YXllclR5cGUobGF5ZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oCmluZGV4IDAzNWRhMTEu
LjYwN2ZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmgKQEAgLTE0MSw2ICsxNDEsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVD
b21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCopIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgT1ZFUlJJ
REU7CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1DQUxheWVyTWFjKExheWVyVHlwZSwgUGxhdGZv
cm1MYXllciosIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FM
YXllck1hYy5tbQppbmRleCBmYzliYzMyLi43MGQ2Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJN
YWMubW0KQEAgLTczMSw0ICs3MzEsOSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyTWFjOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQQogICAgIHJl
dHVybiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVudCk7CiB9CiAK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250
ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKK3sKKyAgICB3a0NBTGF5ZXJF
bnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sobV9sYXllci5nZXQoKSwgY29udGV4dCwg
YmxvY2spOworfQorCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVD
b250cm9sbGVyLm1tCmluZGV4IDM1ZmQ5OGIuLjJkOGRjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0K
QEAgLTE3Miw3ICsxNzIsOCBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheQogICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtbGF5ZXJPcmlnaW4ueCgpLCAtbGF5ZXJPcmlnaW4ueSgpKTsKICAgICAg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUobV9zY2FsZSwgbV9zY2FsZSkpOwogCi0gICAgICAg
IGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fdGlsZUNhY2hl
TGF5ZXIpOworICAgICAgICBSZXBhaW50UmVjdExpc3QgZGlydHlSZWN0cyA9IGNvbGxlY3RSZWN0
c1RvUGFpbnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKKyAg
ICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV90aWxl
Q2FjaGVMYXllciwgZGlydHlSZWN0cyk7CiAgICAgfQogCiAgICAgaW50IHJlcGFpbnRDb3VudCA9
IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChwbGF0Zm9ybUNBTGF5ZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaAppbmRl
eCAyNTBiZGFkLi41MmRjYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIuaApAQCAtNDYsMTAgKzQ2LDEyIEBAIGNsYXNzIEdyYXBoaWNzTGF5
ZXI7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ7
CiAKK3R5cGVkZWYgVmVjdG9yPEZsb2F0UmVjdCwgd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQ+IFJl
cGFpbnRSZWN0TGlzdDsKKwogLy8gRnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFyZSBpbXBsZW1l
bnRhdGlvbiBhY3Jvc3MgV2ViVGlsZWRMYXllciBhbmQgV2ViTGF5ZXIKLXZvaWQgZHJhd0xheWVy
Q29udGVudHMoQ0dDb250ZXh0UmVmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKTsKLXZvaWQg
ZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIq
LCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gZGly
dHlSZWN0cyk7Ci12b2lkIGRyYXdSZXBhaW50SW5kaWNhdG9yKENHQ29udGV4dFJlZiwgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyKiwgaW50IHJlcGFpbnRDb3VudCwgQ0dDb2xvclJlZiBjdXN0b21C
YWNrZ3JvdW5kQ29sb3IpOworUmVwYWludFJlY3RMaXN0IGNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dD
b250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqKTsKK3ZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dD
b250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMp
Owordm9pZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRSZWYsIFBsYXRmb3JtQ0FMYXll
ciosIGludCByZXBhaW50Q291bnQsIENHQ29sb3JSZWYgY3VzdG9tQmFja2dyb3VuZENvbG9yKTsK
IH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQppbmRleCAwMzE5NGU5
Li4wODI5NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYkxheWVyLm1tCkBAIC0zMyw4ICszMyw2IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0Eu
aCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCAiVGhlbWVNYWMuaCIKLSNp
bXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKIEBpbnRlcmZhY2UgQ0FMYXll
cihXZWJDb3JlQ0FMYXllclByaXZhdGUpCkBAIC00NSwzMiArNDMsMzIgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBkcmF3TGF5ZXJDb250
ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0
Zm9ybUNBTGF5ZXIpCitSZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRl
eHRSZWYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIpCiB7CiAgICAg
X19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAgX19ibG9jayB1bnNpZ25lZCBy
ZWN0Q291bnQgPSAwOwotICAgIF9fYmxvY2sgVmVjdG9yPEZsb2F0UmVjdCwgd2ViTGF5ZXJNYXhS
ZWN0c1RvUGFpbnQ+IGRpcnR5UmVjdHM7CisgICAgX19ibG9jayBSZXBhaW50UmVjdExpc3QgZGly
dHlSZWN0czsKIAotICAgIGlmIChQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyID0gcGxhdGZv
cm1DQUxheWVyLT5wbGF0Zm9ybUxheWVyKCkpIHsKLSAgICAgICAgd2tDQUxheWVyRW51bWVyYXRl
UmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKHBsYXRmb3JtTGF5ZXIsIGNvbnRleHQsIF4oQ0dSZWN0
IHJlY3QpIHsKLSAgICAgICAgICAgIGlmICgrK3JlY3RDb3VudCA+IHdlYkxheWVyTWF4UmVjdHNU
b1BhaW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICBwbGF0Zm9ybUNBTGF5ZXItPmVu
dW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihjb250ZXh0LCBeKENHUmVjdCByZWN0KSB7CisgICAgICAg
IGlmICgrK3JlY3RDb3VudCA+IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50KQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICB0b3RhbFJlY3RBcmVhICs9IHJlY3Quc2l6ZS53aWR0aCAq
IHJlY3Quc2l6ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBkaXJ0eVJlY3RzLmFwcGVuZChyZWN0KTsK
LSAgICAgICAgfSk7Ci0gICAgfQorICAgICAgICB0b3RhbFJlY3RBcmVhICs9IHJlY3Quc2l6ZS53
aWR0aCAqIHJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgIGRpcnR5UmVjdHMuYXBwZW5kKHJlY3Qp
OworICAgIH0pOwogCiAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlw
Qm91bmRpbmdCb3goY29udGV4dCk7CiAgICAgZG91YmxlIGNsaXBBcmVhID0gY2xpcEJvdW5kcy53
aWR0aCgpICogY2xpcEJvdW5kcy5oZWlnaHQoKTsKIAotICAgIGlmIChyZWN0Q291bnQgPj0gd2Vi
TGF5ZXJNYXhSZWN0c1RvUGFpbnQgfHwgdG90YWxSZWN0QXJlYSA+PSBjbGlwQXJlYSAqIHdlYkxh
eWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQpCisgICAgaWYgKHJlY3RDb3VudCA+PSB3ZWJMYXllck1h
eFJlY3RzVG9QYWludCB8fCB0b3RhbFJlY3RBcmVhID49IGNsaXBBcmVhICogd2ViTGF5ZXJXYXN0
ZWRTcGFjZVRocmVzaG9sZCkgewogICAgICAgICBkaXJ0eVJlY3RzLmNsZWFyKCk7CisgICAgICAg
IGRpcnR5UmVjdHMuYXBwZW5kKGNsaXBCb3VuZHMpOworICAgIH0KIAotICAgIGRyYXdMYXllckNv
bnRlbnRzKGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllciwgZGlydHlSZWN0cyk7CisgICAgcmV0dXJu
IGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBWZWN0b3I8
RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gZGlydHlSZWN0cykKK3ZvaWQgZHJh
d0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMpCiB7CiAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNvbnRlbnRzID0gcGxhdGZv
cm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJDb250ZW50cykKQEAgLTc4LDExICs3
Niw4IEBAIHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DCiAKICAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGNvbnRleHQpOwogCi0gICAgaWYgKGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSA9PSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzQm90dG9tVXApIHsKLSAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gcGxh
dGZvcm1DQUxheWVyLT5ib3VuZHMoKTsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOwotICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWxh
eWVyQm91bmRzLmhlaWdodCgpKTsKLSAgICB9CisgICAgLy8gV2UgbmV2ZXIgdXNlIENvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCBvbiBNYWMuCisgICAgQVNTRVJUKGxheWVyQ29udGVudHMt
PnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBHcmFwaGljc0xheWVyOjpD
b21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bik7CiAKICAgICBbTlNHcmFwaGljc0NvbnRleHQg
c2F2ZUdyYXBoaWNzU3RhdGVdOwogCkBAIC0xMTIsMjAgKzEwNywxMSBAQCB2b2lkIGRyYXdMYXll
ckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtQwogI2VuZGlmCiAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KGZv
Y3VzUmluZ0NsaXBSZWN0KTsKIAotICAgIC8vIElmIHdlIGhhdmUgbm8gZGlydHkgcmVjdHMsIHJl
cGFpbnQgdGhlIHdob2xlIGxheWVyLgotICAgIGlmIChkaXJ0eVJlY3RzLmlzRW1wdHkoKSkgewot
ICAgICAgICAvLyBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goKSBnaXZlcyB1cyB0aGUgYm91
bmRzIG9mIHRoZSBkaXJ0eSByZWdpb24sIHNvIGNsaXBCb3VuZHMKLSAgICAgICAgLy8gZW5jb21w
YXNzZXMgYWxsIHRoZSBkaXJ0eSByZWN0cy4KLSAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZv
cm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpcnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEZsb2F0UmVjdCYgY3VycmVudFJlY3QgPSBkaXJ0eVJlY3RzW2ldOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Z3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKGN1cnJl
bnRSZWN0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZv
cm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChjdXJyZW50UmVjdCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRv
IHJlY3QgOiBkaXJ0eVJlY3RzKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xp
cChyZWN0KTsKKworICAgICAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENv
bnRlbnRzKHBsYXRmb3JtQ0FMYXllciwgZ3JhcGhpY3NDb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0
KHJlY3QpKTsKICAgICB9CiAKICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoRmxv
YXRSZWN0KCkpOwpAQCAtMTg5LDggKzE3NSwxMCBAQCB2b2lkIGRyYXdSZXBhaW50SW5kaWNhdG9y
KENHQ29udGV4dFJlZiBjb250ZXh0LCBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllcgog
LSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewogICAgIFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxm
KTsKLSAgICBpZiAobGF5ZXIpCi0gICAgICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxh
eWVyKTsKKyAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAgUmVwYWludFJlY3RMaXN0IHJlY3RzVG9Q
YWludCA9IGNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dCwgbGF5ZXIpOworICAgICAgICBkcmF3
TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50KTsKKyAgICB9CiB9CiAK
IEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKQEAgLTIyMywxNyArMjExLDExIEBAIHZv
aWQgZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FM
YXllciogcGxhdGZvcm1DQUxheWVyCiAKICAgICBpZiAoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBs
YXllck93bmVyID0gcGxhdGZvcm1MYXllci0+b3duZXIoKSkgewogICAgICAgICBpZiAobGF5ZXJP
d25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChs
YXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKQotICAgICAg
ICAgICAgICAgIGRpcnR5UmVjdC5vcmlnaW4ueSA9IFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQg
LSBkaXJ0eVJlY3Qub3JpZ2luLnkgLSBkaXJ0eVJlY3Quc2l6ZS5oZWlnaHQ7Ci0KICAgICAgICAg
ICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6ZGlydHlSZWN0XTsKIAogICAgICAgICAg
ICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0
Zm9ybUxheWVyKSkgewogICAgICAgICAgICAgICAgIENHUmVjdCBib3VuZHMgPSBbc2VsZiBib3Vu
ZHNdOwogICAgICAgICAgICAgICAgIENHUmVjdCBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0TWFrZShi
b3VuZHMub3JpZ2luLngsIGJvdW5kcy5vcmlnaW4ueSwgNTIsIDI3KTsKLSAgICAgICAgICAgICAg
ICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpID09
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkK
LSAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC5vcmlnaW4ueSA9IFtzZWxmIGJvdW5k
c10uc2l6ZS5oZWlnaHQgLSBpbmRpY2F0b3JSZWN0Lm9yaWdpbi55IC0gaW5kaWNhdG9yUmVjdC5z
aXplLmhlaWdodDsKLQogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJl
Y3Q6aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiNWI0ZmJlLi5mZjU4NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTMtMTEt
MDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3RlIExheWVyIFRyZWU6IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHBhcnRpYWwgcmVwYWludCBp
cyBicm9rZW4gZm9yIHRoZSB0aWxlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgdGlsZSBjYWNoZSByZXRyaWV2ZXMg
cmVwYWludCByZWN0cyBmcm9tIHRoZSB0aWxlIGxheWVyLAorICAgICAgICBub3QgZnJvbSB0aGUg
dGlsZWQgYmFja2luZyBsYXllci4KKworICAgICAgICBSZXdvcmsgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUgcGFpbnRpbmcgdG8gZml4IHNvbWUgcm91bmRpbmcgaXNzdWVzCisgICAgICAgIHRoYXQg
d291bGQgY2F1c2UgcGl4ZWwgY3JhY2tzIHVwb24gcmVwYWludCwgYW5kIHRvIHNwZWVkIGl0IHVw
IGEgYml0LgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
OgorICAgICAgICBSZWRlZmluZSBSZXBhaW50UmVjdExpc3QgYmVjYXVzZSB3ZSBjYW4ndCBpbmNs
dWRlIFdlYkxheWVyLmggaGVyZSB5ZXQuCisgICAgICAgIFJlbW92ZSBjcmVhdGVCYWNraW5nU3Rv
cmUsIHdoaWNoIHdhcyBuZXZlciBpbXBsZW1lbnRlZC4KKyAgICAgICAgUmVtb3ZlIG1hcFRvQ29u
dGVudENvb3JkaW5hdGVzLCBiZWNhdXNlIHdlIGRvbid0IG5lZWQgaXQgb24gTWFjLgorCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwYWludGluZ1JlY3RzKTogQWRk
ZWQuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgor
ICAgICAgICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheSk6CisgICAg
ICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgIFN0b3AgdXNp
bmcgbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgVXNlIGNsaXBwaW5nIGluc3RlYWQgb2Yg
cGFpbnRpbmcgdGhlIGltYWdlIG11bHRpcGxlIHRpbWVzLgorICAgICAgICBOZXZlciByZXBhaW50
IG1vcmUgdGhhbiB0aGUgZGlydHkgcmVnaW9uJ3MgYm91bmRzLgorICAgICAgICBEb24ndCB3YXN0
ZSB0aW1lIHdpdGggYWxsIG9mIHRoZSBkcmF3TmF0aXZlSW1hZ2UgY29kZSwganVzdCB1c2UgQ0cu
CisgICAgICAgIFVuaW5kZW50IHRoZSBzd2l0Y2gncyBjYXNlcy4KKyAgICAgICAgU3RvcmUgdGhl
IHJlY3RzIHdlJ3JlIHBhaW50aW5nIHNvIHRoYXQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduIGNh
biBnZXQgdGhlbS4KKyAgICAgICAgUGl4ZWwtc25hcCB0aGUgcmVjdHMgd2UncmUgcGFpbnRpbmcu
CisgICAgICAgIENsaXAgdGhlIGNvbnRleHQgYmVmb3JlIGdvaW5nIHRvIHBhaW50LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Lmg6CisgICAgICAgIFJldHJpZXZlIHRoZSByZWN0cyBjdXJyZW50bHkgYmVpbmcgcGFpbnRlZCBm
cm9tIG91ciBiYWNraW5nIHN0b3JlLCBhbmQKKyAgICAgICAgdHJhbnNmb3JtIHRoZW0gKG1vc3Rs
eSkgYWNjb3JkaW5nIHRvIHRoZSBDVE0sIHRvIG1hdGNoIHRoZSB0cmFuc2Zvcm1hdGlvbgorICAg
ICAgICB0aGF0IHdpbGwgaGF2ZSBvY2N1cnJlZCB1bmRlcm5lYXRoIHdrQ0FMYXllckVudW1lcmF0
ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jay4KKwogMjAxMy0xMS0wNyAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBtb3JlIGRlYWQgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oCmluZGV4IGEzMjczNDcuLmQ2MmE4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTMyLDYgKzMyLDExIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5o
PgogCisvLyBGSVhNRTogTWFrZSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIE9iamVjdGl2ZS1D
IHNvIHdlIGNhbiBpbmNsdWRlIFdlYkxheWVyLmggaGVyZSBhbmQgc2hhcmUgdGhlIHR5cGVkZWYu
CituYW1lc3BhY2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Qs
IDU+IFJlcGFpbnRSZWN0TGlzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTsKQEAgLTU4LDEyICs2MywxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYsIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlJik7CiAKLXByaXZhdGU6Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBtYXBUb0NvbnRlbnRDb29y
ZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0KSBjb25zdDsKKyAgICB2b2lkIGVudW1lcmF0
ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF4pKENHUmVjdCkpOwogCitwcml2
YXRlOgogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSB7IHJldHVybiBtX2FjY2VsZXJhdGVzRHJh
d2luZyA/ICEhbV9mcm9udFN1cmZhY2UgOiAhIW1fZnJvbnRCdWZmZXI7IH0KIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUJhY2tpbmdTdG9yZSgp
OwogICAgIHZvaWQgZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBDR0lt
YWdlUmVmIGZyb250SW1hZ2UpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVy
OwpAQCAtNzcsNiArODEsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
IG1fZnJvbnRTdXJmYWNlOwogCiAgICAgYm9vbCBtX2FjY2VsZXJhdGVzRHJhd2luZzsKKworICAg
IFdlYkNvcmU6OlJlcGFpbnRSZWN0TGlzdCBtX3BhaW50aW5nUmVjdHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDI1NmQ2ODkuLjc0YTU2NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpA
QCAtMTEwLDE4ICsxMTAsOSBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYQogICAgIHJldHVybiB0
cnVlOwogfQogCi1JbnRSZWN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjptYXBUb0NvbnRlbnRD
b29yZGluYXRlcyhjb25zdCBJbnRSZWN0IHJlY3QpIGNvbnN0Ci17Ci0gICAgSW50UmVjdCBmbGlw
cGVkUmVjdCA9IHJlY3Q7Ci0gICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzQm90dG9tVXApCi0gICAgICAgIGZsaXBwZWRSZWN0LnNldFkobV9zaXplLmhlaWdodCgp
IC0gcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKLSAgICByZXR1cm4gZmxpcHBlZFJlY3Q7Ci19
Ci0KIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheShjb25zdCBJ
bnRSZWN0IHJlY3QpCiB7Ci0gICAgSW50UmVjdCBmbGlwcGVkUmVjdCA9IG1hcFRvQ29udGVudENv
b3JkaW5hdGVzKHJlY3QpOwotICAgIG1fZGlydHlSZWdpb24udW5pdGUoZmxpcHBlZFJlY3QpOwor
ICAgIG1fZGlydHlSZWdpb24udW5pdGUocmVjdCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheSgpCkBAIC0xOTcsNyArMTg4LDcgQEAgYm9vbCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZGlydHlSZWdpb24udW5p
dGUoSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpKTsKIAogICAgIGlmIChtX2xheWVyLT5vd25l
cigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIobV9sYXllcikpIHsKLSAgICAg
ICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0ID0gbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMoSW50UmVj
dCgwLCAwLCA1MiwgMjcpKTsKKyAgICAgICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0KDAsIDAsIDUy
LCAyNyk7CiAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAg
fQogCkBAIC0yMzIsNyArMjIzLDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSgpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gZnJvbnRJbWFnZSA9IGltYWdlKCk7Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSks
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIG1fZnJvbnRCdWZmZXIg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZFNjYWxlZFNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKICAgICAgICAgZHJhd0luQ29udGV4dCgqY29udGV4dCwgZnJvbnRJbWFnZS5nZXQo
KSk7CiAgICAgfQpAQCAtMjQyLDU4ICsyMzMsOTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheSgpCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0ltYWdlUmVmIGZyb250SW1hZ2UpCiB7
Ci0gICAgVmVjdG9yPEludFJlY3Q+IGRpcnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7
CisgICAgSW50UmVjdCBsYXllckJvdW5kcyhJbnRQb2ludCgpLCBtX3NpemUpOworICAgIEludFJl
Y3Qgc2NhbGVkTGF5ZXJCb3VuZHMoSW50UG9pbnQoKSwgZXhwYW5kZWRJbnRTaXplKG1fc2l6ZSAq
IG1fc2NhbGUpKTsKKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBsZXNzIHRoYW4gd2ViTGF5ZXJNYXhS
ZWN0c1RvUGFpbnQgcmVjdHMgdG8gcGFpbnQgYW5kIHRoZXkgY292ZXIgbGVzcwotICAgIC8vIHRo
YW4gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCBvZiB0aGUgYXJlYSwgd2UnbGwgZG8gYSBw
YXJ0aWFsIHJlcGFpbnQuCisgICAgLy8gdGhhbiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xk
IG9mIHRoZSB0b3RhbCBkaXJ0eSBhcmVhLCB3ZSdsbCByZXBhaW50IGVhY2ggcmVjdCBzZXBhcmF0
ZWx5LgorICAgIC8vIE90aGVyd2lzZSwgcmVwYWludCB0aGUgZW50aXJlIGJvdW5kaW5nIGJveCBv
ZiB0aGUgZGlydHkgcmVnaW9uLgorICAgIEludFJlY3QgZGlydHlCb3VuZHMgPSBtX2RpcnR5UmVn
aW9uLmJvdW5kcygpOworICAgIFZlY3RvcjxJbnRSZWN0PiBkaXJ0eVJlY3RzID0gbV9kaXJ0eVJl
Z2lvbi5yZWN0cygpOworICAgIGlmIChkaXJ0eVJlY3RzLnNpemUoKSA+IHdlYkxheWVyTWF4UmVj
dHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPiB3ZWJMYXllcldhc3RlZFNw
YWNlVGhyZXNob2xkICogZGlydHlCb3VuZHMud2lkdGgoKSAqIGRpcnR5Qm91bmRzLmhlaWdodCgp
KSB7CisgICAgICAgIGRpcnR5UmVjdHMuY2xlYXIoKTsKKyAgICAgICAgZGlydHlSZWN0cy5hcHBl
bmQoZGlydHlCb3VuZHMpOworICAgIH0KIAotICAgIFZlY3RvcjxGbG9hdFJlY3QsIHdlYkxheWVy
TWF4UmVjdHNUb1BhaW50PiByZWN0c1RvUGFpbnQ7Ci0gICAgaWYgKGRpcnR5UmVjdHMuc2l6ZSgp
IDw9IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkg
PD0gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCAqIG1fc2l6ZS53aWR0aCgpICogbV9zaXpl
LmhlaWdodCgpKSB7Ci0gICAgICAgIC8vIENvcHkgb3ZlciB0aGUgcGFydHMgb2YgdGhlIGZyb250
IGJ1ZmZlciB0aGF0IHdlJ3JlIG5vdCBnb2luZyB0byByZXBhaW50LgotICAgICAgICBpZiAoZnJv
bnRJbWFnZSkgewotICAgICAgICAgICAgUmVnaW9uIGNsZWFuUmVnaW9uKEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKSk7Ci0gICAgICAgICAgICBjbGVhblJlZ2lvbi5zdWJ0cmFjdChtX2RpcnR5
UmVnaW9uKTsKLQotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogY2xlYW5SZWdp
b24ucmVjdHMoKSkgewotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0ID0gcmVj
dDsKLSAgICAgICAgICAgICAgICBzY2FsZWRSZWN0LnNjYWxlKG1fc2NhbGUpOwotICAgICAgICAg
ICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUoQ0dJbWFnZUdldFdpZHRoKGZyb250SW1hZ2UpLCBD
R0ltYWdlR2V0SGVpZ2h0KGZyb250SW1hZ2UpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShmcm9udEltYWdlLCBpbWFnZVNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IHNjYWxlZFJlY3QsIHNjYWxlZFJlY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAg
Zm9yIChjb25zdCBhdXRvJiByZWN0IDogZGlydHlSZWN0cykgeworICAgICAgICBGbG9hdFJlY3Qg
c2NhbGVkUmVjdChyZWN0KTsKKyAgICAgICAgc2NhbGVkUmVjdC5zY2FsZShtX3NjYWxlLCBtX3Nj
YWxlKTsKKyAgICAgICAgc2NhbGVkUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7
CisgICAgICAgIHNjYWxlZFJlY3Quc2NhbGUoMSAvIG1fc2NhbGUsIDEgLyBtX3NjYWxlKTsKKyAg
ICAgICAgbV9wYWludGluZ1JlY3RzLmFwcGVuZChzY2FsZWRSZWN0KTsKKyAgICB9CiAKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogZGlydHlSZWN0cykKLSAgICAgICAgICAgIHJlY3Rz
VG9QYWludC5hcHBlbmQocmVjdCk7CisgICAgQ0dSZWN0IGNnUGFpbnRpbmdSZWN0c1t3ZWJMYXll
ck1heFJlY3RzVG9QYWludF07CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGRpcnR5UmVjdENvdW50
ID0gbV9wYWludGluZ1JlY3RzLnNpemUoKTsgaSA8IGRpcnR5UmVjdENvdW50OyArK2kpIHsKKyAg
ICAgICAgRmxvYXRSZWN0IHNjYWxlZFBhaW50aW5nUmVjdCA9IG1fcGFpbnRpbmdSZWN0c1tpXTsK
KyAgICAgICAgc2NhbGVkUGFpbnRpbmdSZWN0LnNjYWxlKG1fc2NhbGUpOworICAgICAgICBjZ1Bh
aW50aW5nUmVjdHNbaV0gPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFBhaW50aW5nUmVjdCk7CiAg
ICAgfQogCisgICAgaWYgKGZyb250SW1hZ2UpIHsKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjZ0NvbnRleHQpOworICAgICAgICBDR0NvbnRleHRTZXRDb21wb3NpdGVPcGVyYXRpb24oY2dD
b250ZXh0LCBrQ0dDb21wb3NpdGVDb3B5KTsKKworICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGNn
Q29udGV4dCwgQ0dSZWN0SW5maW5pdGUpOworICAgICAgICBDR0NvbnRleHRBZGRSZWN0cyhjZ0Nv
bnRleHQsIGNnUGFpbnRpbmdSZWN0cywgbV9wYWludGluZ1JlY3RzLnNpemUoKSk7CisgICAgICAg
IENHQ29udGV4dEVPQ2xpcChjZ0NvbnRleHQpOworCisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShjZ0NvbnRleHQsIDAsIHNjYWxlZExheWVyQm91bmRzLmhlaWdodCgpKTsKKyAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShjZ0NvbnRleHQsIHNjYWxlZExheWVyQm91bmRzLCBmcm9udEltYWdlKTsKKyAgICAg
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworICAgIH0KKworICAgIENHQ29u
dGV4dENsaXBUb1JlY3RzKGNnQ29udGV4dCwgY2dQYWludGluZ1JlY3RzLCBtX3BhaW50aW5nUmVj
dHMuc2l6ZSgpKTsKKwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKG1fc2NhbGUsIG1fc2Nh
bGUpKTsKIAogICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgotICAgICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgotICAgICAgICAg
ICAgaWYgKHJlY3RzVG9QYWludC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmVjdHNUb1Bh
aW50LmFwcGVuZChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkpOwotICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiByZWN0IDogcmVjdHNUb1BhaW50KQotICAgICAgICAgICAgICAgIG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMobV9sYXllciwgY29udGV4
dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgotICAgICAgICAgICAgZHJh
d0xheWVyQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV9sYXllciwgcmVjdHNU
b1BhaW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVdlYlRpbGVkTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVU
aWxlZEJhY2tpbmdMYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVJvb3RMYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUFWUGxheWVyTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVD
dXN0b206Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgor
ICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG1f
bGF5ZXIsIGNvbnRleHQsIGRpcnR5Qm91bmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgorICAgICAgICBkcmF3TGF5ZXJDb250
ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKKyAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQVZQbGF5ZXJMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3Vz
dG9tOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fTsKIAogICAgIG1fZGlydHlSZWdpb24gPSBSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMu
Y2xlYXIoKTsKIAogICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkp
OwogfQogCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKK3sKKyAg
ICBDR0FmZmluZVRyYW5zZm9ybSBpbnZlcnNlVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1J
bnZlcnQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpKTsKKworICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gdW4tYXBwbHkgdGhlIGZsaXBwaW5nIG9yIGNvbnRlbnRzU2NhbGUsCisgICAgLy8gYmVjYXVz
ZSB0aGV5J3JlIG5vdCBhcHBsaWVkIHRvIHJlcGFpbnQgcmVjdHMuCisgICAgaW52ZXJzZVRyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUoaW52ZXJzZVRyYW5zZm9ybSwgbV9zY2FsZSwg
LW1fc2NhbGUpOworICAgIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5z
bGF0ZShpbnZlcnNlVHJhbnNmb3JtLCAwLCAtbV9zaXplLmhlaWdodCgpKTsKKworICAgIGZvciAo
YXV0byByZWN0IDogbV9wYWludGluZ1JlY3RzKSB7CisgICAgICAgIENHUmVjdCByZWN0VG9EcmF3
ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocmVjdCwgaW52ZXJzZVRyYW5zZm9ybSk7Cisg
ICAgICAgIGJsb2NrKHJlY3RUb0RyYXcpOworICAgIH0KK30KKwogI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCBm
MjBhODNhLi4zMmEzZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01MDIs
NiArNTAyLDExIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9yCiAgICAgcmV0dXJuIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50LCBtX2NvbnRleHQpOwogfQog
Cit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENH
Q29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit7CisgICAgbV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZS5lbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oY29udGV4dCwgYmxv
Y2spOworfQorCiB1aW50MzJfdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6Omhvc3RpbmdDb250ZXh0
SUQoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmgKaW5kZXggOWIxYjY0My4uN2M3ZDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBA
IC0xNDYsNiArMTQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBjb25zdCBPVkVS
UklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250
ZXh0UmVmLCB2b2lkICheYmxvY2spKENHUmVjdCkpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB1
aW50MzJfdCBob3N0aW5nQ29udGV4dElEKCk7CiAKIHByb3RlY3RlZDoK
</data>
<flag name="commit-queue"
          id="239312"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216416</attachid>
            <date>2013-11-08 11:25:50 -0800</date>
            <delta_ts>2013-11-08 17:35:00 -0800</delta_ts>
            <desc>accidental SPI</desc>
            <filename>repaint.diff</filename>
            <type>text/plain</type>
            <size>26025</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNmMzNjIyLi40OWVlNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMTEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHBhcnRp
YWwgcmVwYWludCBpcyBicm9rZW4gZm9yIHRoZSB0aWxlIGNhY2hlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBTGF5ZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjplbnVtZXJh
dGVSZWN0c0JlaW5nRHJhd24pOgorICAgICAgICBBbGxvdyB0aGUgUGxhdGZvcm1DQUxheWVyIHRv
IGRlY2lkZSBob3cgdG8gZW51bWVyYXRlIHJlY3RzIHRvIHBhaW50LgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmg6
CisgICAgICAgIEFkZCBSZXBhaW50UmVjdExpc3QsIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IFdl
YkNvcmU6OnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAgRmFjdG9y
IGNvbGxlY3RSZWN0c1RvUGFpbnQgb3V0OyBpdCBqdXN0IGdyYWJzIHRoZSByZWN0cyBmcm9tCisg
ICAgICAgIHRoZSBsYXllciBhbmQgbWFrZXMgdGhlIGRlY2lzaW9uIHdoZXRoZXIgdG8gcmVwYWlu
dCB0aGUgYm91bmRzCisgICAgICAgIG9mIHRoZSBkaXJ0eSByZWdpb24gb3IganVzdCB0aGUgc3Vi
cmVnaW9ucy4KKworICAgICAgICBNb3ZlIGNhbGxzIHRvIGNvbGxlY3RSZWN0c1RvUGFpbnQoKSB0
byBjYWxsZXJzIG9mIGRyYXdMYXllckNvbnRlbnRzKCksCisgICAgICAgIHNvIHRoYXQgVGlsZUNv
bnRyb2xsZXIgY2FuIGNvbGxlY3QgcmVjdHMgZnJvbSB0aGUgYXBwcm9wcmlhdGUgc291cmNlCisg
ICAgICAgICh0aGUgVGlsZSBsYXllcikgYW5kIG90aGVyIGxheWVycyBqdXN0IGNvbnRpbnVlIGdy
YWJiaW5nIHRoZW0gZnJvbQorICAgICAgICB0aGVpciByZWxldmFudCBsYXllcnMuCisKKyAgICAg
ICAgTWFrZSBzdXJlIHRoYXQgdGhlIGxpc3QgdGhhdCBjb21lcyBmcm9tIGNvbGxlY3RSZWN0c1Rv
UGFpbnQoKSBhbHdheXMKKyAgICAgICAgaGFzIGF0IGxlYXN0IG9uZSBsYXllciBpbiBpdCAoYXBw
ZW5kaW5nIHRoZSBjbGlwIGJvdW5kcyBpZiB3ZSBkb24ndAorICAgICAgICB3YW50IHRvIHJlcGFp
bnQgc3VicmVnaW9ucykgc28gd2UgY2FuIHNpbXBsaWZ5IGxvZ2ljIGluIGRyYXdMYXllckNvbnRl
bnRzLgorCisgICAgICAgIChXZWJDb3JlOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAgICAgIFJl
bW92ZSBjb2RlIHRvIHN1cHBvcnQgQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwLCBhcyBp
dCdzIG9ubHkKKyAgICAgICAgdXNlZCBvbiBXaW5kb3dzLCBzbyB0aGlzIE1hYy1zcGVjaWZpYyBj
b2RlIGRvZXNuJ3QgbmVlZCB0byBzdXBwb3J0IGl0LgorCisgICAgICAgIFNpbXBsaWZ5IGxvZ2lj
IGdpdmVuIHRoYXQgZGlydHlSZWN0cyB3aWxsIGFsd2F5cyBiZSBub24tZW1wdHkuCisKKyAgICAg
ICAgKC1bV2ViTGF5ZXIgZHJhd0luQ29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5
ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9UaWxlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgQWRvcHQgY29sbGVj
dFJlY3RzVG9QYWludC4KKwogMjAxMy0xMS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBET01Ub2tlbkxpc3Q6OmFkZCBjYW4gYWRkIGR1cGxpY2F0ZWQgdmFs
dWVzIGlmIGFyZ3VtZW50cyBoYWQgZHVwbGljYXRlZCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggZjBlZTQzNC4uODY0OWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTY5MSw3ICs2
OTEsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9uQzFFUk5TXzE0U1FMaXRlRGF0
YWJhc2VFYgogX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYKIF9fWk43V2ViQ29y
ZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVzb3Vy
Y2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2FkZXJPcHRpb25zRQog
X19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCi1fX1pON1dlYkNvcmUxN2RyYXdMYXll
ckNvbnRlbnRzRVA5Q0dDb250ZXh0UE5TXzE1UGxhdGZvcm1DQUxheWVyRU4zV1RGNlZlY3RvcklO
U185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19fWk43V2ViQ29yZTE3
ZHJhd0xheWVyQ29udGVudHNFUDlDR0NvbnRleHRQTlNfMTVQbGF0Zm9ybUNBTGF5ZXJFUk4zV1RG
NlZlY3RvcklOU185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43
V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5
RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVS
S05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKaW5kZXggZTA2NmM3OC4uN2JiZDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTIwMCw2ICsy
MDAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KikgY29uc3QgPSAwOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBlbnVt
ZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmLCB2b2lkICheYmxvY2spKENHUmVjdCkp
ID0gMDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1DQUxheWVyKExheWVyVHlw
ZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiAgICAgICAgIDogbV9s
YXllclR5cGUobGF5ZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oCmluZGV4IDAzNWRhMTEu
LjYwN2ZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmgKQEAgLTE0MSw2ICsxNDEsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVD
b21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCopIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgT1ZFUlJJ
REU7CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1DQUxheWVyTWFjKExheWVyVHlwZSwgUGxhdGZv
cm1MYXllciosIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FM
YXllck1hYy5tbQppbmRleCBmYzliYzMyLi43MGQ2Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJN
YWMubW0KQEAgLTczMSw0ICs3MzEsOSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyTWFjOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQQogICAgIHJl
dHVybiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVudCk7CiB9CiAK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250
ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKK3sKKyAgICB3a0NBTGF5ZXJF
bnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sobV9sYXllci5nZXQoKSwgY29udGV4dCwg
YmxvY2spOworfQorCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVD
b250cm9sbGVyLm1tCmluZGV4IDM1ZmQ5OGIuLjJkOGRjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0K
QEAgLTE3Miw3ICsxNzIsOCBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheQogICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtbGF5ZXJPcmlnaW4ueCgpLCAtbGF5ZXJPcmlnaW4ueSgpKTsKICAgICAg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUobV9zY2FsZSwgbV9zY2FsZSkpOwogCi0gICAgICAg
IGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fdGlsZUNhY2hl
TGF5ZXIpOworICAgICAgICBSZXBhaW50UmVjdExpc3QgZGlydHlSZWN0cyA9IGNvbGxlY3RSZWN0
c1RvUGFpbnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKKyAg
ICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV90aWxl
Q2FjaGVMYXllciwgZGlydHlSZWN0cyk7CiAgICAgfQogCiAgICAgaW50IHJlcGFpbnRDb3VudCA9
IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChwbGF0Zm9ybUNBTGF5ZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaAppbmRl
eCAyNTBiZGFkLi41MmRjYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIuaApAQCAtNDYsMTAgKzQ2LDEyIEBAIGNsYXNzIEdyYXBoaWNzTGF5
ZXI7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ7
CiAKK3R5cGVkZWYgVmVjdG9yPEZsb2F0UmVjdCwgd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQ+IFJl
cGFpbnRSZWN0TGlzdDsKKwogLy8gRnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFyZSBpbXBsZW1l
bnRhdGlvbiBhY3Jvc3MgV2ViVGlsZWRMYXllciBhbmQgV2ViTGF5ZXIKLXZvaWQgZHJhd0xheWVy
Q29udGVudHMoQ0dDb250ZXh0UmVmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKTsKLXZvaWQg
ZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIq
LCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gZGly
dHlSZWN0cyk7Ci12b2lkIGRyYXdSZXBhaW50SW5kaWNhdG9yKENHQ29udGV4dFJlZiwgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyKiwgaW50IHJlcGFpbnRDb3VudCwgQ0dDb2xvclJlZiBjdXN0b21C
YWNrZ3JvdW5kQ29sb3IpOworUmVwYWludFJlY3RMaXN0IGNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dD
b250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqKTsKK3ZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dD
b250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMp
Owordm9pZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRSZWYsIFBsYXRmb3JtQ0FMYXll
ciosIGludCByZXBhaW50Q291bnQsIENHQ29sb3JSZWYgY3VzdG9tQmFja2dyb3VuZENvbG9yKTsK
IH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQppbmRleCAwMzE5NGU5
Li4wODI5NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYkxheWVyLm1tCkBAIC0zMyw4ICszMyw2IEBACiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0Eu
aCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCAiVGhlbWVNYWMuaCIKLSNp
bXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKIEBpbnRlcmZhY2UgQ0FMYXll
cihXZWJDb3JlQ0FMYXllclByaXZhdGUpCkBAIC00NSwzMiArNDMsMzIgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBkcmF3TGF5ZXJDb250
ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0
Zm9ybUNBTGF5ZXIpCitSZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRl
eHRSZWYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIpCiB7CiAgICAg
X19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAgX19ibG9jayB1bnNpZ25lZCBy
ZWN0Q291bnQgPSAwOwotICAgIF9fYmxvY2sgVmVjdG9yPEZsb2F0UmVjdCwgd2ViTGF5ZXJNYXhS
ZWN0c1RvUGFpbnQ+IGRpcnR5UmVjdHM7CisgICAgX19ibG9jayBSZXBhaW50UmVjdExpc3QgZGly
dHlSZWN0czsKIAotICAgIGlmIChQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyID0gcGxhdGZv
cm1DQUxheWVyLT5wbGF0Zm9ybUxheWVyKCkpIHsKLSAgICAgICAgd2tDQUxheWVyRW51bWVyYXRl
UmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKHBsYXRmb3JtTGF5ZXIsIGNvbnRleHQsIF4oQ0dSZWN0
IHJlY3QpIHsKLSAgICAgICAgICAgIGlmICgrK3JlY3RDb3VudCA+IHdlYkxheWVyTWF4UmVjdHNU
b1BhaW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICBwbGF0Zm9ybUNBTGF5ZXItPmVu
dW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihjb250ZXh0LCBeKENHUmVjdCByZWN0KSB7CisgICAgICAg
IGlmICgrK3JlY3RDb3VudCA+IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50KQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICB0b3RhbFJlY3RBcmVhICs9IHJlY3Quc2l6ZS53aWR0aCAq
IHJlY3Quc2l6ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBkaXJ0eVJlY3RzLmFwcGVuZChyZWN0KTsK
LSAgICAgICAgfSk7Ci0gICAgfQorICAgICAgICB0b3RhbFJlY3RBcmVhICs9IHJlY3Quc2l6ZS53
aWR0aCAqIHJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgIGRpcnR5UmVjdHMuYXBwZW5kKHJlY3Qp
OworICAgIH0pOwogCiAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlw
Qm91bmRpbmdCb3goY29udGV4dCk7CiAgICAgZG91YmxlIGNsaXBBcmVhID0gY2xpcEJvdW5kcy53
aWR0aCgpICogY2xpcEJvdW5kcy5oZWlnaHQoKTsKIAotICAgIGlmIChyZWN0Q291bnQgPj0gd2Vi
TGF5ZXJNYXhSZWN0c1RvUGFpbnQgfHwgdG90YWxSZWN0QXJlYSA+PSBjbGlwQXJlYSAqIHdlYkxh
eWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQpCisgICAgaWYgKHJlY3RDb3VudCA+PSB3ZWJMYXllck1h
eFJlY3RzVG9QYWludCB8fCB0b3RhbFJlY3RBcmVhID49IGNsaXBBcmVhICogd2ViTGF5ZXJXYXN0
ZWRTcGFjZVRocmVzaG9sZCkgewogICAgICAgICBkaXJ0eVJlY3RzLmNsZWFyKCk7CisgICAgICAg
IGRpcnR5UmVjdHMuYXBwZW5kKGNsaXBCb3VuZHMpOworICAgIH0KIAotICAgIGRyYXdMYXllckNv
bnRlbnRzKGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllciwgZGlydHlSZWN0cyk7CisgICAgcmV0dXJu
IGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBWZWN0b3I8
RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gZGlydHlSZWN0cykKK3ZvaWQgZHJh
d0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMpCiB7CiAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNvbnRlbnRzID0gcGxhdGZv
cm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJDb250ZW50cykKQEAgLTc4LDExICs3
Niw4IEBAIHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DCiAKICAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGNvbnRleHQpOwogCi0gICAgaWYgKGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSA9PSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzQm90dG9tVXApIHsKLSAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gcGxh
dGZvcm1DQUxheWVyLT5ib3VuZHMoKTsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOwotICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWxh
eWVyQm91bmRzLmhlaWdodCgpKTsKLSAgICB9CisgICAgLy8gV2UgbmV2ZXIgdXNlIENvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCBvbiBNYWMuCisgICAgQVNTRVJUKGxheWVyQ29udGVudHMt
PnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBHcmFwaGljc0xheWVyOjpD
b21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bik7CiAKICAgICBbTlNHcmFwaGljc0NvbnRleHQg
c2F2ZUdyYXBoaWNzU3RhdGVdOwogCkBAIC0xMTIsMjAgKzEwNywxMSBAQCB2b2lkIGRyYXdMYXll
ckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtQwogI2VuZGlmCiAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KGZv
Y3VzUmluZ0NsaXBSZWN0KTsKIAotICAgIC8vIElmIHdlIGhhdmUgbm8gZGlydHkgcmVjdHMsIHJl
cGFpbnQgdGhlIHdob2xlIGxheWVyLgotICAgIGlmIChkaXJ0eVJlY3RzLmlzRW1wdHkoKSkgewot
ICAgICAgICAvLyBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goKSBnaXZlcyB1cyB0aGUgYm91
bmRzIG9mIHRoZSBkaXJ0eSByZWdpb24sIHNvIGNsaXBCb3VuZHMKLSAgICAgICAgLy8gZW5jb21w
YXNzZXMgYWxsIHRoZSBkaXJ0eSByZWN0cy4KLSAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZv
cm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpcnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEZsb2F0UmVjdCYgY3VycmVudFJlY3QgPSBkaXJ0eVJlY3RzW2ldOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Z3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKGN1cnJl
bnRSZWN0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZv
cm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChjdXJyZW50UmVjdCkpOwotICAgICAgICB9CisgICAgZm9yIChhdXRv
IHJlY3QgOiBkaXJ0eVJlY3RzKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xp
cChyZWN0KTsKKworICAgICAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENv
bnRlbnRzKHBsYXRmb3JtQ0FMYXllciwgZ3JhcGhpY3NDb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0
KHJlY3QpKTsKICAgICB9CiAKICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoRmxv
YXRSZWN0KCkpOwpAQCAtMTg5LDggKzE3NSwxMCBAQCB2b2lkIGRyYXdSZXBhaW50SW5kaWNhdG9y
KENHQ29udGV4dFJlZiBjb250ZXh0LCBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllcgog
LSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewogICAgIFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxm
KTsKLSAgICBpZiAobGF5ZXIpCi0gICAgICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxh
eWVyKTsKKyAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAgUmVwYWludFJlY3RMaXN0IHJlY3RzVG9Q
YWludCA9IGNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dCwgbGF5ZXIpOworICAgICAgICBkcmF3
TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50KTsKKyAgICB9CiB9CiAK
IEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKQEAgLTIyMywxNyArMjExLDExIEBAIHZv
aWQgZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FM
YXllciogcGxhdGZvcm1DQUxheWVyCiAKICAgICBpZiAoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBs
YXllck93bmVyID0gcGxhdGZvcm1MYXllci0+b3duZXIoKSkgewogICAgICAgICBpZiAobGF5ZXJP
d25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChs
YXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKQotICAgICAg
ICAgICAgICAgIGRpcnR5UmVjdC5vcmlnaW4ueSA9IFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQg
LSBkaXJ0eVJlY3Qub3JpZ2luLnkgLSBkaXJ0eVJlY3Quc2l6ZS5oZWlnaHQ7Ci0KICAgICAgICAg
ICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6ZGlydHlSZWN0XTsKIAogICAgICAgICAg
ICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0
Zm9ybUxheWVyKSkgewogICAgICAgICAgICAgICAgIENHUmVjdCBib3VuZHMgPSBbc2VsZiBib3Vu
ZHNdOwogICAgICAgICAgICAgICAgIENHUmVjdCBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0TWFrZShi
b3VuZHMub3JpZ2luLngsIGJvdW5kcy5vcmlnaW4ueSwgNTIsIDI3KTsKLSAgICAgICAgICAgICAg
ICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpID09
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkK
LSAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC5vcmlnaW4ueSA9IFtzZWxmIGJvdW5k
c10uc2l6ZS5oZWlnaHQgLSBpbmRpY2F0b3JSZWN0Lm9yaWdpbi55IC0gaW5kaWNhdG9yUmVjdC5z
aXplLmhlaWdodDsKLQogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJl
Y3Q6aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiNWI0ZmJlLi5mZjU4NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTMtMTEt
MDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3RlIExheWVyIFRyZWU6IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHBhcnRpYWwgcmVwYWludCBp
cyBicm9rZW4gZm9yIHRoZSB0aWxlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgdGlsZSBjYWNoZSByZXRyaWV2ZXMg
cmVwYWludCByZWN0cyBmcm9tIHRoZSB0aWxlIGxheWVyLAorICAgICAgICBub3QgZnJvbSB0aGUg
dGlsZWQgYmFja2luZyBsYXllci4KKworICAgICAgICBSZXdvcmsgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUgcGFpbnRpbmcgdG8gZml4IHNvbWUgcm91bmRpbmcgaXNzdWVzCisgICAgICAgIHRoYXQg
d291bGQgY2F1c2UgcGl4ZWwgY3JhY2tzIHVwb24gcmVwYWludCwgYW5kIHRvIHNwZWVkIGl0IHVw
IGEgYml0LgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
OgorICAgICAgICBSZWRlZmluZSBSZXBhaW50UmVjdExpc3QgYmVjYXVzZSB3ZSBjYW4ndCBpbmNs
dWRlIFdlYkxheWVyLmggaGVyZSB5ZXQuCisgICAgICAgIFJlbW92ZSBjcmVhdGVCYWNraW5nU3Rv
cmUsIHdoaWNoIHdhcyBuZXZlciBpbXBsZW1lbnRlZC4KKyAgICAgICAgUmVtb3ZlIG1hcFRvQ29u
dGVudENvb3JkaW5hdGVzLCBiZWNhdXNlIHdlIGRvbid0IG5lZWQgaXQgb24gTWFjLgorCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwYWludGluZ1JlY3RzKTogQWRk
ZWQuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgor
ICAgICAgICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheSk6CisgICAg
ICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgIFN0b3AgdXNp
bmcgbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgVXNlIGNsaXBwaW5nIGluc3RlYWQgb2Yg
cGFpbnRpbmcgdGhlIGltYWdlIG11bHRpcGxlIHRpbWVzLgorICAgICAgICBOZXZlciByZXBhaW50
IG1vcmUgdGhhbiB0aGUgZGlydHkgcmVnaW9uJ3MgYm91bmRzLgorICAgICAgICBEb24ndCB3YXN0
ZSB0aW1lIHdpdGggYWxsIG9mIHRoZSBkcmF3TmF0aXZlSW1hZ2UgY29kZSwganVzdCB1c2UgQ0cu
CisgICAgICAgIFVuaW5kZW50IHRoZSBzd2l0Y2gncyBjYXNlcy4KKyAgICAgICAgU3RvcmUgdGhl
IHJlY3RzIHdlJ3JlIHBhaW50aW5nIHNvIHRoYXQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduIGNh
biBnZXQgdGhlbS4KKyAgICAgICAgUGl4ZWwtc25hcCB0aGUgcmVjdHMgd2UncmUgcGFpbnRpbmcu
CisgICAgICAgIENsaXAgdGhlIGNvbnRleHQgYmVmb3JlIGdvaW5nIHRvIHBhaW50LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Lmg6CisgICAgICAgIFJldHJpZXZlIHRoZSByZWN0cyBjdXJyZW50bHkgYmVpbmcgcGFpbnRlZCBm
cm9tIG91ciBiYWNraW5nIHN0b3JlLCBhbmQKKyAgICAgICAgdHJhbnNmb3JtIHRoZW0gKG1vc3Rs
eSkgYWNjb3JkaW5nIHRvIHRoZSBDVE0sIHRvIG1hdGNoIHRoZSB0cmFuc2Zvcm1hdGlvbgorICAg
ICAgICB0aGF0IHdpbGwgaGF2ZSBvY2N1cnJlZCB1bmRlcm5lYXRoIHdrQ0FMYXllckVudW1lcmF0
ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jay4KKwogMjAxMy0xMS0wNyAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBtb3JlIGRlYWQgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oCmluZGV4IGEzMjczNDcuLmQ2MmE4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTMyLDYgKzMyLDExIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5o
PgogCisvLyBGSVhNRTogTWFrZSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIE9iamVjdGl2ZS1D
IHNvIHdlIGNhbiBpbmNsdWRlIFdlYkxheWVyLmggaGVyZSBhbmQgc2hhcmUgdGhlIHR5cGVkZWYu
CituYW1lc3BhY2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Qs
IDU+IFJlcGFpbnRSZWN0TGlzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTsKQEAgLTU4LDEyICs2MywxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYsIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlJik7CiAKLXByaXZhdGU6Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBtYXBUb0NvbnRlbnRDb29y
ZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0KSBjb25zdDsKKyAgICB2b2lkIGVudW1lcmF0
ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF4pKENHUmVjdCkpOwogCitwcml2
YXRlOgogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSB7IHJldHVybiBtX2FjY2VsZXJhdGVzRHJh
d2luZyA/ICEhbV9mcm9udFN1cmZhY2UgOiAhIW1fZnJvbnRCdWZmZXI7IH0KIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUJhY2tpbmdTdG9yZSgp
OwogICAgIHZvaWQgZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBDR0lt
YWdlUmVmIGZyb250SW1hZ2UpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVy
OwpAQCAtNzcsNiArODEsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
IG1fZnJvbnRTdXJmYWNlOwogCiAgICAgYm9vbCBtX2FjY2VsZXJhdGVzRHJhd2luZzsKKworICAg
IFdlYkNvcmU6OlJlcGFpbnRSZWN0TGlzdCBtX3BhaW50aW5nUmVjdHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDI1NmQ2ODkuLmI1NTExMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpA
QCAtMTEwLDE4ICsxMTAsOSBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYQogICAgIHJldHVybiB0
cnVlOwogfQogCi1JbnRSZWN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjptYXBUb0NvbnRlbnRD
b29yZGluYXRlcyhjb25zdCBJbnRSZWN0IHJlY3QpIGNvbnN0Ci17Ci0gICAgSW50UmVjdCBmbGlw
cGVkUmVjdCA9IHJlY3Q7Ci0gICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzQm90dG9tVXApCi0gICAgICAgIGZsaXBwZWRSZWN0LnNldFkobV9zaXplLmhlaWdodCgp
IC0gcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKLSAgICByZXR1cm4gZmxpcHBlZFJlY3Q7Ci19
Ci0KIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheShjb25zdCBJ
bnRSZWN0IHJlY3QpCiB7Ci0gICAgSW50UmVjdCBmbGlwcGVkUmVjdCA9IG1hcFRvQ29udGVudENv
b3JkaW5hdGVzKHJlY3QpOwotICAgIG1fZGlydHlSZWdpb24udW5pdGUoZmxpcHBlZFJlY3QpOwor
ICAgIG1fZGlydHlSZWdpb24udW5pdGUocmVjdCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheSgpCkBAIC0xOTcsNyArMTg4LDcgQEAgYm9vbCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZGlydHlSZWdpb24udW5p
dGUoSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpKTsKIAogICAgIGlmIChtX2xheWVyLT5vd25l
cigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIobV9sYXllcikpIHsKLSAgICAg
ICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0ID0gbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMoSW50UmVj
dCgwLCAwLCA1MiwgMjcpKTsKKyAgICAgICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0KDAsIDAsIDUy
LCAyNyk7CiAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAg
fQogCkBAIC0yMzIsNyArMjIzLDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSgpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gZnJvbnRJbWFnZSA9IGltYWdlKCk7Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSks
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIG1fZnJvbnRCdWZmZXIg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZFNjYWxlZFNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKICAgICAgICAgZHJhd0luQ29udGV4dCgqY29udGV4dCwgZnJvbnRJbWFnZS5nZXQo
KSk7CiAgICAgfQpAQCAtMjQyLDU4ICsyMzMsOTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheSgpCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0ltYWdlUmVmIGZyb250SW1hZ2UpCiB7
Ci0gICAgVmVjdG9yPEludFJlY3Q+IGRpcnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7
CisgICAgSW50UmVjdCBsYXllckJvdW5kcyhJbnRQb2ludCgpLCBtX3NpemUpOworICAgIEludFJl
Y3Qgc2NhbGVkTGF5ZXJCb3VuZHMoSW50UG9pbnQoKSwgZXhwYW5kZWRJbnRTaXplKG1fc2l6ZSAq
IG1fc2NhbGUpKTsKKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBsZXNzIHRoYW4gd2ViTGF5ZXJNYXhS
ZWN0c1RvUGFpbnQgcmVjdHMgdG8gcGFpbnQgYW5kIHRoZXkgY292ZXIgbGVzcwotICAgIC8vIHRo
YW4gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCBvZiB0aGUgYXJlYSwgd2UnbGwgZG8gYSBw
YXJ0aWFsIHJlcGFpbnQuCisgICAgLy8gdGhhbiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xk
IG9mIHRoZSB0b3RhbCBkaXJ0eSBhcmVhLCB3ZSdsbCByZXBhaW50IGVhY2ggcmVjdCBzZXBhcmF0
ZWx5LgorICAgIC8vIE90aGVyd2lzZSwgcmVwYWludCB0aGUgZW50aXJlIGJvdW5kaW5nIGJveCBv
ZiB0aGUgZGlydHkgcmVnaW9uLgorICAgIEludFJlY3QgZGlydHlCb3VuZHMgPSBtX2RpcnR5UmVn
aW9uLmJvdW5kcygpOworICAgIFZlY3RvcjxJbnRSZWN0PiBkaXJ0eVJlY3RzID0gbV9kaXJ0eVJl
Z2lvbi5yZWN0cygpOworICAgIGlmIChkaXJ0eVJlY3RzLnNpemUoKSA+IHdlYkxheWVyTWF4UmVj
dHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPiB3ZWJMYXllcldhc3RlZFNw
YWNlVGhyZXNob2xkICogZGlydHlCb3VuZHMud2lkdGgoKSAqIGRpcnR5Qm91bmRzLmhlaWdodCgp
KSB7CisgICAgICAgIGRpcnR5UmVjdHMuY2xlYXIoKTsKKyAgICAgICAgZGlydHlSZWN0cy5hcHBl
bmQoZGlydHlCb3VuZHMpOworICAgIH0KIAotICAgIFZlY3RvcjxGbG9hdFJlY3QsIHdlYkxheWVy
TWF4UmVjdHNUb1BhaW50PiByZWN0c1RvUGFpbnQ7Ci0gICAgaWYgKGRpcnR5UmVjdHMuc2l6ZSgp
IDw9IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkg
PD0gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCAqIG1fc2l6ZS53aWR0aCgpICogbV9zaXpl
LmhlaWdodCgpKSB7Ci0gICAgICAgIC8vIENvcHkgb3ZlciB0aGUgcGFydHMgb2YgdGhlIGZyb250
IGJ1ZmZlciB0aGF0IHdlJ3JlIG5vdCBnb2luZyB0byByZXBhaW50LgotICAgICAgICBpZiAoZnJv
bnRJbWFnZSkgewotICAgICAgICAgICAgUmVnaW9uIGNsZWFuUmVnaW9uKEludFJlY3QoSW50UG9p
bnQoKSwgbV9zaXplKSk7Ci0gICAgICAgICAgICBjbGVhblJlZ2lvbi5zdWJ0cmFjdChtX2RpcnR5
UmVnaW9uKTsKLQotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogY2xlYW5SZWdp
b24ucmVjdHMoKSkgewotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0ID0gcmVj
dDsKLSAgICAgICAgICAgICAgICBzY2FsZWRSZWN0LnNjYWxlKG1fc2NhbGUpOwotICAgICAgICAg
ICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUoQ0dJbWFnZUdldFdpZHRoKGZyb250SW1hZ2UpLCBD
R0ltYWdlR2V0SGVpZ2h0KGZyb250SW1hZ2UpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShmcm9udEltYWdlLCBpbWFnZVNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IHNjYWxlZFJlY3QsIHNjYWxlZFJlY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAg
Zm9yIChjb25zdCBhdXRvJiByZWN0IDogZGlydHlSZWN0cykgeworICAgICAgICBGbG9hdFJlY3Qg
c2NhbGVkUmVjdChyZWN0KTsKKyAgICAgICAgc2NhbGVkUmVjdC5zY2FsZShtX3NjYWxlLCBtX3Nj
YWxlKTsKKyAgICAgICAgc2NhbGVkUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7
CisgICAgICAgIHNjYWxlZFJlY3Quc2NhbGUoMSAvIG1fc2NhbGUsIDEgLyBtX3NjYWxlKTsKKyAg
ICAgICAgbV9wYWludGluZ1JlY3RzLmFwcGVuZChzY2FsZWRSZWN0KTsKKyAgICB9CiAKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogZGlydHlSZWN0cykKLSAgICAgICAgICAgIHJlY3Rz
VG9QYWludC5hcHBlbmQocmVjdCk7CisgICAgQ0dSZWN0IGNnUGFpbnRpbmdSZWN0c1t3ZWJMYXll
ck1heFJlY3RzVG9QYWludF07CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGRpcnR5UmVjdENvdW50
ID0gbV9wYWludGluZ1JlY3RzLnNpemUoKTsgaSA8IGRpcnR5UmVjdENvdW50OyArK2kpIHsKKyAg
ICAgICAgRmxvYXRSZWN0IHNjYWxlZFBhaW50aW5nUmVjdCA9IG1fcGFpbnRpbmdSZWN0c1tpXTsK
KyAgICAgICAgc2NhbGVkUGFpbnRpbmdSZWN0LnNjYWxlKG1fc2NhbGUpOworICAgICAgICBjZ1Bh
aW50aW5nUmVjdHNbaV0gPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFBhaW50aW5nUmVjdCk7CiAg
ICAgfQogCisgICAgaWYgKGZyb250SW1hZ2UpIHsKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjZ0NvbnRleHQpOworICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY2dDb250ZXh0LCBr
Q0dCbGVuZE1vZGVDb3B5KTsKKworICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGNnQ29udGV4dCwg
Q0dSZWN0SW5maW5pdGUpOworICAgICAgICBDR0NvbnRleHRBZGRSZWN0cyhjZ0NvbnRleHQsIGNn
UGFpbnRpbmdSZWN0cywgbV9wYWludGluZ1JlY3RzLnNpemUoKSk7CisgICAgICAgIENHQ29udGV4
dEVPQ2xpcChjZ0NvbnRleHQpOworCisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0Nv
bnRleHQsIDAsIHNjYWxlZExheWVyQm91bmRzLmhlaWdodCgpKTsKKyAgICAgICAgQ0dDb250ZXh0
U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShj
Z0NvbnRleHQsIHNjYWxlZExheWVyQm91bmRzLCBmcm9udEltYWdlKTsKKyAgICAgICAgQ0dDb250
ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworICAgIH0KKworICAgIENHQ29udGV4dENsaXBU
b1JlY3RzKGNnQ29udGV4dCwgY2dQYWludGluZ1JlY3RzLCBtX3BhaW50aW5nUmVjdHMuc2l6ZSgp
KTsKKwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKG1fc2NhbGUsIG1fc2NhbGUpKTsKIAog
ICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgotICAgICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgotICAgICAgICAgICAgaWYgKHJl
Y3RzVG9QYWludC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmVjdHNUb1BhaW50LmFwcGVu
ZChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkpOwotICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiByZWN0IDogcmVjdHNUb1BhaW50KQotICAgICAgICAgICAgICAgIG1fbGF5ZXItPm93bmVy
KCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMobV9sYXllciwgY29udGV4dCwgZW5jbG9z
aW5nSW50UmVjdChyZWN0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgotICAgICAgICAgICAgZHJhd0xheWVyQ29u
dGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbV9sYXllciwgcmVjdHNUb1BhaW50KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zv
cm1MYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVk
TGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tp
bmdMYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVBhZ2VUaWxl
ZEJhY2tpbmdMYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJv
b3RMYXllcjoKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVy
TGF5ZXI6Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKKyAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgICAgICBt
X2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG1fbGF5ZXIsIGNv
bnRleHQsIGRpcnR5Qm91bmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgorICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjZ0Nv
bnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cyk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVRpbGVkQmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVJvb3RMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfTsKIAogICAg
IG1fZGlydHlSZWdpb24gPSBSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsK
IAogICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOwogfQogCit2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dD
b250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKK3sKKyAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBpbnZlcnNlVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dD
b250ZXh0R2V0Q1RNKGNvbnRleHQpKTsKKworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdW4tYXBw
bHkgdGhlIGZsaXBwaW5nIG9yIGNvbnRlbnRzU2NhbGUsCisgICAgLy8gYmVjYXVzZSB0aGV5J3Jl
IG5vdCBhcHBsaWVkIHRvIHJlcGFpbnQgcmVjdHMuCisgICAgaW52ZXJzZVRyYW5zZm9ybSA9IENH
QWZmaW5lVHJhbnNmb3JtU2NhbGUoaW52ZXJzZVRyYW5zZm9ybSwgbV9zY2FsZSwgLW1fc2NhbGUp
OworICAgIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShpbnZl
cnNlVHJhbnNmb3JtLCAwLCAtbV9zaXplLmhlaWdodCgpKTsKKworICAgIGZvciAoYXV0byByZWN0
IDogbV9wYWludGluZ1JlY3RzKSB7CisgICAgICAgIENHUmVjdCByZWN0VG9EcmF3ID0gQ0dSZWN0
QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocmVjdCwgaW52ZXJzZVRyYW5zZm9ybSk7CisgICAgICAgIGJs
b2NrKHJlY3RUb0RyYXcpOworICAgIH0KK30KKwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCBmMjBhODNhLi4z
MmEzZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01MDIsNiArNTAyLDEx
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNy
ZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9yCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50LCBtX2NvbnRleHQpOwogfQogCit2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJl
ZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit7CisgICAgbV9wcm9wZXJ0aWVzLmJh
Y2tpbmdTdG9yZS5lbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oY29udGV4dCwgYmxvY2spOworfQor
CiB1aW50MzJfdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6Omhvc3RpbmdDb250ZXh0SUQoKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXgg
OWIxYjY0My4uN2M3ZDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xNDYsNiAr
MTQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBjb25zdCBPVkVSUklERTsKIAor
ICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmLCB2
b2lkICheYmxvY2spKENHUmVjdCkpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB1aW50MzJfdCBo
b3N0aW5nQ29udGV4dElEKCk7CiAKIHByb3RlY3RlZDoK
</data>
<flag name="review"
          id="239380"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>