<?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>102403</bug_id>
          
          <creation_ts>2012-11-15 09:29:29 -0800</creation_ts>
          <short_desc>[chromium] Copy linux theme related files to default</short_desc>
          <delta_ts>2012-11-16 10:38:36 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Scott Violet">sky</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>768175</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-15 09:29:29 -0800</bug_when>
    <thetext>As part of making it possible for windows to use the linux theme we need to copy the linux theme files and build them with a GYP_DEFINE. Once chrome is updated we can nuke the linux ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768223</commentid>
    <comment_count>1</comment_count>
      <attachid>174477</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-15 10:09:01 -0800</bug_when>
    <thetext>Created attachment 174477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768238</commentid>
    <comment_count>2</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-15 10:15:11 -0800</bug_when>
    <thetext>There are a 2 style issues in the patch. One in RenderThemeChromiumDefault:

    static void setSelectionColors(unsigned activeBackgroundColor,
                                   unsigned activeForegroundColor,
                                   unsigned inactiveBackgroundColor,
                                   unsigned inactiveForegroundColor);

The style guide doesn&apos;t mention wrapping. Should I convert to a single line, eg:

    static void setSelectionColors(unsigned activeBackgroundColor, unsigned activeForegroundColor, unsigned inactiveBackgroundColor, unsigned inactiveForegroundColor);


And similarly a call site:

    RenderThemeChromiumDefault::setSelectionColors(activeBackgroundColor,
                                                   activeForegroundColor,
                                                   inactiveBackgroundColor,
                                                   inactiveForegroundColor);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768273</commentid>
    <comment_count>3</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-15 10:37:56 -0800</bug_when>
    <thetext>It looks like the bots are having problems applying the patch. Most likely because it svn cp&apos;s files. Any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768288</commentid>
    <comment_count>4</comment_count>
      <attachid>174477</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-15 10:45:32 -0800</bug_when>
    <thetext>Comment on attachment 174477
Patch

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

&gt; Source/Platform/ChangeLog:6
&gt; +        Reviewed by Tony Change.

You should leave this as &quot;NOBODY (OOPS!)&quot; until you get an r+.  webkit-patch or the cq will fill in the reviewer for you.

&gt; Source/WebCore/rendering/RenderThemeChromiumDefault.h:92
&gt; +    static void setSelectionColors(unsigned activeBackgroundColor,
&gt; +                                   unsigned activeForegroundColor,
&gt; +                                   unsigned inactiveBackgroundColor,
&gt; +                                   unsigned inactiveForegroundColor);

You can either unwrap this into a single line or just indent 4 spaces from the previous line.  I would probably just leave it on a single line.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3570
&gt; +    RenderThemeChromiumDefault::setSelectionColors(activeBackgroundColor,
&gt; +                                                   activeForegroundColor,
&gt; +                                                   inactiveBackgroundColor,
&gt; +                                                   inactiveForegroundColor);

Same as above, either unwrap (seems easier) or indent 4 spaces from the previous line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768554</commentid>
    <comment_count>5</comment_count>
      <attachid>174531</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-15 15:17:55 -0800</bug_when>
    <thetext>Created attachment 174531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768686</commentid>
    <comment_count>6</comment_count>
      <attachid>174559</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-15 16:52:52 -0800</bug_when>
    <thetext>Created attachment 174559
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768687</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-15 16:53:31 -0800</bug_when>
    <thetext>I remade the patch from a git repo.  I hope this will work (although it may lose some svn rename history).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768760</commentid>
    <comment_count>8</comment_count>
      <attachid>174559</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 17:44:02 -0800</bug_when>
    <thetext>Comment on attachment 174559
Patch for landing

Rejecting attachment 174559 from commit-queue.

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html
Full output: http://queues.webkit.org/results/14833930</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769247</commentid>
    <comment_count>9</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-16 07:20:44 -0800</bug_when>
    <thetext>Failure looks like flakyness (I see it referenced in this bug https://bugs.webkit.org/show_bug.cgi?id=102451 too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769249</commentid>
    <comment_count>10</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-11-16 07:21:31 -0800</bug_when>
    <thetext>I can&apos;t seem to change the patch to CQ+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769434</commentid>
    <comment_count>11</comment_count>
      <attachid>174559</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 10:38:33 -0800</bug_when>
    <thetext>Comment on attachment 174559
Patch for landing

Clearing flags on attachment: 174559

Committed r134969: &lt;http://trac.webkit.org/changeset/134969&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769435</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 10:38:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174477</attachid>
            <date>2012-11-15 10:09:01 -0800</date>
            <delta_ts>2012-11-15 15:17:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102403-20121115100658.patch</filename>
            <type>text/plain</type>
            <size>94221</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0Nzg2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTE1ICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29weSBs
aW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIHRvIGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQwMworCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmdlLgorCisgICAgICAgIFRyYW5zaXRpb25hbCBwYXRjaCB0aGF0IGNvcGllcyBs
aW51eCBXZWJUaGVtZUVuZ2luZSB0byBkZWZhdWx0IGRpcmVjdG9yeS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9kZWZhdWx0OiBBZGRlZC4KKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmguCisKIDIwMTIt
MTEtMTQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBDbGFtcCBuZWdhdGl2ZSBzaXplcyB0byB6ZXJvIHdoZW4gY29udmVydGluZyB0byBn
Zng6OiB0eXBlcwpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEzNDY5NikKKysr
IFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiAr
MTQ4LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9y
dC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2lu
ZS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2lu
ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQu
aCcsCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2RlZmF1bHQvV2ViVGhl
bWVFbmdpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L2RlZmF1bHQvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTM0NjcxKQkoZnJvbSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6MTM0NjcxKQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5l
X2gKKyNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAorCisjaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgi
CisjaW5jbHVkZSAiLi4vV2ViQ29sb3IuaCIKKyNpbmNsdWRlICIuLi9XZWJTaXplLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUmVjdDsKKworY2xhc3MgV2ViVGhlbWVFbmdp
bmUgeworcHVibGljOgorICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2Vk
LgorICAgIGVudW0gUGFydCB7CisgICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRzCisgICAg
ICAgIFBhcnRTY3JvbGxiYXJEb3duQXJyb3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJy
b3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJSaWdodEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xs
YmFyVXBBcnJvdywKKyAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwKKyAgICAg
ICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCisgICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jp
em9udGFsVHJhY2ssCisgICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAorCisgICAg
ICAgIC8vIFJlbmRlclRoZW1lIHBhcnRzCisgICAgICAgIFBhcnRDaGVja2JveCwKKyAgICAgICAg
UGFydFJhZGlvLAorICAgICAgICBQYXJ0QnV0dG9uLAorICAgICAgICBQYXJ0VGV4dEZpZWxkLAor
ICAgICAgICBQYXJ0TWVudUxpc3QsCisgICAgICAgIFBhcnRTbGlkZXJUcmFjaywKKyAgICAgICAg
UGFydFNsaWRlclRodW1iLAorICAgICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAorICAgICAgICBQ
YXJ0UHJvZ3Jlc3NCYXIKKyAgICB9OworCisgICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhl
IGFzc29jaWF0ZWQgUGFydC4KKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgU3RhdGVEaXNhYmxl
ZCwKKyAgICAgICAgU3RhdGVIb3ZlciwKKyAgICAgICAgU3RhdGVOb3JtYWwsCisgICAgICAgIFN0
YXRlUHJlc3NlZCwKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgZHJhd2lu
ZyB0aGUgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayBhbmQKKyAgICAvLyBQYXJ0U2Nyb2xs
YmFyVmVydGljYWxUcmFjay4KKyAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyB7
CisgICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bwb3NlZCB0
byB0aGUgcGFydCBiZWluZyBwYWludGVkLgorICAgICAgICBpbnQgdHJhY2tYOworICAgICAgICBp
bnQgdHJhY2tZOworICAgICAgICBpbnQgdHJhY2tXaWR0aDsKKyAgICAgICAgaW50IHRyYWNrSGVp
Z2h0OworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0Q2hlY2tib3gs
IFBhcnRQdXNoQnV0dG9uIGFuZCBQYXJ0UmFkaW8uCisgICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFy
YW1zIHsKKyAgICAgICAgYm9vbCBjaGVja2VkOworICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7
IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgorICAgICAgICBi
b29sIGlzRGVmYXVsdDsgLy8gV2hldGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgor
ICAgICAgICBib29sIGhhc0JvcmRlcjsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9y
OworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0VGV4dEZpZWxkCisg
ICAgc3RydWN0IFRleHRGaWVsZEV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBpc1RleHRBcmVh
OworICAgICAgICBib29sIGlzTGlzdGJveDsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENv
bG9yOworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0TWVudUxpc3QK
KyAgICBzdHJ1Y3QgTWVudUxpc3RFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgaGFzQm9yZGVy
OworICAgICAgICBib29sIGhhc0JvcmRlclJhZGl1czsKKyAgICAgICAgaW50IGFycm93WDsKKyAg
ICAgICAgaW50IGFycm93WTsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAg
IH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0U2xpZGVyVHJhY2sgYW5kIFBh
cnRTbGlkZXJUaHVtYgorICAgIHN0cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7CisgICAgICAgIGJv
b2wgdmVydGljYWw7CisgICAgICAgIGJvb2wgaW5EcmFnOworICAgIH07CisKKyAgICAvLyBFeHRy
YSBwYXJhbWV0ZXJzIGZvciBQYXJ0SW5uZXJTcGluQnV0dG9uCisgICAgc3RydWN0IElubmVyU3Bp
bkJ1dHRvbkV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBzcGluVXA7CisgICAgICAgIGJvb2wg
cmVhZE9ubHk7CisgICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRQcm9n
cmVzc0JhcgorICAgIHN0cnVjdCBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9v
bCBkZXRlcm1pbmF0ZTsKKyAgICAgICAgaW50IHZhbHVlUmVjdFg7CisgICAgICAgIGludCB2YWx1
ZVJlY3RZOworICAgICAgICBpbnQgdmFsdWVSZWN0V2lkdGg7CisgICAgICAgIGludCB2YWx1ZVJl
Y3RIZWlnaHQ7CisgICAgfTsKKworICAgIHVuaW9uIEV4dHJhUGFyYW1zIHsKKyAgICAgICAgU2Ny
b2xsYmFyVHJhY2tFeHRyYVBhcmFtcyBzY3JvbGxiYXJUcmFjazsKKyAgICAgICAgQnV0dG9uRXh0
cmFQYXJhbXMgYnV0dG9uOworICAgICAgICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7
CisgICAgICAgIE1lbnVMaXN0RXh0cmFQYXJhbXMgbWVudUxpc3Q7CisgICAgICAgIFNsaWRlckV4
dHJhUGFyYW1zIHNsaWRlcjsKKyAgICAgICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5u
ZXJTcGluOworICAgICAgICBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFyOworICAg
IH07CisKKyAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3Ig
dmFyaWFibGUgc2l6ZWQgaXRlbXMKKyAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVt
YnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgorICAgIC8vIHRoZSB0
cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgorICAgIHZp
cnR1YWwgV2ViU2l6ZSBnZXRTaXplKFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQorICAgIC8v
IFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3QmLCBjb25zdCBFeHRy
YVBhcmFtcyopIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTM0Nzg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMTEtMTUgIFNjb3R0IFZpb2xl
dCAgPHNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb3B5IGxpbnV4IHRo
ZW1lIHJlbGF0ZWQgZmlsZXMgdG8gZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBD
aGFuZ2UuCisKKyAgICAgICAgVHJhbnNpdGlvbmFsIHBhdGNoIHRoYXQgY29waWVzIGxpbnV4IFdl
YlRoZW1lRW5naW5lIHRvIGRlZmF1bHQgZGlyZWN0b3J5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
OiBVcGRhdGUgY29tcGlsZSBydWxlcyB3aGVuIHVzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSBpcyBz
ZXQuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRzIG5ldyBmaWxlcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXgu
Y3BwLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURl
ZmF1bHQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXguaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmguCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1EZWZhdWx0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaC4KKwogMjAxMi0xMS0xNSAgRXJpayBBcnZpZHNz
b24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBET01FeGNlcHRpb24gbmFt
ZTogTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEzNDY5NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzQ1NCw2ICszNDU0LDggQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1Db21tb24uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bUNvbW1vbi5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bURlZmF1bHQuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bURlZmF1bHQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1Gb250UHJvdmlkZXIuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bUZvbnRQcm92aWRlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUZvbnRQcm92aWRlckxpbnV4LmNwcCcsCkBAIC00NjgyLDYgKzQ2ODQsOCBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5D
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hy
b21pdW1EZWZhdWx0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmgnLApAQCAtNDcwMCw2ICs0NzA0LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1B
bmRyb2lkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lv
biAxMzQ2OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29y
a2luZyBjb3B5KQpAQCAtMTY4Miw2ICsxNjgyLDI2IEBACiAgICAgICAgICAgICAgICAgfV0sCiAg
ICAgICAgICAgICBdLAogICAgICAgICB9XSwKKyAgICAgICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJf
dGhlbWU9PTEnLCB7CisgICAgICAgICAgJ3NvdXJjZXMvJzogWworICAgICAgICAgICAgWydleGNs
dWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgnXSwK
KyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1l
Q2hyb21pdW1MaW51eC5jcHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1XaW4uaCddLAorICAgICAgICAgICAgWydleGNs
dWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bVdpbi5jcHAnXSwK
KyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguY3BwJ10sCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgnXSwKKyAgICAgICAgICAgIFsn
ZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNw
cCddLAorICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW4uaCddLAorICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAgICAg
ICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MCcsIHsKKyAgICAgICAgICAnc291cmNlcy8n
OiBbCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1U
aGVtZUNocm9taXVtRGVmYXVsdC5jcHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnXSwKKyAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
RGVmYXVsdC5jcHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oJ10sCisgICAgICAgICAgXSwKKyAgICAg
ICAgfV0sCiAgICAgICAgIFsndXNlX3gxMSA9PSAxJywgewogICAgICAgICAgICdzb3VyY2VzLyc6
IFsKICAgICAgICAgICAgICMgQ2hlcnJ5LXBpY2sgZmlsZXMgZXhjbHVkZWQgYnkgdGhlIGJyb2Fk
ZXIgcmVndWxhciBleHByZXNzaW9ucyBhYm92ZS4KQEAgLTE5NzAsNiArMTk5MCwxNyBAQAogICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnQWxsSW5PbmVcXC5jcHAkJ10sCiAgICAgICBdLAogICAgICAgJ2Nv
bmRpdGlvbnMnOiBbCisgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0wJywgewor
ICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuKiddLAorICAgICAgICAgIF0sCisgICAgICAg
IH1dLAorICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MScsIHsKKyAgICAgICAg
ICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4LionXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdSZW5kZXJUaGVtZUNocm9t
aXVtV2luLionXSwKKyAgICAgICAgICBdLAorICAgICAgICB9XSwKICAgICAgICAgWydPUz09Indp
biInLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydleGNsdWRlJywg
J1Bvc2l4XFwuY3BwJCddLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEzNDY5NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTlBPYmplY3QqIHBsdWdpblNj
cmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAKICAgICAvLyBUaGVtaW5nIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmIE9TKFdJ
TkRPV1MpCisjaWYgT1MoV0lORE9XUykgJiYgIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkK
ICAgICBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbigKICAgICAgICAgR3JhcGhpY3NDb250ZXh0Kiwg
aW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgSW50UmVjdCYpOwog
ICAgIHN0YXRpYyB2b2lkIHBhaW50TWVudUxpc3QoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21p
dW1EZWZhdWx0LmNwcAkocmV2aXNpb24gMTM0NjcxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHA6MTM0NjcxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVm
YXVsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190aHVt
YkluYWN0aXZlQ29sb3IgPSAweGVhZWFlYTsKK3Vuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4OjpzX3RodW1iQWN0aXZlQ29sb3IgPSAweGY0ZjRmNDsKK3Vuc2lnbmVkIFBsYXRmb3Jt
VGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RyYWNrQ29sb3IgPSAweGQzZDNkMzsKKwordm9pZCBQbGF0
Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Nyb2xsYmFyQ29sb3JzKAorICAgIFNrQ29sb3Ig
aW5hY3RpdmVDb2xvciwgU2tDb2xvciBhY3RpdmVDb2xvciwgU2tDb2xvciB0cmFja0NvbG9yKQor
eworICAgIHNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gaW5hY3RpdmVDb2xvcjsKKyAgICBzX3RodW1i
QWN0aXZlQ29sb3IgPSBhY3RpdmVDb2xvcjsKKyAgICBzX3RyYWNrQ29sb3IgPSB0cmFja0NvbG9y
OworfQorCitzdGF0aWMgU2tTY2FsYXIgY2xhbXAoU2tTY2FsYXIgdmFsdWUsIFNrU2NhbGFyIG1p
biwgU2tTY2FsYXIgbWF4KQoreworICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heCh2YWx1ZSwg
bWluKSwgbWF4KTsKK30KKworU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2F0
dXJhdGVBbmRCcmlnaHRlbihjb25zdCBTa1NjYWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRl
QW1vdW50LCBTa1NjYWxhciBicmlnaHRlbkFtb3VudCkKK3sKKyAgICBTa1NjYWxhciBjb2xvclsz
XTsKKyAgICBjb2xvclswXSA9IGhzdlswXTsKKyAgICBjb2xvclsxXSA9IGNsYW1wKGhzdlsxXSAr
IHNhdHVyYXRlQW1vdW50LCAwLjAsIDEuMCk7CisgICAgY29sb3JbMl0gPSBjbGFtcChoc3ZbMl0g
KyBicmlnaHRlbkFtb3VudCwgMC4wLCAxLjApOworICAgIHJldHVybiBTa0hTVlRvQ29sb3IoY29s
b3IpOworfQorCitTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpvdXRsaW5lQ29s
b3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2MlszXSkKK3sKKyAg
ICAvLyBHVEsgVGhlbWUgZW5naW5lcyBoYXZlIHdheSB0b28gbXVjaCBjb250cm9sIG92ZXIgdGhl
IGxheW91dCBvZgorICAgIC8vIHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0IGJlIGFibGUgdG8gbW9y
ZSBjbG9zZWx5IGFwcHJveGltYXRlIGl0cworICAgIC8vIGxvb2stYW5kLWZlZWwsIGlmIHdlIHNl
bnQgd2hvbGUgaW1hZ2VzIGluc3RlYWQgb2YganVzdCBjb2xvcnMKKyAgICAvLyBmcm9tIHRoZSBi
cm93c2VyIHRvIHRoZSByZW5kZXJlci4gQnV0IGV2ZW4gdGhlbiwgc29tZSB0aGVtZXMKKyAgICAv
LyB3b3VsZCBqdXN0IGJyZWFrLgorICAgIC8vCisgICAgLy8gU28sIGluc3RlYWQsIHdlIGRvbid0
IGV2ZW4gdHJ5IHRvIDEwMCUgcmVwbGljYXRlIHRoZSBsb29rIG9mCisgICAgLy8gdGhlIG5hdGl2
ZSBzY3JvbGxiYXIuIFdlIHJlbmRlciBvdXIgb3duIHZlcnNpb24sIGJ1dCB3ZSBtYWtlCisgICAg
Ly8gc3VyZSB0byBwaWNrIGNvbG9ycyB0aGF0IGJsZW5kIGluIG5pY2VseSB3aXRoIHRoZSBzeXN0
ZW0gR1RLCisgICAgLy8gdGhlbWUuIEluIG1vc3QgY2FzZXMsIHdlIGNhbiBqdXN0IHNhbXBsZSBh
IGNvdXBsZSBvZiBwaXhlbHMKKyAgICAvLyBmcm9tIHRoZSBzeXN0ZW0gc2Nyb2xsYmFyIGFuZCB1
c2UgdGhvc2UgY29sb3JzIHRvIGRyYXcgb3VyCisgICAgLy8gc2Nyb2xsYmFyLgorICAgIC8vCisg
ICAgLy8gVGhpcyB3b3JrcyBmaW5lIGZvciB0aGUgdHJhY2sgY29sb3IgYW5kIHRoZSBvdmVyYWxs
IHRodW1iCisgICAgLy8gY29sb3IuIEJ1dCBpdCBmYWlscyBzcGVjdGFjdWxhcmx5IGZvciB0aGUg
b3V0bGluZSBjb2xvciB1c2VkCisgICAgLy8gYXJvdW5kIHRoZSB0aHVtYiBwaWVjZS4gTm90IGFs
bCB0aGVtZXMgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZAorICAgIC8vIG91dGxpbmUuIEZvciBzb21l
IG9mIHRoZW0gaXQgaXMgcGFydGlhbGx5IHRyYW5zcGFyZW50LCBhbmQgZm9yCisgICAgLy8gb3Ro
ZXJzIHRoZSB0aGlja25lc3MgaXMgdmVyeSB1bnByZWRpY3RhYmxlLgorICAgIC8vCisgICAgLy8g
U28sIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFwcHJveGltYXRlIHRoZSBzeXN0ZW0gdGhlbWUsIHdl
CisgICAgLy8gaW5zdGVhZCB0cnkgdG8gY29tcHV0ZSBhIHJlYXNvbmFibGUgbG9va2luZyBjaG9p
Y2UgYmFzZWQgb24gdGhlCisgICAgLy8ga25vd24gY29sb3Igb2YgdGhlIHRyYWNrIGFuZCB0aGUg
dGh1bWIgcGllY2UuIFRoaXMgaXMgZGlmZmljdWx0CisgICAgLy8gd2hlbiB0cnlpbmcgdG8gZGVh
bCBib3RoIHdpdGggaGlnaC0gYW5kIGxvdy1jb250cmFzdCB0aGVtZXMsCisgICAgLy8gYW5kIGJv
dGggd2l0aCBwb3NpdGl2ZSBhbmQgaW52ZXJ0ZWQgdGhlbWVzLgorICAgIC8vCisgICAgLy8gVGhl
IGZvbGxvd2luZyBjb2RlIGhhcyBiZWVuIHRlc3RlZCB0byBsb29rIE9LIHdpdGggYWxsIG9mIHRo
ZQorICAgIC8vIGRlZmF1bHQgR1RLIHRoZW1lcy4KKyAgICBTa1NjYWxhciBtaW5EaWZmID0gY2xh
bXAoKGhzdjFbMV0gKyBoc3YyWzFdKSAqIDEuMiwgMC4yOCwgMC41KTsKKyAgICBTa1NjYWxhciBk
aWZmID0gY2xhbXAoZmFicyhoc3YxWzJdIC0gaHN2MlsyXSkgLyAyLCBtaW5EaWZmLCAwLjUpOwor
CisgICAgaWYgKGhzdjFbMl0gKyBoc3YyWzJdID4gMS4wKQorICAgICAgICBkaWZmID0gLWRpZmY7
CisKKyAgICByZXR1cm4gc2F0dXJhdGVBbmRCcmlnaHRlbihoc3YyLCAtMC4yLCBkaWZmKTsKK30K
Kwordm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRBcnJvd0J1dHRvbihHcmFw
aGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBcnJvd0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQoreworICAgIFNrQ2FudmFzKiBjb25zdCBjYW52
YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIGludCB3aWR0aE1pZGRs
ZSwgbGVuZ3RoTWlkZGxlOworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgaWYgKGRpcmVjdGlvbiA9
PSBOb3J0aCB8fCBkaXJlY3Rpb24gPT0gU291dGgpIHsKKyAgICAgICAgd2lkdGhNaWRkbGUgPSBy
ZWN0LndpZHRoKCkgLyAyICsgMTsKKyAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC5oZWlnaHQo
KSAvIDIgKyAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGxlbmd0aE1pZGRsZSA9IHJlY3Qud2lk
dGgoKSAvIDIgKyAxOworICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsg
MTsKKyAgICB9CisKKyAgICAvLyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9yLgorICAgIFNrU2NhbGFy
IHRyYWNrSFNWWzNdOworICAgIFNrQ29sb3JUb0hTVih0cmFja0NvbG9yKCksIHRyYWNrSFNWKTsK
KyAgICBTa0NvbG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbih0cmFja0hTViwg
MCwgMC4yKTsKKyAgICBTa0NvbG9yIGJhY2tncm91bmRDb2xvciA9IGJ1dHRvbkNvbG9yOworICAg
IGlmIChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKKyAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNW
WzNdOworICAgICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhTVik7CisgICAg
ICAgIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1YsIDAsIC0wLjEp
OworICAgIH0gZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJTdGF0ZSkgeworICAgICAgICBTa1NjYWxh
ciBidXR0b25IU1ZbM107CisgICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0dG9u
SFNWKTsKKyAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhT
ViwgMCwgMC4wNSk7CisgICAgfQorCisgICAgU2tJUmVjdCBza3JlY3Q7CisgICAgc2tyZWN0LnNl
dChyZWN0LngoKSwgcmVjdC55KCksIHJlY3QueCgpICsgcmVjdC53aWR0aCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOworICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kICh0aGUgYXJlYSB2
aXNpYmxlIGJlaGluZCB0aGUgcm91bmRlZCBjb3JuZXJzKS4KKyAgICBwYWludC5zZXRDb2xvcihi
YWNrZ3JvdW5kQ29sb3IpOworICAgIGNhbnZhcy0+ZHJhd0lSZWN0KHNrcmVjdCwgcGFpbnQpOwor
CisgICAgLy8gUGFpbnQgdGhlIGJ1dHRvbidzIG91dGxpbmUgYW5kIGZpbGwgdGhlIG1pZGRsZQor
ICAgIFNrUGF0aCBvdXRsaW5lOworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBO
b3J0aDoKKyAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3QueSgpICsg
cmVjdC5oZWlnaHQoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAtKHJlY3Qu
aGVpZ2h0KCkgLSAyKSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAtMik7CisgICAgICAg
IG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAgICAgICAgb3V0bGluZS5y
TGluZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAt
IDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoOgorICAgICAgICBvdXRsaW5lLm1v
dmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgLSAwLjUpOworICAgICAgICBvdXRsaW5lLnJM
aW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwg
Mik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0o
cmVjdC5oZWlnaHQoKSAtIDIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYXN0OgorICAg
ICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSAtIDAuNSwgcmVjdC55KCkgKyAwLjUpOworICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7CisgICAgICAgIG91dGxp
bmUuckxpbmVUbygyLCAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0
KCkgLSA1KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKKyAgICAgICAgb3V0bGlu
ZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlc3Q6CisgICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgcmVjdC53aWR0aCgp
ICsgMC41LCByZWN0LnkoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qu
d2lkdGgoKSAtIDIpLCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKKyAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKKyAgICAgICAgb3V0bGlu
ZS5yTGluZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0g
MiwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXRsaW5lLmNsb3NlKCk7CisKKyAg
ICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGFpbnQuc2V0Q29s
b3IoYnV0dG9uQ29sb3IpOworICAgIGNhbnZhcy0+ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOwor
CisgICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtTdHJva2VfU3R5bGUpOworICAgIFNrU2NhbGFyIHRodW1iSFNWWzNdOworICAgIFNrQ29s
b3JUb0hTVih0aHVtYkluYWN0aXZlQ29sb3IoKSwgdGh1bWJIU1YpOworICAgIHBhaW50LnNldENv
bG9yKG91dGxpbmVDb2xvcih0cmFja0hTViwgdGh1bWJIU1YpKTsKKyAgICBjYW52YXMtPmRyYXdQ
YXRoKG91dGxpbmUsIHBhaW50KTsKKworICAgIC8vIElmIHRoZSBidXR0b24gaXMgZGlzYWJsZWQg
b3IgcmVhZC1vbmx5LCB0aGUgYXJyb3cgaXMgZHJhd24gd2l0aCB0aGUgb3V0bGluZSBjb2xvci4K
KyAgICBpZiAoc3RhdGVzICYgRW5hYmxlZFN0YXRlICYmICEoc3RhdGVzICYgUmVhZE9ubHlTdGF0
ZSkpCisgICAgICAgIHBhaW50LnNldENvbG9yKFNLX0NvbG9yQkxBQ0spOworCisgICAgcGFpbnQu
c2V0QW50aUFsaWFzKGZhbHNlKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9T
dHlsZSk7CisKKyAgICBTa1BhdGggcGF0aDsKKyAgICAvLyBUaGUgY29uc3RhbnRzIGluIHRoaXMg
YmxvY2sgb2YgY29kZSBhcmUgaGFuZC10YWlsb3JlZCB0byBwcm9kdWNlIGdvb2QKKyAgICAvLyBs
b29raW5nIGFycm93cyB3aXRob3V0IGFudGktYWxpYXNpbmcuCisgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKKyAgICBjYXNlIE5vcnRoOgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdp
ZHRoTWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgKyAyKTsKKyAgICAgICAgcGF0
aC5yTGluZVRvKDcsIDApOworICAgICAgICBwYXRoLnJMaW5lVG8oLTQsIC00KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTb3V0aDoKKyAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3
aWR0aE1pZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3RoTWlkZGxlIC0gMyk7CisgICAgICAgIHBh
dGguckxpbmVUbyg3LCAwKTsKKyAgICAgICAgcGF0aC5yTGluZVRvKC00LCA0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFYXN0OgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIGxl
bmd0aE1pZGRsZSAtIDMsIHJlY3QueSgpICsgd2lkdGhNaWRkbGUgLSA0KTsKKyAgICAgICAgcGF0
aC5yTGluZVRvKDAsIDcpOworICAgICAgICBwYXRoLnJMaW5lVG8oNCwgLTQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlc3Q6CisgICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVu
Z3RoTWlkZGxlICsgMSwgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDUpOworICAgICAgICBwYXRo
LnJMaW5lVG8oMCwgOSk7CisgICAgICAgIHBhdGguckxpbmVUbygtNCwgLTQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgcGF0aC5jbG9zZSgpOworCisgICAgY2FudmFzLT5kcmF3UGF0aChw
YXRoLCBwYWludCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1UaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHJldmlzaW9uIDEzNDY3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNfdGh1bWJJbmFjdGl2ZUNv
bG9yID0gMHhlYWVhZWE7Ci11bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190
aHVtYkFjdGl2ZUNvbG9yID0gMHhmNGY0ZjQ7Ci11bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eDo6c190cmFja0NvbG9yID0gMHhkM2QzZDM7Cit1bnNpZ25lZCBQbGF0Zm9ybVRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpzX3RodW1iSW5hY3RpdmVDb2xvciA9IDB4ZWFlYWVhOwordW5zaWdu
ZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdDo6c190aHVtYkFjdGl2ZUNvbG9yID0gMHhm
NGY0ZjQ7Cit1bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzX3RyYWNrQ29s
b3IgPSAweGQzZDNkMzsKIAotdm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Ny
b2xsYmFyQ29sb3JzKAordm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRTY3Jv
bGxiYXJDb2xvcnMoCiAgICAgU2tDb2xvciBpbmFjdGl2ZUNvbG9yLCBTa0NvbG9yIGFjdGl2ZUNv
bG9yLCBTa0NvbG9yIHRyYWNrQ29sb3IpCiB7CiAgICAgc190aHVtYkluYWN0aXZlQ29sb3IgPSBp
bmFjdGl2ZUNvbG9yOwpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgU2tTY2FsYXIgY2xhbXAoU2tT
Y2FsYXIgdmFsdWUsIFNrCiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHZhbHVlLCBtaW4p
LCBtYXgpOwogfQogCi1Ta0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzYXR1cmF0
ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91
bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQorU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1EZWZhdWx0OjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tT
Y2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQogewogICAgIFNr
U2NhbGFyIGNvbG9yWzNdOwogICAgIGNvbG9yWzBdID0gaHN2WzBdOwpAQCAtNTksNyArNTksNyBA
QCBTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzYXR1CiAgICAgcmV0dXJuIFNr
SFNWVG9Db2xvcihjb2xvcik7CiB9CiAKLVNrQ29sb3IgUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXg6Om91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBo
c3YyWzNdKQorU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpvdXRsaW5lQ29s
b3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2MlszXSkKIHsKICAg
ICAvLyBHVEsgVGhlbWUgZW5naW5lcyBoYXZlIHdheSB0b28gbXVjaCBjb250cm9sIG92ZXIgdGhl
IGxheW91dCBvZgogICAgIC8vIHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0IGJlIGFibGUgdG8gbW9y
ZSBjbG9zZWx5IGFwcHJveGltYXRlIGl0cwpAQCAtOTcsNyArOTcsNyBAQCBTa0NvbG9yIFBsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpvdXRsCiAgICAgcmV0dXJuIHNhdHVyYXRlQW5kQnJpZ2h0
ZW4oaHN2MiwgLTAuMiwgZGlmZik7CiB9CiAKLXZvaWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYg
cmVjdCwgQXJyb3dEaXJlY3Rpb24gZGlyZWN0aW9uLCBDb250cm9sU3RhdGVzIHN0YXRlcykKK3Zv
aWQgUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdDo6cGFpbnRBcnJvd0J1dHRvbihHcmFwaGlj
c0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBcnJvd0RpcmVjdGlvbiBkaXJlY3Rp
b24sIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQogewogICAgIFNrQ2FudmFzKiBjb25zdCBjYW52YXMg
PSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGludCB3aWR0aE1pZGRsZSwg
bGVuZ3RoTWlkZGxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaAkocmV2aXNp
b24gMTM0NjcxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eC5oOjEzNDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eF9oCisjZGVm
aW5lIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKKworI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiU2tTY2FsYXIuaCIK
KyNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXggeworcHVibGljOgorICAgIGVudW0gQXJyb3dEaXJl
Y3Rpb24geworICAgICAgICBOb3J0aCwKKyAgICAgICAgRWFzdCwKKyAgICAgICAgU291dGgsCisg
ICAgICAgIFdlc3QsCisgICAgfTsKKworICAgIHN0YXRpYyB2b2lkIHNldFNjcm9sbGJhckNvbG9y
cyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBhY3RpdmVDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgdHJhY2tDb2xvcik7CisgICAgc3RhdGljIHVuc2lnbmVkIHRodW1iSW5h
Y3RpdmVDb2xvcigpIHsgcmV0dXJuIHNfdGh1bWJJbmFjdGl2ZUNvbG9yOyB9CisgICAgc3RhdGlj
IHVuc2lnbmVkIHRodW1iQWN0aXZlQ29sb3IoKSB7IHJldHVybiBzX3RodW1iQWN0aXZlQ29sb3I7
IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgdHJhY2tDb2xvcigpIHsgcmV0dXJuIHNfdHJhY2tDb2xv
cjsgfQorCisgICAgc3RhdGljIFNrQ29sb3Igc2F0dXJhdGVBbmRCcmlnaHRlbihjb25zdCBTa1Nj
YWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRlQW1vdW50LCBTa1NjYWxhciBicmlnaHRlbkFt
b3VudCk7CisgICAgc3RhdGljIFNrQ29sb3Igb3V0bGluZUNvbG9yKGNvbnN0IFNrU2NhbGFyIGhz
djFbM10sIGNvbnN0IFNrU2NhbGFyIGhzdjJbM10pOworICAgIHN0YXRpYyB2b2lkIHBhaW50QXJy
b3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIEFycm93RGlyZWN0aW9u
LCBDb250cm9sU3RhdGVzKTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eCgpIHsgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHNfdGh1bWJJbmFjdGl2ZUNvbG9yOwor
ICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1iQWN0aXZlQ29sb3I7CisgICAgc3RhdGljIHVuc2ln
bmVkIHNfdHJhY2tDb2xvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21p
dW1EZWZhdWx0LmgJKHJldmlzaW9uIDEzNDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3Jt
VGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXhf
aAorI2lmbmRlZiBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0X2gKKyNkZWZpbmUgUGxhdGZv
cm1UaGVtZUNocm9taXVtRGVmYXVsdF9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lh
LmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4IHsKK2NsYXNzIFBs
YXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQgewogcHVibGljOgogICAgIGVudW0gQXJyb3dEaXJl
Y3Rpb24gewogICAgICAgICBOb3J0aCwKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYsIEFycm93RGlyZWN0aW9uLCBDb250cm9sU3RhdGVzKTsKIAogcHJpdmF0ZToKLSAgICBQbGF0
Zm9ybVRoZW1lQ2hyb21pdW1MaW51eCgpIHsgfQorICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bURl
ZmF1bHQoKSB7IH0KIAogICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1iSW5hY3RpdmVDb2xvcjsK
ICAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkFjdGl2ZUNvbG9yOwpAQCAtNjgsNCArNjgsNCBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBQbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eF9oCisjZW5kaWYgLy8gUGxhdGZvcm1UaGVtZUNocm9taXVtRGVm
YXVsdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtRGVmYXVsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCShyZXZpc2lv
biAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6MTM0NjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJT
Y3JvbGxiYXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViUmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Njcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6
bmF0aXZlVGhlbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4LCB0aGVtZSwgKCkpOworICAgIHJldHVybiAmdGhlbWU7Cit9CisKK2ludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSBjb250cm9sU2l6ZSkKK3sKKyAgICAvLyBIb3JpeiBhbmQgVmVydCBzY3JvbGxi
YXJzIGFyZSB0aGUgc2FtZSB0aGlja25lc3MuCisgICAgSW50U2l6ZSBzY3JvbGxiYXJTaXplID0g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKKyAgICByZXR1
cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOworfQorCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydFR5cGUpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBz
Y3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpTdGF0ZUhvdmVyIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Cisg
ICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CisgICAg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2Vi
S2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7
CisgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gYWxpZ25SZWN0LngoKTsK
KyAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1kgPSBhbGlnblJlY3QueSgpOwor
ICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrV2lkdGggPSBhbGlnblJlY3Qud2lk
dGgoKTsKKyAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9IGFsaWdu
UmVjdC5oZWlnaHQoKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5n
aW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpv
bnRhbFRyYWNrIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2Fs
VHJhY2ssIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Cit9CisK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydCBwYWludFBhcnQ7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3Rh
dGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKKyAgICBXZWJLaXQ6Oldl
YkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBi
b29sIGNoZWNrTWluID0gZmFsc2U7CisgICAgYm9vbCBjaGVja01heCA9IGZhbHNlOworICAgIGlm
IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAg
ICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7CisgICAgICAgICAgICBwYWlu
dFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93Owor
ICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclJpZ2h0
QXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7CisgICAgICAg
ICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVXBB
cnJvdzsKKyAgICAgICAgICAgIGNoZWNrTWluID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJEb3duQXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKChjaGVja01pbiAmJiAoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPD0gMCkp
CisgICAgICAgIHx8IChjaGVja01heCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9PSBzY3Jv
bGxiYXItPm1heGltdW0oKSkpIHsKKyAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpTdGF0ZURpc2FibGVkOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwYXJ0ID09IHNj
cm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOworICAgICAgICBlbHNlIGlmIChwYXJ0ID09IHNjcm9s
bGJhci0+aG92ZXJlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U3RhdGVIb3ZlcjsKKyAgICB9CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50UGFydCwgc3RhdGUsIFdlYktp
dDo6V2ViUmVjdChyZWN0KSwgMCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U3RhdGUgc3RhdGU7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdj
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgaWYgKHNjcm9sbGJhci0+cHJlc3Nl
ZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVQcmVzc2VkOworICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQo
KSA9PSBUaHVtYlBhcnQpCisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U3RhdGVIb3ZlcjsKKyAgICBlbHNlCisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhv
cml6b250YWxUaHVtYiA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0
aWNhbFRodW1iLCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAwKTsKK30KKworYm9vbCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK3sKKyAgICByZXR1
cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0
LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7Cit9CisKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
Cit7CisgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJh
cikgeworICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9s
bGJhclVwQXJyb3cpOworICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRoKCksIHNjcm9s
bGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQoKSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkg
LyAyIDogc2l6ZS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJh
cgorICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVF
bmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVm
dEFycm93KTsKKyAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICogc2l6
ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7Cit9CisKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQoreworICAgIGlmIChz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAg
SW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
LT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRo
dW1iKTsKKyAgICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7CisgICAgfQorCisgICAgSW50U2l6
ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRT
aXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIp
OworICAgIHJldHVybiBzaXplLndpZHRoKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1EZWZhdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHJldmlzaW9uIDEzNDY3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1EZWZhdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMzEgKzI5LDMxIEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eC5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgiCiAKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvbGludXgv
V2ViVGhlbWVFbmdpbmUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2lu
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJU
aGVtZTo6bmF0aXZlVGhlbWUoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LCB0aGVtZSwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQsIHRoZW1lLCAoKSk7CiAgICAgcmV0dXJuICZ0
aGVtZTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhp
Y2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQoraW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1EZWZhdWx0OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNp
emUgY29udHJvbFNpemUpCiB7CiAgICAgLy8gSG9yaXogYW5kIFZlcnQgc2Nyb2xsYmFycyBhcmUg
dGhlIHNhbWUgdGhpY2tuZXNzLgogICAgIEludFNpemUgc2Nyb2xsYmFyU2l6ZSA9IFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjayk7CiAgICAgcmV0dXJuIHNjcm9s
bGJhclNpemUud2lkdGgoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBl
KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGFpbnRUcmFja1BpZWNlKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0g
cGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyIDogV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFj
a1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFQKICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Ny
b2xsYmFySG9yaXpvbnRhbFRyYWNrIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9s
bGJhclZlcnRpY2FsVHJhY2ssIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBh
cmFtcyk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxi
YXJQYXJ0IHBhcnQpCiB7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBh
cnQ7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCCiAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50UGFydCwgc3RhdGUsIFdl
YktpdDo6V2ViUmVjdChyZWN0KSwgMCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7CiAgICAgV2ViS2l0OjpXZWJDYW52YXMq
IGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CkBAIC0xMTUsMTIgKzEx
NSwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUCiAgICAgV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLCBzdGF0ZSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAwKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0
b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7CiB9
CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1EZWZhdWx0OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikg
ewogICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJh
clVwQXJyb3cpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpidXQKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAy
ICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQoraW50IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1EZWZhdWx0LmgJKHJldmlzaW9uIDEzNDY3MSkJKGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Lmg6MTM0
NjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bURlZmF1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKKyNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4X2gKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW0uaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCA6
IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CisKKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIH07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oCShyZXZpc2lv
biAxMzQ2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtRGVmYXVsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyNCArMjgsMjYgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXhfaAotI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXhfaAorI2lmbmRlZiBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdF9oCisjZGVmaW5lIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1EZWZhdWx0X2gKIAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW0uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCA6
IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0KLSAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIH07CisKK2NsYXNzIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1EZWZhdWx0IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0geworcHVibGlj
OgorICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6
ZSk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURl
ZmF1bHQuY3BwCShyZXZpc2lvbiAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwOjEzNDY3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4LmgiCisKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAi
Q29sb3IuaCIKKyNpbmNsdWRlICJQYWludEluZm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRl
eHRTa2lhLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyUHJv
Z3Jlc3MuaCIKKyNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJU
aGVtZS5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCisjaW5jbHVkZSA8cHVi
bGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1
bnNpZ25lZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6Om1fYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yID0KKyAgICAweGZmMWU5MGZmOwordW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9CisgICAgQ29sb3I6OmJs
YWNrOwordW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2luYWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yID0KKyAgICAweGZmYzhjOGM4OwordW5zaWduZWQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjptX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KKyAg
ICAweGZmMzIzMjMyOworCitkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2NhcmV0
QmxpbmtJbnRlcnZhbDsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRCdXR0b25CYWNr
Z3JvdW5kQ29sb3IgPSAweGZmZGRkZGRkOworCitzdGF0aWMgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6U3RhdGUgZ2V0V2ViVGhlbWVTdGF0ZShjb25zdCBSZW5kZXJUaGVtZSogdGhlbWUsIGNvbnN0
IFJlbmRlck9iamVjdCogbykKK3sKKyAgICBpZiAoIXRoZW1lLT5pc0VuYWJsZWQobykpCisgICAg
ICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOworICAgIGlm
ICh0aGVtZS0+aXNQcmVzc2VkKG8pKQorICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVQcmVzc2VkOworICAgIGlmICh0aGVtZS0+aXNIb3ZlcmVkKG8pKQorICAgICAg
ICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKKworICAgIHJldHVy
biBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKK30KKworUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkpOworfQorCisvLyBS
ZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlIGZvciBBbmRyb2lkIGlzIGRlZmluZWQgaW4gUmVuZGVy
VGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwLgorI2lmICFPUyhBTkRST0lEKQorUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQoreworICAg
IHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNyZWF0
ZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcnQ7Cit9CisjZW5kaWYKKworUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXgoKQoreworICAgIG1fY2FyZXRC
bGlua0ludGVydmFsID0gUmVuZGVyVGhlbWU6OmNhcmV0QmxpbmtJbnRlcnZhbCgpOworfQorCitS
ZW5kZXJUaGVtZUNocm9taXVtTGludXg6On5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKQorewor
fQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnN5c3RlbUNvbG9yKGludCBjc3NW
YWx1ZUlkKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBDb2xvciBsaW51eEJ1dHRvbkdyYXlD
b2xvcigweGZmZGRkZGRkKTsKKworICAgIGlmIChjc3NWYWx1ZUlkID09IENTU1ZhbHVlQnV0dG9u
ZmFjZSkKKyAgICAgICAgcmV0dXJuIGxpbnV4QnV0dG9uR3JheUNvbG9yOworICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7Cit9CisKK1N0cmluZyBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQoreworICAgIHJldHVy
biBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpICsKKyAg
ICAgICAgICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1MaW51eFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNp
emVvZih0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKK2Jvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpjb250cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5k
ZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzRW5hYmxlZChvKTsKK30KKworQ29s
b3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29sb3IoMHgyOCwgMHgyOCwgMHgyOCk7
Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbG9yOjpibGFjazsK
K30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjppbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBDb2xvcigweGM4LCAw
eGM4LCAweGM4KTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjppbmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBD
b2xvcigweDMyLCAweDMyLCAweDMyKTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworfQorCitDb2xvciBS
ZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBsYXRmb3Jt
QWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9
CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKK0ludFNpemUgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUo
MSwgNik7Cit9CisKK2ludCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNsaWRlclRpY2tPZmZz
ZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdAoreworICAgIHJldHVybiAtMTY7Cit9CisjZW5kaWYK
Kwordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdFNsaWRlclRodW1iU2l6ZShS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgSW50U2l6
ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRT
aXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUaHVtYik7CisKKyAgICBpZiAo
c3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7CisgICAg
ICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAg
ICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOworICAgIH0g
ZWxzZSBpZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkg
eworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKSk7
CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNsaWRl
clRodW1iU2l6ZShzdHlsZSwgZWxlbWVudCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRDYXJldEJsaW5rSW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQoreworICAgIG1fY2FyZXRCbGlua0ludGVydmFsID0gaW50ZXJ2
YWw7Cit9CisKK2RvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNhcmV0QmxpbmtJbnRl
cnZhbEludGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYXJldEJsaW5rSW50ZXJ2YWw7
Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3Rpb25Db2xvcnMo
CisgICAgdW5zaWduZWQgYWN0aXZlQmFja2dyb3VuZENvbG9yLAorICAgIHVuc2lnbmVkIGFjdGl2
ZUZvcmVncm91bmRDb2xvciwKKyAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwK
KyAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcikKK3sKKyAgICBtX2FjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvciA9IGFjdGl2ZUJhY2tncm91bmRDb2xvcjsKKyAgICBtX2Fj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9IGFjdGl2ZUZvcmVncm91bmRDb2xvcjsKKyAg
ICBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gaW5hY3RpdmVCYWNrZ3JvdW5k
Q29sb3I7CisgICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9IGluYWN0aXZl
Rm9yZWdyb3VuZENvbG9yOworfQorCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBl
eHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNoZWNr
ZWQgPSBpc0NoZWNrZWQobyk7CisgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmluZGV0ZXJtaW5hdGUg
PSBpc0luZGV0ZXJtaW5hdGUobyk7CisKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dENoZWNrYm94LCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVj
dCksICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29u
c3QKK3sKKyAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQs
IHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgorICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJ
bnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydENoZWNr
Ym94KTsKKyAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsKK30KKworYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNh
bnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIGV4dHJh
UGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXNDaGVja2VkKG8pOworCisgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRSYWRpbywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0
OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSog
c3R5bGUpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGgg
c3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KKyAgICBpZiAoIXN0eWxlLT53
aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlBhcnRSYWRpbyk7CisgICAgc2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6ZSk7Cit9CisKK2Jvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNh
bnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Cisg
ICAgZXh0cmFQYXJhbXMuYnV0dG9uLmlzRGVmYXVsdCA9IGlzRGVmYXVsdChvKTsKKyAgICBleHRy
YVBhcmFtcy5idXR0b24uaGFzQm9yZGVyID0gdHJ1ZTsKKyAgICBleHRyYVBhcmFtcy5idXR0b24u
YmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJ1dHRvbkJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAo
by0+aGFzQmFja2dyb3VuZCgpKQorICAgICAgICBleHRyYVBhcmFtcy5idXR0b24uYmFja2dyb3Vu
ZENvbG9yID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKS5yZ2IoKTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCks
ICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gV2ViVGhlbWVFbmdpbmUg
ZG9lcyBub3QgaGFuZGxlIGJvcmRlciByb3VuZGVkIGNvcm5lciBhbmQgYmFja2dyb3VuZCBpbWFn
ZQorICAgIC8vIHNvIHJldHVybiB0cnVlIHRvIGRyYXcgQ1NTIGJvcmRlciBhbmQgYmFja2dyb3Vu
ZC4KKyAgICBpZiAoby0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkgfHwgby0+c3R5bGUoKS0+
aGFzQmFja2dyb3VuZEltYWdlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgQ29udHJv
bFBhcnQgcGFydCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKKworICAgIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIGV4dHJhUGFyYW1zLnRl
eHRGaWVsZC5pc1RleHRBcmVhID0gcGFydCA9PSBUZXh0QXJlYVBhcnQ7CisgICAgZXh0cmFQYXJh
bXMudGV4dEZpZWxkLmlzTGlzdGJveCA9IHBhcnQgPT0gTGlzdGJveFBhcnQ7CisKKyAgICBXZWJL
aXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2Fu
dmFzKCk7CisKKyAgICAvLyBGYWxsYmFjayB0byB3aGl0ZSBpZiB0aGUgc3BlY2lmaWVkIGNvbG9y
IG9iamVjdCBpcyBpbnZhbGlkLgorICAgIENvbG9yIGJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hp
dGUpOworICAgIGlmIChvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmFsaWQoKSkKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0g
by0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKKyAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yID0gYmFja2dy
b3VuZENvbG9yLnJnYigpOworCisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRUZXh0
RmllbGQsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwg
JmV4dHJhUGFyYW1zKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghby0+aXNCb3goKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgaW50IHJpZ2h0ID0gcmVjdC54KCkgKyBy
ZWN0LndpZHRoKCk7CisgICAgY29uc3QgaW50IG1pZGRsZSA9IHJlY3QueSgpICsgcmVjdC5oZWln
aHQoKSAvIDI7CisKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRy
YVBhcmFtczsKKyAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5hcnJvd1ggPSAoby0+c3R5bGUoKS0+
ZGlyZWN0aW9uKCkgPT0gUlRMKSA/IHJlY3QueCgpICsgNyA6IHJpZ2h0IC0gMTM7CisgICAgZXh0
cmFQYXJhbXMubWVudUxpc3QuYXJyb3dZID0gbWlkZGxlOworICAgIGNvbnN0IFJlbmRlckJveCog
Ym94ID0gdG9SZW5kZXJCb3gobyk7CisgICAgLy8gTWF0Y2ggQ2hyb21pdW0gV2luIGJlaGF2aW91
ciBvZiBzaG93aW5nIGFsbCBib3JkZXJzIGlmIGFueSBhcmUgc2hvd24uCisgICAgZXh0cmFQYXJh
bXMubWVudUxpc3QuaGFzQm9yZGVyID0gYm94LT5ib3JkZXJSaWdodCgpIHx8IGJveC0+Ym9yZGVy
TGVmdCgpIHx8IGJveC0+Ym9yZGVyVG9wKCkgfHwgYm94LT5ib3JkZXJCb3R0b20oKTsKKyAgICBl
eHRyYVBhcmFtcy5tZW51TGlzdC5oYXNCb3JkZXJSYWRpdXMgPSBvLT5zdHlsZSgpLT5oYXNCb3Jk
ZXJSYWRpdXMoKTsKKyAgICAvLyBGYWxsYmFjayB0byB0cmFuc3BhcmVudCBpZiB0aGUgc3BlY2lm
aWVkIGNvbG9yIG9iamVjdCBpcyBpbnZhbGlkLgorICAgIGV4dHJhUGFyYW1zLm1lbnVMaXN0LmJh
Y2tncm91bmRDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBpZiAoby0+aGFzQmFja2dy
b3VuZCgpKQorICAgICAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3IgPSBv
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLnJnYigpOworCisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworCisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRNZW51TGlzdCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJS
ZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBS
ZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpX
ZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygp
OworICAgIGV4dHJhUGFyYW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFu
Y2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQ7CisKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNsaWRlclRyYWNrLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6Oldl
YlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKyAgICBwYWludFNsaWRlclRpY2tzKG8sIGksIHJlY3QpOworI2VuZGlmCisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRl
clRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJh
UGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBleHRyYVBhcmFtcy5zbGlkZXIudmVydGljYWwg
PSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQ7Cisg
ICAgZXh0cmFQYXJhbXMuc2xpZGVyLmluRHJhZyA9IGlzUHJlc3NlZChvKTsKKworICAgIFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIsIGdldFdlYlRoZW1lU3RhdGUodGhp
cywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKK3sKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElu
bmVyU3BpbkJ1dHRvbik7CisKKyAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgo
KSwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwg
Rml4ZWQpKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50SW5uZXJT
cGluQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4
dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBleHRyYVBhcmFtcy5pbm5lclNwaW4uc3Bp
blVwID0gKGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSAmIFNwaW5VcFN0YXRlKTsKKyAgICBl
eHRyYVBhcmFtcy5pbm5lclNwaW4ucmVhZE9ubHkgPSBpc1JlYWRPbmx5Q29udHJvbChvKTsKKwor
ICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2Fu
dmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0SW5uZXJTcGluQnV0dG9uLCBnZXRXZWJU
aGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCisK
K2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAg
IGlmICghby0+aXNQcm9ncmVzcygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlbmRl
clByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7CisgICAgSW50
UmVjdCB2YWx1ZVJlY3QgPSBwcm9ncmVzc1ZhbHVlUmVjdEZvcihyZW5kZXJQcm9ncmVzcywgcmVj
dCk7CisKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFt
czsKKyAgICBleHRyYVBhcmFtcy5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dy
ZXNzLT5pc0RldGVybWluYXRlKCk7CisgICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVS
ZWN0WCA9IHZhbHVlUmVjdC54KCk7CisgICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVS
ZWN0WSA9IHZhbHVlUmVjdC55KCk7CisgICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVS
ZWN0V2lkdGggPSB2YWx1ZVJlY3Qud2lkdGgoKTsKKyAgICBleHRyYVBhcmFtcy5wcm9ncmVzc0Jh
ci52YWx1ZVJlY3RIZWlnaHQgPSB2YWx1ZVJlY3QuaGVpZ2h0KCk7CisKKyAgICBEaXJlY3Rpb25G
bGlwcGluZ1Njb3BlIHNjb3BlKG8sIGksIHJlY3QpOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBj
YW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBXZWJL
aXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFByb2dyZXNzQmFyLCBnZXRXZWJUaGVtZVN0YXRlKHRo
aXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCisjZW5kaWYKKworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNo
b3VsZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHJldmlzaW9uIDEz
NDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgiCisjaW5j
bHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJDb2xvci5oIgpAQCAtMzYsMjAgKzM2LDIwIEBACiAjaW5j
bHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9X
ZWJUaGVtZUVuZ2luZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5l
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9Cit1bnNpZ25lZCBSZW5k
ZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6bV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ig
PQogICAgIDB4ZmYxZTkwZmY7Ci11bnNpZ25lZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6Om1f
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KK3Vuc2lnbmVkIFJlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0OjptX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9CiAgICAgQ29s
b3I6OmJsYWNrOwotdW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2luYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0KK3Vuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjptX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0KICAgICAweGZmYzhj
OGM4OwotdW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2luYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0KK3Vuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
OjptX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KICAgICAweGZmMzIzMjMyOwog
Ci1kb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2NhcmV0QmxpbmtJbnRlcnZhbDsK
K2RvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6bV9jYXJldEJsaW5rSW50ZXJ2YWw7
CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9yID0g
MHhmZmRkZGRkZDsKIApAQCAtNjUsMTAyICs2NSwxMDYgQEAgc3RhdGljIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlN0YXRlIGdldAogICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
dGF0ZU5vcm1hbDsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpjcmVhdGUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVD
aHJvbWl1bURlZmF1bHQ6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXgoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJU
aGVtZUNocm9taXVtRGVmYXVsdCgpKTsKIH0KIAogLy8gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNw
cC4KICNpZiAhT1MoQU5EUk9JRCkKIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1l
Ojp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0
ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKS5sZWFrUmVmKCk7CisgICAgc3Rh
dGljIFJlbmRlclRoZW1lKiBydCA9IFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpjcmVhdGUo
KS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHJ0OwogfQogI2VuZGlmCiAKLVJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKK1JlbmRlclRoZW1lQ2hyb21p
dW1EZWZhdWx0OjpSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdCgpCiB7CiAgICAgbV9jYXJldEJs
aW5rSW50ZXJ2YWwgPSBSZW5kZXJUaGVtZTo6Y2FyZXRCbGlua0ludGVydmFsKCk7CiB9CiAKLVJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6flJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpCitSZW5k
ZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6flJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0KCkKIHsK
IH0KIAotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0ZW1Db2xvcihpbnQgY3Nz
VmFsdWVJZCkgY29uc3QKK0NvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzeXN0ZW1D
b2xvcihpbnQgY3NzVmFsdWVJZCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGlu
dXhCdXR0b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7CisgICAgc3RhdGljIGNvbnN0IENvbG9yIGRl
ZmF1bHRCdXR0b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7CiAKICAgICBpZiAoY3NzVmFsdWVJZCA9
PSBDU1NWYWx1ZUJ1dHRvbmZhY2UpCi0gICAgICAgIHJldHVybiBsaW51eEJ1dHRvbkdyYXlDb2xv
cjsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRCdXR0b25HcmF5Q29sb3I7CiAgICAgcmV0dXJuIFJl
bmRlclRoZW1lOjpzeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKIH0KIAotU3RyaW5nIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpCitTdHJpbmcgUmVuZGVy
VGhlbWVDaHJvbWl1bURlZmF1bHQ6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQogeworI2lmICFP
UyhXSU5ET1dTKQogICAgIHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZXh0cmFEZWZh
dWx0U3R5bGVTaGVldCgpICsKICAgICAgICAgICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1MaW51eFVz
ZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZih0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHls
ZVNoZWV0KSk7CisjZWxzZQorICAgIHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpOworI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4Ojpjb250cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNv
bnN0Citib29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0Ojpjb250cm9sU3VwcG9ydHNUaW50
cyhjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzRW5hYmxlZChv
KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK0NvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gQ29sb3IoMHgyOCwgMHgyOCwgMHgyOCk7CiB9CiAKLUNvbG9yIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0CitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6YWN0aXZlTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENvbG9yOjpibGFj
azsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjppbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1
bURlZmF1bHQ6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIENvbG9yKDB4YzgsIDB4YzgsIDB4YzgpOwogfQogCi1Db2xvciBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0CitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6aW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29s
b3IoMHgzMiwgMHgzMiwgMHgzMik7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorQ29sb3Ig
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1J
bmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBSZW5kZXJUaGVt
ZUNocm9taXVtRGVmYXVsdDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1
bURlZmF1bHQ6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiB9CiAKLUNv
bG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiB9CiAKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKLUludFNpemUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpz
bGlkZXJUaWNrU2l6ZSgpIGNvbnN0CitJbnRTaXplIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEludFNpemUoMSwgNik7CiB9
CiAKLWludCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNsaWRlclRpY2tPZmZzZXRGcm9tVHJh
Y2tDZW50ZXIoKSBjb25zdAoraW50IFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzbGlkZXJU
aWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gLTE2OwogfQog
I2VuZGlmCiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVt
YlNpemUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBJbnRTaXplIHNpemUg
PSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iKTsKIApAQCAtMTc0LDIyICsxNzgs
MjIgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdFNsaQogICAgICAgICBS
ZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKHN0eWxlLCBlbGVt
ZW50KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnN1cHBvcnRzQ29udHJv
bFRpbnRzKCkgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnN1cHBvcnRz
Q29udHJvbFRpbnRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OnNldENhcmV0QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpCit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRDYXJldEJsaW5rSW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQogewogICAgIG1fY2FyZXRCbGlua0ludGVydmFsID0gaW50ZXJ2
YWw7CiB9CiAKLWRvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNhcmV0QmxpbmtJbnRl
cnZhbEludGVybmFsKCkgY29uc3QKK2RvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6
Y2FyZXRCbGlua0ludGVydmFsSW50ZXJuYWwoKSBjb25zdAogewogICAgIHJldHVybiBtX2NhcmV0
QmxpbmtJbnRlcnZhbDsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFNl
bGVjdGlvbkNvbG9ycygKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNldFNlbGVj
dGlvbkNvbG9ycygKICAgICB1bnNpZ25lZCBhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgdW5z
aWduZWQgYWN0aXZlRm9yZWdyb3VuZENvbG9yLAogICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dy
b3VuZENvbG9yLApAQCAtMjAxLDcgKzIwNSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpzZXRTZWxlY3QKICAgICBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0g
aW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3I7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGFp
bnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBl
eHRyYVBhcmFtczsKICAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CkBAIC0yMTIsNyArMjE2LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50Q2hlYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYm94U2l6ZShSZW5kZXJTdHls
ZSogc3R5bGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRDaGVj
a2JveFNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIC8vIElmIHRoZSB3aWR0
aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8g
ZG8uCiAgICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHls
ZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCkBAIC0yMjIsNyArMjI2LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUNocm9taXVtTGludXg6OnNldENoZWNrYgogICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUp
OwogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRSYWRpbyhSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAgICAgV2ViS2l0OjpXZWJD
YW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwpA
QCAtMjMyLDcgKzIzNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFJh
ZGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZUNocm9taXVtRGVmYXVsdDo6c2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QK
IHsKICAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRo
ZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgogICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRy
aW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQpAQCAtMjQyLDcgKzI0
Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1MKICAgICBzZXRT
aXplSWZBdXRvKHN0eWxlLCBzaXplKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGFpbnRC
dXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQ
YXJhbXM7CiAgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmNhbnZhcygpOwpAQCAtMjU2LDcgKzI2MCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIFdlYlRoZW1lRW5n
aW5lIGRvZXMgbm90IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIgYW5kIGJhY2tncm91bmQg
aW1hZ2UKICAgICAvLyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBib3JkZXIgYW5kIGJhY2tn
cm91bmQuCkBAIC0yODEsNyArMjg1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50VGV4dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8m
IGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghby0+aXNCb3goKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzA3LDcgKzMxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpwYWludE1lbnUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdDo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
aSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpF
eHRyYVBhcmFtcyBleHRyYVBhcmFtczsKICAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0g
aS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CkBAIC0zMjIsNyArMzI2LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVyVGh1
bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWludFNsaWRlclRodW1iKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwog
ICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jYW52YXMoKTsKQEAgLTMzMyw3ICszMzcsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6cGFpbnRTbGlkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBJbnRTaXplIHNp
emUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUo
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbik7CiAKQEAgLTM0MSw3
ICszNDUsNyBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uCiAgICAg
c3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIFdl
YktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
YW52YXMoKTsKQEAgLTM1NCw3ICszNTgsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6cGFpbnRJbm5lCiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKIAotYm9vbCBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghby0+aXNQcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3Nyw3ICszODEsNyBAQCBib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9nCiAKICNlbmRpZgogCi1ib29sIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkT3BlblBpY2tlcldpdGhGNEtleSgpIGNvbnN0Citi
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzaG91bGRPcGVuUGlja2VyV2l0aEY0S2V5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oCShyZXZpc2lv
biAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTGludXguaDoxMzQ2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bURlZmF1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoK
KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdC4KKyAqCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2ds
ZSwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJUaGVtZUNocm9taXVt
TGludXhfaAorI2RlZmluZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXhfaAorCisjaW5jbHVkZSAi
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRo
ZW1lPiBjcmVhdGUoKTsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVT
aGVldCgpOworCisgICAgICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoaW50IGNzc1ZhbGlk
SWQpIGNvbnN0OworCisgICAgICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgY29udHJvbCBj
aGFuZ2VzIGl0cyB0aW50IHdoZW4gdGhlIHdpbmRvdyBoYXMgZm9jdXMgb3Igbm90LgorICAgICAg
ICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0Kikg
Y29uc3Q7CisKKyAgICAgICAgLy8gTGlzdCBCb3ggc2VsZWN0aW9uIGNvbG9yCisgICAgICAgIHZp
cnR1YWwgQ29sb3IgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBDb2xvciBpbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBDb2xvciBpbmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKworICAgICAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQ29sb3Ig
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OworCisjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzbGlkZXJU
aWNrU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNr
T2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKworICAgICAgICBzdGF0aWMgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91
YmxlIGludGVydmFsKTsKKyAgICAgICAgdmlydHVhbCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFs
SW50ZXJuYWwoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUo
UmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlz
dChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICAgICAgdmlydHVhbCBib29sIHBvcHNNZW51QnlT
cGFjZU9yUmV0dXJuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNz
QmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyNl
bmRpZgorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRPcGVuUGlja2VyV2l0aEY0S2V5KCkg
Y29uc3QgT1ZFUlJJREU7CisKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0U2VsZWN0aW9uQ29sb3Jz
KHVuc2lnbmVkIGFjdGl2ZUJhY2tncm91bmRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3Vu
ZENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXgoKTsKKyAgICAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBIGdlbmVyYWwgbWV0aG9k
IGFza2luZyBpZiBhbnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0OworCisgICAgICAg
IHN0YXRpYyBkb3VibGUgbV9jYXJldEJsaW5rSW50ZXJ2YWw7CisKKyAgICAgICAgc3RhdGljIHVu
c2lnbmVkIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CisgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKKyAgICB9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXhfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgJKHJldmlzaW9uIDEzNDY3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4NyArMjYsODcgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXhfaAotI2RlZmluZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXhfaAorI2lmbmRl
ZiBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdF9oCisjZGVmaW5lIFJlbmRlclRoZW1lQ2hyb21p
dW1EZWZhdWx0X2gKIAogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCA6
IHB1YmxpYyBSZW5kZXJUaGVtZUNocm9taXVtU2tpYSB7Ci0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7Ci0gICAgICAgIHZpcnR1YWwg
U3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKLQotICAgICAgICB2aXJ0dWFsIENvbG9y
IHN5c3RlbUNvbG9yKGludCBjc3NWYWxpZElkKSBjb25zdDsKLQotICAgICAgICAvLyBBIG1ldGhv
ZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3aGVuIHRoZSB3aW5kb3cg
aGFzIGZvY3VzIG9yIG5vdC4KLSAgICAgICAgdmlydHVhbCBib29sIGNvbnRyb2xTdXBwb3J0c1Rp
bnRzKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwotCi0gICAgICAgIC8vIExpc3QgQm94IHNl
bGVjdGlvbiBjb2xvcgotICAgICAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBhY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
Q29sb3IgaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgQ29sb3IgaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKCkgY29uc3Q7Ci0KLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKK2NsYXNzIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0IDogcHVi
bGljIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZh
dWx0U3R5bGVTaGVldCgpOworCisgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihpbnQgY3Nz
VmFsaWRJZCkgY29uc3Q7CisKKyAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wg
Y2hhbmdlcyBpdHMgdGludCB3aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5vdC4KKyAgICB2
aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KikgY29u
c3Q7CisKKyAgICAvLyBMaXN0IEJveCBzZWxlY3Rpb24gY29sb3IKKyAgICB2aXJ0dWFsIENvbG9y
IGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Owor
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgICAgIHZpcnR1
YWwgSW50U2l6ZSBzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgICAgICB2aXJ0
dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0IE9W
RVJSSURFOwogI2VuZGlmCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlNp
emUoUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAotICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKTsKLSAg
ICAgICAgdmlydHVhbCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFsSW50ZXJuYWwoKSBjb25zdDsK
KyAgICBzdGF0aWMgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlKTsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0OwogCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6
ZShSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICAgICAg
dmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRl
clN0eWxlKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBi
b29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBh
aW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJT
cGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBvcHNNZW51QnlT
cGFjZU9yUmV0dXJuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNz
QmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkT3BlblBpY2tlcldpdGhGNEtleSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRPcGVuUGlja2VyV2l0aEY0S2V5KCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICAg
ICAgc3RhdGljIHZvaWQgc2V0U2VsZWN0aW9uQ29sb3JzKHVuc2lnbmVkIGFjdGl2ZUJhY2tncm91
bmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGFjdGl2ZUZvcmVncm91bmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3Ip
OwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsK
LSAgICAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCk7Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBhbnkgY29udHJvbCB0
aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnRyb2xUaW50cygpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyBkb3VibGUgbV9jYXJldEJs
aW5rSW50ZXJ2YWw7Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1fYWN0aXZlU2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yOwotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yOwotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKLSAgICB9OworICAgIHN0YXRpYyB2b2lkIHNldFNl
bGVjdGlvbkNvbG9ycyh1bnNpZ25lZCBhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNr
Z3JvdW5kQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKKworcHJvdGVjdGVkOgorICAgIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0KCk7CisgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1
bHQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBhbnkg
Y29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgZG91YmxlIG1fY2FyZXRC
bGlua0ludGVydmFsOworCisgICAgc3RhdGljIHVuc2lnbmVkIG1fYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yOworICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCisjZW5kaWYgLy8gUmVuZGVyVGhlbWVDaHJvbWl1bURl
ZmF1bHRfaApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDc4NikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMTEtMTUgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBDb3B5IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgdG8g
ZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAyNDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZ2UuCisKKyAgICAgICAgVHJh
bnNpdGlvbmFsIHBhdGNoIHRoYXQgY29waWVzIGxpbnV4IFdlYlRoZW1lRW5naW5lIHRvIGRlZmF1
bHQgZGlyZWN0b3J5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4K
KworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL2Rl
ZmF1bHQ6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9kZWZhdWx0L1dlYlRoZW1l
RW5naW5lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmguCisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHA6IEluY2x1ZGVzIGNvcnJlY3QgdGhlbWUgZmlsZXMgd2hlbiBERUZBVUxUX1JFTkRFUl9U
SEVNRSBpcyBzZXQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOiBJbmNsdWRlcyBjb3JyZWN0IHRoZW1lIGZpbGVzIHdoZW4gREVGQVVMVF9SRU5ERVJf
VEhFTUUgaXMgc2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFy
Q29sb3JzKTogQ2FsbHMgdG8gZGVmYXVsdCB0aGVtZSBhcyBuZWNlc3NhcnkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTZWxlY3Rpb25Db2xvcnMpOiBDYWxscyB0byBkZWZhdWx0
IHRoZW1lIGFzIG5lY2Vzc2FyeS4KKwogMjAxMi0xMS0xNSAgU3RlcGhlbiBDaGVubmV5ICA8c2No
ZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBTS19ESVNBQkxF
X0ZBU1RfQUFfU1RST0tFX1JFQ1QgdG8gc2tpYV93ZWJraXQuZ3lwCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiAxMzQ2OTYpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDEz
IEBACiAgICAgICAnZW5hYmxlX3RvdWNoX2V2ZW50cyUnOiAxLAogICAgICAgJ2VuYWJsZV90b3Vj
aF9pY29uX2xvYWRpbmclJyA6IDAsCiAgICAgICAnZW5hYmxlX211dGF0aW9uX29ic2VydmVycyUn
OiAxLAorICAgICAgJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSUnOiAwLAogICAgIH0sCiAgICAg
J3VzZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyUnOiAnPCh1c2VfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmcpJywKICAgICAnZW5hYmxlX3NraWFfdGV4dCUnOiAnPChlbmFibGVfc2tpYV90ZXh0KScs
CiAgICAgJ2VuYWJsZV9zdmclJzogJzwoZW5hYmxlX3N2ZyknLAogICAgICdlbmFibGVfdG91Y2hf
ZXZlbnRzJSc6ICc8KGVuYWJsZV90b3VjaF9ldmVudHMpJywKKyAgICAndXNlX2RlZmF1bHRfcmVu
ZGVyX3RoZW1lJSc6ICc8KHVzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSknLAogICAgICdjb25kaXRp
b25zJzogWwogICAgICAgWydPUz09ImFuZHJvaWQiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZp
bmVzJzogWwpAQCAtMjM5LDYgKzI0MSwxMSBAQAogICAgICAgICAgICdTS19TVVBQT1JUX0hJTlRJ
TkdfU0NBTEVfRkFDVE9SJywKICAgICAgICAgXSwKICAgICAgIH1dLAorICAgICAgWyd1c2VfZGVm
YXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CisgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCisg
ICAgICAgICAgJ0VOQUJMRV9ERUZBVUxUX1JFTkRFUl9USEVNRT0xJywKKyAgICAgICAgXSwKKyAg
ICAgIH1dLAogICAgIF0sCiAgIH0sCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVuZ2lu
ZS5oCShyZXZpc2lvbiAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6MTM0NjcxKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVm
YXVsdC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw0ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICIu
Li8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdp
bmUuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
ZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMzQ2OTYpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw3ICs1OCwxMyBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCisjaWYgIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkKICNpbmNsdWRlIDxw
dWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmg+CisjZW5kaWYgLy8gIUVOQUJMRShERUZBVUxUX1JF
TkRFUl9USEVNRSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQor
I2luY2x1ZGUgPHB1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg+CiAjZW5kaWYKIAogI2lm
IE9TKERBUldJTikKQEAgLTY5LDcgKzc1LDkgQEAKICNpbmNsdWRlIDxwdWJsaWMvYW5kcm9pZC9X
ZWJUaGVtZUVuZ2luZS5oPgogI2Vsc2UKICNpbmNsdWRlICJXZWJGb250SW5mby5oIgorI2lmICFF
TkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAjaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYlRo
ZW1lRW5naW5lLmg+CisjZW5kaWYgLy8gIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkKICNl
bmRpZiAvLyBPUyhBTkRST0lEKQogI2VuZGlmIC8vIGVsaWYgT1MoVU5JWCkKIApAQCAtMjIxLDcg
KzIyOSw3IEBAIE5QT2JqZWN0KiBQbGF0Zm9ybVN1cHBvcnQ6OnBsdWdpblNjcmlwdGEKIAogLy8g
VGhlbWluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi0jaWYgT1MoV0lORE9XUykKKyNpZiBPUyhXSU5ET1dTKSAm
JiAhRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogCiB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6
cGFpbnRCdXR0b24oCiAgICAgR3JhcGhpY3NDb250ZXh0KiBnYywgaW50IHBhcnQsIGludCBzdGF0
ZSwgaW50IGNsYXNzaWNTdGF0ZSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzNDY5NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNiBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBvcHVw
Q29udGFpbmVyLmgiCkBAIC0xNjUsNiArMTY0LDExIEBACiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFy
eUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCisjaWYgRU5B
QkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1
bURlZmF1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oIgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKQEAg
LTE3Miw5ICsxNzYsMTIgQEAKICNlbmRpZgogCiAjaWYgT1MoV0lORE9XUykKKyNpZiAhRU5BQkxF
KERFRkFVTFRfUkVOREVSX1RIRU1FKQogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1XaW4u
aCIKKyNlbmRpZgogI2Vsc2UKLSNpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKQorI2lmIE9TKFVO
SVgpICYmICFPUyhEQVJXSU4pICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCisjaW5j
bHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJSZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaCIKICNlbmRpZgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCkBAIC0z
NTQ1LDcgKzM1NTIsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXREb21haW5SZWxheGF0aW9uRm9y
CiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVD
b2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY3Rp
dmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0
cmFja0NvbG9yKSB7Ci0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFORFJPSUQp
CisjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorICAgIFBsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQ6OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNvbG9yLCBhY3RpdmVDb2xv
ciwgdHJhY2tDb2xvcik7CisjZWxpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKSAmJiAhT1MoQU5E
Uk9JRCkKICAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Nyb2xsYmFyQ29sb3Jz
KGluYWN0aXZlQ29sb3IsIGFjdGl2ZUNvbG9yLCB0cmFja0NvbG9yKTsKICNlbmRpZgogfQpAQCAt
MzU1NCw3ICszNTYzLDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNvbG9ycyh1
bnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY3RpdmVG
b3JlZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpIHsKLSNpZiBPUyhV
TklYKSAmJiAhT1MoREFSV0lOKSAmJiAhT1MoQU5EUk9JRCkKKyNpZiBFTkFCTEUoREVGQVVMVF9S
RU5ERVJfVEhFTUUpCisgICAgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNldFNlbGVjdGlv
bkNvbG9ycyhhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVGb3JlZ3JvdW5kQ29sb3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZUJhY2tn
cm91bmRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKKyAgICB0aGVtZSgpLT5wbGF0Zm9ybUNv
bG9yc0RpZENoYW5nZSgpOworI2VsaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFO
RFJPSUQpCiAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3Rpb25Db2xvcnMo
YWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGl2ZUZvcmVncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174531</attachid>
            <date>2012-11-15 15:17:55 -0800</date>
            <delta_ts>2012-11-15 16:52:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102403-20121115151552.patch</filename>
            <type>text/plain</type>
            <size>94239</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0ODM3KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTE1ICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ29weSBs
aW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIHRvIGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQwMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgVHJhbnNpdGlvbmFsIHBhdGNoIHRoYXQgY29waWVz
IGxpbnV4IFdlYlRoZW1lRW5naW5lIHRvIGRlZmF1bHQgZGlyZWN0b3J5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL2RlZmF1bHQ6IEFkZGVkLgorICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaC4KKwogMjAx
Mi0xMS0xNSAgU2NvdHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIENyZWF0ZSBkZWZhdWx0IGRpcmVjdG9yeSBzbyB0aGF0IGNxIGNhbiBhcHBseSBwYXRj
aApJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEzNDgzNykKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaCcsCkluZGV4
OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2RlZmF1bHQvV2ViVGhlbWVFbmdpbmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2RlZmF1bHQv
V2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTM0NjcxKQkoZnJvbSBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6MTM0NjcxKQorKysgU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5lX2gKKyNkZWZp
bmUgV2ViVGhlbWVFbmdpbmVfaAorCisjaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgiCisjaW5jbHVk
ZSAiLi4vV2ViQ29sb3IuaCIKKyNpbmNsdWRlICIuLi9XZWJTaXplLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgV2ViUmVjdDsKKworY2xhc3MgV2ViVGhlbWVFbmdpbmUgeworcHVi
bGljOgorICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2VkLgorICAgIGVu
dW0gUGFydCB7CisgICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRzCisgICAgICAgIFBhcnRT
Y3JvbGxiYXJEb3duQXJyb3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJyb3csCisgICAg
ICAgIFBhcnRTY3JvbGxiYXJSaWdodEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFyVXBBcnJv
dywKKyAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwKKyAgICAgICAgUGFydFNj
cm9sbGJhclZlcnRpY2FsVGh1bWIsCisgICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJh
Y2ssCisgICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAorCisgICAgICAgIC8vIFJl
bmRlclRoZW1lIHBhcnRzCisgICAgICAgIFBhcnRDaGVja2JveCwKKyAgICAgICAgUGFydFJhZGlv
LAorICAgICAgICBQYXJ0QnV0dG9uLAorICAgICAgICBQYXJ0VGV4dEZpZWxkLAorICAgICAgICBQ
YXJ0TWVudUxpc3QsCisgICAgICAgIFBhcnRTbGlkZXJUcmFjaywKKyAgICAgICAgUGFydFNsaWRl
clRodW1iLAorICAgICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAorICAgICAgICBQYXJ0UHJvZ3Jl
c3NCYXIKKyAgICB9OworCisgICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFzc29jaWF0
ZWQgUGFydC4KKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgU3RhdGVEaXNhYmxlZCwKKyAgICAg
ICAgU3RhdGVIb3ZlciwKKyAgICAgICAgU3RhdGVOb3JtYWwsCisgICAgICAgIFN0YXRlUHJlc3Nl
ZCwKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgZHJhd2luZyB0aGUgUGFy
dFNjcm9sbGJhckhvcml6b250YWxUcmFjayBhbmQKKyAgICAvLyBQYXJ0U2Nyb2xsYmFyVmVydGlj
YWxUcmFjay4KKyAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyB7CisgICAgICAg
IC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bwb3NlZCB0byB0aGUgcGFy
dCBiZWluZyBwYWludGVkLgorICAgICAgICBpbnQgdHJhY2tYOworICAgICAgICBpbnQgdHJhY2tZ
OworICAgICAgICBpbnQgdHJhY2tXaWR0aDsKKyAgICAgICAgaW50IHRyYWNrSGVpZ2h0OworICAg
IH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0Q2hlY2tib3gsIFBhcnRQdXNo
QnV0dG9uIGFuZCBQYXJ0UmFkaW8uCisgICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFyYW1zIHsKKyAg
ICAgICAgYm9vbCBjaGVja2VkOworICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7IC8vIFdoZXRo
ZXIgdGhlIGJ1dHRvbiBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgorICAgICAgICBib29sIGlzRGVm
YXVsdDsgLy8gV2hldGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgorICAgICAgICBi
b29sIGhhc0JvcmRlcjsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07
CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0VGV4dEZpZWxkCisgICAgc3RydWN0
IFRleHRGaWVsZEV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBpc1RleHRBcmVhOworICAgICAg
ICBib29sIGlzTGlzdGJveDsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAg
IH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0TWVudUxpc3QKKyAgICBzdHJ1
Y3QgTWVudUxpc3RFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgaGFzQm9yZGVyOworICAgICAg
ICBib29sIGhhc0JvcmRlclJhZGl1czsKKyAgICAgICAgaW50IGFycm93WDsKKyAgICAgICAgaW50
IGFycm93WTsKKyAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOworICAgIH07CisKKyAg
ICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0U2xpZGVyVHJhY2sgYW5kIFBhcnRTbGlkZXJU
aHVtYgorICAgIHN0cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgdmVydGlj
YWw7CisgICAgICAgIGJvb2wgaW5EcmFnOworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0
ZXJzIGZvciBQYXJ0SW5uZXJTcGluQnV0dG9uCisgICAgc3RydWN0IElubmVyU3BpbkJ1dHRvbkV4
dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBzcGluVXA7CisgICAgICAgIGJvb2wgcmVhZE9ubHk7
CisgICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRQcm9ncmVzc0Jhcgor
ICAgIHN0cnVjdCBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBkZXRlcm1p
bmF0ZTsKKyAgICAgICAgaW50IHZhbHVlUmVjdFg7CisgICAgICAgIGludCB2YWx1ZVJlY3RZOwor
ICAgICAgICBpbnQgdmFsdWVSZWN0V2lkdGg7CisgICAgICAgIGludCB2YWx1ZVJlY3RIZWlnaHQ7
CisgICAgfTsKKworICAgIHVuaW9uIEV4dHJhUGFyYW1zIHsKKyAgICAgICAgU2Nyb2xsYmFyVHJh
Y2tFeHRyYVBhcmFtcyBzY3JvbGxiYXJUcmFjazsKKyAgICAgICAgQnV0dG9uRXh0cmFQYXJhbXMg
YnV0dG9uOworICAgICAgICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7CisgICAgICAg
IE1lbnVMaXN0RXh0cmFQYXJhbXMgbWVudUxpc3Q7CisgICAgICAgIFNsaWRlckV4dHJhUGFyYW1z
IHNsaWRlcjsKKyAgICAgICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5uZXJTcGluOwor
ICAgICAgICBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFyOworICAgIH07CisKKyAg
ICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFyaWFibGUg
c2l6ZWQgaXRlbXMKKyAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMsIHRoZSB3
aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgorICAgIC8vIHRoZSB0cmFjayB3aGls
ZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgorICAgIHZpcnR1YWwgV2Vi
U2l6ZSBnZXRTaXplKFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQorICAgIC8vIFBhaW50IHRo
ZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2Vi
Q2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3QmLCBjb25zdCBFeHRyYVBhcmFtcyop
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTM0ODM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMTEtMTUgIFNjb3R0IFZpb2xldCAgPHNreUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb3B5IGxpbnV4IHRoZW1lIHJlbGF0
ZWQgZmlsZXMgdG8gZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyNDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkK
KworICAgICAgICBUcmFuc2l0aW9uYWwgcGF0Y2ggdGhhdCBjb3BpZXMgbGludXggV2ViVGhlbWVF
bmdpbmUgdG8gZGVmYXVsdCBkaXJlY3RvcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZh
Y3RvcmluZyBvbmx5LgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IFVwZGF0
ZSBjb21waWxlIHJ1bGVzIHdoZW4gdXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lIGlzIHNldC4KKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZHMgbmV3IGZpbGVzLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1MaW51eC5oLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXguaC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURl
ZmF1bHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bURlZmF1bHQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5oLgorCiAyMDEyLTExLTE1ICBFbGxpb3R0IFNwcmVobiAgPGVz
cHJlaG5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXIgd3JhcHBlciBz
aG91bGQgbm90IGJlIGNvbGxlY3RlZCB3aGlsZSBzdGlsbCBvYnNlcnZpbmcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHJldmlzaW9uIDEzNDgzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMzQ2MCw2ICszNDYwLDggQEAKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Db21tb24uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bUNvbW1vbi5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1Gb250UHJvdmlkZXIuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlci5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlckxpbnV4LmNwcCcsCkBAIC00Njg4
LDYgKzQ2OTAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmgnLApAQCAtNDcw
Niw2ICs0NzEwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCShyZXZpc2lvbiAxMzQ4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTY5OSw2ICsxNjk5LDI2IEBACiAgICAgICAg
ICAgICAgICAgfV0sCiAgICAgICAgICAgICBdLAogICAgICAgICB9XSwKKyAgICAgICAgWyd1c2Vf
ZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CisgICAgICAgICAgJ3NvdXJjZXMvJzogWworICAg
ICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bUxpbnV4LmgnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVk
ZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1XaW4uaCddLAorICAg
ICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bVdpbi5jcHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwJ10sCisgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgnXSwK
KyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luLmNwcCddLAorICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaCddLAorICAgICAgICAgIF0sCisgICAg
ICAgIH1dLAorICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MCcsIHsKKyAgICAg
ICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5jcHAnXSwKKyAgICAgICAgICAgIFsn
ZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0
LmgnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oJ10sCisgICAg
ICAgICAgXSwKKyAgICAgICAgfV0sCiAgICAgICAgIFsndXNlX3gxMSA9PSAxJywgewogICAgICAg
ICAgICdzb3VyY2VzLyc6IFsKICAgICAgICAgICAgICMgQ2hlcnJ5LXBpY2sgZmlsZXMgZXhjbHVk
ZWQgYnkgdGhlIGJyb2FkZXIgcmVndWxhciBleHByZXNzaW9ucyBhYm92ZS4KQEAgLTE5ODcsNiAr
MjAwNywxNyBAQAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnQWxsSW5PbmVcXC5jcHAkJ10sCiAgICAg
ICBdLAogICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVy
X3RoZW1lPT0wJywgeworICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgIFsnZXhj
bHVkZScsICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuKiddLAorICAgICAg
ICAgIF0sCisgICAgICAgIH1dLAorICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09
MScsIHsKKyAgICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAn
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LionXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdS
ZW5kZXJUaGVtZUNocm9taXVtV2luLionXSwKKyAgICAgICAgICBdLAorICAgICAgICB9XSwKICAg
ICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAg
ICAgWydleGNsdWRlJywgJ1Bvc2l4XFwuY3BwJCddLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEzNDgz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTlBP
YmplY3QqIHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAKICAgICAvLyBUaGVtaW5n
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotI2lmIE9TKFdJTkRPV1MpCisjaWYgT1MoV0lORE9XUykgJiYgIUVOQUJMRShERUZBVUxU
X1JFTkRFUl9USEVNRSkKICAgICBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbigKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29u
c3QgSW50UmVjdCYpOwogICAgIHN0YXRpYyB2b2lkIHBhaW50TWVudUxpc3QoCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAkocmV2aXNpb24gMTM0NjcxKQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5j
cHA6MTM0NjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1U
aGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXgu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eDo6c190aHVtYkluYWN0aXZlQ29sb3IgPSAweGVhZWFlYTsKK3Vuc2lnbmVkIFBsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RodW1iQWN0aXZlQ29sb3IgPSAweGY0ZjRmNDsKK3Vu
c2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RyYWNrQ29sb3IgPSAweGQzZDNk
MzsKKwordm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Nyb2xsYmFyQ29sb3Jz
KAorICAgIFNrQ29sb3IgaW5hY3RpdmVDb2xvciwgU2tDb2xvciBhY3RpdmVDb2xvciwgU2tDb2xv
ciB0cmFja0NvbG9yKQoreworICAgIHNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gaW5hY3RpdmVDb2xv
cjsKKyAgICBzX3RodW1iQWN0aXZlQ29sb3IgPSBhY3RpdmVDb2xvcjsKKyAgICBzX3RyYWNrQ29s
b3IgPSB0cmFja0NvbG9yOworfQorCitzdGF0aWMgU2tTY2FsYXIgY2xhbXAoU2tTY2FsYXIgdmFs
dWUsIFNrU2NhbGFyIG1pbiwgU2tTY2FsYXIgbWF4KQoreworICAgIHJldHVybiBzdGQ6Om1pbihz
dGQ6Om1heCh2YWx1ZSwgbWluKSwgbWF4KTsKK30KKworU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eDo6c2F0dXJhdGVBbmRCcmlnaHRlbihjb25zdCBTa1NjYWxhciBoc3ZbM10sIFNr
U2NhbGFyIHNhdHVyYXRlQW1vdW50LCBTa1NjYWxhciBicmlnaHRlbkFtb3VudCkKK3sKKyAgICBT
a1NjYWxhciBjb2xvclszXTsKKyAgICBjb2xvclswXSA9IGhzdlswXTsKKyAgICBjb2xvclsxXSA9
IGNsYW1wKGhzdlsxXSArIHNhdHVyYXRlQW1vdW50LCAwLjAsIDEuMCk7CisgICAgY29sb3JbMl0g
PSBjbGFtcChoc3ZbMl0gKyBicmlnaHRlbkFtb3VudCwgMC4wLCAxLjApOworICAgIHJldHVybiBT
a0hTVlRvQ29sb3IoY29sb3IpOworfQorCitTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxp
bnV4OjpvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIg
aHN2MlszXSkKK3sKKyAgICAvLyBHVEsgVGhlbWUgZW5naW5lcyBoYXZlIHdheSB0b28gbXVjaCBj
b250cm9sIG92ZXIgdGhlIGxheW91dCBvZgorICAgIC8vIHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0
IGJlIGFibGUgdG8gbW9yZSBjbG9zZWx5IGFwcHJveGltYXRlIGl0cworICAgIC8vIGxvb2stYW5k
LWZlZWwsIGlmIHdlIHNlbnQgd2hvbGUgaW1hZ2VzIGluc3RlYWQgb2YganVzdCBjb2xvcnMKKyAg
ICAvLyBmcm9tIHRoZSBicm93c2VyIHRvIHRoZSByZW5kZXJlci4gQnV0IGV2ZW4gdGhlbiwgc29t
ZSB0aGVtZXMKKyAgICAvLyB3b3VsZCBqdXN0IGJyZWFrLgorICAgIC8vCisgICAgLy8gU28sIGlu
c3RlYWQsIHdlIGRvbid0IGV2ZW4gdHJ5IHRvIDEwMCUgcmVwbGljYXRlIHRoZSBsb29rIG9mCisg
ICAgLy8gdGhlIG5hdGl2ZSBzY3JvbGxiYXIuIFdlIHJlbmRlciBvdXIgb3duIHZlcnNpb24sIGJ1
dCB3ZSBtYWtlCisgICAgLy8gc3VyZSB0byBwaWNrIGNvbG9ycyB0aGF0IGJsZW5kIGluIG5pY2Vs
eSB3aXRoIHRoZSBzeXN0ZW0gR1RLCisgICAgLy8gdGhlbWUuIEluIG1vc3QgY2FzZXMsIHdlIGNh
biBqdXN0IHNhbXBsZSBhIGNvdXBsZSBvZiBwaXhlbHMKKyAgICAvLyBmcm9tIHRoZSBzeXN0ZW0g
c2Nyb2xsYmFyIGFuZCB1c2UgdGhvc2UgY29sb3JzIHRvIGRyYXcgb3VyCisgICAgLy8gc2Nyb2xs
YmFyLgorICAgIC8vCisgICAgLy8gVGhpcyB3b3JrcyBmaW5lIGZvciB0aGUgdHJhY2sgY29sb3Ig
YW5kIHRoZSBvdmVyYWxsIHRodW1iCisgICAgLy8gY29sb3IuIEJ1dCBpdCBmYWlscyBzcGVjdGFj
dWxhcmx5IGZvciB0aGUgb3V0bGluZSBjb2xvciB1c2VkCisgICAgLy8gYXJvdW5kIHRoZSB0aHVt
YiBwaWVjZS4gTm90IGFsbCB0aGVtZXMgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZAorICAgIC8vIG91
dGxpbmUuIEZvciBzb21lIG9mIHRoZW0gaXQgaXMgcGFydGlhbGx5IHRyYW5zcGFyZW50LCBhbmQg
Zm9yCisgICAgLy8gb3RoZXJzIHRoZSB0aGlja25lc3MgaXMgdmVyeSB1bnByZWRpY3RhYmxlLgor
ICAgIC8vCisgICAgLy8gU28sIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFwcHJveGltYXRlIHRoZSBz
eXN0ZW0gdGhlbWUsIHdlCisgICAgLy8gaW5zdGVhZCB0cnkgdG8gY29tcHV0ZSBhIHJlYXNvbmFi
bGUgbG9va2luZyBjaG9pY2UgYmFzZWQgb24gdGhlCisgICAgLy8ga25vd24gY29sb3Igb2YgdGhl
IHRyYWNrIGFuZCB0aGUgdGh1bWIgcGllY2UuIFRoaXMgaXMgZGlmZmljdWx0CisgICAgLy8gd2hl
biB0cnlpbmcgdG8gZGVhbCBib3RoIHdpdGggaGlnaC0gYW5kIGxvdy1jb250cmFzdCB0aGVtZXMs
CisgICAgLy8gYW5kIGJvdGggd2l0aCBwb3NpdGl2ZSBhbmQgaW52ZXJ0ZWQgdGhlbWVzLgorICAg
IC8vCisgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGhhcyBiZWVuIHRlc3RlZCB0byBsb29rIE9L
IHdpdGggYWxsIG9mIHRoZQorICAgIC8vIGRlZmF1bHQgR1RLIHRoZW1lcy4KKyAgICBTa1NjYWxh
ciBtaW5EaWZmID0gY2xhbXAoKGhzdjFbMV0gKyBoc3YyWzFdKSAqIDEuMiwgMC4yOCwgMC41KTsK
KyAgICBTa1NjYWxhciBkaWZmID0gY2xhbXAoZmFicyhoc3YxWzJdIC0gaHN2MlsyXSkgLyAyLCBt
aW5EaWZmLCAwLjUpOworCisgICAgaWYgKGhzdjFbMl0gKyBoc3YyWzJdID4gMS4wKQorICAgICAg
ICBkaWZmID0gLWRpZmY7CisKKyAgICByZXR1cm4gc2F0dXJhdGVBbmRCcmlnaHRlbihoc3YyLCAt
MC4yLCBkaWZmKTsKK30KKwordm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRB
cnJvd0J1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBcnJv
d0RpcmVjdGlvbiBkaXJlY3Rpb24sIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQoreworICAgIFNrQ2Fu
dmFzKiBjb25zdCBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAg
IGludCB3aWR0aE1pZGRsZSwgbGVuZ3RoTWlkZGxlOworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAg
aWYgKGRpcmVjdGlvbiA9PSBOb3J0aCB8fCBkaXJlY3Rpb24gPT0gU291dGgpIHsKKyAgICAgICAg
d2lkdGhNaWRkbGUgPSByZWN0LndpZHRoKCkgLyAyICsgMTsKKyAgICAgICAgbGVuZ3RoTWlkZGxl
ID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGxlbmd0aE1p
ZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIgKyAxOworICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3Qu
aGVpZ2h0KCkgLyAyICsgMTsKKyAgICB9CisKKyAgICAvLyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9y
LgorICAgIFNrU2NhbGFyIHRyYWNrSFNWWzNdOworICAgIFNrQ29sb3JUb0hTVih0cmFja0NvbG9y
KCksIHRyYWNrSFNWKTsKKyAgICBTa0NvbG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmln
aHRlbih0cmFja0hTViwgMCwgMC4yKTsKKyAgICBTa0NvbG9yIGJhY2tncm91bmRDb2xvciA9IGJ1
dHRvbkNvbG9yOworICAgIGlmIChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKKyAgICAgICAgU2tT
Y2FsYXIgYnV0dG9uSFNWWzNdOworICAgICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1
dHRvbkhTVik7CisgICAgICAgIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0
b25IU1YsIDAsIC0wLjEpOworICAgIH0gZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJTdGF0ZSkgewor
ICAgICAgICBTa1NjYWxhciBidXR0b25IU1ZbM107CisgICAgICAgIFNrQ29sb3JUb0hTVihidXR0
b25Db2xvciwgYnV0dG9uSFNWKTsKKyAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJy
aWdodGVuKGJ1dHRvbkhTViwgMCwgMC4wNSk7CisgICAgfQorCisgICAgU2tJUmVjdCBza3JlY3Q7
CisgICAgc2tyZWN0LnNldChyZWN0LngoKSwgcmVjdC55KCksIHJlY3QueCgpICsgcmVjdC53aWR0
aCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgIC8vIFBhaW50IHRoZSBiYWNrZ3Jv
dW5kICh0aGUgYXJlYSB2aXNpYmxlIGJlaGluZCB0aGUgcm91bmRlZCBjb3JuZXJzKS4KKyAgICBw
YWludC5zZXRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgIGNhbnZhcy0+ZHJhd0lSZWN0KHNr
cmVjdCwgcGFpbnQpOworCisgICAgLy8gUGFpbnQgdGhlIGJ1dHRvbidzIG91dGxpbmUgYW5kIGZp
bGwgdGhlIG1pZGRsZQorICAgIFNrUGF0aCBvdXRsaW5lOworICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7CisgICAgY2FzZSBOb3J0aDoKKyAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAw
LjUsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxp
bmVUbygwLCAtKHJlY3QuaGVpZ2h0KCkgLSAyKSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygy
LCAtMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAg
ICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwg
cmVjdC5oZWlnaHQoKSAtIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoOgorICAg
ICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgLSAwLjUpOworICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOworICAgICAgICBvdXRs
aW5lLnJMaW5lVG8oMiwgMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkg
LSA1LCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKKyAgICAgICAgb3V0bGlu
ZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBFYXN0OgorICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSAtIDAuNSwgcmVjdC55
KCkgKyAwLjUpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7
CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRv
KDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsK
KyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlc3Q6CisgICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgp
ICsgcmVjdC53aWR0aCgpICsgMC41LCByZWN0LnkoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUu
ckxpbmVUbygtKHJlY3Qud2lkdGgoKSAtIDIpLCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRv
KC0yLCAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsK
KyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8o
cmVjdC53aWR0aCgpIC0gMiwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXRsaW5l
LmNsb3NlKCk7CisKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Cisg
ICAgcGFpbnQuc2V0Q29sb3IoYnV0dG9uQ29sb3IpOworICAgIGNhbnZhcy0+ZHJhd1BhdGgob3V0
bGluZSwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUpOworICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIFNrU2NhbGFyIHRodW1iSFNW
WzNdOworICAgIFNrQ29sb3JUb0hTVih0aHVtYkluYWN0aXZlQ29sb3IoKSwgdGh1bWJIU1YpOwor
ICAgIHBhaW50LnNldENvbG9yKG91dGxpbmVDb2xvcih0cmFja0hTViwgdGh1bWJIU1YpKTsKKyAg
ICBjYW52YXMtPmRyYXdQYXRoKG91dGxpbmUsIHBhaW50KTsKKworICAgIC8vIElmIHRoZSBidXR0
b24gaXMgZGlzYWJsZWQgb3IgcmVhZC1vbmx5LCB0aGUgYXJyb3cgaXMgZHJhd24gd2l0aCB0aGUg
b3V0bGluZSBjb2xvci4KKyAgICBpZiAoc3RhdGVzICYgRW5hYmxlZFN0YXRlICYmICEoc3RhdGVz
ICYgUmVhZE9ubHlTdGF0ZSkpCisgICAgICAgIHBhaW50LnNldENvbG9yKFNLX0NvbG9yQkxBQ0sp
OworCisgICAgcGFpbnQuc2V0QW50aUFsaWFzKGZhbHNlKTsKKyAgICBwYWludC5zZXRTdHlsZShT
a1BhaW50OjprRmlsbF9TdHlsZSk7CisKKyAgICBTa1BhdGggcGF0aDsKKyAgICAvLyBUaGUgY29u
c3RhbnRzIGluIHRoaXMgYmxvY2sgb2YgY29kZSBhcmUgaGFuZC10YWlsb3JlZCB0byBwcm9kdWNl
IGdvb2QKKyAgICAvLyBsb29raW5nIGFycm93cyB3aXRob3V0IGFudGktYWxpYXNpbmcuCisgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIE5vcnRoOgorICAgICAgICBwYXRoLm1vdmVU
byhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgKyAy
KTsKKyAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOworICAgICAgICBwYXRoLnJMaW5lVG8oLTQs
IC00KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3V0aDoKKyAgICAgICAgcGF0aC5tb3Zl
VG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3RoTWlkZGxlIC0g
Myk7CisgICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsKKyAgICAgICAgcGF0aC5yTGluZVRvKC00
LCA0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYXN0OgorICAgICAgICBwYXRoLm1vdmVU
byhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSAtIDMsIHJlY3QueSgpICsgd2lkdGhNaWRkbGUgLSA0
KTsKKyAgICAgICAgcGF0aC5yTGluZVRvKDAsIDcpOworICAgICAgICBwYXRoLnJMaW5lVG8oNCwg
LTQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlc3Q6CisgICAgICAgIHBhdGgubW92ZVRv
KHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlICsgMSwgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDUp
OworICAgICAgICBwYXRoLnJMaW5lVG8oMCwgOSk7CisgICAgICAgIHBhdGguckxpbmVUbygtNCwg
LTQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcGF0aC5jbG9zZSgpOworCisgICAgY2Fu
dmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNo
cm9taXVtRGVmYXVsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHJldmlzaW9uIDEzNDY3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMTUgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXguaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNf
dGh1bWJJbmFjdGl2ZUNvbG9yID0gMHhlYWVhZWE7Ci11bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eDo6c190aHVtYkFjdGl2ZUNvbG9yID0gMHhmNGY0ZjQ7Ci11bnNpZ25lZCBQbGF0
Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190cmFja0NvbG9yID0gMHhkM2QzZDM7Cit1bnNpZ25l
ZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzX3RodW1iSW5hY3RpdmVDb2xvciA9IDB4
ZWFlYWVhOwordW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdDo6c190aHVtYkFj
dGl2ZUNvbG9yID0gMHhmNGY0ZjQ7Cit1bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZh
dWx0OjpzX3RyYWNrQ29sb3IgPSAweGQzZDNkMzsKIAotdm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eDo6c2V0U2Nyb2xsYmFyQ29sb3JzKAordm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjpzZXRTY3JvbGxiYXJDb2xvcnMoCiAgICAgU2tDb2xvciBpbmFjdGl2ZUNvbG9yLCBT
a0NvbG9yIGFjdGl2ZUNvbG9yLCBTa0NvbG9yIHRyYWNrQ29sb3IpCiB7CiAgICAgc190aHVtYklu
YWN0aXZlQ29sb3IgPSBpbmFjdGl2ZUNvbG9yOwpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgU2tT
Y2FsYXIgY2xhbXAoU2tTY2FsYXIgdmFsdWUsIFNrCiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6
bWF4KHZhbHVlLCBtaW4pLCBtYXgpOwogfQogCi1Ta0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4OjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2Fs
YXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQorU2tDb2xvciBQbGF0
Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2Nh
bGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1v
dW50KQogewogICAgIFNrU2NhbGFyIGNvbG9yWzNdOwogICAgIGNvbG9yWzBdID0gaHN2WzBdOwpA
QCAtNTksNyArNTksNyBAQCBTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzYXR1
CiAgICAgcmV0dXJuIFNrSFNWVG9Db2xvcihjb2xvcik7CiB9CiAKLVNrQ29sb3IgUGxhdGZvcm1U
aGVtZUNocm9taXVtTGludXg6Om91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBj
b25zdCBTa1NjYWxhciBoc3YyWzNdKQorU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZh
dWx0OjpvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIg
aHN2MlszXSkKIHsKICAgICAvLyBHVEsgVGhlbWUgZW5naW5lcyBoYXZlIHdheSB0b28gbXVjaCBj
b250cm9sIG92ZXIgdGhlIGxheW91dCBvZgogICAgIC8vIHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0
IGJlIGFibGUgdG8gbW9yZSBjbG9zZWx5IGFwcHJveGltYXRlIGl0cwpAQCAtOTcsNyArOTcsNyBA
QCBTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpvdXRsCiAgICAgcmV0dXJuIHNh
dHVyYXRlQW5kQnJpZ2h0ZW4oaHN2MiwgLTAuMiwgZGlmZik7CiB9CiAKLXZvaWQgUGxhdGZvcm1U
aGVtZUNocm9taXVtTGludXg6OnBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywg
Y29uc3QgSW50UmVjdCYgcmVjdCwgQXJyb3dEaXJlY3Rpb24gZGlyZWN0aW9uLCBDb250cm9sU3Rh
dGVzIHN0YXRlcykKK3ZvaWQgUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdDo6cGFpbnRBcnJv
d0J1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBcnJvd0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQogewogICAgIFNrQ2FudmFz
KiBjb25zdCBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGlu
dCB3aWR0aE1pZGRsZSwgbGVuZ3RoTWlkZGxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURl
ZmF1bHQuaAkocmV2aXNpb24gMTM0NjcxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oOjEzNDY3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eF9oCisjZGVmaW5lIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKKworI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5jbHVk
ZSAiU2tTY2FsYXIuaCIKKyNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXggeworcHVibGljOgorICAg
IGVudW0gQXJyb3dEaXJlY3Rpb24geworICAgICAgICBOb3J0aCwKKyAgICAgICAgRWFzdCwKKyAg
ICAgICAgU291dGgsCisgICAgICAgIFdlc3QsCisgICAgfTsKKworICAgIHN0YXRpYyB2b2lkIHNl
dFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY3RpdmVDb2xvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdHJhY2tDb2xvcik7CisgICAgc3RhdGljIHVu
c2lnbmVkIHRodW1iSW5hY3RpdmVDb2xvcigpIHsgcmV0dXJuIHNfdGh1bWJJbmFjdGl2ZUNvbG9y
OyB9CisgICAgc3RhdGljIHVuc2lnbmVkIHRodW1iQWN0aXZlQ29sb3IoKSB7IHJldHVybiBzX3Ro
dW1iQWN0aXZlQ29sb3I7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgdHJhY2tDb2xvcigpIHsgcmV0
dXJuIHNfdHJhY2tDb2xvcjsgfQorCisgICAgc3RhdGljIFNrQ29sb3Igc2F0dXJhdGVBbmRCcmln
aHRlbihjb25zdCBTa1NjYWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRlQW1vdW50LCBTa1Nj
YWxhciBicmlnaHRlbkFtb3VudCk7CisgICAgc3RhdGljIFNrQ29sb3Igb3V0bGluZUNvbG9yKGNv
bnN0IFNrU2NhbGFyIGhzdjFbM10sIGNvbnN0IFNrU2NhbGFyIGhzdjJbM10pOworICAgIHN0YXRp
YyB2b2lkIHBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYs
IEFycm93RGlyZWN0aW9uLCBDb250cm9sU3RhdGVzKTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eCgpIHsgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHNfdGh1bWJJ
bmFjdGl2ZUNvbG9yOworICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1iQWN0aXZlQ29sb3I7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIHNfdHJhY2tDb2xvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1
bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgJKHJldmlzaW9uIDEzNDY3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUgUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXhfaAorI2lmbmRlZiBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0X2gK
KyNkZWZpbmUgUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdF9oCiAKICNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgpAQCAtMzgsNyArMzgsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxp
bnV4IHsKK2NsYXNzIFBsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQgewogcHVibGljOgogICAg
IGVudW0gQXJyb3dEaXJlY3Rpb24gewogICAgICAgICBOb3J0aCwKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYsIEFycm93RGlyZWN0aW9uLCBDb250cm9sU3RhdGVzKTsKIAogcHJp
dmF0ZToKLSAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eCgpIHsgfQorICAgIFBsYXRmb3Jt
VGhlbWVDaHJvbWl1bURlZmF1bHQoKSB7IH0KIAogICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1i
SW5hY3RpdmVDb2xvcjsKICAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkFjdGl2ZUNvbG9yOwpA
QCAtNjgsNCArNjgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eF9oCisjZW5kaWYgLy8gUGxhdGZvcm1U
aGVtZUNocm9taXVtRGVmYXVsdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1
bHQuY3BwCShyZXZpc2lvbiAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6MTM0NjcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCIKKworI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJU
aGVtZUVuZ2luZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Njcm9sbGJhclRoZW1lKiBT
Y3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LCB0aGVtZSwgKCkpOworICAgIHJldHVybiAmdGhl
bWU7Cit9CisKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKK3sKKyAgICAvLyBIb3JpeiBh
bmQgVmVydCBzY3JvbGxiYXJzIGFyZSB0aGUgc2FtZSB0aGlja25lc3MuCisgICAgSW50U2l6ZSBz
Y3JvbGxiYXJTaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
LT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRy
YWNrKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOworfQorCit2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCog
Z2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U3RhdGVOb3JtYWw7CisgICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFy
LCBmYWxzZSk7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQ
YXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y2FudmFzKCk7CisgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tYID0g
YWxpZ25SZWN0LngoKTsKKyAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1kgPSBh
bGlnblJlY3QueSgpOworICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrV2lkdGgg
PSBhbGlnblJlY3Qud2lkdGgoKTsKKyAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFj
a0hlaWdodCA9IGFsaWduUmVjdC5oZWlnaHQoKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNj
cm9sbGJhclZlcnRpY2FsVHJhY2ssIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRy
YVBhcmFtcyk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit7CisgICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsK
KyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5j
YW52YXMoKTsKKyAgICBib29sIGNoZWNrTWluID0gZmFsc2U7CisgICAgYm9vbCBjaGVja01heCA9
IGZhbHNlOworICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcikgeworICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Cisg
ICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xs
YmFyTGVmdEFycm93OworICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhclJpZ2h0QXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQ
YXJ0KSB7CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0U2Nyb2xsYmFyVXBBcnJvdzsKKyAgICAgICAgICAgIGNoZWNrTWluID0gdHJ1ZTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKChjaGVja01pbiAmJiAoc2Nyb2xsYmFyLT5jdXJy
ZW50UG9zKCkgPD0gMCkpCisgICAgICAgIHx8IChjaGVja01heCAmJiBzY3JvbGxiYXItPmN1cnJl
bnRQb3MoKSA9PSBzY3JvbGxiYXItPm1heGltdW0oKSkpIHsKKyAgICAgICAgc3RhdGUgPSBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOworICAgIH0gZWxzZSB7CisgICAgICAg
IGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0YXRl
ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOworICAgICAgICBlbHNlIGlm
IChwYXJ0ID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0YXRlID0g
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKKyAgICB9CisgICAgV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50UGFy
dCwgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgMCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7CisgICAgV2ViS2l0OjpXZWJDYW52
YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgaWYgKHNj
cm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisgICAgICAgIHN0YXRlID0gV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOworICAgIGVsc2UgaWYgKHNjcm9sbGJh
ci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKKyAgICBlbHNlCisgICAgICAgIHN0YXRlID0gV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBh
cnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAw
KTsKK30KKworYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKK3sKKyAgICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0
QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7Cit9CisKK0ludFNpemUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCit7CisgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBW
ZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3cpOworICAgICAgICByZXR1cm4gSW50U2l6ZShzaXpl
LndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQoKSA/IHNjcm9s
bGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgLy8gSG9y
aXpvbnRhbFNjcm9sbGJhcgorICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKKyAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndp
ZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cit9CisKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQoreworICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxi
YXIpIHsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRodW1iKTsKKyAgICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7CisgICAg
fQorCisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJI
b3Jpem9udGFsVGh1bWIpOworICAgIHJldHVybiBzaXplLndpZHRoKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJ
KHJldmlzaW9uIDEzNDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMzEg
KzI5LDMxIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW1E
ZWZhdWx0LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRl
IDxwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvZGVmYXVs
dC9XZWJUaGVtZUVuZ2luZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGJhclRo
ZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LCB0aGVtZSwgKCkpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQsIHRoZW1lLCAoKSk7
CiAgICAgcmV0dXJuICZ0aGVtZTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQor
aW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiB7CiAgICAgLy8gSG9yaXogYW5kIFZlcnQg
c2Nyb2xsYmFycyBhcmUgdGhlIHNhbWUgdGhpY2tuZXNzLgogICAgIEludFNpemUgc2Nyb2xsYmFy
U2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6
ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjayk7CiAg
ICAgcmV0dXJuIHNjcm9sbGJhclNpemUud2lkdGgoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxi
YXJQYXJ0IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7
CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhv
dmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhv
dmVyIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVjdCBh
bGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CkBAIC02Niw3ICs2Niw3IEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFQKICAgICBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3Qo
cmVjdCksICZleHRyYVBhcmFtcyk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydCBwYWludFBhcnQ7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3Rh
dGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCCiAgICAgV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50
UGFydCwgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgMCk7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lk
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7CiAgICAgV2Vi
S2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7
CkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUCiAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5w
YWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVt
YiA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLCBz
dGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAwKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bURlZmF1bHQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gKGV2dC5zaGlmdEtl
eSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1p
ZGRsZUJ1dHRvbik7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Ojpi
dXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikgewogICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIEludFNpemUgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXQKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxi
YXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNp
emUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0
U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtRGVmYXVsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgJKHJldmlzaW9uIDEzNDY3MSkJ
KGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4Lmg6MTM0NjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKKyNkZWZpbmUgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hy
b21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250
cm9sU2l6ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBi
dXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIH07Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVm
YXVsdC5oCShyZXZpc2lvbiAxMzQ2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyNCArMjgsMjYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTGludXhfaAotI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXhf
aAorI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdF9oCisjZGVmaW5lIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0X2gKIAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hy
b21pdW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250
cm9sU2l6ZSk7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBi
dXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIH07CisKK2NsYXNz
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW0geworcHVibGljOgorICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3Jv
bGxiYXJDb250cm9sU2l6ZSk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCShyZXZpc2lvbiAxMzQ2NzEpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwOjEzNDY3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgiCisKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJQYWludEluZm8uaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5j
bHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKKyNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKKyNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgi
CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3Qu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1bnNpZ25lZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6Om1fYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0KKyAgICAweGZmMWU5MGZmOwordW5zaWduZWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9
CisgICAgQ29sb3I6OmJsYWNrOwordW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpt
X2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0KKyAgICAweGZmYzhjOGM4OwordW5z
aWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yID0KKyAgICAweGZmMzIzMjMyOworCitkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjptX2NhcmV0QmxpbmtJbnRlcnZhbDsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRl
ZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgPSAweGZmZGRkZGRkOworCitzdGF0aWMgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgZ2V0V2ViVGhlbWVTdGF0ZShjb25zdCBSZW5kZXJUaGVt
ZSogdGhlbWUsIGNvbnN0IFJlbmRlck9iamVjdCogbykKK3sKKyAgICBpZiAoIXRoZW1lLT5pc0Vu
YWJsZWQobykpCisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURp
c2FibGVkOworICAgIGlmICh0aGVtZS0+aXNQcmVzc2VkKG8pKQorICAgICAgICByZXR1cm4gV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOworICAgIGlmICh0aGVtZS0+aXNIb3Zl
cmVkKG8pKQorICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3Zl
cjsKKworICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKK30K
KworUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVh
dGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
KCkpOworfQorCisvLyBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlIGZvciBBbmRyb2lkIGlzIGRl
ZmluZWQgaW4gUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwLgorI2lmICFPUyhBTkRST0lE
KQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdl
KiBwYWdlKQoreworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcnQ7Cit9CisjZW5kaWYK
KworUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXgoKQor
eworICAgIG1fY2FyZXRCbGlua0ludGVydmFsID0gUmVuZGVyVGhlbWU6OmNhcmV0QmxpbmtJbnRl
cnZhbCgpOworfQorCitSZW5kZXJUaGVtZUNocm9taXVtTGludXg6On5SZW5kZXJUaGVtZUNocm9t
aXVtTGludXgoKQoreworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnN5c3Rl
bUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBDb2xvciBs
aW51eEJ1dHRvbkdyYXlDb2xvcigweGZmZGRkZGRkKTsKKworICAgIGlmIChjc3NWYWx1ZUlkID09
IENTU1ZhbHVlQnV0dG9uZmFjZSkKKyAgICAgICAgcmV0dXJuIGxpbnV4QnV0dG9uR3JheUNvbG9y
OworICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7Cit9CisK
K1N0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQo
KQoreworICAgIHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZXh0cmFEZWZhdWx0U3R5
bGVTaGVldCgpICsKKyAgICAgICAgICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1MaW51eFVzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZih0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0
KSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpjb250cm9sU3VwcG9ydHNU
aW50cyhjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzRW5hYmxl
ZChvKTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29sb3IoMHgy
OCwgMHgyOCwgMHgyOCk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWN0
aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IENvbG9yOjpibGFjazsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjppbmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVy
biBDb2xvcigweGM4LCAweGM4LCAweGM4KTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjppbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAor
eworICAgIHJldHVybiBDb2xvcigweDMyLCAweDMyLCAweDMyKTsKK30KKworQ29sb3IgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
OworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBsYXRmb3JtSW5hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2luYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9y
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3I7Cit9CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKK0ludFNpemUg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEludFNpemUoMSwgNik7Cit9CisKK2ludCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdAoreworICAgIHJldHVybiAt
MTY7Cit9CisjZW5kaWYKKwordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUaHVt
Yik7CisKKyAgICBpZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250
YWxQYXJ0KSB7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBG
aXhlZCkpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBG
aXhlZCkpOworICAgIH0gZWxzZSBpZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVt
YlZlcnRpY2FsUGFydCkgeworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUuaGVp
Z2h0KCksIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHNpemUud2lk
dGgoKSwgRml4ZWQpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bVNr
aWE6OmFkanVzdFNsaWRlclRodW1iU2l6ZShzdHlsZSwgZWxlbWVudCk7Cit9CisKK2Jvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRD
YXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIG1fY2FyZXRCbGlua0lu
dGVydmFsID0gaW50ZXJ2YWw7Cit9CisKK2RvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OmNhcmV0QmxpbmtJbnRlcnZhbEludGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYXJl
dEJsaW5rSW50ZXJ2YWw7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRT
ZWxlY3Rpb25Db2xvcnMoCisgICAgdW5zaWduZWQgYWN0aXZlQmFja2dyb3VuZENvbG9yLAorICAg
IHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xvciwKKyAgICB1bnNpZ25lZCBpbmFjdGl2ZUJh
Y2tncm91bmRDb2xvciwKKyAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcikKK3sK
KyAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IGFjdGl2ZUJhY2tncm91bmRD
b2xvcjsKKyAgICBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9IGFjdGl2ZUZvcmVn
cm91bmRDb2xvcjsKKyAgICBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gaW5h
Y3RpdmVCYWNrZ3JvdW5kQ29sb3I7CisgICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvciA9IGluYWN0aXZlRm9yZWdyb3VuZENvbG9yOworfQorCitib29sIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFz
ID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgZXh0cmFQYXJh
bXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CisgICAgZXh0cmFQYXJhbXMuYnV0dG9u
LmluZGV0ZXJtaW5hdGUgPSBpc0luZGV0ZXJtaW5hdGUobyk7CisKKyAgICBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6UGFydENoZWNrYm94LCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJL
aXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUg
Ym90aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgorICAgIGlmICghc3R5
bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0
bygpKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydENoZWNrYm94KTsKKyAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsKK30K
KworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0
OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpOworICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXNDaGVja2VkKG8pOworCisg
ICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52
YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRSYWRpbywgZ2V0V2ViVGhlbWVTdGF0ZSh0
aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFJhZGlvU2l6
ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBo
ZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KKyAg
ICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5oZWln
aHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzaXplID0gV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlBhcnRSYWRpbyk7CisgICAgc2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6
ZSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
KyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAg
ICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCk7CisgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmlzRGVmYXVsdCA9IGlzRGVmYXVs
dChvKTsKKyAgICBleHRyYVBhcmFtcy5idXR0b24uaGFzQm9yZGVyID0gdHJ1ZTsKKyAgICBleHRy
YVBhcmFtcy5idXR0b24uYmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJ1dHRvbkJhY2tncm91bmRD
b2xvcjsKKyAgICBpZiAoby0+aGFzQmFja2dyb3VuZCgpKQorICAgICAgICBleHRyYVBhcmFtcy5i
dXR0b24uYmFja2dyb3VuZENvbG9yID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2IoKTsKKworICAgIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6
OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8g
V2ViVGhlbWVFbmdpbmUgZG9lcyBub3QgaGFuZGxlIGJvcmRlciByb3VuZGVkIGNvcm5lciBhbmQg
YmFja2dyb3VuZCBpbWFnZQorICAgIC8vIHNvIHJldHVybiB0cnVlIHRvIGRyYXcgQ1NTIGJvcmRl
ciBhbmQgYmFja2dyb3VuZC4KKyAgICBpZiAoby0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkg
fHwgby0+c3R5bGUoKS0+aGFzQmFja2dyb3VuZEltYWdlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgQ29udHJvbFBhcnQgcGFydCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKKwor
ICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAg
IGV4dHJhUGFyYW1zLnRleHRGaWVsZC5pc1RleHRBcmVhID0gcGFydCA9PSBUZXh0QXJlYVBhcnQ7
CisgICAgZXh0cmFQYXJhbXMudGV4dEZpZWxkLmlzTGlzdGJveCA9IHBhcnQgPT0gTGlzdGJveFBh
cnQ7CisKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCk7CisKKyAgICAvLyBGYWxsYmFjayB0byB3aGl0ZSBpZiB0aGUg
c3BlY2lmaWVkIGNvbG9yIG9iamVjdCBpcyBpbnZhbGlkLgorICAgIENvbG9yIGJhY2tncm91bmRD
b2xvcihDb2xvcjo6d2hpdGUpOworICAgIGlmIChvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmFsaWQoKSkKKyAgICAgICAgYmFj
a2dyb3VuZENvbG9yID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQuYmFja2dyb3Vu
ZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnJnYigpOworCisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlBhcnRUZXh0RmllbGQsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6
V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICgh
by0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgaW50IHJpZ2h0
ID0gcmVjdC54KCkgKyByZWN0LndpZHRoKCk7CisgICAgY29uc3QgaW50IG1pZGRsZSA9IHJlY3Qu
eSgpICsgcmVjdC5oZWlnaHQoKSAvIDI7CisKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpF
eHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5hcnJvd1gg
PSAoby0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKSA/IHJlY3QueCgpICsgNyA6IHJpZ2h0
IC0gMTM7CisgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dZID0gbWlkZGxlOworICAgIGNv
bnN0IFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7CisgICAgLy8gTWF0Y2ggQ2hyb21p
dW0gV2luIGJlaGF2aW91ciBvZiBzaG93aW5nIGFsbCBib3JkZXJzIGlmIGFueSBhcmUgc2hvd24u
CisgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuaGFzQm9yZGVyID0gYm94LT5ib3JkZXJSaWdodCgp
IHx8IGJveC0+Ym9yZGVyTGVmdCgpIHx8IGJveC0+Ym9yZGVyVG9wKCkgfHwgYm94LT5ib3JkZXJC
b3R0b20oKTsKKyAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5oYXNCb3JkZXJSYWRpdXMgPSBvLT5z
dHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKTsKKyAgICAvLyBGYWxsYmFjayB0byB0cmFuc3BhcmVu
dCBpZiB0aGUgc3BlY2lmaWVkIGNvbG9yIG9iamVjdCBpcyBpbnZhbGlkLgorICAgIGV4dHJhUGFy
YW1zLm1lbnVMaXN0LmJhY2tncm91bmRDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBp
ZiAoby0+aGFzQmFja2dyb3VuZCgpKQorICAgICAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5iYWNr
Z3JvdW5kQ29sb3IgPSBvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpOworCisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworCisgICAgV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRNZW51TGlzdCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBv
KSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPmNhbnZhcygpOworICAgIGV4dHJhUGFyYW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0
eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQ7CisKKyAgICBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRyYWNrLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMs
IG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisKKyNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKKyAgICBwYWludFNsaWRlclRpY2tzKG8sIGksIHJlY3QpOworI2Vu
ZGlmCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4
dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBp
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBleHRyYVBhcmFtcy5z
bGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJW
ZXJ0aWNhbFBhcnQ7CisgICAgZXh0cmFQYXJhbXMuc2xpZGVyLmluRHJhZyA9IGlzUHJlc3NlZChv
KTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFp
bnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIsIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1z
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3sKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbik7CisKKyAgICBzdHlsZS0+c2V0V2lkdGgoTGVu
Z3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3Ro
KHNpemUud2lkdGgoKSwgRml4ZWQpKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMg
PSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBleHRyYVBhcmFt
cy5pbm5lclNwaW4uc3BpblVwID0gKGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSAmIFNwaW5V
cFN0YXRlKTsKKyAgICBleHRyYVBhcmFtcy5pbm5lclNwaW4ucmVhZE9ubHkgPSBpc1JlYWRPbmx5
Q29udHJvbChvKTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdp
bmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0SW5uZXJTcGlu
QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCks
ICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKFBST0dS
RVNTX0VMRU1FTlQpCisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFByb2dy
ZXNzQmFyKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIGlmICghby0+aXNQcm9ncmVzcygpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jl
c3Mobyk7CisgICAgSW50UmVjdCB2YWx1ZVJlY3QgPSBwcm9ncmVzc1ZhbHVlUmVjdEZvcihyZW5k
ZXJQcm9ncmVzcywgcmVjdCk7CisKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBh
cmFtcyBleHRyYVBhcmFtczsKKyAgICBleHRyYVBhcmFtcy5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0
ZSA9IHJlbmRlclByb2dyZXNzLT5pc0RldGVybWluYXRlKCk7CisgICAgZXh0cmFQYXJhbXMucHJv
Z3Jlc3NCYXIudmFsdWVSZWN0WCA9IHZhbHVlUmVjdC54KCk7CisgICAgZXh0cmFQYXJhbXMucHJv
Z3Jlc3NCYXIudmFsdWVSZWN0WSA9IHZhbHVlUmVjdC55KCk7CisgICAgZXh0cmFQYXJhbXMucHJv
Z3Jlc3NCYXIudmFsdWVSZWN0V2lkdGggPSB2YWx1ZVJlY3Qud2lkdGgoKTsKKyAgICBleHRyYVBh
cmFtcy5wcm9ncmVzc0Jhci52YWx1ZVJlY3RIZWlnaHQgPSB2YWx1ZVJlY3QuaGVpZ2h0KCk7CisK
KyAgICBEaXJlY3Rpb25GbGlwcGluZ1Njb3BlIHNjb3BlKG8sIGksIHJlY3QpOworICAgIFdlYktp
dDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52
YXMoKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBh
aW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFByb2dyZXNzQmFyLCBnZXRX
ZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFt
cyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKworYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnNob3VsZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBjb25zdAoreworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5j
cHAJKHJldmlzaW9uIDEzNDY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtRGVmYXVsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCIKIAogI2lu
Y2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDb2xvci5oIgpAQCAtMzYsMjAg
KzM2LDIwIEBACiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlIDxw
dWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgotI2luY2x1ZGUg
PHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9kZWZhdWx0
L1dlYlRoZW1lRW5naW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdW5zaWduZWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9
Cit1bnNpZ25lZCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6bV9hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IgPQogICAgIDB4ZmYxZTkwZmY7Ci11bnNpZ25lZCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6Om1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KK3Vuc2lnbmVk
IFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjptX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvciA9CiAgICAgQ29sb3I6OmJsYWNrOwotdW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjptX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0KK3Vuc2lnbmVkIFJlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0OjptX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
ID0KICAgICAweGZmYzhjOGM4OwotdW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpt
X2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KK3Vuc2lnbmVkIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjptX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KICAg
ICAweGZmMzIzMjMyOwogCi1kb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2NhcmV0
QmxpbmtJbnRlcnZhbDsKK2RvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6bV9jYXJl
dEJsaW5rSW50ZXJ2YWw7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFj
a2dyb3VuZENvbG9yID0gMHhmZmRkZGRkZDsKIApAQCAtNjUsMTAyICs2NSwxMDYgQEAgc3RhdGlj
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlIGdldAogICAgIHJldHVybiBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4g
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVt
ZT4gUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW5kZXJUaGVtZUNocm9taXVtTGludXgoKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdCgpKTsKIH0KIAogLy8gUmVuZGVyVGhl
bWU6OnRoZW1lRm9yUGFnZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRlclRoZW1lQ2hy
b21pdW1BbmRyb2lkLmNwcC4KICNpZiAhT1MoQU5EUk9JRCkKIFBhc3NSZWZQdHI8UmVuZGVyVGhl
bWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMg
UmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKS5sZWFr
UmVmKCk7CisgICAgc3RhdGljIFJlbmRlclRoZW1lKiBydCA9IFJlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjpjcmVhdGUoKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHJ0OwogfQogI2VuZGlmCiAK
LVJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKK1Jl
bmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdCgpCiB7
CiAgICAgbV9jYXJldEJsaW5rSW50ZXJ2YWwgPSBSZW5kZXJUaGVtZTo6Y2FyZXRCbGlua0ludGVy
dmFsKCk7CiB9CiAKLVJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6flJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eCgpCitSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6flJlbmRlclRoZW1lQ2hyb21p
dW1EZWZhdWx0KCkKIHsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0
ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29uc3QKK0NvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29uc3QKIHsKLSAgICBzdGF0aWMg
Y29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7CisgICAgc3RhdGlj
IGNvbnN0IENvbG9yIGRlZmF1bHRCdXR0b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7CiAKICAgICBp
ZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1dHRvbmZhY2UpCi0gICAgICAgIHJldHVybiBsaW51
eEJ1dHRvbkdyYXlDb2xvcjsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRCdXR0b25HcmF5Q29sb3I7
CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKIH0KIAot
U3RyaW5nIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgp
CitTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OmV4dHJhRGVmYXVsdFN0eWxlU2hl
ZXQoKQogeworI2lmICFPUyhXSU5ET1dTKQogICAgIHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVt
U2tpYTo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpICsKICAgICAgICAgICAgU3RyaW5nKHRoZW1l
Q2hyb21pdW1MaW51eFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZih0aGVtZUNocm9taXVtTGlu
dXhVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CisjZWxzZQorICAgIHJldHVybiBSZW5kZXJUaGVtZUNo
cm9taXVtU2tpYTo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworI2VuZGlmCiB9CiAKLWJvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpjb250cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5k
ZXJPYmplY3QqIG8pIGNvbnN0Citib29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0Ojpjb250
cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGlzRW5hYmxlZChvKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojph
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK0NvbG9yIFJlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0OjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29sb3IoMHgyOCwgMHgyOCwgMHgyOCk7CiB9CiAK
LUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIENvbG9yOjpibGFjazsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpp
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorQ29sb3IgUmVu
ZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENvbG9yKDB4YzgsIDB4YzgsIDB4YzgpOwog
fQogCi1Db2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmluYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gQ29sb3IoMHgzMiwgMHgzMiwgMHgzMik7CiB9CiAKLUNvbG9yIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdAorQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitD
b2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorQ29sb3IgUmVu
ZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1JbmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBSZW5kZXJUaGVtZUNo
cm9taXVtRGVmYXVsdDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7
CiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLUludFNpemUgUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0CitJbnRTaXplIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElu
dFNpemUoMSwgNik7CiB9CiAKLWludCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNsaWRlclRp
Y2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdAoraW50IFJlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gLTE2OwogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojph
ZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50
KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6YWRqdXN0U2xpZGVyVGh1
bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAg
ICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5l
KCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iKTsKIApA
QCAtMTc0LDIyICsxNzgsMjIgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVz
dFNsaQogICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2xpZGVyVGh1bWJT
aXplKHN0eWxlLCBlbGVtZW50KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURl
ZmF1bHQ6OnN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENhcmV0QmxpbmtJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpCit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRD
YXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewogICAgIG1fY2FyZXRCbGlua0lu
dGVydmFsID0gaW50ZXJ2YWw7CiB9CiAKLWRvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OmNhcmV0QmxpbmtJbnRlcnZhbEludGVybmFsKCkgY29uc3QKK2RvdWJsZSBSZW5kZXJUaGVtZUNo
cm9taXVtRGVmYXVsdDo6Y2FyZXRCbGlua0ludGVydmFsSW50ZXJuYWwoKSBjb25zdAogewogICAg
IHJldHVybiBtX2NhcmV0QmxpbmtJbnRlcnZhbDsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnNldFNlbGVjdGlvbkNvbG9ycygKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bURl
ZmF1bHQ6OnNldFNlbGVjdGlvbkNvbG9ycygKICAgICB1bnNpZ25lZCBhY3RpdmVCYWNrZ3JvdW5k
Q29sb3IsCiAgICAgdW5zaWduZWQgYWN0aXZlRm9yZWdyb3VuZENvbG9yLAogICAgIHVuc2lnbmVk
IGluYWN0aXZlQmFja2dyb3VuZENvbG9yLApAQCAtMjAxLDcgKzIwNSw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3QKICAgICBtX2luYWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yID0gaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3I7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtRGVmYXVsdDo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKICAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFz
ID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CkBAIC0yMTIsNyArMjE2
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50Q2hlYwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYm94
U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0OjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAg
IC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBo
YXZlIG5vdGhpbmcgdG8gZG8uCiAgICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5pc0ludHJpbnNpY09y
QXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCkBAIC0yMjIsNyArMjI2LDcgQEAg
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYgogICAgIHNldFNpemVJZkF1
dG8oc3R5bGUsIHNpemUpOwogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50UmFkaW8oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAg
ICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNhbnZhcygpOwpAQCAtMjMyLDcgKzIzNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFJhZGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6c2V0UmFkaW9TaXplKFJlbmRlclN0eWxl
KiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90
aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgogICAgIGlmICghc3R5bGUt
PndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygp
KQpAQCAtMjQyLDcgKzI0Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRS
YWRpb1MKICAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVt
RGVmYXVsdDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGks
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0
cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGku
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwpAQCAtMjU2LDcgKzI2MCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHQKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRleHRGaWVsZChS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IC8vIFdlYlRoZW1lRW5naW5lIGRvZXMgbm90IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIg
YW5kIGJhY2tncm91bmQgaW1hZ2UKICAgICAvLyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBi
b3JkZXIgYW5kIGJhY2tncm91bmQuCkBAIC0yODEsNyArMjg1LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50VGV4dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBS
ZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghby0+aXNCb3goKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA3LDcgKzMxMSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludE1lbnUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtRGVmYXVsdDo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKICAgICBXZWJLaXQ6OldlYkNh
bnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CkBA
IC0zMjIsNyArMzI2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xp
ZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWlu
dFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1z
IGV4dHJhUGFyYW1zOwogICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKQEAgLTMzMyw3ICszMzcsNyBAQCBib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsK
ICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5n
aW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRv
bik7CiAKQEAgLTM0MSw3ICszNDUsNyBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
YWRqdXN0SW5uCiAgICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZp
eGVkKSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3Bp
bkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50SW5uZXJTcGlu
QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJh
UGFyYW1zOwogICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jYW52YXMoKTsKQEAgLTM1NCw3ICszNTgsNyBAQCBib29sIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRJbm5lCiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVO
VCkKIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UHJvZ3Jlc3NCYXIoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiti
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGlmICghby0+aXNQcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3Nyw3ICsz
ODEsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9nCiAKICNlbmRp
ZgogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkT3BlblBpY2tlcldpdGhG
NEtleSgpIGNvbnN0Citib29sIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzaG91bGRPcGVu
UGlja2VyV2l0aEY0S2V5KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdC5oCShyZXZpc2lvbiAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtTGludXguaDoxMzQ2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExMiBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVj
dC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IEdvb2dsZSwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXhfaAorI2RlZmluZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXhf
aAorCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IDogcHVibGljIFJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpOworCisgICAgICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29s
b3IoaW50IGNzc1ZhbGlkSWQpIGNvbnN0OworCisgICAgICAgIC8vIEEgbWV0aG9kIGFza2luZyBp
ZiB0aGUgY29udHJvbCBjaGFuZ2VzIGl0cyB0aW50IHdoZW4gdGhlIHdpbmRvdyBoYXMgZm9jdXMg
b3Igbm90LgorICAgICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3Qg
UmVuZGVyT2JqZWN0KikgY29uc3Q7CisKKyAgICAgICAgLy8gTGlzdCBCb3ggc2VsZWN0aW9uIGNv
bG9yCisgICAgICAgIHZpcnR1YWwgQ29sb3IgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBDb2xvciBpbmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBDb2xvciBpbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dDsKKworICAgICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIENvbG9y
IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0OworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIHZpcnR1YWwg
SW50U2l6ZSBzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QgT1ZFUlJJREU7Cisj
ZW5kaWYKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKworICAgICAgICBzdGF0aWMgdm9pZCBzZXRDYXJldEJs
aW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKTsKKyAgICAgICAgdmlydHVhbCBkb3VibGUgY2Fy
ZXRCbGlua0ludGVydmFsSW50ZXJuYWwoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUq
KSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVh
bCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5C
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICAgICAgdmlydHVhbCBi
b29sIHBvcHNNZW51QnlTcGFjZU9yUmV0dXJuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorCisjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCisgICAgICAgIHZpcnR1YWwgYm9v
bCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyNlbmRpZgorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRPcGVuUGlj
a2VyV2l0aEY0S2V5KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0
U2VsZWN0aW9uQ29sb3JzKHVuc2lnbmVkIGFjdGl2ZUJhY2tncm91bmRDb2xvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRD
b2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
YWN0aXZlQmFja2dyb3VuZENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOworCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsKKyAgICAgICAgdmlydHVhbCB+
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBB
IGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBhbnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRl
ZCBhdCBhbGwuCisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNv
bnN0OworCisgICAgICAgIHN0YXRpYyBkb3VibGUgbV9jYXJldEJsaW5rSW50ZXJ2YWw7CisKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwor
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7
CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yOworICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBS
ZW5kZXJUaGVtZUNocm9taXVtTGludXhfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgJKHJldmlzaW9uIDEzNDY3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVs
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4NyArMjYsODQgQEAKICAqCiAgKi8KIAotI2lmbmRl
ZiBSZW5kZXJUaGVtZUNocm9taXVtTGludXhfaAotI2RlZmluZSBSZW5kZXJUaGVtZUNocm9taXVt
TGludXhfaAorI2lmbmRlZiBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdF9oCisjZGVmaW5lIFJl
bmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0X2gKIAogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eCA6IHB1YmxpYyBSZW5kZXJUaGVtZUNocm9taXVtU2tpYSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7Ci0g
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKLQotICAgICAg
ICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKGludCBjc3NWYWxpZElkKSBjb25zdDsKLQotICAg
ICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3
aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5vdC4KLSAgICAgICAgdmlydHVhbCBib29sIGNv
bnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwotCi0gICAgICAg
IC8vIExpc3QgQm94IHNlbGVjdGlvbiBjb2xvcgotICAgICAgICB2aXJ0dWFsIENvbG9yIGFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVh
bCBDb2xvciBhY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgQ29sb3IgaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29sb3IgaW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0KLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2aXJ0
dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKK2NsYXNzIFJlbmRlclRoZW1lQ2hyb21p
dW1EZWZhdWx0IDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisgICAgdmlydHVhbCBT
dHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworCisgICAgdmlydHVhbCBDb2xvciBzeXN0
ZW1Db2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7CisKKyAgICAvLyBBIG1ldGhvZCBhc2tpbmcg
aWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3Vz
IG9yIG5vdC4KKyAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3Q7CisKKyAgICAvLyBMaXN0IEJveCBzZWxlY3Rpb24gY29sb3IKKyAg
ICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgaW5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIENvbG9y
IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0IE9WRVJSSURF
OwotICAgICAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0Nl
bnRlcigpIGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKTsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFsSW50
ZXJuYWwoKSBjb25zdDsKKyAgICBzdGF0aWMgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91
YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNv
bnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBw
YWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKikgY29u
c3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50UmFk
aW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRy
YWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJ
bm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNl
T3JSZXR1cm4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHBvcHNNZW51QnlTcGFjZU9yUmV0dXJuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkT3BlblBpY2tlcldpdGhGNEtleSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRPcGVuUGlja2VyV2l0aEY0S2V5KCkgY29uc3QgT1ZF
UlJJREU7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0U2VsZWN0aW9uQ29sb3JzKHVuc2lnbmVk
IGFjdGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xvciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVG
b3JlZ3JvdW5kQ29sb3IpOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXgoKTsKLSAgICAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBp
ZiBhbnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyBk
b3VibGUgbV9jYXJldEJsaW5rSW50ZXJ2YWw7Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1f
YWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwotICAgICAgICBzdGF0aWMgdW5zaWduZWQg
bV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwotICAgICAgICBzdGF0aWMgdW5z
aWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKLSAgICB9OworICAgIHN0
YXRpYyB2b2lkIHNldFNlbGVjdGlvbkNvbG9ycyh1bnNpZ25lZCBhY3RpdmVCYWNrZ3JvdW5kQ29s
b3IsIHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xvciwgdW5zaWduZWQgaW5hY3RpdmVCYWNr
Z3JvdW5kQ29sb3IsIHVuc2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKKworcHJvdGVj
dGVkOgorICAgIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0KCk7CisgICAgdmlydHVhbCB+UmVu
ZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBIGdlbmVyYWwg
bWV0aG9kIGFza2luZyBpZiBhbnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwu
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Q7CisKKyAgICBz
dGF0aWMgZG91YmxlIG1fY2FyZXRCbGlua0ludGVydmFsOworCisgICAgc3RhdGljIHVuc2lnbmVk
IG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworICAgIHN0YXRpYyB1bnNpZ25lZCBt
X2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgbV9p
bmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgbV9p
bmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCisjZW5kaWYgLy8g
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHRfaApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzNDgzNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEtMTUgIFNjb3R0IFZpb2xl
dCAgPHNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb3B5IGxpbnV4IHRo
ZW1lIHJlbGF0ZWQgZmlsZXMgdG8gZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkKKworICAgICAgICBUcmFuc2l0aW9uYWwgcGF0Y2ggdGhhdCBjb3BpZXMgbGludXgg
V2ViVGhlbWVFbmdpbmUgdG8gZGVmYXVsdCBkaXJlY3RvcnkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKyAgICAg
ICAgKiBwdWJsaWMvcGxhdGZvcm0vZGVmYXVsdDogQWRkZWQuCisgICAgICAgICogcHVibGljL3Bs
YXRmb3JtL2RlZmF1bHQvV2ViVGhlbWVFbmdpbmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaC4KKyAgICAg
ICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDogSW5jbHVkZXMgY29ycmVjdCB0aGVtZSBmaWxl
cyB3aGVuIERFRkFVTFRfUkVOREVSX1RIRU1FIGlzIHNldC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6IEluY2x1ZGVzIGNvcnJlY3QgdGhlbWUgZmls
ZXMgd2hlbiBERUZBVUxUX1JFTkRFUl9USEVNRSBpcyBzZXQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnMpOiBDYWxscyB0byBkZWZhdWx0IHRoZW1lIGFz
IG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNv
bG9ycyk6IENhbGxzIHRvIGRlZmF1bHQgdGhlbWUgYXMgbmVjZXNzYXJ5LgorCiAyMDEyLTExLTE1
ICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
Q3JlYXRlIGRlZmF1bHQgZGlyZWN0b3J5IHNvIHRoYXQgY3EgY2FuIGFwcGx5IHBhdGNoCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiAxMzQ4MzcpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSwxMSArMTQ1LDEzIEBACiAgICAgICAnZW5hYmxlX3RvdWNoX2V2ZW50cyUnOiAxLAogICAgICAg
J2VuYWJsZV90b3VjaF9pY29uX2xvYWRpbmclJyA6IDAsCiAgICAgICAnZW5hYmxlX211dGF0aW9u
X29ic2VydmVycyUnOiAxLAorICAgICAgJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSUnOiAwLAog
ICAgIH0sCiAgICAgJ3VzZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyUnOiAnPCh1c2VfYWNjZWxl
cmF0ZWRfY29tcG9zaXRpbmcpJywKICAgICAnZW5hYmxlX3NraWFfdGV4dCUnOiAnPChlbmFibGVf
c2tpYV90ZXh0KScsCiAgICAgJ2VuYWJsZV9zdmclJzogJzwoZW5hYmxlX3N2ZyknLAogICAgICdl
bmFibGVfdG91Y2hfZXZlbnRzJSc6ICc8KGVuYWJsZV90b3VjaF9ldmVudHMpJywKKyAgICAndXNl
X2RlZmF1bHRfcmVuZGVyX3RoZW1lJSc6ICc8KHVzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSknLAog
ICAgICdjb25kaXRpb25zJzogWwogICAgICAgWydPUz09ImFuZHJvaWQiJywgewogICAgICAgICAn
ZmVhdHVyZV9kZWZpbmVzJzogWwpAQCAtMjM5LDYgKzI0MSwxMSBAQAogICAgICAgICAgICdTS19T
VVBQT1JUX0hJTlRJTkdfU0NBTEVfRkFDVE9SJywKICAgICAgICAgXSwKICAgICAgIH1dLAorICAg
ICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CisgICAgICAgICdmZWF0dXJlX2Rl
ZmluZXMnOiBbCisgICAgICAgICAgJ0VOQUJMRV9ERUZBVUxUX1JFTkRFUl9USEVNRT0xJywKKyAg
ICAgICAgXSwKKyAgICAgIH1dLAogICAgIF0sCiAgIH0sCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9X
ZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMzQ2NzEpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6MTM0NjcxKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVu
Z2luZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiLi4vLi4vLi4v
Li4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgiCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9kZWZhdWx0L1dlYlRo
ZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgv
V2ViVGhlbWVFbmdpbmUuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oIgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMzQ4Mzcp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw3ICs1OCwxMyBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisjaWYgIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkK
ICNpbmNsdWRlIDxwdWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmg+CisjZW5kaWYgLy8gIUVOQUJM
RShERUZBVUxUX1JFTkRFUl9USEVNRSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFRkFVTFRfUkVO
REVSX1RIRU1FKQorI2luY2x1ZGUgPHB1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg+CiAj
ZW5kaWYKIAogI2lmIE9TKERBUldJTikKQEAgLTY5LDcgKzc1LDkgQEAKICNpbmNsdWRlIDxwdWJs
aWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oPgogI2Vsc2UKICNpbmNsdWRlICJXZWJGb250SW5m
by5oIgorI2lmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAjaW5jbHVkZSA8cHVibGlj
L2xpbnV4L1dlYlRoZW1lRW5naW5lLmg+CisjZW5kaWYgLy8gIUVOQUJMRShERUZBVUxUX1JFTkRF
Ul9USEVNRSkKICNlbmRpZiAvLyBPUyhBTkRST0lEKQogI2VuZGlmIC8vIGVsaWYgT1MoVU5JWCkK
IApAQCAtMjIxLDcgKzIyOSw3IEBAIE5QT2JqZWN0KiBQbGF0Zm9ybVN1cHBvcnQ6OnBsdWdpblNj
cmlwdGEKIAogLy8gVGhlbWluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0jaWYgT1MoV0lORE9XUykKKyNpZiBP
UyhXSU5ET1dTKSAmJiAhRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogCiB2b2lkIFBsYXRm
b3JtU3VwcG9ydDo6cGFpbnRCdXR0b24oCiAgICAgR3JhcGhpY3NDb250ZXh0KiBnYywgaW50IHBh
cnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzNDgzNykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NyArOTUsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgiCkBAIC0xNjUsNiArMTY0LDExIEBACiAjaW5jbHVkZSA8
d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5o
PgogCisjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorI2luY2x1ZGUgIlBsYXRmb3Jt
VGhlbWVDaHJvbWl1bURlZmF1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAi
UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJl
RXZlbnQuaCIKQEAgLTE3Miw5ICsxNzYsMTIgQEAKICNlbmRpZgogCiAjaWYgT1MoV0lORE9XUykK
KyNpZiAhRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogI2luY2x1ZGUgIlJlbmRlclRoZW1l
Q2hyb21pdW1XaW4uaCIKKyNlbmRpZgogI2Vsc2UKLSNpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lO
KQorI2lmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJf
VEhFTUUpCisjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZUNocm9taXVtTGludXguaCIKICNlbmRpZgogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCkBAIC0zNTUyLDcgKzM1NTksOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXREb21haW5S
ZWxheGF0aW9uRm9yCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnModW5zaWdu
ZWQgaW5hY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB0cmFja0NvbG9yKSB7Ci0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYg
IU9TKEFORFJPSUQpCisjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorICAgIFBsYXRm
b3JtVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNvbG9y
LCBhY3RpdmVDb2xvciwgdHJhY2tDb2xvcik7CisjZWxpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lO
KSAmJiAhT1MoQU5EUk9JRCkKICAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Ny
b2xsYmFyQ29sb3JzKGluYWN0aXZlQ29sb3IsIGFjdGl2ZUNvbG9yLCB0cmFja0NvbG9yKTsKICNl
bmRpZgogfQpAQCAtMzU2MSwxMSArMzU3MCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTZWxl
Y3Rpb25Db2xvcnModW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgYWN0aXZlRm9yZWdyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9y
KSB7Ci0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFORFJPSUQpCi0gICAgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3Rpb25Db2xvcnMoYWN0aXZlQmFja2dyb3Vu
ZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjdGl2ZUZvcmVncm91bmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZUZvcmVncm91bmRDb2xv
cik7CisjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorICAgIFJlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0OjpzZXRTZWxlY3Rpb25Db2xvcnMoYWN0aXZlQmFja2dyb3VuZENvbG9yLCBh
Y3RpdmVGb3JlZ3JvdW5kQ29sb3IsIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLCBpbmFjdGl2ZUZv
cmVncm91bmRDb2xvcik7CisgICAgdGhlbWUoKS0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsK
KyNlbGlmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFPUyhBTkRST0lEKQorICAgIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKGFjdGl2ZUJhY2tncm91bmRD
b2xvciwgYWN0aXZlRm9yZWdyb3VuZENvbG9yLCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwgaW5h
Y3RpdmVGb3JlZ3JvdW5kQ29sb3IpOwogICAgIHRoZW1lKCktPnBsYXRmb3JtQ29sb3JzRGlkQ2hh
bmdlKCk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174559</attachid>
            <date>2012-11-15 16:52:52 -0800</date>
            <delta_ts>2012-11-16 10:38:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102403-20121115165048.patch</filename>
            <type>text/plain</type>
            <size>64204</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlMzdhNjI1NWU0MTI3
MjcxOTA5MGY0ZjMyNjIzNjAxMzZkMTg3OTRiLi5mY2MyM2VkM2QyOGE4MjlkMWFjZGYwNjRjNWUy
YjI2MWQ4YmI4MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0xNSAg
U2NvdHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENv
cHkgbGludXggdGhlbWUgcmVsYXRlZCBmaWxlcyB0byBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBUb255IENoYW5nCisKKyAgICAgICAgVHJhbnNpdGlvbmFsIHBhdGNoIHRoYXQgY29waWVz
IGxpbnV4IFdlYlRoZW1lRW5naW5lIHRvIGRlZmF1bHQgZGlyZWN0b3J5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL2RlZmF1bHQ6IEFkZGVkLgorICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaC4KKwogMjAx
Mi0xMS0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDgwMCBhbmQgcjEzNDgwNS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwYWFjYmMzNGMzMzU3MjljNzNiNzlhMWM1MmVjMmE0Y2MyZjI5MmQ1Li41MzNkMzJj
ZGZlZDQ2YWZkNDIxNGU1NzJhM2YxMjViMzBlMzVlYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTItMTEtMTUgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBDb3B5IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgdG8gZGVmYXVs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZworCisgICAgICAgIFRyYW5zaXRpb25h
bCBwYXRjaCB0aGF0IGNvcGllcyBsaW51eCBXZWJUaGVtZUVuZ2luZSB0byBkZWZhdWx0IGRpcmVj
dG9yeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogVXBkYXRlIGNvbXBpbGUgcnVsZXMgd2hlbiB1
c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWUgaXMgc2V0LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTog
QWRkcyBuZXcgZmlsZXMuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBw
b3J0Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVt
RGVmYXVsdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmguCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Lmgu
CisKIDIwMTItMTEtMTUgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFJlZmFjdG9yaW5nIHRvIG1vdmUgbG9naWMgb2YgY3JlYXRpbmcgbGF6eSBk
ZWNvZGVkIFNrQml0bWFwIGludG8gRGVmZXJyZWRJbWFnZURlY29kZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggZjBjZDhlNTM0MTNiMGI5MDkxZGRhMGMwMWRjOWQ1YTE4NGJlNDM3ZS4u
NzJhNzI3NDc5MWI3YzQxYzcxOTk4MzM3MmRmZTBmNDc3ODYzZTQxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMS0xNSAgU2NvdHQgVmlvbGV0ICA8
c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENvcHkgbGludXggdGhlbWUg
cmVsYXRlZCBmaWxlcyB0byBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI0MDMKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5n
CisKKyAgICAgICAgVHJhbnNpdGlvbmFsIHBhdGNoIHRoYXQgY29waWVzIGxpbnV4IFdlYlRoZW1l
RW5naW5lIHRvIGRlZmF1bHQgZGlyZWN0b3J5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVm
YWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVi
bGljL3BsYXRmb3JtL2RlZmF1bHQ6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9k
ZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmguCisgICAgICAgICogc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHA6IEluY2x1ZGVzIGNvcnJlY3QgdGhlbWUgZmlsZXMgd2hlbiBE
RUZBVUxUX1JFTkRFUl9USEVNRSBpcyBzZXQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOiBJbmNsdWRlcyBjb3JyZWN0IHRoZW1lIGZpbGVzIHdoZW4g
REVGQVVMVF9SRU5ERVJfVEhFTUUgaXMgc2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0U2Nyb2xsYmFyQ29sb3JzKTogQ2FsbHMgdG8gZGVmYXVsdCB0aGVtZSBhcyBuZWNlc3Nh
cnkuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTZWxlY3Rpb25Db2xvcnMpOiBD
YWxscyB0byBkZWZhdWx0IHRoZW1lIGFzIG5lY2Vzc2FyeS4KKwogMjAxMi0xMS0xNSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEzNDgwMCBhbmQgcjEzNDgwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5k
ZXggMTZkYjNkN2JjNjA3MDdkYmYwZTkzZTE3Y2Q1ZTBkY2Q1NzljNWQ4Ni4uMzZlNDE1NmQ0MTk3
NzNmNzkzYWNhOWFlMzc1OWE5YjY3MzIxZmZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTE0
OCw2ICsxNDgsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5M
b29wLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hT
dXBwb3J0LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlRoZW1l
RW5naW5lLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9kZWZhdWx0L1dlYlRoZW1l
RW5naW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250SW5m
by5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0
eWxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvZGVm
YXVsdC9XZWJUaGVtZUVuZ2luZS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9k
ZWZhdWx0L1dlYlRoZW1lRW5naW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg0ZjI5MmQ3Zjg3OGUzMGVlMzQ5
ODA4OWM4ZDk3NmMxNWU4MDQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oCkBAIC0wLDAgKzEsMTUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCisjZGVmaW5lIFdlYlRoZW1lRW5naW5lX2gKKworI2lu
Y2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgorI2luY2x1ZGUgIi4uL1dlYkNvbG9yLmgiCisjaW5jbHVk
ZSAiLi4vV2ViU2l6ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlY3Q7
CisKK2NsYXNzIFdlYlRoZW1lRW5naW5lIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgVUkgcGFydCB3
aGljaCBpcyBiZWluZyBhY2Nlc3NlZC4KKyAgICBlbnVtIFBhcnQgeworICAgICAgICAvLyBTY3Jv
bGxiYXJUaGVtZSBwYXJ0cworICAgICAgICBQYXJ0U2Nyb2xsYmFyRG93bkFycm93LAorICAgICAg
ICBQYXJ0U2Nyb2xsYmFyTGVmdEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJv
dywKKyAgICAgICAgUGFydFNjcm9sbGJhclVwQXJyb3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJI
b3Jpem9udGFsVGh1bWIsCisgICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAorICAg
ICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrLAorICAgICAgICBQYXJ0U2Nyb2xsYmFy
VmVydGljYWxUcmFjaywKKworICAgICAgICAvLyBSZW5kZXJUaGVtZSBwYXJ0cworICAgICAgICBQ
YXJ0Q2hlY2tib3gsCisgICAgICAgIFBhcnRSYWRpbywKKyAgICAgICAgUGFydEJ1dHRvbiwKKyAg
ICAgICAgUGFydFRleHRGaWVsZCwKKyAgICAgICAgUGFydE1lbnVMaXN0LAorICAgICAgICBQYXJ0
U2xpZGVyVHJhY2ssCisgICAgICAgIFBhcnRTbGlkZXJUaHVtYiwKKyAgICAgICAgUGFydElubmVy
U3BpbkJ1dHRvbiwKKyAgICAgICAgUGFydFByb2dyZXNzQmFyCisgICAgfTsKKworICAgIC8vIFRo
ZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhc3NvY2lhdGVkIFBhcnQuCisgICAgZW51bSBTdGF0ZSB7
CisgICAgICAgIFN0YXRlRGlzYWJsZWQsCisgICAgICAgIFN0YXRlSG92ZXIsCisgICAgICAgIFN0
YXRlTm9ybWFsLAorICAgICAgICBTdGF0ZVByZXNzZWQsCisgICAgfTsKKworICAgIC8vIEV4dHJh
IHBhcmFtZXRlcnMgZm9yIGRyYXdpbmcgdGhlIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sg
YW5kCisgICAgLy8gUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2suCisgICAgc3RydWN0IFNjcm9s
bGJhclRyYWNrRXh0cmFQYXJhbXMgeworICAgICAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBlbnRp
cmUgdHJhY2ssIGFzIG9wcG9zZWQgdG8gdGhlIHBhcnQgYmVpbmcgcGFpbnRlZC4KKyAgICAgICAg
aW50IHRyYWNrWDsKKyAgICAgICAgaW50IHRyYWNrWTsKKyAgICAgICAgaW50IHRyYWNrV2lkdGg7
CisgICAgICAgIGludCB0cmFja0hlaWdodDsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1l
dGVycyBmb3IgUGFydENoZWNrYm94LCBQYXJ0UHVzaEJ1dHRvbiBhbmQgUGFydFJhZGlvLgorICAg
IHN0cnVjdCBCdXR0b25FeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgY2hlY2tlZDsKKyAgICAg
ICAgYm9vbCBpbmRldGVybWluYXRlOyAvLyBXaGV0aGVyIHRoZSBidXR0b24gc3RhdGUgaXMgaW5k
ZXRlcm1pbmF0ZS4KKyAgICAgICAgYm9vbCBpc0RlZmF1bHQ7IC8vIFdoZXRoZXIgdGhlIGJ1dHRv
biBpcyBkZWZhdWx0IGJ1dHRvbi4KKyAgICAgICAgYm9vbCBoYXNCb3JkZXI7CisgICAgICAgIFdl
YkNvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVy
cyBmb3IgUGFydFRleHRGaWVsZAorICAgIHN0cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7Cisg
ICAgICAgIGJvb2wgaXNUZXh0QXJlYTsKKyAgICAgICAgYm9vbCBpc0xpc3Rib3g7CisgICAgICAg
IFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1l
dGVycyBmb3IgUGFydE1lbnVMaXN0CisgICAgc3RydWN0IE1lbnVMaXN0RXh0cmFQYXJhbXMgewor
ICAgICAgICBib29sIGhhc0JvcmRlcjsKKyAgICAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXM7Cisg
ICAgICAgIGludCBhcnJvd1g7CisgICAgICAgIGludCBhcnJvd1k7CisgICAgICAgIFdlYkNvbG9y
IGJhY2tncm91bmRDb2xvcjsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3Ig
UGFydFNsaWRlclRyYWNrIGFuZCBQYXJ0U2xpZGVyVGh1bWIKKyAgICBzdHJ1Y3QgU2xpZGVyRXh0
cmFQYXJhbXMgeworICAgICAgICBib29sIHZlcnRpY2FsOworICAgICAgICBib29sIGluRHJhZzsK
KyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydElubmVyU3BpbkJ1dHRv
bgorICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wg
c3BpblVwOworICAgICAgICBib29sIHJlYWRPbmx5OworICAgIH07CisKKyAgICAvLyBFeHRyYSBw
YXJhbWV0ZXJzIGZvciBQYXJ0UHJvZ3Jlc3NCYXIKKyAgICBzdHJ1Y3QgUHJvZ3Jlc3NCYXJFeHRy
YVBhcmFtcyB7CisgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7CisgICAgICAgIGludCB2YWx1ZVJl
Y3RYOworICAgICAgICBpbnQgdmFsdWVSZWN0WTsKKyAgICAgICAgaW50IHZhbHVlUmVjdFdpZHRo
OworICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OworICAgIH07CisKKyAgICB1bmlvbiBFeHRy
YVBhcmFtcyB7CisgICAgICAgIFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgc2Nyb2xsYmFyVHJh
Y2s7CisgICAgICAgIEJ1dHRvbkV4dHJhUGFyYW1zIGJ1dHRvbjsKKyAgICAgICAgVGV4dEZpZWxk
RXh0cmFQYXJhbXMgdGV4dEZpZWxkOworICAgICAgICBNZW51TGlzdEV4dHJhUGFyYW1zIG1lbnVM
aXN0OworICAgICAgICBTbGlkZXJFeHRyYVBhcmFtcyBzbGlkZXI7CisgICAgICAgIElubmVyU3Bp
bkJ1dHRvbkV4dHJhUGFyYW1zIGlubmVyU3BpbjsKKyAgICAgICAgUHJvZ3Jlc3NCYXJFeHRyYVBh
cmFtcyBwcm9ncmVzc0JhcjsKKyAgICB9OworCisgICAgLy8gR2V0cyB0aGUgc2l6ZSBvZiB0aGUg
Z2l2ZW4gdGhlbWUgcGFydC4gRm9yIHZhcmlhYmxlIHNpemVkIGl0ZW1zCisgICAgLy8gbGlrZSB2
ZXJ0aWNhbCBzY3JvbGxiYXIgdGh1bWJzLCB0aGUgd2lkdGggd2lsbCBiZSB0aGUgcmVxdWlyZWQg
d2lkdGggb2YKKyAgICAvLyB0aGUgdHJhY2sgd2hpbGUgdGhlIGhlaWdodCB3aWxsIGJlIHRoZSBt
aW5pbXVtIGhlaWdodC4KKyAgICB2aXJ0dWFsIFdlYlNpemUgZ2V0U2l6ZShQYXJ0KSB7IHJldHVy
biBXZWJTaXplKCk7IH0KKyAgICAvLyBQYWludCB0aGUgZ2l2ZW4gdGhlIGdpdmVuIHRoZW1lIHBh
cnQuCisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIFBhcnQsIFN0YXRlLCBjb25z
dCBXZWJSZWN0JiwgY29uc3QgRXh0cmFQYXJhbXMqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5k
ZXggMTcwYTQ1YjEwZDQ0NzJlYWE4Njc5YWQwOGRiYzgwMGM4MTY2ODE0Zi4uYzE5OTQ3OWIzNTU3
ZjI3NzRiZDc5ZWNjMDM2OTI4YzYzNDdiYTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKQEAgLTE2ODIsNiArMTY4MiwyNiBAQAogICAgICAgICAgICAgICAgIH1dLAog
ICAgICAgICAgICAgXSwKICAgICAgICAgfV0sCisgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVy
X3RoZW1lPT0xJywgeworICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgIFsnZXhj
bHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oJ10s
CisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXguY3BwJ10sCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtV2luLmgnXSwKKyAgICAgICAgICAgIFsnZXhj
bHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1XaW4uY3BwJ10s
CisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcCddLAorICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oJ10sCisgICAgICAgICAgICBb
J2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5j
cHAnXSwKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtV2luLmgnXSwKKyAgICAgICAgICBdLAorICAgICAgICB9XSwKKyAgICAg
ICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTAnLCB7CisgICAgICAgICAgJ3NvdXJjZXMv
JzogWworICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
VGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJ10sCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJ10sCisgICAgICAg
ICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bURlZmF1bHQuY3BwJ10sCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCddLAorICAgICAgICAgIF0sCisgICAg
ICAgIH1dLAogICAgICAgICBbJ3VzZV94MTEgPT0gMScsIHsKICAgICAgICAgICAnc291cmNlcy8n
OiBbCiAgICAgICAgICAgICAjIENoZXJyeS1waWNrIGZpbGVzIGV4Y2x1ZGVkIGJ5IHRoZSBicm9h
ZGVyIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYWJvdmUuCkBAIC0xOTcwLDYgKzE5OTAsMTcgQEAKICAg
ICAgICAgWydleGNsdWRlJywgJ0FsbEluT25lXFwuY3BwJCddLAogICAgICAgXSwKICAgICAgICdj
b25kaXRpb25zJzogWworICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MCcsIHsK
KyAgICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LionXSwKKyAgICAgICAgICBdLAorICAgICAg
ICB9XSwKKyAgICAgICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CisgICAgICAg
ICAgJ3NvdXJjZXMvJzogWworICAgICAgICAgICAgWydleGNsdWRlJywgJ1JlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC4qJ10sCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnUmVuZGVyVGhlbWVDaHJv
bWl1bVdpbi4qJ10sCisgICAgICAgICAgXSwKKyAgICAgICAgfV0sCiAgICAgICAgIFsnT1M9PSJ3
aW4iJywgewogICAgICAgICAgICdzb3VyY2VzLyc6IFsKICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdQb3NpeFxcLmNwcCQnXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMWQzMDdhNjM1MGM5NGJiNGY4
NmQ0N2U1MzQ2MTllMzM4ODcxOTNiLi5lODU0ZDUzNjE3Yjk1NWE2N2I1NWNhM2JjMDc1OTM2MjFh
NDQzYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDYwLDYgKzM0NjAsOCBAQAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5oJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUNvbW1vbi5jcHAnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQ29tbW9uLmgnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlci5jcHAnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFByb3ZpZGVyLmgnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFByb3ZpZGVyTGludXguY3BwJywK
QEAgLTQ2ODgsNiArNDY5MCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaCcs
CkBAIC00NzA2LDYgKzQ3MTAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZh
dWx0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCAzZTA1MWRiM2U3YzJhYWVlYTIw
MWFiYmI2ZjVkYzdjMzg4ZWVkYTg1Li5lZmNlYWY0NmRmZWNkZTFhZDYxMTQzNjJjMDgyYWE3OGRi
OWM3NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5QT2Jq
ZWN0KiBwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdpZGdldCopOwogCiAgICAgLy8gVGhlbWluZyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLSNpZiBPUyhXSU5ET1dTKQorI2lmIE9TKFdJTkRPV1MpICYmICFFTkFCTEUoREVGQVVMVF9S
RU5ERVJfVEhFTUUpCiAgICAgc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0
IEludFJlY3QmKTsKICAgICBzdGF0aWMgdm9pZCBwYWludE1lbnVMaXN0KApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVm
YXVsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1l
Q2hyb21pdW1EZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGZiNTEyMzdlMjc4NmNiNjYxYjJhZDNk
NzcxZjhjZDliNzcyOTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKQEAgLTAsMCArMSwy
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVt
RGVmYXVsdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vuc2lnbmVkIFBsYXRmb3JtVGhl
bWVDaHJvbWl1bURlZmF1bHQ6OnNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gMHhlYWVhZWE7Cit1bnNp
Z25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzX3RodW1iQWN0aXZlQ29sb3IgPSAw
eGY0ZjRmNDsKK3Vuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNfdHJhY2tD
b2xvciA9IDB4ZDNkM2QzOworCit2b2lkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNl
dFNjcm9sbGJhckNvbG9ycygKKyAgICBTa0NvbG9yIGluYWN0aXZlQ29sb3IsIFNrQ29sb3IgYWN0
aXZlQ29sb3IsIFNrQ29sb3IgdHJhY2tDb2xvcikKK3sKKyAgICBzX3RodW1iSW5hY3RpdmVDb2xv
ciA9IGluYWN0aXZlQ29sb3I7CisgICAgc190aHVtYkFjdGl2ZUNvbG9yID0gYWN0aXZlQ29sb3I7
CisgICAgc190cmFja0NvbG9yID0gdHJhY2tDb2xvcjsKK30KKworc3RhdGljIFNrU2NhbGFyIGNs
YW1wKFNrU2NhbGFyIHZhbHVlLCBTa1NjYWxhciBtaW4sIFNrU2NhbGFyIG1heCkKK3sKKyAgICBy
ZXR1cm4gc3RkOjptaW4oc3RkOjptYXgodmFsdWUsIG1pbiksIG1heCk7Cit9CisKK1NrQ29sb3Ig
UGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdDo6c2F0dXJhdGVBbmRCcmlnaHRlbihjb25zdCBT
a1NjYWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRlQW1vdW50LCBTa1NjYWxhciBicmlnaHRl
bkFtb3VudCkKK3sKKyAgICBTa1NjYWxhciBjb2xvclszXTsKKyAgICBjb2xvclswXSA9IGhzdlsw
XTsKKyAgICBjb2xvclsxXSA9IGNsYW1wKGhzdlsxXSArIHNhdHVyYXRlQW1vdW50LCAwLjAsIDEu
MCk7CisgICAgY29sb3JbMl0gPSBjbGFtcChoc3ZbMl0gKyBicmlnaHRlbkFtb3VudCwgMC4wLCAx
LjApOworICAgIHJldHVybiBTa0hTVlRvQ29sb3IoY29sb3IpOworfQorCitTa0NvbG9yIFBsYXRm
b3JtVGhlbWVDaHJvbWl1bURlZmF1bHQ6Om91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3Yx
WzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKQoreworICAgIC8vIEdUSyBUaGVtZSBlbmdpbmVz
IGhhdmUgd2F5IHRvbyBtdWNoIGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0IG9mCisgICAgLy8gdGhl
IHNjcm9sbGJhci4gV2UgbWlnaHQgYmUgYWJsZSB0byBtb3JlIGNsb3NlbHkgYXBwcm94aW1hdGUg
aXRzCisgICAgLy8gbG9vay1hbmQtZmVlbCwgaWYgd2Ugc2VudCB3aG9sZSBpbWFnZXMgaW5zdGVh
ZCBvZiBqdXN0IGNvbG9ycworICAgIC8vIGZyb20gdGhlIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVy
LiBCdXQgZXZlbiB0aGVuLCBzb21lIHRoZW1lcworICAgIC8vIHdvdWxkIGp1c3QgYnJlYWsuCisg
ICAgLy8KKyAgICAvLyBTbywgaW5zdGVhZCwgd2UgZG9uJ3QgZXZlbiB0cnkgdG8gMTAwJSByZXBs
aWNhdGUgdGhlIGxvb2sgb2YKKyAgICAvLyB0aGUgbmF0aXZlIHNjcm9sbGJhci4gV2UgcmVuZGVy
IG91ciBvd24gdmVyc2lvbiwgYnV0IHdlIG1ha2UKKyAgICAvLyBzdXJlIHRvIHBpY2sgY29sb3Jz
IHRoYXQgYmxlbmQgaW4gbmljZWx5IHdpdGggdGhlIHN5c3RlbSBHVEsKKyAgICAvLyB0aGVtZS4g
SW4gbW9zdCBjYXNlcywgd2UgY2FuIGp1c3Qgc2FtcGxlIGEgY291cGxlIG9mIHBpeGVscworICAg
IC8vIGZyb20gdGhlIHN5c3RlbSBzY3JvbGxiYXIgYW5kIHVzZSB0aG9zZSBjb2xvcnMgdG8gZHJh
dyBvdXIKKyAgICAvLyBzY3JvbGxiYXIuCisgICAgLy8KKyAgICAvLyBUaGlzIHdvcmtzIGZpbmUg
Zm9yIHRoZSB0cmFjayBjb2xvciBhbmQgdGhlIG92ZXJhbGwgdGh1bWIKKyAgICAvLyBjb2xvci4g
QnV0IGl0IGZhaWxzIHNwZWN0YWN1bGFybHkgZm9yIHRoZSBvdXRsaW5lIGNvbG9yIHVzZWQKKyAg
ICAvLyBhcm91bmQgdGhlIHRodW1iIHBpZWNlLiBOb3QgYWxsIHRoZW1lcyBoYXZlIGEgY2xlYXJs
eSBkZWZpbmVkCisgICAgLy8gb3V0bGluZS4gRm9yIHNvbWUgb2YgdGhlbSBpdCBpcyBwYXJ0aWFs
bHkgdHJhbnNwYXJlbnQsIGFuZCBmb3IKKyAgICAvLyBvdGhlcnMgdGhlIHRoaWNrbmVzcyBpcyB2
ZXJ5IHVucHJlZGljdGFibGUuCisgICAgLy8KKyAgICAvLyBTbywgaW5zdGVhZCBvZiB0cnlpbmcg
dG8gYXBwcm94aW1hdGUgdGhlIHN5c3RlbSB0aGVtZSwgd2UKKyAgICAvLyBpbnN0ZWFkIHRyeSB0
byBjb21wdXRlIGEgcmVhc29uYWJsZSBsb29raW5nIGNob2ljZSBiYXNlZCBvbiB0aGUKKyAgICAv
LyBrbm93biBjb2xvciBvZiB0aGUgdHJhY2sgYW5kIHRoZSB0aHVtYiBwaWVjZS4gVGhpcyBpcyBk
aWZmaWN1bHQKKyAgICAvLyB3aGVuIHRyeWluZyB0byBkZWFsIGJvdGggd2l0aCBoaWdoLSBhbmQg
bG93LWNvbnRyYXN0IHRoZW1lcywKKyAgICAvLyBhbmQgYm90aCB3aXRoIHBvc2l0aXZlIGFuZCBp
bnZlcnRlZCB0aGVtZXMuCisgICAgLy8KKyAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgaGFzIGJl
ZW4gdGVzdGVkIHRvIGxvb2sgT0sgd2l0aCBhbGwgb2YgdGhlCisgICAgLy8gZGVmYXVsdCBHVEsg
dGhlbWVzLgorICAgIFNrU2NhbGFyIG1pbkRpZmYgPSBjbGFtcCgoaHN2MVsxXSArIGhzdjJbMV0p
ICogMS4yLCAwLjI4LCAwLjUpOworICAgIFNrU2NhbGFyIGRpZmYgPSBjbGFtcChmYWJzKGhzdjFb
Ml0gLSBoc3YyWzJdKSAvIDIsIG1pbkRpZmYsIDAuNSk7CisKKyAgICBpZiAoaHN2MVsyXSArIGhz
djJbMl0gPiAxLjApCisgICAgICAgIGRpZmYgPSAtZGlmZjsKKworICAgIHJldHVybiBzYXR1cmF0
ZUFuZEJyaWdodGVuKGhzdjIsIC0wLjIsIGRpZmYpOworfQorCit2b2lkIFBsYXRmb3JtVGhlbWVD
aHJvbWl1bURlZmF1bHQ6OnBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgY29u
c3QgSW50UmVjdCYgcmVjdCwgQXJyb3dEaXJlY3Rpb24gZGlyZWN0aW9uLCBDb250cm9sU3RhdGVz
IHN0YXRlcykKK3sKKyAgICBTa0NhbnZhcyogY29uc3QgY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jYW52YXMoKTsKKyAgICBpbnQgd2lkdGhNaWRkbGUsIGxlbmd0aE1pZGRsZTsKKyAg
ICBTa1BhaW50IHBhaW50OworICAgIGlmIChkaXJlY3Rpb24gPT0gTm9ydGggfHwgZGlyZWN0aW9u
ID09IFNvdXRoKSB7CisgICAgICAgIHdpZHRoTWlkZGxlID0gcmVjdC53aWR0aCgpIC8gMiArIDE7
CisgICAgICAgIGxlbmd0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsKKyAgICB9IGVs
c2UgeworICAgICAgICBsZW5ndGhNaWRkbGUgPSByZWN0LndpZHRoKCkgLyAyICsgMTsKKyAgICAg
ICAgd2lkdGhNaWRkbGUgPSByZWN0LmhlaWdodCgpIC8gMiArIDE7CisgICAgfQorCisgICAgLy8g
Q2FsY3VsYXRlIGJ1dHRvbiBjb2xvci4KKyAgICBTa1NjYWxhciB0cmFja0hTVlszXTsKKyAgICBT
a0NvbG9yVG9IU1YodHJhY2tDb2xvcigpLCB0cmFja0hTVik7CisgICAgU2tDb2xvciBidXR0b25D
b2xvciA9IHNhdHVyYXRlQW5kQnJpZ2h0ZW4odHJhY2tIU1YsIDAsIDAuMik7CisgICAgU2tDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IgPSBidXR0b25Db2xvcjsKKyAgICBpZiAoc3RhdGVzICYgUHJlc3Nl
ZFN0YXRlKSB7CisgICAgICAgIFNrU2NhbGFyIGJ1dHRvbkhTVlszXTsKKyAgICAgICAgU2tDb2xv
clRvSFNWKGJ1dHRvbkNvbG9yLCBidXR0b25IU1YpOworICAgICAgICBidXR0b25Db2xvciA9IHNh
dHVyYXRlQW5kQnJpZ2h0ZW4oYnV0dG9uSFNWLCAwLCAtMC4xKTsKKyAgICB9IGVsc2UgaWYgKHN0
YXRlcyAmIEhvdmVyU3RhdGUpIHsKKyAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNdOworICAg
ICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhTVik7CisgICAgICAgIGJ1dHRv
bkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1YsIDAsIDAuMDUpOworICAgIH0K
KworICAgIFNrSVJlY3Qgc2tyZWN0OworICAgIHNrcmVjdC5zZXQocmVjdC54KCksIHJlY3QueSgp
LCByZWN0LngoKSArIHJlY3Qud2lkdGgoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAg
ICAvLyBQYWludCB0aGUgYmFja2dyb3VuZCAodGhlIGFyZWEgdmlzaWJsZSBiZWhpbmQgdGhlIHJv
dW5kZWQgY29ybmVycykuCisgICAgcGFpbnQuc2V0Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKKyAg
ICBjYW52YXMtPmRyYXdJUmVjdChza3JlY3QsIHBhaW50KTsKKworICAgIC8vIFBhaW50IHRoZSBi
dXR0b24ncyBvdXRsaW5lIGFuZCBmaWxsIHRoZSBtaWRkbGUKKyAgICBTa1BhdGggb3V0bGluZTsK
KyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgTm9ydGg6CisgICAgICAgIG91dGxp
bmUubW92ZVRvKHJlY3QueCgpICsgMC41LCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgKyAwLjUp
OworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgLShyZWN0LmhlaWdodCgpIC0gMikpOworICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgLTIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVj
dC53aWR0aCgpIC0gNSwgMCk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKKyAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSAyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTb3V0aDoKKyAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUs
IHJlY3QueSgpIC0gMC41KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0
KCkgLSAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5l
LnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gNSwgMCk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygy
LCAtMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAtKHJlY3QuaGVpZ2h0KCkgLSAyKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRWFzdDoKKyAgICAgICAgb3V0bGluZS5tb3ZlVG8o
cmVjdC54KCkgLSAwLjUsIHJlY3QueSgpICsgMC41KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRv
KHJlY3Qud2lkdGgoKSAtIDIsIDApOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Cisg
ICAgICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gNSk7CisgICAgICAgIG91
dGxpbmUuckxpbmVUbygtMiwgMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qud2lk
dGgoKSAtIDIpLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZXN0OgorICAgICAgICBv
dXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIHJlY3Qud2lkdGgoKSArIDAuNSwgcmVjdC55KCkgKyAw
LjUpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLShyZWN0LndpZHRoKCkgLSAyKSwgMCk7Cisg
ICAgICAgIG91dGxpbmUuckxpbmVUbygtMiwgMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygw
LCByZWN0LmhlaWdodCgpIC0gNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKKyAg
ICAgICAgb3V0bGluZS5yTGluZVRvKHJlY3Qud2lkdGgoKSAtIDIsIDApOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgb3V0bGluZS5jbG9zZSgpOworCisgICAgcGFpbnQuc2V0U3R5bGUoU2tQ
YWludDo6a0ZpbGxfU3R5bGUpOworICAgIHBhaW50LnNldENvbG9yKGJ1dHRvbkNvbG9yKTsKKyAg
ICBjYW52YXMtPmRyYXdQYXRoKG91dGxpbmUsIHBhaW50KTsKKworICAgIHBhaW50LnNldEFudGlB
bGlhcyh0cnVlKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsK
KyAgICBTa1NjYWxhciB0aHVtYkhTVlszXTsKKyAgICBTa0NvbG9yVG9IU1YodGh1bWJJbmFjdGl2
ZUNvbG9yKCksIHRodW1iSFNWKTsKKyAgICBwYWludC5zZXRDb2xvcihvdXRsaW5lQ29sb3IodHJh
Y2tIU1YsIHRodW1iSFNWKSk7CisgICAgY2FudmFzLT5kcmF3UGF0aChvdXRsaW5lLCBwYWludCk7
CisKKyAgICAvLyBJZiB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIG9yIHJlYWQtb25seSwgdGhlIGFy
cm93IGlzIGRyYXduIHdpdGggdGhlIG91dGxpbmUgY29sb3IuCisgICAgaWYgKHN0YXRlcyAmIEVu
YWJsZWRTdGF0ZSAmJiAhKHN0YXRlcyAmIFJlYWRPbmx5U3RhdGUpKQorICAgICAgICBwYWludC5z
ZXRDb2xvcihTS19Db2xvckJMQUNLKTsKKworICAgIHBhaW50LnNldEFudGlBbGlhcyhmYWxzZSk7
CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworCisgICAgU2tQYXRo
IHBhdGg7CisgICAgLy8gVGhlIGNvbnN0YW50cyBpbiB0aGlzIGJsb2NrIG9mIGNvZGUgYXJlIGhh
bmQtdGFpbG9yZWQgdG8gcHJvZHVjZSBnb29kCisgICAgLy8gbG9va2luZyBhcnJvd3Mgd2l0aG91
dCBhbnRpLWFsaWFzaW5nLgorICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBOb3J0
aDoKKyAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJlY3Qu
eSgpICsgbGVuZ3RoTWlkZGxlICsgMik7CisgICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsKKyAg
ICAgICAgcGF0aC5yTGluZVRvKC00LCAtNCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291
dGg6CisgICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgd2lkdGhNaWRkbGUgLSA0LCByZWN0
LnkoKSArIGxlbmd0aE1pZGRsZSAtIDMpOworICAgICAgICBwYXRoLnJMaW5lVG8oNywgMCk7Cisg
ICAgICAgIHBhdGguckxpbmVUbygtNCwgNCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRWFz
dDoKKyAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyBsZW5ndGhNaWRkbGUgLSAzLCByZWN0
LnkoKSArIHdpZHRoTWlkZGxlIC0gNCk7CisgICAgICAgIHBhdGguckxpbmVUbygwLCA3KTsKKyAg
ICAgICAgcGF0aC5yTGluZVRvKDQsIC00KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZXN0
OgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSArIDEsIHJlY3Qu
eSgpICsgd2lkdGhNaWRkbGUgLSA1KTsKKyAgICAgICAgcGF0aC5yTGluZVRvKDAsIDkpOworICAg
ICAgICBwYXRoLnJMaW5lVG8oLTQsIC00KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHBh
dGguY2xvc2UoKTsKKworICAgIGNhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMTcxNTY3N2IwY2EwMjc2YTc5MzA1MmIzZjBhOGY4ZTU3NGJiOWMwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVt
ZUNocm9taXVtRGVmYXVsdC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtVGhlbWVD
aHJvbWl1bURlZmF1bHRfaAorI2RlZmluZSBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0X2gK
KworI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgi
CisjaW5jbHVkZSAiU2tTY2FsYXIuaCIKKyNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdCB7Citw
dWJsaWM6CisgICAgZW51bSBBcnJvd0RpcmVjdGlvbiB7CisgICAgICAgIE5vcnRoLAorICAgICAg
ICBFYXN0LAorICAgICAgICBTb3V0aCwKKyAgICAgICAgV2VzdCwKKyAgICB9OworCisgICAgc3Rh
dGljIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2lnbmVkIGluYWN0aXZlQ29sb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFja0NvbG9yKTsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgdGh1bWJJbmFjdGl2ZUNvbG9yKCkgeyByZXR1cm4gc190aHVtYklu
YWN0aXZlQ29sb3I7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgdGh1bWJBY3RpdmVDb2xvcigpIHsg
cmV0dXJuIHNfdGh1bWJBY3RpdmVDb2xvcjsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCB0cmFja0Nv
bG9yKCkgeyByZXR1cm4gc190cmFja0NvbG9yOyB9CisKKyAgICBzdGF0aWMgU2tDb2xvciBzYXR1
cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVB
bW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KTsKKyAgICBzdGF0aWMgU2tDb2xvciBvdXRs
aW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2MlszXSk7
CisgICAgc3RhdGljIHZvaWQgcGFpbnRBcnJvd0J1dHRvbihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiwgQXJyb3dEaXJlY3Rpb24sIENvbnRyb2xTdGF0ZXMpOworCitwcml2YXRlOgor
ICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQoKSB7IH0KKworICAgIHN0YXRpYyB1bnNp
Z25lZCBzX3RodW1iSW5hY3RpdmVDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkFj
dGl2ZUNvbG9yOworICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RyYWNrQ29sb3I7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZh
dWx0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTUx
NzU1OThmMzEyYmU5NDY5M2M1OTQyODFiMjEwODk4OTg0NTUzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURl
ZmF1bHQuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdC5oIgorCisjaW5jbHVkZSAiUGxh
dGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGJhci5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL2RlZmF1bHQvV2ViVGhlbWVF
bmdpbmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JvbGxiYXJUaGVtZSogU2Nyb2xs
YmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LCB0aGVtZSwgKCkpOworICAgIHJldHVybiAmdGhlbWU7
Cit9CisKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtRGVmYXVsdDo6c2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQoreworICAgIC8vIEhvcml6IGFu
ZCBWZXJ0IHNjcm9sbGJhcnMgYXJlIHRoZSBzYW1lIHRoaWNrbmVzcy4KKyAgICBJbnRTaXplIHNj
cm9sbGJhclNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCkt
PmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJh
Y2spOworICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7Cit9CisKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
IGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlN0YXRlIHN0YXRlID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IHBhcnRUeXBlID8gV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlciA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlN0YXRlTm9ybWFsOworICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tSZWN0KHNjcm9sbGJh
ciwgZmFsc2UpOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJh
UGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250
ZXh0KCktPmNhbnZhcygpOworICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrWCA9
IGFsaWduUmVjdC54KCk7CisgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tZID0g
YWxpZ25SZWN0LnkoKTsKKyAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1dpZHRo
ID0gYWxpZ25SZWN0LndpZHRoKCk7CisgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJh
Y2tIZWlnaHQgPSBhbGlnblJlY3QuaGVpZ2h0KCk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhckhvcml6b250YWxUcmFjayA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRT
Y3JvbGxiYXJWZXJ0aWNhbFRyYWNrLCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0
cmFQYXJhbXMpOworfQorCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit7CisgICAgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7CisgICAgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1h
bDsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKTsKKyAgICBib29sIGNoZWNrTWluID0gZmFsc2U7CisgICAgYm9vbCBjaGVja01h
eCA9IGZhbHNlOworICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikgeworICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7
CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Ny
b2xsYmFyTGVmdEFycm93OworICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3Rh
cnRQYXJ0KSB7CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKKyAgICAgICAgICAgIGNoZWNrTWluID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKChjaGVja01pbiAmJiAoc2Nyb2xsYmFyLT5j
dXJyZW50UG9zKCkgPD0gMCkpCisgICAgICAgIHx8IChjaGVja01heCAmJiBzY3JvbGxiYXItPmN1
cnJlbnRQb3MoKSA9PSBzY3JvbGxiYXItPm1heGltdW0oKSkpIHsKKyAgICAgICAgc3RhdGUgPSBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0
YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOworICAgICAgICBlbHNl
IGlmIChwYXJ0ID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkKKyAgICAgICAgICAgIHN0YXRl
ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKKyAgICB9CisgICAgV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50
UGFydCwgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgMCk7Cit9CisKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
KyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZTsKKyAgICBXZWJLaXQ6Oldl
YkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBp
ZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKKyAgICAgICAgc3RhdGUg
PSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7CisgICAgZWxzZSBpZiAoc2Ny
b2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IFRodW1iUGFydCkKKyAgICAgICAgc3RhdGUgPSBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyOworICAgIGVsc2UKKyAgICAgICAgc3RhdGUg
PSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKKyAgICBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVj
dCksIDApOworfQorCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldnQpCit7CisgICAgcmV0dXJuIChldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkg
PT0gTGVmdEJ1dHRvbikgfHwgKGV2dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24pOworfQorCitJ
bnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpidXR0b25TaXplKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCit7CisgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJL
aXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3cpOworICAgICAgICByZXR1cm4gSW50
U2l6ZShzaXplLndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQo
KSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7CisgICAgfQorCisg
ICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJhcgorICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKKyAgICByZXR1cm4gSW50U2l6ZShzY3Jv
bGxiYXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8g
MiA6IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cit9CisKK2ludCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtRGVmYXVsdDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCit7CisgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikgeworICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIpOworICAgICAgICByZXR1cm4gc2l6ZS5oZWln
aHQoKTsKKyAgICB9CisKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhckhvcml6b250YWxUaHVtYik7CisgICAgcmV0dXJuIHNpemUud2lkdGgoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWE0Nzc3ZmE5YWIwMzg2M2Y5MGUzMjlkZjljYjdmOTJlZGIxYzliNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1EZWZhdWx0LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1EZWZhdWx0X2gKKyNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURl
ZmF1bHRfaAorCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0IDogcHVi
bGljIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0geworcHVibGljOgorICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgSW50
U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY0Mzcy
OWFkOThmYWMzZjY4NzkwZDM2ZDk0YjZkN2U4NDU0YThmNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKQEAg
LTAsMCArMSwzODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBH
b29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1
bURlZmF1bHQuaCIKKworI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dFNraWEuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJQcm9n
cmVzcy5oIgorI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lLmgiCisjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgorI2luY2x1ZGUgPHB1
YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6Om1fYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yID0KKyAgICAweGZmMWU5MGZmOwordW5zaWduZWQgUmVuZGVyVGhlbWVDaHJv
bWl1bURlZmF1bHQ6Om1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0KKyAgICBDb2xv
cjo6YmxhY2s7Cit1bnNpZ25lZCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6bV9pbmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9CisgICAgMHhmZmM4YzhjODsKK3Vuc2lnbmVkIFJl
bmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjptX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yID0KKyAgICAweGZmMzIzMjMyOworCitkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1
bHQ6Om1fY2FyZXRCbGlua0ludGVydmFsOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVs
dEJ1dHRvbkJhY2tncm91bmRDb2xvciA9IDB4ZmZkZGRkZGQ7CisKK3N0YXRpYyBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZSBnZXRXZWJUaGVtZVN0YXRlKGNvbnN0IFJlbmRlclRoZW1lKiB0
aGVtZSwgY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIGlmICghdGhlbWUtPmlzRW5hYmxl
ZChvKSkKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJs
ZWQ7CisgICAgaWYgKHRoZW1lLT5pc1ByZXNzZWQobykpCisgICAgICAgIHJldHVybiBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7CisgICAgaWYgKHRoZW1lLT5pc0hvdmVyZWQo
bykpCisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyOwor
CisgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOworfQorCitQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
KCkpOworfQorCisvLyBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlIGZvciBBbmRyb2lkIGlzIGRl
ZmluZWQgaW4gUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwLgorI2lmICFPUyhBTkRST0lE
KQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdl
KiBwYWdlKQoreworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9t
aXVtRGVmYXVsdDo6Y3JlYXRlKCkubGVha1JlZigpOworICAgIHJldHVybiBydDsKK30KKyNlbmRp
ZgorCitSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1
bHQoKQoreworICAgIG1fY2FyZXRCbGlua0ludGVydmFsID0gUmVuZGVyVGhlbWU6OmNhcmV0Qmxp
bmtJbnRlcnZhbCgpOworfQorCitSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6flJlbmRlclRo
ZW1lQ2hyb21pdW1EZWZhdWx0KCkKK3sKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bURl
ZmF1bHQ6OnN5c3RlbUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdAoreworICAgIHN0YXRpYyBj
b25zdCBDb2xvciBkZWZhdWx0QnV0dG9uR3JheUNvbG9yKDB4ZmZkZGRkZGQpOworCisgICAgaWYg
KGNzc1ZhbHVlSWQgPT0gQ1NTVmFsdWVCdXR0b25mYWNlKQorICAgICAgICByZXR1cm4gZGVmYXVs
dEJ1dHRvbkdyYXlDb2xvcjsKKyAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNz
c1ZhbHVlSWQpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OmV4dHJh
RGVmYXVsdFN0eWxlU2hlZXQoKQoreworI2lmICFPUyhXSU5ET1dTKQorICAgIHJldHVybiBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpICsKKyAgICAgICAg
ICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1MaW51eFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZih0
aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CisjZWxzZQorICAgIHJldHVy
biBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworI2Vu
ZGlmCit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OmNvbnRyb2xTdXBwb3J0
c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKK3sKKyAgICByZXR1cm4gaXNFbmFi
bGVkKG8pOworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6YWN0aXZlTGlz
dEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbG9y
KDB4MjgsIDB4MjgsIDB4MjgpOworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVs
dDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIENvbG9yOjpibGFjazsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1
bHQ6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIENvbG9yKDB4YzgsIDB4YzgsIDB4YzgpOworfQorCitDb2xvciBSZW5kZXJUaGVt
ZUNocm9taXVtRGVmYXVsdDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29sb3IoMHgzMiwgMHgzMiwgMHgzMik7Cit9CisKK0Nv
bG9yIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGxh
dGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9yIFJlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6cGxhdGZvcm1JbmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9CisKKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKK0ludFNpemUgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNsaWRlclRpY2tT
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZSgxLCA2KTsKK30KKworaW50IFJlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gLTE2OworfQorI2VuZGlmCisKK3ZvaWQgUmVuZGVyVGhlbWVD
aHJvbWl1bURlZmF1bHQ6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlBhcnRTbGlkZXJUaHVtYik7CisKKyAgICBpZiAoc3R5bGUtPmFwcGVhcmFuY2Uo
KSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0
aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0
KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOworICAgIH0gZWxzZSBpZiAoc3R5bGUtPmFw
cGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgeworICAgICAgICBzdHlsZS0+
c2V0V2lkdGgoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLT5z
ZXRIZWlnaHQoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNsaWRlclRodW1iU2l6ZShzdHlsZSwg
ZWxlbWVudCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnN1cHBvcnRz
Q29udHJvbFRpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSBpbnRl
cnZhbCkKK3sKKyAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IGludGVydmFsOworfQorCitkb3Vi
bGUgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OmNhcmV0QmxpbmtJbnRlcnZhbEludGVybmFs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jYXJldEJsaW5rSW50ZXJ2YWw7Cit9CisKK3ZvaWQg
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNldFNlbGVjdGlvbkNvbG9ycygKKyAgICB1bnNp
Z25lZCBhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCisgICAgdW5zaWduZWQgYWN0aXZlRm9yZWdyb3Vu
ZENvbG9yLAorICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAorICAgIHVuc2ln
bmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKQoreworICAgIG1fYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yID0gYWN0aXZlQmFja2dyb3VuZENvbG9yOworICAgIG1fYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0gYWN0aXZlRm9yZWdyb3VuZENvbG9yOworICAgIG1faW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgPSBpbmFjdGl2ZUJhY2tncm91bmRDb2xvcjsKKyAg
ICBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gaW5hY3RpdmVGb3JlZ3JvdW5k
Q29sb3I7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50Q2hlY2ti
b3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJh
bXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOworICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXND
aGVja2VkKG8pOworICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRlID0gaXNJbmRl
dGVybWluYXRlKG8pOworCisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2Jv
eCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0
cmFQYXJhbXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZUNocm9t
aXVtRGVmYXVsdDo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK3sK
KyAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4g
d2UgaGF2ZSBub3RoaW5nIHRvIGRvLgorICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5z
aWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1l
RW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydENoZWNrYm94KTsK
KyAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtRGVmYXVsdDo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFz
ID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgZXh0cmFQYXJh
bXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CisKKyAgICBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFJhZGlvLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6Oldl
YlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAoreworICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNw
ZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKCFzdHlsZS0+d2lk
dGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0UmFkaW8pOworICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOworfQorCitib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNh
bnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Cisg
ICAgZXh0cmFQYXJhbXMuYnV0dG9uLmlzRGVmYXVsdCA9IGlzRGVmYXVsdChvKTsKKyAgICBleHRy
YVBhcmFtcy5idXR0b24uaGFzQm9yZGVyID0gdHJ1ZTsKKyAgICBleHRyYVBhcmFtcy5idXR0b24u
YmFja2dyb3VuZENvbG9yID0gZGVmYXVsdEJ1dHRvbkJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAo
by0+aGFzQmFja2dyb3VuZCgpKQorICAgICAgICBleHRyYVBhcmFtcy5idXR0b24uYmFja2dyb3Vu
ZENvbG9yID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKS5yZ2IoKTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCks
ICZleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICAvLyBXZWJUaGVtZUVuZ2lu
ZSBkb2VzIG5vdCBoYW5kbGUgYm9yZGVyIHJvdW5kZWQgY29ybmVyIGFuZCBiYWNrZ3JvdW5kIGlt
YWdlCisgICAgLy8gc28gcmV0dXJuIHRydWUgdG8gZHJhdyBDU1MgYm9yZGVyIGFuZCBiYWNrZ3Jv
dW5kLgorICAgIGlmIChvLT5zdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSB8fCBvLT5zdHlsZSgp
LT5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBDb250
cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworCisgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgZXh0cmFQYXJhbXMu
dGV4dEZpZWxkLmlzVGV4dEFyZWEgPSBwYXJ0ID09IFRleHRBcmVhUGFydDsKKyAgICBleHRyYVBh
cmFtcy50ZXh0RmllbGQuaXNMaXN0Ym94ID0gcGFydCA9PSBMaXN0Ym94UGFydDsKKworICAgIFdl
YktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
YW52YXMoKTsKKworICAgIC8vIEZhbGxiYWNrIHRvIHdoaXRlIGlmIHRoZSBzcGVjaWZpZWQgY29s
b3Igb2JqZWN0IGlzIGludmFsaWQuCisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKENvbG9yOjp3
aGl0ZSk7CisgICAgaWYgKG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWYWxpZCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIGV4dHJhUGFyYW1zLnRleHRGaWVsZC5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNr
Z3JvdW5kQ29sb3IucmdiKCk7CisKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFRl
eHRGaWVsZCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3Qp
LCAmZXh0cmFQYXJhbXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVt
ZUNocm9taXVtRGVmYXVsdDo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW8tPmlzQm94KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgp
ICsgcmVjdC53aWR0aCgpOworICAgIGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3Qu
aGVpZ2h0KCkgLyAyOworCisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMg
ZXh0cmFQYXJhbXM7CisgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxl
KCktPmRpcmVjdGlvbigpID09IFJUTCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOworICAg
IGV4dHJhUGFyYW1zLm1lbnVMaXN0LmFycm93WSA9IG1pZGRsZTsKKyAgICBjb25zdCBSZW5kZXJC
b3gqIGJveCA9IHRvUmVuZGVyQm94KG8pOworICAgIC8vIE1hdGNoIENocm9taXVtIFdpbiBiZWhh
dmlvdXIgb2Ygc2hvd2luZyBhbGwgYm9yZGVycyBpZiBhbnkgYXJlIHNob3duLgorICAgIGV4dHJh
UGFyYW1zLm1lbnVMaXN0Lmhhc0JvcmRlciA9IGJveC0+Ym9yZGVyUmlnaHQoKSB8fCBib3gtPmJv
cmRlckxlZnQoKSB8fCBib3gtPmJvcmRlclRvcCgpIHx8IGJveC0+Ym9yZGVyQm90dG9tKCk7Cisg
ICAgZXh0cmFQYXJhbXMubWVudUxpc3QuaGFzQm9yZGVyUmFkaXVzID0gby0+c3R5bGUoKS0+aGFz
Qm9yZGVyUmFkaXVzKCk7CisgICAgLy8gRmFsbGJhY2sgdG8gdHJhbnNwYXJlbnQgaWYgdGhlIHNw
ZWNpZmllZCBjb2xvciBvYmplY3QgaXMgaW52YWxpZC4KKyAgICBleHRyYVBhcmFtcy5tZW51TGlz
dC5iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgaWYgKG8tPmhhc0Jh
Y2tncm91bmQoKSkKKyAgICAgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYmFja2dyb3VuZENvbG9y
ID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKS5yZ2IoKTsKKworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0TWVudUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6
V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2Vi
S2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpOworICAgIGV4dHJhUGFyYW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFw
cGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQ7CisKKyAgICBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFNsaWRlclRyYWNrLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJL
aXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CisKKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKyAgICBwYWludFNsaWRlclRpY2tzKG8sIGksIHJlY3QpOworI2VuZGlmCisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBh
aW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJh
bXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIGV4dHJhUGFyYW1zLnNsaWRlci52
ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2Fs
UGFydDsKKyAgICBleHRyYVBhcmFtcy5zbGlkZXIuaW5EcmFnID0gaXNQcmVzc2VkKG8pOworCisg
ICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52
YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUaHVtYiwgZ2V0V2ViVGhlbWVT
dGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6YWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0Cit7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRJbm5lclNwaW5CdXR0b24pOworCisgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChz
aXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXpl
LndpZHRoKCksIEZpeGVkKSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6
OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4
dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBp
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBleHRyYVBhcmFtcy5p
bm5lclNwaW4uc3BpblVwID0gKGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSAmIFNwaW5VcFN0
YXRlKTsKKyAgICBleHRyYVBhcmFtcy5pbm5lclNwaW4ucmVhZE9ubHkgPSBpc1JlYWRPbmx5Q29u
dHJvbChvKTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUo
KS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0SW5uZXJTcGluQnV0
dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZl
eHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKFBST0dSRVNT
X0VMRU1FTlQpCisKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnBhaW50UHJvZ3Jl
c3NCYXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgaWYgKCFvLT5pc1Byb2dyZXNzKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzID0gdG9SZW5kZXJQcm9ncmVz
cyhvKTsKKyAgICBJbnRSZWN0IHZhbHVlUmVjdCA9IHByb2dyZXNzVmFsdWVSZWN0Rm9yKHJlbmRl
clByb2dyZXNzLCByZWN0KTsKKworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFy
YW1zIGV4dHJhUGFyYW1zOworICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLmRldGVybWluYXRl
ID0gcmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKTsKKyAgICBleHRyYVBhcmFtcy5wcm9n
cmVzc0Jhci52YWx1ZVJlY3RYID0gdmFsdWVSZWN0LngoKTsKKyAgICBleHRyYVBhcmFtcy5wcm9n
cmVzc0Jhci52YWx1ZVJlY3RZID0gdmFsdWVSZWN0LnkoKTsKKyAgICBleHRyYVBhcmFtcy5wcm9n
cmVzc0Jhci52YWx1ZVJlY3RXaWR0aCA9IHZhbHVlUmVjdC53aWR0aCgpOworICAgIGV4dHJhUGFy
YW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdEhlaWdodCA9IHZhbHVlUmVjdC5oZWlnaHQoKTsKKwor
ICAgIERpcmVjdGlvbkZsaXBwaW5nU2NvcGUgc2NvcGUobywgaSwgcmVjdCk7CisgICAgV2ViS2l0
OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFp
bnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UHJvZ3Jlc3NCYXIsIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1z
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCitib29sIFJlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0OjpzaG91bGRPcGVuUGlja2VyV2l0aEY0S2V5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMjliNDgyY2I3YzE5YWNiNDYxYTkzY2E3YTExMTAxYjk4M2E3Nzc1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZh
dWx0LmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IHByb2plY3QuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdt
YWlsLmNvbQorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUsIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpZm5kZWYgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHRfaAorI2RlZmluZSBSZW5kZXJUaGVt
ZUNocm9taXVtRGVmYXVsdF9oCisKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtU2tpYS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZh
dWx0IDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisgICAgdmlydHVhbCBTdHJpbmcg
ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworCisgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xv
cihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7CisKKyAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhl
IGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5v
dC4KKyAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2Jq
ZWN0KikgY29uc3Q7CisKKyAgICAvLyBMaXN0IEJveCBzZWxlY3Rpb24gY29sb3IKKyAgICB2aXJ0
dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Io
KSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgaW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0OworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAg
dmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0IE9WRVJSSURF
OworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKworICAgIHN0YXRpYyB2b2lkIHNldENhcmV0QmxpbmtJ
bnRlcnZhbChkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGNhcmV0QmxpbmtJbnRlcnZhbElu
dGVybmFsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OworCisgICAgdmlydHVhbCBi
b29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25z
dDsKKworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZp
ZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5C
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKworICAgIHZpcnR1YWwgYm9vbCBwb3Bz
TWVudUJ5U3BhY2VPclJldHVybigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwor
I2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dy
ZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KyNlbmRpZgorCisgICAgdmlydHVhbCBib29sIHNob3VsZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBj
b25zdCBPVkVSUklERTsKKworICAgIHN0YXRpYyB2b2lkIHNldFNlbGVjdGlvbkNvbG9ycyh1bnNp
Z25lZCBhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xv
ciwgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIHVuc2lnbmVkIGluYWN0aXZlRm9y
ZWdyb3VuZENvbG9yKTsKKworcHJvdGVjdGVkOgorICAgIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZh
dWx0KCk7CisgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQoKTsKKworcHJp
dmF0ZToKKyAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBhbnkgY29udHJvbCB0aW50
aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJv
bFRpbnRzKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgZG91YmxlIG1fY2FyZXRCbGlua0ludGVydmFs
OworCisgICAgc3RhdGljIHVuc2lnbmVkIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
OworICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsK
KyAgICBzdGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsK
KyAgICBzdGF0aWMgdW5zaWduZWQgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCBmMzg2
ZGViNzc2Mjg5MjBhZjNiN2ZmMjA1YjlmODYxOTVjYmFiZDFkLi44MTEzZTU5YTMwMGExYWQ2OTBl
MzYzODFlMDdkOGQyNGUyZjE1ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CkBAIC0xNDUsMTEgKzE0NSwxMyBAQAogICAgICAgJ2VuYWJsZV90b3VjaF9ldmVudHMlJzogMSwK
ICAgICAgICdlbmFibGVfdG91Y2hfaWNvbl9sb2FkaW5nJScgOiAwLAogICAgICAgJ2VuYWJsZV9t
dXRhdGlvbl9vYnNlcnZlcnMlJzogMSwKKyAgICAgICd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWUl
JzogMCwKICAgICB9LAogICAgICd1c2VfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmclJzogJzwodXNl
X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nKScsCiAgICAgJ2VuYWJsZV9za2lhX3RleHQlJzogJzwo
ZW5hYmxlX3NraWFfdGV4dCknLAogICAgICdlbmFibGVfc3ZnJSc6ICc8KGVuYWJsZV9zdmcpJywK
ICAgICAnZW5hYmxlX3RvdWNoX2V2ZW50cyUnOiAnPChlbmFibGVfdG91Y2hfZXZlbnRzKScsCisg
ICAgJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSUnOiAnPCh1c2VfZGVmYXVsdF9yZW5kZXJfdGhl
bWUpJywKICAgICAnY29uZGl0aW9ucyc6IFsKICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKICAg
ICAgICAgJ2ZlYXR1cmVfZGVmaW5lcyc6IFsKQEAgLTIzOSw2ICsyNDEsMTEgQEAKICAgICAgICAg
ICAnU0tfU1VQUE9SVF9ISU5USU5HX1NDQUxFX0ZBQ1RPUicsCiAgICAgICAgIF0sCiAgICAgICB9
XSwKKyAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0xJywgeworICAgICAgICAnZmVh
dHVyZV9kZWZpbmVzJzogWworICAgICAgICAgICdFTkFCTEVfREVGQVVMVF9SRU5ERVJfVEhFTUU9
MScsCisgICAgICAgIF0sCisgICAgICB9XSwKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9XZWJUaGVtZUVu
Z2luZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vZGVmYXVsdC9X
ZWJUaGVtZUVuZ2luZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkN2QxMzBjMjQ1MmU2MTFlZDE4MTcwOWNlM2Vj
MzA1MzU4ZTMzMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmgKQEAgLTAsMCArMSwzMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICIuLi8uLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvZGVmYXVsdC9X
ZWJUaGVtZUVuZ2luZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAKaW5kZXggYTM5YjFlOWNiODIzODk1YzU4ZWIzZjJlZmJlNjdhNzZmMjllZDg3
Zi4uYjQyODFjZjY5NGVhYmE0OTQ3MjY5MGMzNjc4MWJhNmU1NTI3MDI4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC01OCw3ICs1OCwx
MyBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisj
aWYgIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkKICNpbmNsdWRlIDxwdWJsaWMvd2luL1dl
YlRoZW1lRW5naW5lLmg+CisjZW5kaWYgLy8gIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkK
KyNlbmRpZgorCisjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorI2luY2x1ZGUgPHB1
YmxpYy9kZWZhdWx0L1dlYlRoZW1lRW5naW5lLmg+CiAjZW5kaWYKIAogI2lmIE9TKERBUldJTikK
QEAgLTY5LDcgKzc1LDkgQEAKICNpbmNsdWRlIDxwdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2lu
ZS5oPgogI2Vsc2UKICNpbmNsdWRlICJXZWJGb250SW5mby5oIgorI2lmICFFTkFCTEUoREVGQVVM
VF9SRU5ERVJfVEhFTUUpCiAjaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg+
CisjZW5kaWYgLy8gIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkKICNlbmRpZiAvLyBPUyhB
TkRST0lEKQogI2VuZGlmIC8vIGVsaWYgT1MoVU5JWCkKIApAQCAtMjIxLDcgKzIyOSw3IEBAIE5Q
T2JqZWN0KiBQbGF0Zm9ybVN1cHBvcnQ6OnBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0KiB3
aWRnZXQpCiAKIC8vIFRoZW1pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotI2lmIE9TKFdJTkRPV1MpCisjaWYg
T1MoV0lORE9XUykgJiYgIUVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkKIAogdm9pZCBQbGF0
Zm9ybVN1cHBvcnQ6OnBhaW50QnV0dG9uKAogICAgIEdyYXBoaWNzQ29udGV4dCogZ2MsIGludCBw
YXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMDY1MTZlNGE4ZmIxMDMzZjdiOTIwYjY2ZDk2YTc3
YjJiZGVkOTgwNi4uYmM3OWQ5ZWRkNzNhNzU4YmM2YzU2YzI2ZTNjNGNiOTU4MWFmNDA5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtOTUsNyArOTUs
NiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hl
ZWxFdmVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlBvcHVwQ29udGFpbmVyLmgiCkBAIC0xNjUsNiArMTY0LDExIEBACiAjaW5jbHVkZSA8d3RmL1Rl
bXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCisj
aWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQorI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVD
aHJvbWl1bURlZmF1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5o
IgorI2VuZGlmCisKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQu
aCIKQEAgLTE3Miw5ICsxNzYsMTIgQEAKICNlbmRpZgogCiAjaWYgT1MoV0lORE9XUykKKyNpZiAh
RU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21p
dW1XaW4uaCIKKyNlbmRpZgogI2Vsc2UKLSNpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKQorI2lm
IE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUp
CisjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJSZW5k
ZXJUaGVtZUNocm9taXVtTGludXguaCIKICNlbmRpZgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CkBAIC0zNTUyLDcgKzM1NTksOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBXZWJTdHJpbmcmCiB2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY3RpdmVDb2xvciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFja0NvbG9yKSB7
Ci0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFORFJPSUQpCisjaWYgRU5BQkxF
KERFRkFVTFRfUkVOREVSX1RIRU1FKQorICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQ6
OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNvbG9yLCBhY3RpdmVDb2xvciwgdHJhY2tDb2xv
cik7CisjZWxpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKSAmJiAhT1MoQU5EUk9JRCkKICAgICBQ
bGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Nyb2xsYmFyQ29sb3JzKGluYWN0aXZlQ29s
b3IsIGFjdGl2ZUNvbG9yLCB0cmFja0NvbG9yKTsKICNlbmRpZgogfQpAQCAtMzU2MSwxMSArMzU3
MCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTZWxlY3Rpb25Db2xvcnModW5zaWduZWQgYWN0
aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFjdGl2ZUZvcmVncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRD
b2xvcikgewotI2lmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFPUyhBTkRST0lEKQotICAg
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKGFjdGl2ZUJhY2tn
cm91bmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhY3RpdmVGb3JlZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5hY3RpdmVGb3JlZ3JvdW5k
Q29sb3IpOworI2lmIEVOQUJMRShERUZBVUxUX1JFTkRFUl9USEVNRSkKKyAgICBSZW5kZXJUaGVt
ZUNocm9taXVtRGVmYXVsdDo6c2V0U2VsZWN0aW9uQ29sb3JzKGFjdGl2ZUJhY2tncm91bmRDb2xv
ciwgYWN0aXZlRm9yZWdyb3VuZENvbG9yLCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwgaW5hY3Rp
dmVGb3JlZ3JvdW5kQ29sb3IpOworICAgIHRoZW1lKCktPnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdl
KCk7CisjZWxpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKSAmJiAhT1MoQU5EUk9JRCkKKyAgICBS
ZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFNlbGVjdGlvbkNvbG9ycyhhY3RpdmVCYWNrZ3Jv
dW5kQ29sb3IsIGFjdGl2ZUZvcmVncm91bmRDb2xvciwgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3Is
IGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB0aGVtZSgpLT5wbGF0Zm9ybUNvbG9yc0Rp
ZENoYW5nZSgpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>