<?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>155035</bug_id>
          
          <creation_ts>2016-03-04 13:09:46 -0800</creation_ts>
          <short_desc>Consolidate RuntimeApplicationChecks and RuntimeApplicationChecksIOS</short_desc>
          <delta_ts>2016-03-18 08:44:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit 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>
          <dependson>155256</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aestes</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170995</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 13:09:46 -0800</bug_when>
    <thetext>Consolidate RuntimeApplicationChecks and RuntimeApplicationChecksIOS and use a more consistent mechanism for app detection that works both on WK1 and WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171043</commentid>
    <comment_count>1</comment_count>
      <attachid>273041</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 14:24:22 -0800</bug_when>
    <thetext>Created attachment 273041
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171074</commentid>
    <comment_count>2</comment_count>
      <attachid>273049</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 15:01:28 -0800</bug_when>
    <thetext>Created attachment 273049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171091</commentid>
    <comment_count>3</comment_count>
      <attachid>273051</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 15:52:26 -0800</bug_when>
    <thetext>Created attachment 273051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171092</commentid>
    <comment_count>4</comment_count>
      <attachid>273052</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 15:53:57 -0800</bug_when>
    <thetext>Created attachment 273052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171094</commentid>
    <comment_count>5</comment_count>
      <attachid>273053</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 15:58:23 -0800</bug_when>
    <thetext>Created attachment 273053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171348</commentid>
    <comment_count>6</comment_count>
      <attachid>273053</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-05 18:37:34 -0800</bug_when>
    <thetext>Comment on attachment 273053
Patch

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

&gt; Source/WebCore/platform/RuntimeApplicationChecks.mm:64
&gt; +    ASSERT_WITH_MESSAGE(isSafari == applicationBundleIsEqualTo(&quot;com.apple.Safari&quot;), &quot;Should not be called before setApplicationBundleIdentifier()&quot;);

This assertion will only fire if we use this wrong and are actually running the app in question. It would be a lot better if we had an assertion that would occur whenever the first time we called the functions in the wrong order, not just when an actual incorrect result is going to be returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171359</commentid>
    <comment_count>7</comment_count>
      <attachid>273053</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-05 19:28:45 -0800</bug_when>
    <thetext>Comment on attachment 273053
Patch

Clearing flags on attachment: 273053

Committed r197628: &lt;http://trac.webkit.org/changeset/197628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171360</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-05 19:28:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176173</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-18 08:44:07 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 273053 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 273053
&gt; 
&gt; Committed r197628: &lt;http://trac.webkit.org/changeset/197628&gt;

It broke the Apple Mac cmake build:
Undefined symbols for architecture x86_64:
  &quot;WebCore::MacApplication::isQuickenEssentials()&quot;, referenced from:
      WebCore::Widget::paint(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;) in WidgetMac.mm.o
  &quot;WebCore::MacApplication::isSolidStateNetworksDownloader()&quot;, referenced from:
      WebCore::CachedScript::shouldIgnoreHTTPStatusCodeErrors() const in CachedScript.cpp.o
  &quot;WebCore::MacApplication::isIBooks()&quot;, referenced from:
      WebCore::JSDOMWindowBase::commonVM() in JSDOMWindowBase.cpp.o
  &quot;WebCore::MacApplication::isITunes()&quot;, referenced from:
      WebCore::JSDOMWindowBase::commonVM() in JSDOMWindowBase.cpp.o
  &quot;WebCore::MacApplication::isHipChat()&quot;, referenced from:
      WebCore::JSLocation::putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;, bool&amp;) in JSLocationCustom.cpp.o
  &quot;WebCore::ScrollableArea::systemLanguageIsRTL()&quot;, referenced from:
      WebCore::RenderStyle::shouldPlaceBlockDirectionScrollbarOnLeft() const in RenderStyle.cpp.o
  &quot;WebCore::ScrollableArea::verticalScrollbarIsOnLeft() const&quot;, referenced from:
      WebCore::ScrollView::updateScrollbars(WebCore::IntPoint const&amp;) in ScrollView.cpp.o
      WebCore::ScrollView::documentScrollPositionRelativeToViewOrigin() const in ScrollView.cpp.o
      WebCore::ScrollView::scrollCornerRect() const in ScrollView.cpp.o
      WebCore::RenderLayerCompositor::positionForClipLayer() const in RenderLayerCompositor.cpp.o
ld: symbol(s) not found for architecture x86_64

speculative fix landed in http://trac.webkit.org/changeset/198412</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273041</attachid>
            <date>2016-03-04 14:24:22 -0800</date>
            <delta_ts>2016-03-04 15:01:25 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>155035_RuntimeApplicationChecks_cleanup.patch</filename>
            <type>text/plain</type>
            <size>72435</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzVkZDFkZi4uM2QyNGQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMTUsNyArMjExNSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAogICAgIHBsYXRmb3JtL1BsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKICAgICBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCi0g
ICAgcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAogICAgIHBsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAogICAgIHBs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQzZWZlYi4uNzdmODlmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Miw3
ICsxMDkyLDYgQEAKIAkJMjkzNDk0MEExNkMwMkMwNzAwOTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjUyN0NDOTMxNkJGOTJFQzAwOUREQUMwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UuY3BwICovOyB9OwogCQkyOTM0OTQwQjE2QzAyQzBBMDA5MDEzMTggLyogUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjUyN0NDOTUxNkJGOTVERDAwOUREQUMwIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCAqLzsgfTsKIAkJMjkzRUFFMUYxMzU2QjJGRTAw
NjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkzRUFFMUUxMzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTI5M0VBRTIxMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjkzRUFFMjAxMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5jcHAgKi87IH07CiAJCTI5NDg5RkM3MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmggKi87IH07CiAJCTI5NDk4NjgzMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlv
bk1hcmt1cE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1h
Yy5tbSAqLzsgfTsKIAkJMjk3QkUzRDUxNkMwM0MwODAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNTI3Q0M5MTE2QkY4QkExMDA5RERBQzAgLyogUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaCAqLzsgfTsKQEAgLTE3MDQsOCArMTcwMyw2IEBACiAJCTQ0QTIwREI5
MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFG
RSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1M
RWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
ICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4
QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwotCQk0NEMzNjNGMDBGQUE3QkIzMDA5
N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEMzNjNFRTBGQUE3QkIzMDA5N0Y4Q0MgLyog
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDRDMzYzRjEwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0QzM2M0VGMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MubW0gKi87IH07CiAJCTQ0Qzk5MTgyMEYzRDFFMEQwMDU4NjY3MCAvKiBT
Y3JvbGxiYXJUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0Qzk5MTgxMEYzRDFFMEQwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5t
bSAqLzsgfTsKIAkJNDRDOTkxODYwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4
NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRDOTkx
OUYwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJ
T1MuaCAqLzsgfTsKQEAgLTE3MzIsNiArMTcyOSw3IEBACiAJCTQ2MzQ1OTJDMUFDMjI3MTAwMEVD
QjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2Vy
dmVyTWFjLmNwcCAqLzsgfTsKIAkJNDYzRUI2MjIxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYzRUI2MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQk0
NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUx
IC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJNDY1QThFNzkxQzhBMjRDRTAwRTdEM0U0IC8q
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBw
bGljYXRpb25DaGVja3MubW0gKi87IH07CiAJCTQ2NjlCMjg3MUI4NTJBMEIwMDBGOTA1RiAvKiBK
U0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3RjAwNUMyNTU2IC8qIEpTRE9N
TmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTQ2NzMwMjAyMUM0RUZFNzgw
MEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZF
NjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAq
LzsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OUYxQUUxMjY3QkFF
MTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyB9OwpAQCAtODUzNSw3ICs4NTMzLDYgQEAK
IAkJMjkxN0I1NjAxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJGbHVzaFNjaGVkdWxlckNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTE3QjU2NTE0NzM0OTk1MDA1
MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMYXllckZsdXNoU2NoZWR1bGVyTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjkzRUFFMUUxMzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjkzRUFF
MjAxMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNG
MEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFy
a3VwTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVu
ZG9JbnNlcnRpb25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTIxMSw4ICs5MjA4LDYg
QEAKIAkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNC
IC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0NEMzNjNFRTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NEMzNjNFRjBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEM5OTE4MTBGM0QxRTBEMDA1
ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lSU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBU
aGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaGVtZUlPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI0MSw2ICs5MjM2LDcgQEAKIAkJNDYzNDU5
MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNlcnZlck1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhZ0NvbGxlY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYyMTFCODc4OUNCMDA5
NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NUE4RTc4
MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1
NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3Jl
bWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZC
MUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIyOTEyLDEwICsyMjkwOCw4IEBACiAJCQkJOTgzMUFFNDkxNTQyMjVB
MjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8sCiAJCQkJQ0RGQzM2MDMxOENBNjFDMjAw
MjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQ0RGQzM2MDQxOENB
NjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAotCQkJCTI5M0VBRTIw
MTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovLAorCQkJ
CTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0g
Ki8sCiAJCQkJMjkzRUFFMUUxMzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oICovLAotCQkJCTQ0QzM2M0VFMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MuaCAqLywKLQkJCQk0NEMzNjNFRjBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovLAogCQkJCTUxNjJDN0YyMTFGNzdFRkEwMDYx
MkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgKi8sCiAJCQkJNTE2MkM3RjMxMUY3N0VGQjAwNjEy
RUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggKi8sCiAJCQkJNTE0MTI5OEYxQzYwMUE4OTAwNTlFNzE0
IC8qIFNjb3BlR3VhcmQuaCAqLywKQEAgLTI3NzA3LDcgKzI3NzAxLDYgQEAKIAkJCQkxQTU2OUQy
MzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0QzM2M0YwMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCThDNkVBNjFBMTFF
RjdFMDQwMEZEOEVFMyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUU5MTFDQjBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtMzEzMjAsOCArMzEzMTMsNiBAQAogCQkJCTFBNTY5RDIw
MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkyOTNFQUUyMTEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ0QzM2M0YxMEZBQTdCQjMw
MDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk4QzZFQTYxOTExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREQ3MDg5NjE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxl
TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNBMEVGODZENDcwMDlEMENBRiAvKiBT
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNDMxLDYgKzMx
NDIyLDcgQEAKIAkJCQlDNUExRUE3QzE1MkJDRjA0MDA0RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBD
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAv
KiBTaW11bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5
MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NjVBOEU3
OTFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEzMjdENjExMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDQzBFRjg2RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTUwRjlGMjEyQjZFMEU3MDAw
OEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBhNmY4MzZlLi44ODQ3NDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtNDgsNyArNDgsNyBAQAog
I2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlclZpZXcu
aCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTVkdOYW1lcy5oIgogI2ltcG9ydCAi
U1ZHRWxlbWVudC5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0xNTUxLDcgKzE1NTEs
NyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJl
c3VsdCwgTlNTdHJpbmcgKnN0cmluZykKICAgICAvLyBUaGUgcGFyZW50VmlldyBzaG91bGQgaGF2
ZSBhbiBhY2Nlc3NpYmlsaXR5Q29udGFpbmVyLCBpZiB0aGUgVUlLaXQgYWNjZXNzaWJpbGl0eSBi
dW5kbGUgd2FzIGxvYWRlZC4gCiAgICAgLy8gVGhlIGV4Y2VwdGlvbiBpcyBEUlQsIHdoaWNoIHRl
c3RzIGFjY2Vzc2liaWxpdHkgd2l0aG91dCB0aGUgZW50aXJlIHN5c3RlbSB0dXJuaW5nIGFjY2Vz
c2liaWxpdHkgb24uIEhlbmNlLAogICAgIC8vIHRoaXMgY2hlY2sgc2hvdWxkIGJlIHZhbGlkIGZv
ciBldmVyeXRoaW5nIGV4Y2VwdCBEUlQuCi0gICAgQVNTRVJUKFtwYXJlbnRWaWV3IGFjY2Vzc2li
aWxpdHlDb250YWluZXJdIHx8IGFwcGxpY2F0aW9uSXNEdW1wUmVuZGVyVHJlZSgpKTsKKyAgICBB
U1NFUlQoW3BhcmVudFZpZXcgYWNjZXNzaWJpbGl0eUNvbnRhaW5lcl0gfHwgSU9TQXBwbGljYXRp
b246OmlzRHVtcFJlbmRlclRyZWUoKSk7CiAgICAgCiAgICAgcmV0dXJuIFtwYXJlbnRWaWV3IGFj
Y2Vzc2liaWxpdHlDb250YWluZXJdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMTlmY2EyNS4uMDE0OTZlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yNjQsNyArMjY0
LDcgQEAgVk0mIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIGlmIChhcHBsaWNhdGlvbklzSVR1bmVzKCkgfHwgYXBwbGljYXRp
b25Jc0lCb29rcygpIHx8IFNldHRpbmdzOjpzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcigpKQorICAg
ICAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzSVR1bmVzKCkgfHwgTWFjQXBwbGljYXRpb246Omlz
SUJvb2tzKCkgfHwgU2V0dGluZ3M6OnNob3VsZFJld3JpdGVDb25zdEFzVmFyKCkpCiAgICAgICAg
ICAgICB2bS0+c2V0U2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIodHJ1ZSk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBi
MzNhZDRmLi41NzBmOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcApAQCAtODcsNyArODcsNyBAQCBib29sIEpTTG9jYXRpb246OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBIaXBDaGF0IHRyaWVzIHRvIHNl
dCBMb2NhdGlvbi5yZWxvYWQgd2hpY2ggY2F1c2VzIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24g
aW4gc3RyaWN0IG1vZGUgKHNlZSA8cmRhcjovL3Byb2JsZW0vMjQ5MzE5NTk+KS4KLSAgICBpZiAo
YXBwbGljYXRpb25Jc0hpcENoYXQoKSkKKyAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzSGlwQ2hh
dCgpKQogICAgICAgICBzbG90LnNldFN0cmljdE1vZGUoZmFsc2UpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ1NThjN2EuLmQ4ZTZmMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTEzLDcgKzEx
Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYjE2OTI4
Zi4uNzk0YjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlICJEeW5hbWlj
TGlua2VyU1BJLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisj
aW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIG1hcERhdGFQYXJhbVRv
U3JjKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WCiAj
aWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgc2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1l
bnQoKQogewotICAgIHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50ID0g
YXBwbGljYXRpb25Jc05BU0FIRCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8
IERZTERfSU9TX1ZFUlNJT05fNV8wOworICAgIHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1V
UkxBZGp1c3RtZW50ID0gSU9TQXBwbGljYXRpb246OmlzTkFTQUhEKCkgJiYgZHlsZF9nZXRfcHJv
Z3JhbV9zZGtfdmVyc2lvbigpIDwgRFlMRF9JT1NfVkVSU0lPTl81XzA7CiAgICAgcmV0dXJuIHNo
b3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBhNDcwNGQyLi43NmNiOGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKLSNp
bmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
aW5kZXggZjU3OTU2OS4uYTczZmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1
ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KICNlbmRpZgogCkBA
IC03MCw3ICs3MCw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogICAg
IC8vIHdlIHN0aWxsIGFsbG93IHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNzQwMzMyOD4uIFNp
bmNlIHRoZSByYWNlIGNvbmRpdGlvbiBhbmQgc3Vic2VxdWVudAogICAgIC8vIGNyYXNoIGFyZSBl
c3BlY2lhbGx5IHRyb3VibGVzb21lIGZvciBpQm9va3MsIHdlIG5ldmVyIGFsbG93IHRoZSBvYnNl
cnZlciB0byBiZSBhZGRlZCB0byB0aGUKICAgICAvLyBtYWluIHJ1biBsb29wIGluIGlCb29rcy4K
LSAgICBpZiAoYXBwbGljYXRpb25Jc0lCb29rc09uSU9TKCkpCisgICAgaWYgKElPU0FwcGxpY2F0
aW9uOjppc0lCb29rcygpKQogICAgICAgICByZXR1cm4gV2ViVGhyZWFkUnVuTG9vcCgpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIENGUnVuTG9vcEdldEN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGNmN2Q2MjUuLmNlNzViNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRUeXBlLmgiCiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1Mu
aCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTeXN0
ZW1NZW1vcnkuaCIKICNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2VuZGlmCkBA
IC0xNDc1LDcgKzE0NzUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVu
dFVSTChVUkwmIHVybCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gTW9iaWxlU3RvcmUgZGVw
ZW5kcyBvbiB0aGUgaU9TIDQuMCBlcmEgY2xpZW50IGRlbGVnYXRlIG1ldGhvZCBiZWNhdXNlIHdl
YlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFT
b3VyY2UKICAgICAvLyBkb2Vzbid0IGxldCB0aGVtIHRlbGwgd2hlbiBhIGxvYWQgcmVxdWVzdCBp
cyBjb21pbmcgZnJvbSBhIG1lZGlhIGVsZW1lbnQuIFNlZSA8cmRhcjovL3Byb2JsZW0vODI2Njkx
Nj4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICBpZiAoYXBwbGljYXRpb25Jc01vYmlsZVN0b3JlKCkp
CisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc01vYmlsZVN0b3JlKCkpCiAgICAgICAgIHJldHVy
biBtX2NsaWVudC5zaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKHVybCk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOWUzOGVjNy4u
YTc3YTE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgor
I2luY2x1ZGUgPFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hl
ZFJlc291cmNlCiB7CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzdWJsb2FkZXIoYWRv
cHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCByZXNvdXJjZSwgb3B0aW9ucykpKTsK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKCFhcHBsaWNhdGlvbklzV2ViUHJvY2VzcygpKSB7
CisgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpIHsKICAgICAgICAgLy8g
T24gaU9TLCBkbyBub3QgaW52b2tlIHN5bmNocm9ub3VzIHJlc291cmNlIGxvYWQgZGVsZWdhdGVz
IHdoaWxlIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZwogICAgICAgICAvLyBpcyBkaXNhYmxlZCB0
byBhdm9pZCByZS1lbnRlcmluZyBzdHlsZSBzZWxlY3Rpb24gZnJvbSBhIGRpZmZlcmVudCB0aHJl
YWQgKHNlZSA8cmRhcjovL3Byb2JsZW0vOTEyMTcxOT4pLgogICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgZml4ZWQgZm9yIGFsbCBwb3J0cyBpbiA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2NjQ3Pi4KQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBD
YWNoZWRSZXNvdXJjZQogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TG9hZGluZygpCiB7Ci0gICAgQVNTRVJUKCFhcHBsaWNhdGlvbklzV2ViUHJvY2Vzcygp
KTsKKyAgICBBU1NFUlQoIUlPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MoKSk7CiAgICAgaWYg
KCFpbml0KG1faU9TT3JpZ2luYWxSZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IG1faU9TT3JpZ2luYWxSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IGVkY2VjZjguLjEzYWMzMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC0x
MzEsMTQgKzEzMSwxNiBAQCBib29sIENhY2hlZFNjcmlwdDo6bWltZVR5cGVBbGxvd2VkQnlOb3Nu
aWZmKCkgY29uc3QKIAogYm9vbCBDYWNoZWRTY3JpcHQ6OnNob3VsZElnbm9yZUhUVFBTdGF0dXND
b2RlRXJyb3JzKCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gVGhpcyBpcyBh
IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMzkxNjI5MT4KICAgICAvLyBSRUdSRVNT
SU9OIChyMTE5NzU5KTogQWRvYmUgRmxhc2ggUGxheWVyICJzbWFsbGVyIiBpbnN0YWxsZXIgcmVs
aWVzIG9uIHRoZSBpbmNvcnJlY3QgZmlyaW5nCiAgICAgLy8gb2YgYSBsb2FkIGV2ZW50IGFuZCBu
ZWVkcyBhbiBhcHAtc3BlY2lmaWMgaGFjayBmb3IgY29tcGF0aWJpbGl0eS4KICAgICAvLyBUaGUg
aW5zdGFsbGVyIGluIHF1ZXN0aW9uIHRyaWVzIHRvIGxvYWQgLmpzIGZpbGUgdGhhdCBkb2Vzbid0
IGV4aXN0LCBjYXVzaW5nIHRoZSBzZXJ2ZXIgdG8KICAgICAvLyByZXR1cm4gYSA0MDQgcmVzcG9u
c2UuIE5vcm1hbGx5LCB0aGlzIHdvdWxkIHRyaWdnZXIgYW4gZXJyb3IgZXZlbnQgdG8gYmUgZGlz
cGF0Y2hlZCwgYnV0IHRoZQogICAgIC8vIGluc3RhbGxlciBleHBlY3RzIGEgbG9hZCBldmVudCBp
bnN0ZWFkIHNvIHdlIHdvcmsgYXJvdW5kIGl0IGhlcmUuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNT
b2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkpCisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjpp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKIAogICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6c2hvdWxkSWdub3JlSFRUUFN0YXR1
c0NvZGVFcnJvcnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
OGI0ZjY1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKLQotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0Uo
Q0YpCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYg
VVNFKENGKQotc3RhdGljIENGU3RyaW5nUmVmIG1haW5CdW5kbGVJZGVudGlmaWVyKCkKLXsKLSAg
ICBDRkJ1bmRsZVJlZiBtYWluQnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCk7Ci0gICAg
aWYgKCFtYWluQnVuZGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBD
RkJ1bmRsZUdldElkZW50aWZpZXIobWFpbkJ1bmRsZSk7Ci19Ci0jZW5kaWYKLQotLy8gVGhlIGFw
cGxpY2F0aW9uIGJ1bmRsZSBpZGVudGlmaWVyIGdldHMgc2V0IHRvIHRoZSBVSVByb2Nlc3MgYnVu
ZGxlIGlkZW50aWZpZXIgYnkgdGhlIFdlYlByb2Nlc3MgYW5kCi0vLyB0aGUgbmV0d29ya2luZyBw
cm9jZXNzIHVwb24gaW5pdGlhbGl6YXRpb24uCi0vLyBJZiBub3QgZXhwbGljaXRseSBzZXQsIHRo
aXMgd2lsbCByZXR1cm4gdGhlIG1haW4gYnVuZGxlIGlkZW50aWZpZXIgd2hpY2ggaXMgYWNjdXJh
dGUgZm9yIFdLMSBvcgotLy8gdGhlIFdLMiBVSVByb2Nlc3MuCi1zdGF0aWMgU3RyaW5nJiBhcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSNpZiBVU0UoQ0YpCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRl
bnRpZmllcihtYWluQnVuZGxlSWRlbnRpZmllcigpKTsKLSNlbHNlCi0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcjsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGlkZW50
aWZpZXI7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSByZW5hbWVkIHRv
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCkgYW5kIHVzZSBhcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKQotLy8gaW5zdGVhZCBvZiBtYWluQnVuZGxlSWRlbnRpZmllcigpIGludGVybmFs
bHkuIFRoaXMgd291bGQgaGF2ZSB0aGUgYmVuZWZpdCBvZiB3b3JraW5nIGZvciBib3RoIFdlYktp
dDEgYW5kCi0vLyBXZWJLaXQyLgotc3RhdGljIGJvb2wgbWFpbkJ1bmRsZUlzRXF1YWxUbyhjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZmlsZSB3aXRoIFJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0lPUy5tbS4KLSAgICAvLyBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCi0jaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIENGU3RyaW5nUmVmIGJ1
bmRsZUlkZW50aWZpZXIgPSBtYWluQnVuZGxlSWRlbnRpZmllcigpOwotICAgIGlmICghYnVuZGxl
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIENGU3RyaW5n
Q29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0cmluZyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc1NhZmFyaSgpCi17Ci0gICAgc3RhdGljIGJvb2wg
aXNTYWZhcmkgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuU2FmYXJpIik7Ci0gICAg
cmV0dXJuIGlzU2FmYXJpOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNBcHBsZU1haWwoKQotewot
ICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWlsID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFw
cGxlLm1haWwiKTsKLSAgICByZXR1cm4gaXNBcHBsZU1haWw7Ci19Ci0KLWJvb2wgYXBwbGljYXRp
b25Jc0lCb29rcygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNJQm9va3MgPSBtYWluQnVuZGxlSXNF
cXVhbFRvKCJjb20uYXBwbGUuaUJvb2tzWCIpOwotICAgIHJldHVybiBpc0lCb29rczsKLX0KLQot
Ym9vbCBhcHBsaWNhdGlvbklzSVR1bmVzKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0lUdW5lcyA9
IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMiKTsKLSAgICByZXR1cm4gaXNJ
VHVuZXM7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlcigpCi17Ci0g
ICAgc3RhdGljIGJvb2wgaXNNaWNyb3NvZnRNZXNzZW5nZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRv
KCJjb20ubWljcm9zb2Z0Lk1lc3NlbmdlciIpOwotICAgIHJldHVybiBpc01pY3Jvc29mdE1lc3Nl
bmdlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKQotewotICAgIHN0
YXRpYyBib29sIGlzQWRvYmVJbnN0YWxsZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYWRv
YmUuSW5zdGFsbGVycy5TZXR1cCIpOwotICAgIHJldHVybiBpc0Fkb2JlSW5zdGFsbGVyOwotfQot
Ci1ib29sIGFwcGxpY2F0aW9uSXNBT0xJbnN0YW50TWVzc2VuZ2VyKCkKLXsKLSAgICBzdGF0aWMg
Ym9vbCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYW9s
LmFpbS5kZXNrdG9wIik7Ci0gICAgcmV0dXJuIGlzQU9MSW5zdGFudE1lc3NlbmdlcjsKLX0KLQot
Ym9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0TXlEYXkoKQotewotICAgIHN0YXRpYyBib29sIGlz
TWljcm9zb2Z0TXlEYXkgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lm15ZGF5
Iik7Ci0gICAgcmV0dXJuIGlzTWljcm9zb2Z0TXlEYXk7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25J
c01pY3Jvc29mdE91dGxvb2soKQotewotICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0T3V0bG9v
ayA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQuT3V0bG9vayIpOwotICAgIHJl
dHVybiBpc01pY3Jvc29mdE91dGxvb2s7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc1F1aWNrZW5F
c3NlbnRpYWxzKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzID0gbWFp
bkJ1bmRsZUlzRXF1YWxUbygiY29tLmludHVpdC5RdWlja2VuRXNzZW50aWFscyIpOwotICAgIHJl
dHVybiBpc1F1aWNrZW5Fc3NlbnRpYWxzOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNBcGVydHVy
ZSgpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNBcGVydHVyZSA9IG1haW5CdW5kbGVJc0VxdWFsVG8o
ImNvbS5hcHBsZS5BcGVydHVyZSIpOwotICAgIHJldHVybiBpc0FwZXJ0dXJlOwotfQotCi1ib29s
IGFwcGxpY2F0aW9uSXNWZXJzaW9ucygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNWZXJzaW9ucyA9
IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5ibGFja3BpeGVsLnZlcnNpb25zIik7Ci0gICAgcmV0
dXJuIGlzVmVyc2lvbnM7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0hSQmxvY2soKQotewotICAg
IHN0YXRpYyBib29sIGlzSFJCbG9jayA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5ocmJsb2Nr
LnRheC4yMDEwIik7Ci0gICAgcmV0dXJuIGlzSFJCbG9jazsKLX0KLQotYm9vbCBhcHBsaWNhdGlv
bklzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNT
b2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLnNv
bGlkc3RhdGVuZXR3b3Jrcy5hd2tob3N0Iik7Ci0gICAgcmV0dXJuIGlzU29saWRTdGF0ZU5ldHdv
cmtzRG93bmxvYWRlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzSGlwQ2hhdCgpCi17Ci0gICAg
c3RhdGljIGJvb2wgaXNIaXBDaGF0ID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPT0g
ImNvbS5oaXBjaGF0LkhpcENoYXQiOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNIaXBDaGF0
ID09IChhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9PSAiY29tLmhpcGNoYXQuSGlwQ2hh
dCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigpIik7Ci0gICAgcmV0dXJuIGlzSGlwQ2hhdDsKLX0KLQotdm9pZCBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKQotewot
ICAgIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpID0gYnVuZGxlSWRlbnRpZmllcjsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRleCA1YzdmZWQwLi5kYjQyM2IyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aApAQCAtMjYsMjggKzI2LDYwIEBACiAjaWZuZGVmIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc19o
CiAjZGVmaW5lIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc19oCiAKKyNpZiBQTEFURk9STShDT0NP
QSkKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0FPTEluc3RhbnRNZXNzZW5nZXIoKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFsbGVyKCk7Ci1XRUJDT1JF
X0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNBcGVydHVyZSgpOwotV0VCQ09SRV9FWFBPUlQgYm9v
bCBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0
aW9uSXNJQm9va3MoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0lUdW5lcygp
OwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0TWVzc2VuZ2VyKCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNeURheSgpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0T3V0bG9vaygpOwotYm9vbCBh
cHBsaWNhdGlvbklzUXVpY2tlbkVzc2VudGlhbHMoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBw
bGljYXRpb25Jc1NhZmFyaSgpOwotYm9vbCBhcHBsaWNhdGlvbklzU29saWRTdGF0ZU5ldHdvcmtz
RG93bmxvYWRlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzVmVyc2lvbnMo
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0hSQmxvY2soKTsKLVdFQkNPUkVf
RVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0hpcENoYXQoKTsKLQogV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAKKyNpZiBQ
TEFURk9STShNQUMpCisKK25hbWVzcGFjZSBNYWNBcHBsaWNhdGlvbiB7CisKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNBT0xJbnN0YW50TWVzc2VuZ2VyKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlz
QWRvYmVJbnN0YWxsZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNBcGVydHVyZSgpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0FwcGxlTWFpbCgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lC
b29rcygpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lUdW5lcygpOworV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc01pY3Jvc29mdE1lc3NlbmdlcigpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01pY3Jv
c29mdE15RGF5KCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlzTWljcm9zb2Z0T3V0bG9vaygpOwor
Ym9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlzU2FmYXJp
KCk7Citib29sIGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpOworV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1ZlcnNpb25zKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlzSFJCbG9jaygpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0hpcENoYXQoKTsKKworfSAvLyBNYWNBcHBsaWNhdGlvbgor
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3Bh
Y2UgSU9TQXBwbGljYXRpb24geworCitXRUJDT1JFX0VYUE9SVCBib29sIGlzTW9iaWxlTWFpbCgp
OworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01vYmlsZVNhZmFyaSgpOworYm9vbCBpc0R1bXBSZW5k
ZXJUcmVlKCk7Citib29sIGlzTW9iaWxlU3RvcmUoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNX
ZWJBcHAoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNPa0N1cGlkKCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIGlzRmFjZWJvb2soKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNEYWlqaXNlbkRpY3Rp
b25hcnkoKTsKK2Jvb2wgaXNOQVNBSEQoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNUaGVFY29u
b21pc3RPbklwaG9uZSgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1dlYlByb2Nlc3MoKTsKK2Jv
b2wgaXNJQm9va3MoKTsKKworfSAvLyBJT1NBcHBsaWNhdGlvbgorCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKKwogI2VuZGlmIC8vIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjYmIwMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbQpAQCAt
MCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
TlNCdW5kbGUuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIFRoZSBhcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNl
dCB0byB0aGUgVUlQcm9jZXNzIGJ1bmRsZSBpZGVudGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFu
ZAorLy8gdGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB1cG9uIGluaXRpYWxpemF0aW9uLgorLy8gSWYg
bm90IGV4cGxpY2l0bHkgc2V0LCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVu
dGlmaWVyIHdoaWNoIGlzIGFjY3VyYXRlIGZvciBXSzEgb3IKKy8vIHRoZSBXSzIgVUlQcm9jZXNz
Lgorc3RhdGljIFN0cmluZyYgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gaWRlbnRpZmllcihbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
KTsKKworICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCitzdGF0aWMgYm9vbCBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCit7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZmlsZSB3aXRo
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbS4KKyAgICAvLyBUaGVuIHdlIGNhbiByZW1v
dmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisjaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oSU9T
KQorICAgIHJldHVybiBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9PSBidW5kbGVJZGVu
dGlmaWVyU3RyaW5nOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0
cmluZyk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9STShNQUMp
CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzU2FmYXJpKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBp
c1NhZmFyaSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuU2FmYXJpIik7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1NhZmFyaSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFwcGxlLlNhZmFyaSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzU2FmYXJp
OworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgpCit7CisgICAgc3RhdGlj
IGJvb2wgaXNBcHBsZU1haWwgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxl
Lm1haWwiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQXBwbGVNYWlsID09IGFwcGxpY2F0
aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubWFpbCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxs
ZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJu
IGlzQXBwbGVNYWlsOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0lCb29rcygpCit7Cisg
ICAgc3RhdGljIGJvb2wgaXNJQm9va3MgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
LmFwcGxlLmlCb29rc1giKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSUJvb2tzID09IGFw
cGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaUJvb2tzWCIpLCAiU2hvdWxkIG5v
dCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7Cisg
ICAgcmV0dXJuIGlzSUJvb2tzOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0lUdW5lcygp
Cit7CisgICAgc3RhdGljIGJvb2wgaXNJVHVuZXMgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmFwcGxlLmlUdW5lcyIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJVHVuZXMg
PT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMiKSwgIlNob3Vs
ZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIp
OworICAgIHJldHVybiBpc0lUdW5lczsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNNaWNy
b3NvZnRNZXNzZW5nZXIoKQoreworICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0TWVzc2VuZ2Vy
ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQuTWVzc2VuZ2VyIik7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc01pY3Jvc29mdE1lc3NlbmdlciA9PSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5NZXNzZW5nZXIiKSwgIlNob3VsZCBu
b3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwor
ICAgIHJldHVybiBpc01pY3Jvc29mdE1lc3NlbmdlcjsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlv
bjo6aXNBZG9iZUluc3RhbGxlcigpCit7CisgICAgc3RhdGljIGJvb2wgaXNBZG9iZUluc3RhbGxl
ciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYWRvYmUuSW5zdGFsbGVycy5TZXR1
cCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBZG9iZUluc3RhbGxlciA9PSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKSwgIlNob3Vs
ZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIp
OworICAgIHJldHVybiBpc0Fkb2JlSW5zdGFsbGVyOworfQorCitib29sIE1hY0FwcGxpY2F0aW9u
Ojppc0FPTEluc3RhbnRNZXNzZW5nZXIoKQoreworICAgIHN0YXRpYyBib29sIGlzQU9MSW5zdGFu
dE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYW9sLmFpbS5kZXNr
dG9wIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0FPTEluc3RhbnRNZXNzZW5nZXIgPT0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hb2wuYWltLmRlc2t0b3AiKSwgIlNob3Vs
ZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIp
OworICAgIHJldHVybiBpc0FPTEluc3RhbnRNZXNzZW5nZXI7Cit9CisKK2Jvb2wgTWFjQXBwbGlj
YXRpb246OmlzTWljcm9zb2Z0TXlEYXkoKQoreworICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0
TXlEYXkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5teWRheSIp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNaWNyb3NvZnRNeURheSA9PSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5teWRheSIpLCAiU2hvdWxkIG5vdCBiZSBj
YWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0
dXJuIGlzTWljcm9zb2Z0TXlEYXk7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzTWljcm9z
b2Z0T3V0bG9vaygpCit7CisgICAgc3RhdGljIGJvb2wgaXNNaWNyb3NvZnRPdXRsb29rID0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQuT3V0bG9vayIpOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaXNNaWNyb3NvZnRPdXRsb29rID09IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91dGxvb2siKSwgIlNob3VsZCBub3QgYmUgY2FsbGVk
IGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBp
c01pY3Jvc29mdE91dGxvb2s7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzUXVpY2tlbkVz
c2VudGlhbHMoKQoreworICAgIHN0YXRpYyBib29sIGlzUXVpY2tlbkVzc2VudGlhbHMgPSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmludHVpdC5RdWlja2VuRXNzZW50aWFscyIpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNRdWlja2VuRXNzZW50aWFscyA9PSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLmludHVpdC5RdWlja2VuRXNzZW50aWFscyIpLCAiU2hvdWxk
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7
CisgICAgcmV0dXJuIGlzUXVpY2tlbkVzc2VudGlhbHM7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRp
b246OmlzQXBlcnR1cmUoKQoreworICAgIHN0YXRpYyBib29sIGlzQXBlcnR1cmUgPSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIik7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpc0FwZXJ0dXJlID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20u
YXBwbGUuQXBlcnR1cmUiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0FwZXJ0dXJlOworfQorCiti
b29sIE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNpb25zKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1Zl
cnNpb25zID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5ibGFja3BpeGVsLnZlcnNp
b25zIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1ZlcnNpb25zID09IGFwcGxpY2F0aW9u
QnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJzaW9ucyIpLCAiU2hvdWxkIG5vdCBi
ZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAg
cmV0dXJuIGlzVmVyc2lvbnM7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzSFJCbG9jaygp
Cit7CisgICAgc3RhdGljIGJvb2wgaXNIUkJsb2NrID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5ocmJsb2NrLnRheC4yMDEwIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0hS
QmxvY2sgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5ocmJsb2NrLnRheC4yMDEw
IiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNIUkJsb2NrOworfQorCitib29sIE1hY0FwcGxpY2F0
aW9uOjppc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKQoreworICAgIHN0YXRpYyBib29s
IGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uc29saWRzdGF0ZW5ldHdvcmtzLmF3a2hvc3QiKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlciA9PSBhcHBsaWNhdGlvbkJ1bmRs
ZUlzRXF1YWxUbygiY29tLnNvbGlkc3RhdGVuZXR3b3Jrcy5hd2tob3N0IiksICJTaG91bGQgbm90
IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKwor
ICAgIHJldHVybiBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXI7Cit9CisKK2Jvb2wgTWFj
QXBwbGljYXRpb246OmlzSGlwQ2hhdCgpCit7CisgICAgc3RhdGljIGJvb2wgaXNIaXBDaGF0ID0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5oaXBjaGF0LkhpcENoYXQiKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGlzSGlwQ2hhdCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmhpcGNoYXQuSGlwQ2hhdCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzSGlwQ2hhdDsK
K30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lmIFBMQVRGT1JNKElPUykKKworYm9v
bCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01v
YmlsZU1haWwgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1vYmlsZW1h
aWwiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTW9iaWxlTWFpbCA9PSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1vYmlsZW1haWwiKSwgIlNob3VsZCBub3QgYmUg
Y2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJl
dHVybiBpc01vYmlsZU1haWw7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2Fm
YXJpKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01vYmlsZVNhZmFyaSA9IGFwcGxpY2F0aW9uQnVu
ZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubW9iaWxlc2FmYXJpIik7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShpc01vYmlsZVNhZmFyaSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
LmFwcGxlLm1vYmlsZXNhZmFyaSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzTW9iaWxlU2FmYXJp
OworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc0R1bXBSZW5kZXJUcmVlKCkKK3sKKyAgICAv
LyBXZSB1c2UgYSBwcmVmaXggbWF0Y2ggaW5zdGVhZCBvZiBzdHJpY3QgZXF1YWxpdHkgc2luY2Ug
TGF5b3V0VGVzdFJlbGF5IG1heSBsYXVuY2ggbXVsdGlwbGUgaW5zdGFuY2VzIG9mCisgICAgLy8g
RHVtcFJlbmRlclRyZWUgd2hlcmUgdGhlIGJ1bmRsZSBpZGVudGlmaWVyIG9mIGVhY2ggaW5zdGFu
Y2UgaGFzIGEgdW5pcXVlIHN1ZmZpeC4KKyAgICBzdGF0aWMgYm9vbCBpc0R1bXBSZW5kZXJUcmVl
ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUi
KTsgLy8gZS5nLiBvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlMAorICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXNEdW1wUmVuZGVyVHJlZSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygib3Jn
LndlYmtpdC5EdW1wUmVuZGVyVHJlZSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzRHVtcFJlbmRl
clRyZWU7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTW9iaWxlU3RvcmUoKQoreworICAg
IHN0YXRpYyBib29sIGlzTW9iaWxlU3RvcmUgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Y29tLmFwcGxlLk1vYmlsZVN0b3JlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc01vYmls
ZVN0b3JlID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuTW9iaWxlU3Rv
cmUiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc01vYmlsZVN0b3JlOworfQorCitib29sIElPU0Fw
cGxpY2F0aW9uOjppc1dlYkFwcCgpCit7CisgICAgc3RhdGljIGJvb2wgaXNXZWJBcHAgPSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLndlYmFwcCIpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXNXZWJBcHAgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
cHBsZS53ZWJhcHAiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1dlYkFwcDsKK30KKworYm9vbCBJ
T1NBcHBsaWNhdGlvbjo6aXNPa0N1cGlkKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc09rQ3VwaWQg
PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm9rY3VwaWQuYXBwIik7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc09rQ3VwaWQgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5va2N1cGlkLmFwcCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzT2tDdXBpZDsKK30KKwor
Ym9vbCBJT1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9vaygpCit7CisgICAgc3RhdGljIGJvb2wgaXNG
YWNlYm9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZmFjZWJvb2suRmFjZWJv
b2siKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzRmFjZWJvb2sgPT0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImNvbS5mYWNlYm9vay5GYWNlYm9vayIpLCAiU2hvdWxkIG5vdCBiZSBj
YWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0
dXJuIGlzRmFjZWJvb2s7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzRGFpamlzZW5EaWN0
aW9uYXJ5KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RhaWppc2VuRGljdGlvbmFyeSA9IGFwcGxp
Y2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJqcC5jby5zaG9nYWt1a2FuLmRhaWppc2VuMjAwOWkiKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzRGFpamlzZW5EaWN0aW9uYXJ5ID09IGFwcGxpY2F0
aW9uQnVuZGxlSXNFcXVhbFRvKCJqcC5jby5zaG9nYWt1a2FuLmRhaWppc2VuMjAwOWkiKSwgIlNo
b3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KSIpOworICAgIHJldHVybiBpc0RhaWppc2VuRGljdGlvbmFyeTsKK30KKworYm9vbCBJT1NBcHBs
aWNhdGlvbjo6aXNOQVNBSEQoKQoreworICAgIHN0YXRpYyBib29sIGlzTkFTQUhEID0gYXBwbGlj
YXRpb25CdW5kbGVJc0VxdWFsVG8oImdvdi5uYXNhLk5BU0FIRCIpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNOQVNBSEQgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImdvdi5uYXNh
Lk5BU0FIRCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzTkFTQUhEOworfQorCitib29sIElPU0Fw
cGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25lKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBp
c1RoZUVjb25vbWlzdE9uSXBob25lID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5l
Y29ub21pc3QuaXBob25lIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1RoZUVjb25vbWlz
dE9uSXBob25lID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZWNvbm9taXN0Lmlw
aG9uZSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzVGhlRWNvbm9taXN0T25JcGhvbmU7Cit9CisK
Ky8vIEZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgd2hlbiB0aGUgV2ViUHJvY2VzcyBp
cyBjaGFuZ2VkIHRvIGFuIFhQQyBzZXJ2aWNlLgorYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNXZWJQ
cm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1dlYlByb2Nlc3MgPSBbW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQiXQorICAgICAgICB8fCBbW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQiXQorICAgICAgICB8fCBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUuV2ViUHJvY2VzcyJd
OworICAgIHJldHVybiBpc1dlYlByb2Nlc3M7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246Omlz
SUJvb2tzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0lCb29rcyA9IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uYXBwbGUuaUJvb2tzIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rcyIp
LCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpIik7CisgICAgcmV0dXJuIGlzSUJvb2tzOworfQorCisjZW5kaWYKKwordm9pZCBzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVy
KQoreworICAgIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpID0gYnVuZGxlSWRlbnRpZmll
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNWJkNzE3OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1NfaAot
I2RlZmluZSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1NfaAotCi0vLyBGSVhNRTogV2Ugc2hv
dWxkIGNvbnNpZGVyIG1lcmdpbmcgdGhpcyBmaWxlIHdpdGggUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmguCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGlj
YXRpb25Jc01vYmlsZU1haWwoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01v
YmlsZVNhZmFyaSgpOwotYm9vbCBhcHBsaWNhdGlvbklzRHVtcFJlbmRlclRyZWUoKTsKLWJvb2wg
YXBwbGljYXRpb25Jc01vYmlsZVN0b3JlKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0
aW9uSXNXZWJBcHAoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc09rQ3VwaWQo
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0ZhY2Vib29rKCk7Ci1XRUJDT1JF
X0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKLWJvb2wgYXBw
bGljYXRpb25Jc05BU0FIRCgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzVGhl
RWNvbm9taXN0T25JUGhvbmUoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc1dl
YlByb2Nlc3MoKTsKLWJvb2wgYXBwbGljYXRpb25Jc0lCb29rc09uSU9TKCk7Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPU19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYTczNzYuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKLQotLy8g
RklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZmlsZSB3aXRoIFJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5jcHAuCi0jaWYgUExBVEZPUk0oSU9TKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01vYmlsZU1haWwoKQotewotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzTW9iaWxlTWFpbCA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5tb2JpbGVtYWlsIl07Ci0gICAg
cmV0dXJuIGlzTW9iaWxlTWFpbDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJp
KCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc01vYmlsZVNhZmFyaSA9IFtbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBs
ZS5tb2JpbGVzYWZhcmkiXTsKLSAgICByZXR1cm4gaXNNb2JpbGVTYWZhcmk7Ci19Ci0KLWJvb2wg
YXBwbGljYXRpb25Jc0R1bXBSZW5kZXJUcmVlKCkKLXsKLSAgICAvLyBXZSB1c2UgYSBwcmVmaXgg
bWF0Y2ggaW5zdGVhZCBvZiBzdHJpY3QgZXF1YWxpdHkgc2luY2UgTGF5b3V0VGVzdFJlbGF5IG1h
eSBsYXVuY2ggbXVsdGlwbGUgaW5zdGFuY2VzIG9mCi0gICAgLy8gRHVtcFJlbmRlclRyZWUgd2hl
cmUgdGhlIGJ1bmRsZSBpZGVudGlmaWVyIG9mIGVhY2ggaW5zdGFuY2UgaGFzIGEgdW5pcXVlIHN1
ZmZpeC4KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0R1bXBSZW5kZXJUcmVlID0gW1tbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaGFzUHJlZml4OkAib3JnLndlYmtpdC5E
dW1wUmVuZGVyVHJlZSJdOyAvLyBlLmcuIG9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUwCi0gICAg
cmV0dXJuIGlzRHVtcFJlbmRlclRyZWU7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01vYmlsZVN0
b3JlKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc01vYmlsZVN0b3JlID0gW1tbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFw
cGxlLk1vYmlsZVN0b3JlIl07Ci0gICAgcmV0dXJuIGlzTW9iaWxlU3RvcmU7Ci19Ci0KLWJvb2wg
YXBwbGljYXRpb25Jc1dlYkFwcCgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNXZWJBcHAg
PSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJp
bmc6QCJjb20uYXBwbGUud2ViYXBwIl07Ci0gICAgcmV0dXJuIGlzV2ViQXBwOwotfQotCi1ib29s
IGFwcGxpY2F0aW9uSXNPa0N1cGlkKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc09rQ3Vw
aWQgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9T
dHJpbmc6QCJjb20ub2tjdXBpZC5hcHAiXTsKLSAgICByZXR1cm4gaXNPa0N1cGlkOwotfQotCi1i
b29sIGFwcGxpY2F0aW9uSXNGYWNlYm9vaygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNG
YWNlYm9vayA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1
YWxUb1N0cmluZzpAImNvbS5mYWNlYm9vay5GYWNlYm9vayJdOwotICAgIHJldHVybiBpc0ZhY2Vi
b29rOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnkoKQotewotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzRGFpamlzZW5EaWN0aW9uYXJ5ID0gW1tbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAianAuY28uc2hvZ2Fr
dWthbi5kYWlqaXNlbjIwMDlpIl07Ci0gICAgcmV0dXJuIGlzRGFpamlzZW5EaWN0aW9uYXJ5Owot
fQotCi1ib29sIGFwcGxpY2F0aW9uSXNOQVNBSEQoKQotewotICAgIHN0YXRpYyBjb25zdCBib29s
IGlzTkFTQUhEID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNF
cXVhbFRvU3RyaW5nOkAiZ292Lm5hc2EuTkFTQUhEIl07Ci0gICAgcmV0dXJuIGlzTkFTQUhEOwot
fQotCi1ib29sIGFwcGxpY2F0aW9uSXNUaGVFY29ub21pc3RPbklQaG9uZSgpCi17Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNUaGVFY29ub21pc3RPbklQaG9uZSA9IFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5lY29ub21pc3Qu
aXBob25lIl07Ci0gICAgcmV0dXJuIGlzVGhlRWNvbm9taXN0T25JUGhvbmU7Ci19Ci0KLS8vIEZJ
WE1FOiB0aGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgd2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBjaGFu
Z2VkIHRvIGFuIFhQQyBzZXJ2aWNlLgotYm9vbCBhcHBsaWNhdGlvbklzV2ViUHJvY2VzcygpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNXZWJQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LkRldmVsb3BtZW50Il0gfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVu
ZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50Il0gfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVh
bFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYlByb2Nlc3MiXTsKLSAgICByZXR1cm4gaXNXZWJQcm9j
ZXNzOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNJQm9va3NPbklPUygpCi17Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNJQm9va3NPbklPUyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5pQm9va3MiXTsKLSAgICBy
ZXR1cm4gaXNJQm9va3NPbklPUzsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IGFkZGI1MjQuLjI3YTQ1
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVk
aW9TZXJ2aWNlcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKaW5kZXggYTFmYWVhNS4uMDRkZWY4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZsdXNoU2No
ZWR1bGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCmluZGV4IDQ0NGI0YzYuLjFiMjNiNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL0xheWVyRmx1
c2hTY2hlZHVsZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2lu
Y2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCgpCiAgICAgLy8gd2Ugc3Rp
bGwgYWxsb3cgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS83NDAzMzI4Pi4gU2luY2UgdGhlIHJh
Y2UgY29uZGl0aW9uIGFuZCBzdWJzZXF1ZW50CiAgICAgLy8gY3Jhc2ggYXJlIGVzcGVjaWFsbHkg
dHJvdWJsZXNvbWUgZm9yIGlCb29rcywgd2UgbmV2ZXIgYWxsb3cgdGhlIG9ic2VydmVyIHRvIGJl
IGFkZGVkIHRvIHRoZQogICAgIC8vIG1haW4gcnVuIGxvb3AgaW4gaUJvb2tzLgotICAgIGlmIChh
cHBsaWNhdGlvbklzSUJvb2tzT25JT1MoKSkKKyAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzSUJv
b2tzKCkpCiAgICAgICAgIHJldHVybiBXZWJUaHJlYWRSdW5Mb29wKCk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5MzJkMzUyLi44OWNiMGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNDQsNyArNDQsNyBAQAog
I2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3NJT1MuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2lt
cG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAi
VGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDJhNGQ1NmMuLjViYTFh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTM1LDcgKzM1LDcgQEAKICNp
bXBvcnQgIkFWS2l0U1BJLmgiCiAjaW1wb3J0ICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisj
aW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMu
aCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggZTlhNjMyMy4uYjJlZDk0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAt
MzAsOCArMzAsOCBAQAogCiAjaW1wb3J0ICJGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCIKICNp
bXBvcnQgIkpTRE9NV2luZG93QmFzZS5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjaW1wb3J0ICJUaHJlYWRHbG9iYWxEYXRhLmgiCi0jaW1wb3J0ICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3NJT1MuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRS
dW4uaCIKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgV2ViVGhyZWFkU2V0RGVsZWdhdGVTb3Vy
Y2VSdW5Mb29wTW9kZShDRlN0cmluZ1JlZiBtb2RlKQogCiB2b2lkIFdlYlRocmVhZEVuYWJsZSh2
b2lkKQogewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghV2ViQ29yZTo6YXBwbGlj
YXRpb25Jc1dlYlByb2Nlc3MoKSwgIlRoZSBXZWJQcm9jZXNzIHNob3VsZCBuZXZlciBydW4gYSBX
ZWIgVGhyZWFkIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFXZWJDb3JlOjpJ
T1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCksICJUaGUgV2ViUHJvY2VzcyBzaG91bGQgbmV2
ZXIgcnVuIGEgV2ViIFRocmVhZCIpOwogCiAgICAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRD
b250cm9sID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiAgICAgcHRocmVhZF9vbmNlKCZpbml0Q29udHJv
bCwgU3RhcnRXZWJUaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0KaW5kZXggYjMwZmQ4MS4uNWJhMjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2lkZ2V0TWFjLm1tCkBAIC0xOTQsOSArMTk0LDEzIEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFw
aGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwYWludCB0aGUgdmlldyBhdCBhbGwgaWYgaXQncyBsYXllciBiYWNrZWQsIGJlY2F1c2UgdGhl
biB3ZSdsbCBlbmQgdXAKICAgICAvLyB3aXRoIG11bHRpcGxlIGNvcGllcyBvZiB0aGUgdmlldyBj
b250ZW50cywgb25lIGluIHRoZSB2aWV3J3MgbGF5ZXIgaXRzZWxmIGFuZCBvbmUgaW4gdGhlCiAg
ICAgLy8gV2ViSFRNTFZpZXcncyBiYWNraW5nIHN0b3JlIChlaXRoZXIgYSBsYXllciBvciB0aGUg
d2luZG93IGJhY2tpbmcgc3RvcmUpLgotICAgIC8vIEhvd2V2ZXIsIFF1aWNrZW4gRXNzZW50aWFs
cyBoYXMgYSBwbHVnLWluIHRoYXQgZGVwZW5kcyBvbiBkcmF3aW5nIHRvIHVwZGF0ZSB0aGUgbGF5
ZXIgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTUyMjEyMzE+KS4KLSAgICBpZiAodmlldy5sYXllciAm
JiAhYXBwbGljYXRpb25Jc1F1aWNrZW5Fc3NlbnRpYWxzKCkpCisgICAgaWYgKHZpZXcubGF5ZXIp
IHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEhvd2V2ZXIsIFF1aWNrZW4gRXNzZW50
aWFscyBoYXMgYSBwbHVnLWluIHRoYXQgZGVwZW5kcyBvbiBkcmF3aW5nIHRvIHVwZGF0ZSB0aGUg
bGF5ZXIgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTUyMjEyMzE+KS4KKyAgICAgICAgaWYgKCFNYWNB
cHBsaWNhdGlvbjo6aXNRdWlja2VuRXNzZW50aWFscygpKQorI2VuZGlmCiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0LCBiZWNh
dXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIHZpZXdzIGNhbiBpbnZva2UgYXJiaXRyYXJ5CiAg
ICAgLy8gY29kZSwgd2hpY2ggY2FuIGRlcmVmIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGExZWE5YzguLjEzZDFkZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0K
QEAgLTM1LDcgKzM1LDcgQEAKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJl
c291cmNlSGFuZGxlLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxvYWRlci5oIgotI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKICNpbXBvcnQgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4
IGMzYmRlOGEuLjhhMjY4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC03MCw3ICs3MCw3IEBAIENG
RGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0
aW9uUmVmKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgot
I2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKIAogQGlu
dGVyZmFjZSBOU1VSTFJlcXVlc3QgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZDE0ZDAzMC4uMjBkMzg0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6bGF5ZXJXaWxsQmVEZXN0cm95ZWQoKQogCiBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6bmVlZHNJT1NEdW1wUmVuZGVyVHJlZU1haW5GcmFtZVJlbmRlclZpZXdM
YXllcklzQWx3YXlzT3BhcXVlSGFjayhjb25zdCBHcmFwaGljc0xheWVyJiBsYXllcikgY29uc3QK
IHsKLSAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBhcHBsaWNhdGlvbklz
RHVtcFJlbmRlclRyZWUoKSkgeworICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVy
ICYmIElPU0FwcGxpY2F0aW9uOjppc0R1bXBSZW5kZXJUcmVlKCkpIHsKICAgICAgICAgLy8gSW4g
aU9TIFdlYktpdDEgdGhlIG1haW4gZnJhbWUncyBSZW5kZXJWaWV3IGxheWVyIGlzIGFsd2F5cyB0
cmFuc3BhcmVudC4gV2UgbGllIHRoYXQgaXQgaXMgb3BhcXVlIHNvIHRoYXQKICAgICAgICAgLy8g
aW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dCgpIHRlc3RzIHN1Y2NlZWQuCiAgICAgICAgIEFTU0VS
VF9VTlVTRUQobGF5ZXIsICFsYXllci5jb250ZW50c09wYXF1ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAppbmRleCAyNTQ2ZDU0Li40ZDYxOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC00MSw3ICs0
MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9T
KQotI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRpZgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKEhvc3RJbmZvcm1hdGlvbiogaG9zdCwgUmVz
b3UKICAgICAgICAgICAgIHJlcXVlc3RzUGVuZGluZy5yZW1vdmVGaXJzdCgpOwogICAgICAgICAg
ICAgaG9zdC0+YWRkTG9hZEluUHJvZ3Jlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCkpOwogI2lmIFBM
QVRGT1JNKElPUykKLSAgICAgICAgICAgIGlmICghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSkg
eworICAgICAgICAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpIHsKICAg
ICAgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IGQyODI1YWYuLjc3
NzQ2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTU3LDcgKzU3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQm94Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVz
c2FnZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5D
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9s
bGVyLm1tCmluZGV4IDQwYjAyYjYuLjg0MDZjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KICNlbmRpZgpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVBdWRpb1Nlc3Npb24oKQogICAgICAgICByZXR1cm47CiAKICAgICB3
YXNBdWRpb1Nlc3Npb25Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgaWYgKCFXZWJDb3JlOjphcHBs
aWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpCisgICAgaWYgKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlv
bjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpNZWRpYVBsYXliYWNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KaW5kZXggNDliNzE5My4uMjNmZjM3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTE0OCw3ICsxNDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtSU9TLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05TRmlsZU1hbmFnZXJTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UXVpY2tMb29rLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lP
Uy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRp
ZgogCiAjaWYgSEFWRShBUFBfTElOS1MpCkBAIC0yMjM5LDcgKzIyMzksNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoV2ViQ29yZTo6UXVpY2tM
b29rSGFuZGxlJiBoYQogICAgICAgICAgICAgOiBtX2ZpcnN0UmVxdWVzdFVSTChoYW5kbGUuZmly
c3RSZXF1ZXN0VVJMKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIE5TVVJMICpwcmV2aWV3UmVx
dWVzdFVSTCA9IGhhbmRsZS5wcmV2aWV3UmVxdWVzdFVSTCgpOwotICAgICAgICAgICAgaWYgKCFh
cHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpIHsKKyAgICAgICAgICAgIGlmICghSU9TQXBwbGlj
YXRpb246OmlzTW9iaWxlU2FmYXJpKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGtlZXBz
IHRoZSBRTFByZXZpZXdDb252ZXJ0ZXIgYWxpdmUgdG8gc2VydmUgYW55IHN1YnJlc291cmNlIHJl
cXVlc3RzLgogICAgICAgICAgICAgICAgIC8vIEl0IGlzIHJlbW92ZWQgYnkgLVtXZWJEYXRhU291
cmNlIGRlYWxsb2NdLgogICAgICAgICAgICAgICAgIGFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhG
aWxlRm9yVVJMKHByZXZpZXdSZXF1ZXN0VVJMLCBoYW5kbGUuY29udmVydGVyKCksIG5pbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAwNTY0YzVmLi5jYmJmMjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTI0MTEsOCArMjQxMSwxMiBA
QCBzdGF0aWMgV2ViRnJhbWVMb2FkVHlwZSB0b1dlYkZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlw
ZSBmcmFtZUxvYWRUeXBlKQogCiBzdGF0aWMgYm9vbCBuZWVkc01pY3Jvc29mdE1lc3NlbmdlckRP
TURvY3VtZW50V29ya2Fyb3VuZCgpCiB7Ci0gICAgc3RhdGljIGJvb2wgbmVlZHNXb3JrYXJvdW5k
ID0gYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlcigpICYmIFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OihOU1N0cmluZyAqKWtDRkJ1bmRsZVZl
cnNpb25LZXldIGNvbXBhcmU6QCI3LjEiIG9wdGlvbnM6TlNOdW1lcmljU2VhcmNoXSA9PSBOU09y
ZGVyZWRBc2NlbmRpbmc7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBmYWxzZTsKKyNl
bHNlCisgICAgc3RhdGljIGJvb2wgbmVlZHNXb3JrYXJvdW5kID0gTWFjQXBwbGljYXRpb246Omlz
TWljcm9zb2Z0TWVzc2VuZ2VyKCkgJiYgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0Rm9y
SW5mb0RpY3Rpb25hcnlLZXk6KE5TU3RyaW5nICopa0NGQnVuZGxlVmVyc2lvbktleV0gY29tcGFy
ZTpAIjcuMSIgb3B0aW9uczpOU051bWVyaWNTZWFyY2hdID09IE5TT3JkZXJlZEFzY2VuZGluZzsK
ICAgICByZXR1cm4gbmVlZHNXb3JrYXJvdW5kOworI2VuZGlmCiB9CiAKIC0gKERPTURvY3VtZW50
ICopRE9NRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBkYmIyM2IwLi4yM2U2MjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCkBAIC0zMTgsMTEgKzMxOCwxOSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICAgICAgY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciA9IFsoaWQp
W193ZWJWaWV3IFVJRGVsZWdhdGVdIF93ZWJWaWV3Ol93ZWJWaWV3IGltbWVkaWF0ZUFjdGlvbkFu
aW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0OndlYkhpdFRlc3RSZXN1bHQuZ2V0KCkg
d2l0aFR5cGU6X3R5cGVdOwogICAgIH0KIAorICAgIGlmIChjdXN0b21DbGllbnRBbmltYXRpb25D
b250cm9sbGVyID09IFtOU051bGwgbnVsbF0pIHsKKyAgICAgICAgW3NlbGYgX2NhbmNlbEltbWVk
aWF0ZUFjdGlvbl07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgcGVybWFuZW50bHkgZGlzYWJsZSB0aGlzIGZv
ciBpVHVuZXMuIHJkYXI6Ly9wcm9ibGVtLzE5NDYxMzU4Ci0gICAgaWYgKGN1c3RvbUNsaWVudEFu
aW1hdGlvbkNvbnRyb2xsZXIgPT0gW05TTnVsbCBudWxsXSB8fCBhcHBsaWNhdGlvbklzSVR1bmVz
KCkpIHsKKyAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzSVR1bmVzKCkpIHsKICAgICAgICAgW3Nl
bGYgX2NhbmNlbEltbWVkaWF0ZUFjdGlvbl07CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5k
aWYKKwogICAgIGlmIChjdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVyICYmIFtjdXN0b21D
bGllbnRBbmltYXRpb25Db250cm9sbGVyIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNJ
bW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyKV0pCiAgICAgICAgIFtfaW1tZWRpYXRl
QWN0aW9uUmVjb2duaXplciBzZXRBbmltYXRpb25Db250cm9sbGVyOihpZCA8TlNJbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sbGVyPiljdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVy
XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzc4OWY3
ZC4uYjZjMzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjUyLDcg
KzI1Miw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vYmlsZUdlc3RhbHRTUEkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1TY3JlZW4uaD4KLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9T
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFJ1bi5oPgpAQCAt
NzM4LDcgKzczNyw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVBcHBsaWNhdGlvbkNh
Y2hlUGF0aElmTmVjZXNzYXJ5KCkKICAgICBpZiAoIWFwcE5hbWUpCiAgICAgICAgIGFwcE5hbWUg
PSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgaWYgKFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSB8fCBX
ZWJDb3JlOjphcHBsaWNhdGlvbklzV2ViQXBwKCkpCisgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxp
Y2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dl
YkFwcCgpKQogICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwogI2Vu
ZGlmCiAKQEAgLTc3MSw3ICs3NzAsMTEgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUFw
cGxpY2F0aW9uU3RhdGlzdGljc1N0b3JhZ2VQYXRoSWZOZWNlc3NhcnkoKQogCiBzdGF0aWMgYm9v
bCBzaG91bGRFbmFibGVMb2FkRGVmZXJyaW5nKCkKIHsKLSAgICByZXR1cm4gIWFwcGxpY2F0aW9u
SXNBZG9iZUluc3RhbGxlcigpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbHNlCisgICAgcmV0dXJuICFNYWNBcHBsaWNhdGlvbjo6aXNBZG9iZUluc3RhbGxlcigpOwor
I2VuZGlmCiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFJlc3RyaWN0V2luZG93Rm9jdXMoKQpAQCAt
Nzc5LDcgKzc4Miw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlc3RyaWN0V2luZG93Rm9jdXMoKQog
I2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgcmV0dXJuICFh
cHBsaWNhdGlvbklzSFJCbG9jaygpOworICAgIHJldHVybiAhTWFjQXBwbGljYXRpb246OmlzSFJC
bG9jaygpOwogI2VuZGlmCiB9CiAKQEAgLTgwMiw3ICs4MDUsNyBAQCBzdGF0aWMgYm9vbCBzaG91
bGRSZXN0cmljdFdpbmRvd0ZvY3VzKCkKIHN0YXRpYyBib29sIG5lZWRzT3V0bG9va1F1aXJrc1Nj
cmlwdCgpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNPdXRsb29rTmVlZGluZ1F1aXJrc1NjcmlwdCA9
ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9Q
QVJTRVIpCi0gICAgICAgICYmIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRPdXRsb29rKCk7CisgICAg
ICAgICYmIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE91dGxvb2soKTsKICAgICByZXR1cm4g
aXNPdXRsb29rTmVlZGluZ1F1aXJrc1NjcmlwdDsKIH0KIApAQCAtODM3LDEzICs4NDAsMTMgQEAg
c3RhdGljIGJvb2wgc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkK
ICNpZiBQTEFURk9STShJT1MpCiBzdGF0aWMgYm9vbCBzaG91bGRUcmFuc2Zvcm1zQWZmZWN0T3Zl
cmZsb3coKQogewotICAgIHN0YXRpYyBib29sIHNob3VsZFRyYW5zZm9ybXNBZmZlY3RPdmVyZmxv
dyA9ICFhcHBsaWNhdGlvbklzT2tDdXBpZCgpIHx8IFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJL
SVRfRklSU1RfVkVSU0lPTl9XSVRIX0NTU19UUkFOU0ZPUk1TX0FGRkVDVElOR19PVkVSRkxPVyk7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93ID0gIUlPU0Fw
cGxpY2F0aW9uOjppc09rQ3VwaWQoKSB8fCBXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJ
UlNUX1ZFUlNJT05fV0lUSF9DU1NfVFJBTlNGT1JNU19BRkZFQ1RJTkdfT1ZFUkZMT1cpOwogICAg
IHJldHVybiBzaG91bGRUcmFuc2Zvcm1zQWZmZWN0T3ZlcmZsb3c7CiB9CiAKIHN0YXRpYyBib29s
IHNob3VsZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVudHMoKQogewotICAgIHN0
YXRpYyBib29sIHNob3VsZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVudHMgPSAh
YXBwbGljYXRpb25Jc0ZhY2Vib29rKCkgfHwgV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9G
SVJTVF9WRVJTSU9OX1dJVEhfV0lORE9XX09OX0VSUk9SKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9yRXZlbnRzID0gIUlPU0FwcGxpY2F0aW9u
Ojppc0ZhY2Vib29rKCkgfHwgV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJT
SU9OX1dJVEhfV0lORE9XX09OX0VSUk9SKTsKICAgICByZXR1cm4gc2hvdWxkRGlzcGF0Y2hKYXZh
U2NyaXB0V2luZG93T25FcnJvckV2ZW50czsKIH0KIApAQCAtODYxLDcgKzg2NCw3IEBAIHN0YXRp
YyBib29sIHNob3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQog
I2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3Jv
dW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRf
RklSU1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FDWV9CQUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVI
QVZJT1IpOwogI2Vsc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5k
U2l6ZVNob3J0aGFuZEJlaGF2aW9yID0gYXBwbGljYXRpb25Jc1ZlcnNpb25zKCkKKyAgICBzdGF0
aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yID0g
TWFjQXBwbGljYXRpb246OmlzVmVyc2lvbnMoKQogICAgICAgICAmJiAhV2ViS2l0TGlua2VkT25P
ckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpF
X1NIT1JUSEFORF9CRUhBVklPUik7CiAjZW5kaWYKICAgICByZXR1cm4gc2hvdWxkVXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcjsKQEAgLTk3MSw3ICs5NzQsNyBAQCBzdGF0
aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAg
ICAgICBTZXR0aW5nczo6c2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0
ZXJzKHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpKTsKIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkK
KyAgICAgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKQogICAgICAgICAg
ICAgU2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KHRydWUpOwog
I2VuZGlmCiAKQEAgLTExOTYsNyArMTE5OSw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxp
emVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAgICAgICAgIFdlYkNvcmVPYmpDRGVhbGxv
Y09uV2ViVGhyZWFkKFtXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyIGNsYXNzXSk7CiAgICAgICAg
IFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKFtXZWJWaWV3IGNsYXNzXSk7CiAgICAgICAg
IFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKFtXZWJWaXNpYmxlUG9zaXRpb24gY2xhc3Nd
KTsKLSAgICAgICAgaWYgKGFwcGxpY2F0aW9uSXNUaGVFY29ub21pc3RPbklQaG9uZSgpICYmICFX
ZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ERUxFR0FURV9D
QUxMU19JTl9DT01NT05fUlVOTE9PUF9NT0RFUykpCisgICAgICAgIGlmIChJT1NBcHBsaWNhdGlv
bjo6aXNUaGVFY29ub21pc3RPbklwaG9uZSgpICYmICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ERUxFR0FURV9DQUxMU19JTl9DT01NT05fUlVOTE9PUF9N
T0RFUykpCiAgICAgICAgICAgICBXZWJUaHJlYWRTZXREZWxlZ2F0ZVNvdXJjZVJ1bkxvb3BNb2Rl
KGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgICAgIFdlYlRocmVhZEVuYWJsZSgpOwogICAg
ICAgICBpc1dlYlRocmVhZEVuYWJsZWQgPSBZRVM7CkBAIC0xMzIyLDcgKzEzMjUsNyBAQCBzdGF0
aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogCiAr
ICh2b2lkKXJlZ2lzdGVyRm9yTWVtb3J5Tm90aWZpY2F0aW9ucwogewotICAgIEJPT0wgc2hvdWxk
QXV0b0NsZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UgPSAhV2ViQ29yZTo6YXBwbGljYXRpb25J
c01vYmlsZVNhZmFyaSgpOworICAgIEJPT0wgc2hvdWxkQXV0b0NsZWFyUHJlc3N1cmVPbk1lbW9y
eVJlbGVhc2UgPSAhV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCk7CiAK
ICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmluc3RhbGxNZW1vcnlSZWxl
YXNlQmxvY2soXnsKICAgICAgICAgW1dlYlZpZXcgX2hhbmRsZU1lbW9yeVdhcm5pbmddOwpAQCAt
MjE0Myw3ICsyMTQ2LDcgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50VGVhcmRvd25FbmFibGVk
KCkKIAogLSAoQk9PTClfbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MKIHsK
LSAgICBzdGF0aWMgQk9PTCBuZWVkc1F1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9JRV9DT01QQVRJQkxFX0tFWUJPQVJEX0VWRU5UX0RJU1BB
VENIKSAmJiAhYXBwbGljYXRpb25Jc1NhZmFyaSgpOworICAgIHN0YXRpYyBCT09MIG5lZWRzUXVp
cmtzID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0lF
X0NPTVBBVElCTEVfS0VZQk9BUkRfRVZFTlRfRElTUEFUQ0gpICYmICFNYWNBcHBsaWNhdGlvbjo6
aXNTYWZhcmkoKTsKICAgICByZXR1cm4gbmVlZHNRdWlya3M7CiB9CiAKQEAgLTIxNTUsNyArMjE1
OCw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAKIHN0YXRp
YyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKIHsKLSAgICBzdGF0aWMg
Ym9vbCBuZWVkc1F1aXJrID0gYXBwbGljYXRpb25Jc0FwZXJ0dXJlKCk7CisgICAgc3RhdGljIGJv
b2wgbmVlZHNRdWlyayA9IE1hY0FwcGxpY2F0aW9uOjppc0FwZXJ0dXJlKCk7CiAgICAgcmV0dXJu
IG5lZWRzUXVpcms7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKQEAgLTIxNzAsMTAgKzIx
NzMsMTAgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQog
ICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYxMzQ+IGFu
ZAogICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYzMzQ+
LgogICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25OZWVkaW5nUGFyc2VyUXVpcmtzID0gIVdl
YktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0hUTUw1X1BBUlNF
UikKLSAgICAgICAgJiYgKGFwcGxpY2F0aW9uSXNBT0xJbnN0YW50TWVzc2VuZ2VyKCkgfHwgYXBw
bGljYXRpb25Jc01pY3Jvc29mdE15RGF5KCkpOworICAgICAgICAmJiAoTWFjQXBwbGljYXRpb246
OmlzQU9MSW5zdGFudE1lc3NlbmdlcigpIHx8IE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE15
RGF5KCkpOwogICAgIAogICAgIC8vIE1haWwuYXBwIG11c3QgY29udGludWUgdG8gZGlzcGxheSBI
VE1MIGVtYWlsIHRoYXQgY29udGFpbnMgcXVpcmt5IG1hcmt1cC4KLSAgICBzdGF0aWMgYm9vbCBp
c0FwcGxlTWFpbCA9IGFwcGxpY2F0aW9uSXNBcHBsZU1haWwoKTsKKyAgICBzdGF0aWMgYm9vbCBp
c0FwcGxlTWFpbCA9IE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgpOwogCiAgICAgcmV0dXJu
IGlzQXBwbGljYXRpb25OZWVkaW5nUGFyc2VyUXVpcmtzCiAgICAgICAgIHx8IGlzQXBwbGVNYWls
CkBAIC0yMTg0LDcgKzIxODcsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxv
YWRpbmdRdWlyaygpCiAjZW5kaWYKICAgICAgICAgfHwgW1tzZWxmIHByZWZlcmVuY2VzXSB1c2VQ
cmVIVE1MNVBhcnNlclF1aXJrc107CiAjZWxzZQotICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRp
b25OZWVkaW5nUGFyc2VyUXVpcmtzID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklS
U1RfVkVSU0lPTl9XSVRIX0hUTUw1X1BBUlNFUikgJiYgYXBwbGljYXRpb25Jc0RhaWppc2VuRGlj
dGlvbmFyeSgpOworICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25OZWVkaW5nUGFyc2VyUXVp
cmtzID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0hU
TUw1X1BBUlNFUikgJiYgSU9TQXBwbGljYXRpb246OmlzRGFpamlzZW5EaWN0aW9uYXJ5KCk7CiAg
ICAgcmV0dXJuIGlzQXBwbGljYXRpb25OZWVkaW5nUGFyc2VyUXVpcmtzIHx8IFtbc2VsZiBwcmVm
ZXJlbmNlc10gdXNlUHJlSFRNTDVQYXJzZXJRdWlya3NdOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tCmluZGV4IDMxMjg5MWUuLjA2OWU5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2FuZGJveFV0aWxpdGll
cy5oIgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7CkBAIC00Miw3ICs0Miw3IEBAIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAg
ICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4g
dXBncmFkaW5nLgogICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2Fm
YXJpIGFuZCBXZWJBcHAgY3JlYXRlIGEgZGF0YSBzdG9yZSB3aXRoCiAgICAgLy8gdGhpcyBhcHBs
aWNhdGlvbiBjYWNoZSBwYXRoLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgYXMgb2YgcmlnaHQg
bm93LgotICAgIGlmIChXZWJDb3JlOjphcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkgfHwgV2Vi
Q29yZTo6YXBwbGljYXRpb25Jc1dlYkFwcCgpKSB7CisgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxp
Y2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dl
YkFwcCgpKSB7CiAgICAgICAgIE5TU3RyaW5nICpjYWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5
KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFw
cGxlLldlYkFwcENhY2hlIl07CiAKICAgICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNv
bHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNr
cy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLm1tCmlu
ZGV4IGI0NmQwMDcuLjJlMGRmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9WZXJzaW9uQ2hlY2tzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9WZXJzaW9uQ2hlY2tzLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaW1wb3J0IDxtYWNoLW8v
ZHlsZC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Myw3ICs0Myw3IEBA
IGJvb2wgbGlua2VkT25PckFmdGVyKExpYnJhcnlWZXJzaW9uIHZlcnNpb24pCiB7CiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIC8vIEFsd2F5cyBtYWtlIG5ldyBmZWF0dXJlcyBhdmFpbGFibGUgZm9y
IFNhZmFyaS4KLSAgICBpZiAoV2ViQ29yZTo6YXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpKQor
ICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAyMWRkODRmLi4yNjYyYTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQpAQCAtNTIsNyArNTIsNiBAQAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBv
cnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKICNpbXBvcnQgIldlYk1lbW9yeVByZXNzdXJlSGFuZGxl
cklPUy5oIgotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4K
ICNlbHNlCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KICNlbmRp
ZgpAQCAtMTgwLDcgKzE3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYKICAgICBwYXJhbWV0
ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gW2RlZmF1bHRzIGJvb2xG
b3JLZXk6V2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXJEZWZhdWx0c0tleV07CiAK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgcGFyYW1ldGVycy5zaG91bGRSZXdyaXRlQ29uc3RBc1Zh
ciA9IGFwcGxpY2F0aW9uSXNJQm9va3MoKTsKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJld3JpdGVD
b25zdEFzVmFyID0gTWFjQXBwbGljYXRpb246OmlzSUJvb2tzKCk7CiAjZW5kaWYKIAogI2lmIEhB
VkUoSE9TVEVEX0NPUkVfQU5JTUFUSU9OKQpAQCAtMzY1LDcgKzM2NCw3IEBAIFN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRo
ZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNj
b21wbGlzaCB0aGF0IGFueSBtb3JlLgogICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBu
ZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KLSAgICBpZiAoYXBwbGljYXRpb25J
c01vYmlsZVNhZmFyaSgpIHx8IGFwcGxpY2F0aW9uSXNXZWJBcHAoKSkKKyAgICBpZiAoSU9TQXBw
bGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkgfHwgSU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkp
CiAgICAgICAgIGFwcE5hbWUgPSBAImNvbS5hcHBsZS5XZWJBcHBDYWNoZSI7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCA5MmM2OThmLi40NzY4NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNjYsNyArNjYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhdGguaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGllcy5oPgotI2lt
cG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9s
bGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0SW5kaWNhdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IDY3ODU4ZjIuLmE5YjQzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC02Nyw3ICs2Nyw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIGJvb2wgZXhwZWN0c0xlZ2FjeUlt
cGxpY2l0UnViYmVyQmFuZENvbnRyb2woKQogewotICAgIGlmIChhcHBsaWNhdGlvbklzU2FmYXJp
KCkpIHsKKyAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzU2FmYXJpKCkpIHsKICAgICAgICAgY29u
c3QgaW50MzJfdCBmaXJzdFZlcnNpb25PZlNhZmFyaU5vdEV4cGVjdGluZ0ltcGxpY2l0UnViYmVy
QmFuZENvbnRyb2wgPSAweDAyMUEwRjAwOyAvLyA1MzguMTUuMAogICAgICAgICBib29sIGxpbmtl
ZEFnYWluc3RTYWZhcmlFeHBlY3RpbmdJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sID0gTlNWZXJz
aW9uT2ZMaW5rVGltZUxpYnJhcnkoIlNhZmFyaSIpIDwgZmlyc3RWZXJzaW9uT2ZTYWZhcmlOb3RF
eHBlY3RpbmdJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sOwogICAgICAgICByZXR1cm4gbGlua2Vk
QWdhaW5zdFNhZmFyaUV4cGVjdGluZ0ltcGxpY2l0UnViYmVyQmFuZENvbnRyb2w7CkBAIC01NDcs
NyArNTQ3LDcgQEAgQ0dSZWN0IFdlYlBhZ2VQcm94eTo6Ym91bmRzT2ZMYXllckluTGF5ZXJCYWNr
ZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVyICpsYXllcikKIAogYm9vbCBXZWJQYWdlUHJveHk6
OmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQoKQogewotICAgIHJldHVybiBhcHBsaWNh
dGlvbklzQXBwbGVNYWlsKCk7CisgICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFp
bCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9udChjb25zdCBTdHJpbmcmIGZvbnRG
YW1pbHksIGRvdWJsZSBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273049</attachid>
            <date>2016-03-04 15:01:28 -0800</date>
            <delta_ts>2016-03-04 15:52:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155035-20160304150113.patch</filename>
            <type>text/plain</type>
            <size>84142</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFhMzM5ZWI5NTNkOWJm
ZGJmMWVlODg3YWI3NzZjMmExODBiZGI3Yi4uZTE4YmU2Nzg4OTJjNThkNmE4YTk0NTFmMjAxM2Jl
MmQyZjI3OTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE2LTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNvbGlkYXRlIFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TIGlu
dG8KKyAgICAgICAgb25lIGZpbGUuIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6Cisg
ICAgICAgIC0gVGhlIGNoZWNrcyBub3cgYWxsIHJlbHkgb24gYXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCksIHdoaWNoIGhhcyB0aGUKKyAgICAgICAgICBiZW5lZml0IG9mIHdvcmtpbmcgaW4g
V0sxIGFuZCBXSzIgVUkvV2ViQ29udGVudC9OZXR3b3JraW5nIHByb2Nlc3Nlcy4KKyAgICAgICAg
LSBVc2UgbmFtZXNwYWNlcyB0byBkaXN0aW5ndWlzaCBNYWMgYW5kIGlPUyBhcHBsaWNhdGlvbnMg
aW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgICAgb24gdGhlIG1ldGhvZCBuYW1lLiBTbywgYXBw
bGljYXRpb25Jc0lCb29rc0ZvcklPUygpIGJlY29tZXMKKyAgICAgICAgICBJT1NBcHBsaWNhdGlv
bjo6aXNJQm9va3MoKS4KKyAgICAgICAgLSBVc2UgTlNCdW5kbGUgQVBJIG9uIGJvdGggaU9TIGFu
ZCBNYWMgaW5zdGVhZCBvZiB1c2luZyB0aGUgQ0YgQVBJIG9uIE1hYworICAgICAgICAgIGFuZCB0
aGUgTlMgQVBJIG9uIGlPUy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZp
ZXddKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRSdW5Mb29wKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNjcmlwdDo6c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNT
YWZhcmkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzQXBwbGVNYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc0lCb29rcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
Y0FwcGxpY2F0aW9uOjppc0Fkb2JlSW5zdGFsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0Fw
cGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TXlEYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBw
bGljYXRpb246OmlzTWljcm9zb2Z0T3V0bG9vayk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNRdWlja2VuRXNzZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNBcGVydHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6
aXNWZXJzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNIUkJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NvbGlkU3RhdGVOZXR3b3Jr
c0Rvd25sb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzSGlwQ2hh
dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSk6CisgICAgICAg
IChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHApOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzT2tDdXBpZCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNG
YWNlYm9vayk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEYWlqaXNlbkRp
Y3Rpb25hcnkpOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTkFTQUhEKToK
KyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25l
KToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzSUJvb2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9VUkxDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
TGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50UnVu
TG9vcCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFdlYlRo
cmVhZEVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6bmVlZHNJT1NEdW1wUmVu
ZGVyVHJlZU1haW5GcmFtZVJlbmRlclZpZXdMYXllcklzQWx3YXlzT3BhcXVlSGFjayk6CisKIDIw
MTYtMDMtMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1heCBvdXQgdGltZXIgdGhyb3R0bGluZyBpbW1lZGlhdGVseSBmb3IgcHJlLXJlbmRl
ciBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0NWJjZTk3ZGEwZTI0MGY2NTI3ZTA5N2JkZGZhNjcwYTVhYzAz
MmUxLi5hMGMyNGU3NzY3YjQwMGYyMGRhMDNlMDMyMGM0OTNmMzNhYzhmMjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToK
KwogMjAxNi0wMy0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbW92ZSB2Y3hwcm9qIGJ1aWxkIHN5c3RlbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGI0YmQ0ZTUxYzQ1ODdiN2M1MGViNGM4NjE3MjUzNzM0YTZhNDIxNmYuLjY3OWNjMGM2ZWEz
YTU4MDBiYzI2NzhlNGNmMGZkYWYzNTk0Njc0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIENvbnNvbGlkYXRlIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgcnVudGltZSBhcHBsaWNhdGlvbiBjaGVja3MuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW06CisKIDIwMTYtMDItMTcgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMV0gTlNU
aW1lciBpbiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGZpcmVzIG9uIHRoZSBtYWluIHRo
cmVhZCB3aXRob3V0IHRoZSBXZWJUaHJlYWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjI3ZTdm
NGQ5YTY3OGMxOGFjNjgwZmRkMTFkMDc4MzkzZWY3NTMzZC4uOGZkYTZkOTc1NTYxMzJkMmM2Mjlj
MTU4MDY2OTg0ODFkNjYyZWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29u
c29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4KKworICAgICAgICAqIFBsdWdpbnMv
V2ViUGx1Z2luQ29udHJvbGxlci5tbToKKyAgICAgICAgKGluaXRpYWxpemVBdWRpb1Nlc3Npb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgIChuZWVkc01pY3Jvc29mdE1lc3Nl
bmdlckRPTURvY3VtZW50V29ya2Fyb3VuZCk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyIF91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRo
SWZOZWNlc3NhcnkpOgorICAgICAgICAoc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZyk6CisgICAg
ICAgIChzaG91bGRSZXN0cmljdFdpbmRvd0ZvY3VzKToKKyAgICAgICAgKG5lZWRzT3V0bG9va1F1
aXJrc1NjcmlwdCk6CisgICAgICAgIChzaG91bGRUcmFuc2Zvcm1zQWZmZWN0T3ZlcmZsb3cpOgor
ICAgICAgICAoc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50cyk6Cisg
ICAgICAgIChzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKToK
KyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdy
b3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBlbmFibGVXZWJUaHJlYWRdKToKKyAgICAg
ICAgKCtbV2ViVmlldyByZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3NdKToKKyAg
ICAgICAgKG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfbmVlZHNQcmVIVE1MNVBhcnNlclF1aXJrc10pOgorCiAyMDE2LTAyLTI5ICBBZGEgQ2hh
biAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IHRoZSBuZXcgdmVyc2lvbiBv
ZiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyJ3Mgc2hvd01lbnVGb3JSZWN0IG1ldGhvZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlYWQ4ZWJmYTUzMjYzNDRlMDBhMzFmMjZkMzRiZTAyNDEwNzQwODQzLi5m
ZmMzYjc3NDI1Mzg1NGY2MzEwOWFlNTQ5MTgyNmQ0YjNmZGQ1Y2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTYtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBDb25zb2xpZGF0ZSBSdW50aW1lQXBwbGljYXRpb25DaGVja3MgYW5kIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0lPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIHJ1bnRpbWUgYXBwbGljYXRpb24gY2hlY2tzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6bGlua2VkT25PckFmdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmV4cGVjdHNMZWdhY3lJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKToK
KwogMjAxNi0wMy0wNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVGVtcG9yYXJpbHkgdXNlIGJ1bmRsZSBpZGVudGlmaWVyIGFzIHBhcnQgb2YgdXNlciBkaXJl
Y3Rvcnkgc3VmZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc1ZGQxZGY2YmFjNmM0OTdjYTM1
NmY3OGM5NmRlMzFhY2EyMTNmODkuLjNkMjRkMzkwOWQ3YmI5NmVkZjgwMzVkMDdmNGZjMTlhOTA0
ZmZkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTE1LDcgKzIxMTUsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAK
ICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgcGxhdGZvcm0vUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLmNwcAotICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHAKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKICAgICBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0M2VmZWJm
MGE3MDNhMmY1YjY4ZWY5MTg5MGYzNDhiOTRmNzY4YzkuLjc3Zjg5Zjg3MzYyZGQ4MTM2NGQzYzlk
MzEwZGMxYWFhZTc5ZGVjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTIsNyArMTA5Miw2IEBACiAJCTI5MzQ5NDBBMTZD
MDJDMDcwMDkwMTMxOCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1MjdDQzkzMTZCRjkyRUMw
MDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCAqLzsgfTsKIAkJMjkz
NDk0MEIxNkMwMkMwQTAwOTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1MjdD
Qzk1MTZCRjk1REQwMDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgKi87IH07CiAJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5M0VBRTFFMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyOTNFQUUy
MTEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5M0VBRTIwMTM1NkIzMkUw
MDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovOyB9OwogCQkyOTQ4OUZD
NzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NDg5RkM1MTJDMDBGMDMwMEQ4
M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovOyB9OwogCQkyOTQ5ODY4MzE5NTM0
MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTQ5ODY4MTE5NTM0MTk0MDA3MkQy
QkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi87IH07CiAJCTI5N0JFM0Q1MTZD
MDNDMDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjUyN0NDOTExNkJGOEJB
MTAwOUREQUMwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggKi87IH07CkBA
IC0xNzA0LDggKzE3MDMsNiBAQAogCQk0NEEyMERCOTBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9T
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRB
MjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBQjEyREZCOEFDMDBB
RTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJNDRBMjhBQUYxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMu
aCAqLzsgfTsKLQkJNDRDMzYzRjAwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDRDMzYzRUUwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lP
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ0
QzM2M0YxMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEMzNjNFRjBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovOyB9Owog
CQk0NEM5OTE4MjBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4MTBGM0QxRTBE
MDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9s
bGJhclRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CkBAIC0xNzMyLDYgKzE3
MjksNyBAQAogCQk0NjM0NTkyQzFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTky
QjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi87IH07CiAJCTQ2M0VC
NjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8q
IFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07
CisJCTQ2NUE4RTc5MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVBOEU3
ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovOyB9Owog
CQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCAqLzsgfTsKQEAgLTg1MzUsNyArODUzMyw2IEBACiAJCTI5MTdCNTYwMTQ3MzQ5NkMwMDUyQzlE
MCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjkxN0I1NjUxNDczNDk5NTAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVs
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5ZXJGbHVz
aFNjaGVkdWxlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5M0VBRTFF
MTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI5M0VBRTIwMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQw
MDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTkyMTEsOCArOTIwOCw2IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIz
RTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0Ig
LyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1M
TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRDMzYzRUUwRkFBN0JCMzAw
OTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhl
bWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTkyNDEsNiArOTIzNiw3IEBACiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dl
ck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBv
d2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYy
MDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxv
YWRDb3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVu
dFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50
VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjkxMiwxMCAr
MjI5MDgsOCBAQAogCQkJCTk4MzFBRTQ5MTU0MjI1QTIwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGlj
eS5oICovLAogCQkJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovLAogCQkJCUNERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21t
YW5kTGlzdGVuZXIuaCAqLywKLQkJCQkyOTNFQUUyMDEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCAqLywKKwkJCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQg
LyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovLAogCQkJCTI5M0VBRTFFMTM1NkIyRkUw
MDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAqLywKLQkJCQk0NEMzNjNFRTBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi8sCi0JCQkJ
NDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5t
bSAqLywKIAkJCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3Bw
ICovLAogCQkJCTUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oICov
LAogCQkJCTUxNDEyOThGMUM2MDFBODkwMDU5RTcxNCAvKiBTY29wZUd1YXJkLmggKi8sCkBAIC0y
NzcwNyw3ICsyNzcwMSw2IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQUUxRjEzNTZCMkZFMDA2
N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
NEMzNjNGMDBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QzZFQTYxQTExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RENzA4OTcxODM1OUY2RjAwMkIz
REM2IC8qIFNhbXBsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0IwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MzIwLDggKzMxMzEzLDYgQEAKIAkJCQkxQTU2OUQyMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9tZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJC
ODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjkzRUFF
MjExMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0NEMzNjNGMTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOEM2RUE2MTkxMUVGN0UwNDAwRkQ4
RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RE
NzA4OTYxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUU5MTFDQTBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTQzMSw2ICszMTQyMiw3IEBACiAJCQkJQzVBMUVBN0MxNTJC
Q0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQwMEQ3QTQxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDY1QThFNzkxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMzI3RDYxMTFBMzNB
MkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEx
Q0MwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE1MEY5RjIxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggYTZmODM2ZTcyYTA2M2M5OTRlNDZjYjIwNzA2ZjBlMjYwMDgxZmQzOC4uODg0NzQ1
YmUyMjU2ZTc3NGRiZmI3NzA1NjMzNjgwZmQzNDM5YzUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIK
ICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCi0jaW1wb3J0ICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oIgogI2ltcG9ydCAiU1ZHTmFtZXMuaCIKICNpbXBvcnQgIlNWR0VsZW1lbnQuaCIKICNp
bXBvcnQgIlRleHRJdGVyYXRvci5oIgpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpz
dHJpbmcpCiAgICAgLy8gVGhlIHBhcmVudFZpZXcgc2hvdWxkIGhhdmUgYW4gYWNjZXNzaWJpbGl0
eUNvbnRhaW5lciwgaWYgdGhlIFVJS2l0IGFjY2Vzc2liaWxpdHkgYnVuZGxlIHdhcyBsb2FkZWQu
IAogICAgIC8vIFRoZSBleGNlcHRpb24gaXMgRFJULCB3aGljaCB0ZXN0cyBhY2Nlc3NpYmlsaXR5
IHdpdGhvdXQgdGhlIGVudGlyZSBzeXN0ZW0gdHVybmluZyBhY2Nlc3NpYmlsaXR5IG9uLiBIZW5j
ZSwKICAgICAvLyB0aGlzIGNoZWNrIHNob3VsZCBiZSB2YWxpZCBmb3IgZXZlcnl0aGluZyBleGNl
cHQgRFJULgotICAgIEFTU0VSVChbcGFyZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udGFpbmVyXSB8
fCBhcHBsaWNhdGlvbklzRHVtcFJlbmRlclRyZWUoKSk7CisgICAgQVNTRVJUKFtwYXJlbnRWaWV3
IGFjY2Vzc2liaWxpdHlDb250YWluZXJdIHx8IElPU0FwcGxpY2F0aW9uOjppc0R1bXBSZW5kZXJU
cmVlKCkpOwogICAgIAogICAgIHJldHVybiBbcGFyZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udGFp
bmVyXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCmluZGV4IDE5ZmNhMjUwNTliNTY2OTgxZDhkMjhkNDdkNTkzNjdkNjRkYmRkNzIuLjAxNDk2
ZWU2YTQ3YzllYWRkNjI0NDkyOTNiYjBlYzBlZTVjOTIxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIFZN
JiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgICAgICBpZiAoYXBwbGljYXRpb25Jc0lUdW5lcygpIHx8IGFwcGxpY2F0aW9uSXNJQm9v
a3MoKSB8fCBTZXR0aW5nczo6c2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIoKSkKKyAgICAgICAgaWYg
KE1hY0FwcGxpY2F0aW9uOjppc0lUdW5lcygpIHx8IE1hY0FwcGxpY2F0aW9uOjppc0lCb29rcygp
IHx8IFNldHRpbmdzOjpzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcigpKQogICAgICAgICAgICAgdm0t
PnNldFNob3VsZFJld3JpdGVDb25zdEFzVmFyKHRydWUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggYjMzYWQ0ZjVi
MTFkZjM5OTdkNDUzMGVlYzcyMTU2YmZjNTAxMzI4MC4uNTcwZjljZmI4NWU4OWM4YjVhOTY2ZTQ5
OWIxMDhkNDE3NTNjY2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogSGlwQ2hhdCB0cmllcyB0byBz
ZXQgTG9jYXRpb24ucmVsb2FkIHdoaWNoIGNhdXNlcyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3du
IGluIHN0cmljdCBtb2RlIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzI0OTMxOTU5PikuCi0gICAgaWYg
KGFwcGxpY2F0aW9uSXNIaXBDaGF0KCkpCisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc0hpcENo
YXQoKSkKICAgICAgICAgc2xvdC5zZXRTdHJpY3RNb2RlKGZhbHNlKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkNTU4YzdhOThlY2VmMjc5
MTM1MTdmN2RjYjMzYzJkMzY3MjYyNWViLi5kOGU2ZjBhN2U1YWJkNzZkOWMwMzc5ZmE0OTU0MGUw
MWM5OWE5MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmlu
ZGV4IGIxNjkyOGY2NmQwZjljNWRjYmJmMDFmYzM3MDc5MTJiNjZhYjViMjguLjc5NGIxMjM1MTVk
NDg4YjBhMjMwMDhjOTBkZjJlMmZlYjBkMWUzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSAiRHluYW1pY0xpbmtlclNQSS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMg
dm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVgogI2lmIFBMQVRGT1JNKElPUykKIHN0YXRpYyBib29sIHNob3VsZE5v
dFBlcmZvcm1VUkxBZGp1c3RtZW50KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGROb3RQZXJm
b3JtVVJMQWRqdXN0bWVudCA9IGFwcGxpY2F0aW9uSXNOQVNBSEQoKSAmJiBkeWxkX2dldF9wcm9n
cmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzVfMDsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCA9IElPU0FwcGxpY2F0aW9uOjppc05BU0FI
RCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05f
NV8wOwogICAgIHJldHVybiBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudDsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggYTQ3
MDRkMjlmNmI3NDI4NjFmYTJmZDRmMDQxNTQyZWFjMzk2ZjAzZS4uNzZjYjhkMjA3OWI4YzE4ZmFh
ZGNhNzdkODc5NWRmOWQ1NjQ2ZGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGY1Nzk1Njk3MTEwZjY3MDBiMWJiMWUy
NDk0YmM0YjliNGZiYWYxOWEuLmE3M2ZkYWNkZjAzYmJjODY3NGNjNjI2NDI2NDNjZTNhZDM2YjVh
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIApAQCAtNzAsNyArNzAsNyBAQCBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKICAgICAvLyB3ZSBzdGlsbCBhbGxvdyB0
aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzc0MDMzMjg+LiBTaW5jZSB0aGUgcmFjZSBjb25kaXRp
b24gYW5kIHN1YnNlcXVlbnQKICAgICAvLyBjcmFzaCBhcmUgZXNwZWNpYWxseSB0cm91Ymxlc29t
ZSBmb3IgaUJvb2tzLCB3ZSBuZXZlciBhbGxvdyB0aGUgb2JzZXJ2ZXIgdG8gYmUgYWRkZWQgdG8g
dGhlCiAgICAgLy8gbWFpbiBydW4gbG9vcCBpbiBpQm9va3MuCi0gICAgaWYgKGFwcGxpY2F0aW9u
SXNJQm9va3NPbklPUygpKQorICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKSkKICAg
ICAgICAgcmV0dXJuIFdlYlRocmVhZFJ1bkxvb3AoKTsKICNlbmRpZgogICAgIHJldHVybiBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRl
eCBjZjdkNjI1M2RkZDNlOTViZjNjM2MzNTMzMDMwMDk4MDAwN2NhMWMwLi5jZTc1YjU3YmVjOWRi
NmNmZjFhOTg5YmNhY2QwOTQ2ZDNjMDkwMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgog
I2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVk
ZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU3lzdGVtTWVtb3J5Lmgi
CiAjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKICNlbmRpZgpAQCAtMTQ3NSw3ICsx
NDc1LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1
cmwpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIE1vYmlsZVN0b3JlIGRlcGVuZHMgb24gdGhl
IGlPUyA0LjAgZXJhIGNsaWVudCBkZWxlZ2F0ZSBtZXRob2QgYmVjYXVzZSB3ZWJWaWV3OnJlc291
cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291cmNlCiAgICAg
Ly8gZG9lc24ndCBsZXQgdGhlbSB0ZWxsIHdoZW4gYSBsb2FkIHJlcXVlc3QgaXMgY29taW5nIGZy
b20gYSBtZWRpYSBlbGVtZW50LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgyNjY5MTY+IGZvciBtb3Jl
IGRldGFpbHMuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpKQorICAgIGlmIChJ
T1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSgpKQogICAgICAgICByZXR1cm4gbV9jbGllbnQu
c2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTCh1cmwpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDllMzhlYzc0MGQyMzllYjNjMTQ2
NGI5ZDVlNjdkYzg4ZmUwM2FiZDguLmE3N2ExODM0NjYwODJlZWU4NDdhYjA5YmFhZjM1ZGFkY2Rl
NDY4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApA
QCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKLSNpbmNsdWRlIDxSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNp
bmNsdWRlIDxSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTEwMCw3ICsxMDAsNyBAQCBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRS
ZXNvdXJjZQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0
UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIGlmICghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSkgewor
ICAgIGlmICghSU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIE9u
IGlPUywgZG8gbm90IGludm9rZSBzeW5jaHJvbm91cyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlcyB3
aGlsZSByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcKICAgICAgICAgLy8gaXMgZGlzYWJsZWQgdG8g
YXZvaWQgcmUtZW50ZXJpbmcgc3R5bGUgc2VsZWN0aW9uIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFk
IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzkxMjE3MTk+KS4KICAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGZpeGVkIGZvciBhbGwgcG9ydHMgaW4gPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjY0Nz4uCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UKICNpZiBQTEFURk9STShJT1MpCiBib29sIFN1YnJlc291cmNlTG9hZGVyOjpz
dGFydExvYWRpbmcoKQogewotICAgIEFTU0VSVCghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSk7
CisgICAgQVNTRVJUKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpOwogICAgIGlmICgh
aW5pdChtX2lPU09yaWdpbmFsUmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X2lPU09yaWdpbmFsUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBlZGNlY2Y4YzUxN2VjNzM1YzU5
ZGUwZWFjMDdhZDA3Y2FhZDlhZjBlLi4xM2FjMzAxYWJlM2NkM2VhNWM2N2ZiMDIwYjNhODU2NDhj
YTk4NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtMTMxLDE0ICsxMzEsMTYgQEAgYm9vbCBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlQWxsb3dl
ZEJ5Tm9zbmlmZigpIGNvbnN0CiAKIGJvb2wgQ2FjaGVkU2NyaXB0OjpzaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMTM5MTYyOTE+CiAgICAgLy8g
UkVHUkVTU0lPTiAocjExOTc1OSk6IEFkb2JlIEZsYXNoIFBsYXllciAic21hbGxlciIgaW5zdGFs
bGVyIHJlbGllcyBvbiB0aGUgaW5jb3JyZWN0IGZpcmluZwogICAgIC8vIG9mIGEgbG9hZCBldmVu
dCBhbmQgbmVlZHMgYW4gYXBwLXNwZWNpZmljIGhhY2sgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAg
Ly8gVGhlIGluc3RhbGxlciBpbiBxdWVzdGlvbiB0cmllcyB0byBsb2FkIC5qcyBmaWxlIHRoYXQg
ZG9lc24ndCBleGlzdCwgY2F1c2luZyB0aGUgc2VydmVyIHRvCiAgICAgLy8gcmV0dXJuIGEgNDA0
IHJlc3BvbnNlLiBOb3JtYWxseSwgdGhpcyB3b3VsZCB0cmlnZ2VyIGFuIGVycm9yIGV2ZW50IHRv
IGJlIGRpc3BhdGNoZWQsIGJ1dCB0aGUKICAgICAvLyBpbnN0YWxsZXIgZXhwZWN0cyBhIGxvYWQg
ZXZlbnQgaW5zdGVhZCBzbyB3ZSB3b3JrIGFyb3VuZCBpdCBoZXJlLgotICAgIGlmIChhcHBsaWNh
dGlvbklzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpKQorICAgIGlmIChNYWNBcHBsaWNh
dGlvbjo6aXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAKICAgICByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OnNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDhiNGY2NTA0ODk2NTdmMTE1ZTFlMjZiMGM1NzkwOTJiYjhhZWNhNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotI2lmIFVTRShDRikKLXN0YXRpYyBDRlN0cmluZ1JlZiBtYWluQnVuZGxlSWRl
bnRpZmllcigpCi17Ci0gICAgQ0ZCdW5kbGVSZWYgbWFpbkJ1bmRsZSA9IENGQnVuZGxlR2V0TWFp
bkJ1bmRsZSgpOwotICAgIGlmICghbWFpbkJ1bmRsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gQ0ZCdW5kbGVHZXRJZGVudGlmaWVyKG1haW5CdW5kbGUpOwotfQotI2Vu
ZGlmCi0KLS8vIFRoZSBhcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNldCB0byB0
aGUgVUlQcm9jZXNzIGJ1bmRsZSBpZGVudGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFuZAotLy8g
dGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB1cG9uIGluaXRpYWxpemF0aW9uLgotLy8gSWYgbm90IGV4
cGxpY2l0bHkgc2V0LCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVudGlmaWVy
IHdoaWNoIGlzIGFjY3VyYXRlIGZvciBXSzEgb3IKLS8vIHRoZSBXSzIgVUlQcm9jZXNzLgotc3Rh
dGljIFN0cmluZyYgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0jaWYgVVNFKENGKQotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGlkZW50aWZpZXIobWFpbkJ1bmRsZUlkZW50aWZpZXIoKSk7Ci0jZWxzZQot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXI7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBpZGVudGlmaWVyOwotfQotCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFi
bHkgYmUgcmVuYW1lZCB0byBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygpIGFuZCB1c2UgYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKLS8vIGluc3RlYWQgb2YgbWFpbkJ1bmRsZUlkZW50
aWZpZXIoKSBpbnRlcm5hbGx5LiBUaGlzIHdvdWxkIGhhdmUgdGhlIGJlbmVmaXQgb2Ygd29ya2lu
ZyBmb3IgYm90aCBXZWJLaXQxIGFuZAotLy8gV2ViS2l0Mi4KLXN0YXRpYyBib29sIG1haW5CdW5k
bGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQotewotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0uCi0gICAgLy8gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRo
ZSBQTEFURk9STShJT1MpLWd1YXJkLgotI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICBDRlN0cmluZ1JlZiBidW5kbGVJZGVudGlmaWVyID0gbWFpbkJ1bmRsZUlkZW50aWZpZXIoKTsK
LSAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmll
clN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNTYWZhcmkoKQotewot
ICAgIHN0YXRpYyBib29sIGlzU2FmYXJpID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxl
LlNhZmFyaSIpOwotICAgIHJldHVybiBpc1NhZmFyaTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklz
QXBwbGVNYWlsKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0FwcGxlTWFpbCA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7Ci0gICAgcmV0dXJuIGlzQXBwbGVNYWlsOwotfQot
Ci1ib29sIGFwcGxpY2F0aW9uSXNJQm9va3MoKQotewotICAgIHN0YXRpYyBib29sIGlzSUJvb2tz
ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rc1giKTsKLSAgICByZXR1cm4g
aXNJQm9va3M7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0lUdW5lcygpCi17Ci0gICAgc3RhdGlj
IGJvb2wgaXNJVHVuZXMgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaVR1bmVzIik7
Ci0gICAgcmV0dXJuIGlzSVR1bmVzOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRN
ZXNzZW5nZXIoKQotewotICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0TWVzc2VuZ2VyID0gbWFp
bkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5NZXNzZW5nZXIiKTsKLSAgICByZXR1cm4g
aXNNaWNyb3NvZnRNZXNzZW5nZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFs
bGVyKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0Fkb2JlSW5zdGFsbGVyID0gbWFpbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKLSAgICByZXR1cm4gaXNBZG9i
ZUluc3RhbGxlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzQU9MSW5zdGFudE1lc3Nlbmdlcigp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaXNBT0xJbnN0YW50TWVzc2VuZ2VyID0gbWFpbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOwotICAgIHJldHVybiBpc0FPTEluc3RhbnRN
ZXNzZW5nZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE15RGF5KCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29t
Lm1pY3Jvc29mdC5teWRheSIpOwotICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5OwotfQotCi1i
b29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRPdXRsb29rKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBp
c01pY3Jvc29mdE91dGxvb2sgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91
dGxvb2siKTsKLSAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOwotfQotCi1ib29sIGFwcGxp
Y2F0aW9uSXNRdWlja2VuRXNzZW50aWFscygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNRdWlja2Vu
RXNzZW50aWFscyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5pbnR1aXQuUXVpY2tlbkVzc2Vu
dGlhbHMiKTsKLSAgICByZXR1cm4gaXNRdWlja2VuRXNzZW50aWFsczsKLX0KLQotYm9vbCBhcHBs
aWNhdGlvbklzQXBlcnR1cmUoKQotewotICAgIHN0YXRpYyBib29sIGlzQXBlcnR1cmUgPSBtYWlu
QnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuQXBlcnR1cmUiKTsKLSAgICByZXR1cm4gaXNBcGVy
dHVyZTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzVmVyc2lvbnMoKQotewotICAgIHN0YXRpYyBi
b29sIGlzVmVyc2lvbnMgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJz
aW9ucyIpOwotICAgIHJldHVybiBpc1ZlcnNpb25zOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNI
UkJsb2NrKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0hSQmxvY2sgPSBtYWluQnVuZGxlSXNFcXVh
bFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpOwotICAgIHJldHVybiBpc0hSQmxvY2s7Ci19Ci0K
LWJvb2wgYXBwbGljYXRpb25Jc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKQotewotICAg
IHN0YXRpYyBib29sIGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlciA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5zb2xpZHN0YXRlbmV0d29ya3MuYXdraG9zdCIpOwotICAgIHJldHVybiBp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0hp
cENoYXQoKQotewotICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpID09ICJjb20uaGlwY2hhdC5IaXBDaGF0IjsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzSGlwQ2hhdCA9PSAoYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPT0gImNv
bS5oaXBjaGF0LkhpcENoYXQiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwotICAgIHJldHVybiBpc0hpcENoYXQ7Ci19Ci0K
LXZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcikKLXsKLSAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9IGJ1bmRs
ZUlkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggNWM3ZmVk
MDlhNWVlYjFkOTMxNWM5MzFlYmU0MGI0NzMyM2YzNmNhNi4uZGI0MjNiMjc2ZmJlNzYzZDcwNjg3
ZDU2YTJkMTUyODBjMmJiODQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKQEAgLTI2LDI4ICsyNiw2MCBAQAogI2lmbmRlZiBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NfaAogI2RlZmluZSBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NfaAogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
T0xJbnN0YW50TWVzc2VuZ2VyKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
ZG9iZUluc3RhbGxlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzQXBlcnR1
cmUoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0FwcGxlTWFpbCgpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzSUJvb2tzKCk7Ci1XRUJDT1JFX0VYUE9SVCBi
b29sIGFwcGxpY2F0aW9uSXNJVHVuZXMoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRp
b25Jc01pY3Jvc29mdE1lc3NlbmdlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlv
bklzTWljcm9zb2Z0TXlEYXkoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01p
Y3Jvc29mdE91dGxvb2soKTsKLWJvb2wgYXBwbGljYXRpb25Jc1F1aWNrZW5Fc3NlbnRpYWxzKCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNTYWZhcmkoKTsKLWJvb2wgYXBwbGlj
YXRpb25Jc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgYXBwbGljYXRpb25Jc1ZlcnNpb25zKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0
aW9uSXNIUkJsb2NrKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNIaXBDaGF0
KCk7Ci0KIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpOwogCisjaWYgUExBVEZPUk0oTUFDKQorCituYW1lc3BhY2UgTWFjQXBw
bGljYXRpb24geworCitXRUJDT1JFX0VYUE9SVCBib29sIGlzQU9MSW5zdGFudE1lc3Nlbmdlcigp
OworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Fkb2JlSW5zdGFsbGVyKCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIGlzQXBlcnR1cmUoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNBcHBsZU1haWwoKTsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNJQm9va3MoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNJ
VHVuZXMoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaWNyb3NvZnRNZXNzZW5nZXIoKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgaXNNaWNyb3NvZnRNeURheSgpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc01pY3Jvc29mdE91dGxvb2soKTsKK2Jvb2wgaXNRdWlja2VuRXNzZW50aWFscygpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1NhZmFyaSgpOworYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rv
d25sb2FkZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNWZXJzaW9ucygpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0hSQmxvY2soKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNIaXBDaGF0KCk7
CisKK30gLy8gTWFjQXBwbGljYXRpb24KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lm
IFBMQVRGT1JNKElPUykKKworbmFtZXNwYWNlIElPU0FwcGxpY2F0aW9uIHsKKworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc01vYmlsZU1haWwoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNNb2JpbGVT
YWZhcmkoKTsKK2Jvb2wgaXNEdW1wUmVuZGVyVHJlZSgpOworYm9vbCBpc01vYmlsZVN0b3JlKCk7
CitXRUJDT1JFX0VYUE9SVCBib29sIGlzV2ViQXBwKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlz
T2tDdXBpZCgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ZhY2Vib29rKCk7CitXRUJDT1JFX0VY
UE9SVCBib29sIGlzRGFpamlzZW5EaWN0aW9uYXJ5KCk7Citib29sIGlzTkFTQUhEKCk7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzVGhlRWNvbm9taXN0T25JcGhvbmUoKTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgaXNXZWJQcm9jZXNzKCk7Citib29sIGlzSUJvb2tzKCk7CisKK30gLy8gSU9TQXBwbGlj
YXRpb24KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKICNlbmRpZiAvLyBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjY2JiMDFlZTNjYjk2YzUxMTc3YTI2ODVj
NTM5Y2ViYTU4OGZjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0KQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TQnVuZGxlLmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGUgYXBw
bGljYXRpb24gYnVuZGxlIGlkZW50aWZpZXIgZ2V0cyBzZXQgdG8gdGhlIFVJUHJvY2VzcyBidW5k
bGUgaWRlbnRpZmllciBieSB0aGUgV2ViUHJvY2VzcyBhbmQKKy8vIHRoZSBuZXR3b3JraW5nIHBy
b2Nlc3MgdXBvbiBpbml0aWFsaXphdGlvbi4KKy8vIElmIG5vdCBleHBsaWNpdGx5IHNldCwgdGhp
cyB3aWxsIHJldHVybiB0aGUgbWFpbiBidW5kbGUgaWRlbnRpZmllciB3aGljaCBpcyBhY2N1cmF0
ZSBmb3IgV0sxIG9yCisvLyB0aGUgV0syIFVJUHJvY2Vzcy4KK3N0YXRpYyBTdHJpbmcmIGFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXIoW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisKKyAgICByZXR1cm4gaWRlbnRp
ZmllcjsKK30KKworc3RhdGljIGJvb2wgYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgY29uc2lkZXIgbWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NJT1MubW0uCisgICAgLy8gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1
YXJkLgorI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gYXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkgPT0gYnVuZGxlSWRlbnRpZmllclN0cmluZzsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOworICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKQorCitib29sIE1hY0FwcGxpY2F0aW9u
Ojppc1NhZmFyaSgpCit7CisgICAgc3RhdGljIGJvb2wgaXNTYWZhcmkgPSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLlNhZmFyaSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoaXNTYWZhcmkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5TYWZh
cmkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1NhZmFyaTsKK30KKworYm9vbCBNYWNBcHBsaWNh
dGlvbjo6aXNBcHBsZU1haWwoKQoreworICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWlsID0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpc0FwcGxlTWFpbCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
LmFwcGxlLm1haWwiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0FwcGxlTWFpbDsKK30KKworYm9v
bCBNYWNBcHBsaWNhdGlvbjo6aXNJQm9va3MoKQoreworICAgIHN0YXRpYyBib29sIGlzSUJvb2tz
ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3NYIik7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShpc0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmFwcGxlLmlCb29rc1giKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0lCb29rczsKK30K
KworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMoKQoreworICAgIHN0YXRpYyBib29sIGlz
SVR1bmVzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMiKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSVR1bmVzID09IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uYXBwbGUuaVR1bmVzIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNJVHVuZXM7
Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkKK3sKKyAg
ICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20ubWljcm9zb2Z0Lk1lc3NlbmdlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoaXNNaWNyb3NvZnRNZXNzZW5nZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5taWNyb3NvZnQuTWVzc2VuZ2VyIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNaWNyb3NvZnRN
ZXNzZW5nZXI7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzQWRvYmVJbnN0YWxsZXIoKQor
eworICAgIHN0YXRpYyBib29sIGlzQWRvYmVJbnN0YWxsZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzQWRvYmVJbnN0YWxsZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5hZG9iZS5JbnN0YWxsZXJzLlNldHVwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBZG9iZUlu
c3RhbGxlcjsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNBT0xJbnN0YW50TWVzc2VuZ2Vy
KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNBT0xJbnN0YW50TWVzc2VuZ2VyID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uYW9sLmFpbS5kZXNrdG9wIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBT0xJbnN0
YW50TWVzc2VuZ2VyOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE15RGF5
KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gYXBwbGljYXRpb25CdW5k
bGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQubXlkYXkiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGlzTWljcm9zb2Z0TXlEYXkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5t
aWNyb3NvZnQubXlkYXkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5Owor
fQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE91dGxvb2soKQoreworICAgIHN0
YXRpYyBib29sIGlzTWljcm9zb2Z0T3V0bG9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRv
KCJjb20ubWljcm9zb2Z0Lk91dGxvb2siKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTWlj
cm9zb2Z0T3V0bG9vayA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29m
dC5PdXRsb29rIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOworfQor
Citib29sIE1hY0FwcGxpY2F0aW9uOjppc1F1aWNrZW5Fc3NlbnRpYWxzKCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGlzUXVpY2tlbkVzc2VudGlhbHMgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5p
bnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1F1aWNrZW5F
c3NlbnRpYWxzOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0FwZXJ0dXJlKCkKK3sKKyAg
ICBzdGF0aWMgYm9vbCBpc0FwZXJ0dXJlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5hcHBsZS5BcGVydHVyZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBcGVydHVyZSA9
PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIiksICJTaG91
bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCki
KTsKKyAgICByZXR1cm4gaXNBcGVydHVyZTsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNW
ZXJzaW9ucygpCit7CisgICAgc3RhdGljIGJvb2wgaXNWZXJzaW9ucyA9IGFwcGxpY2F0aW9uQnVu
ZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJzaW9ucyIpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNWZXJzaW9ucyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmJs
YWNrcGl4ZWwudmVyc2lvbnMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1ZlcnNpb25zOworfQor
Citib29sIE1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKQoreworICAgIHN0YXRpYyBib29sIGlz
SFJCbG9jayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAx
MCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNIUkJsb2NrID09IGFwcGxpY2F0aW9uQnVu
ZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxs
ZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJu
IGlzSFJCbG9jazsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNTb2xpZFN0YXRlTmV0d29y
a3NEb3dubG9hZGVyKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rv
d25sb2FkZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLnNvbGlkc3RhdGVuZXR3
b3Jrcy5hd2tob3N0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1NvbGlkU3RhdGVOZXR3
b3Jrc0Rvd25sb2FkZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5zb2xpZHN0
YXRlbmV0d29ya3MuYXdraG9zdCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisKKyAgICByZXR1cm4gaXNTb2xpZFN0YXRl
TmV0d29ya3NEb3dubG9hZGVyOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0hpcENoYXQo
KQoreworICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uaGlwY2hhdC5IaXBDaGF0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0hp
cENoYXQgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5oaXBjaGF0LkhpcENoYXQi
KSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKSIpOworICAgIHJldHVybiBpc0hpcENoYXQ7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCisKKyNpZiBQTEFURk9STShJT1MpCisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTW9i
aWxlTWFpbCgpCit7CisgICAgc3RhdGljIGJvb2wgaXNNb2JpbGVNYWlsID0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tb2JpbGVtYWlsIik7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShpc01vYmlsZU1haWwgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
cHBsZS5tb2JpbGVtYWlsIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNb2JpbGVNYWlsOworfQor
Citib29sIElPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpCit7CisgICAgc3RhdGljIGJv
b2wgaXNNb2JpbGVTYWZhcmkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxl
Lm1vYmlsZXNhZmFyaSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVTYWZhcmkg
PT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiKSwg
IlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKSIpOworICAgIHJldHVybiBpc01vYmlsZVNhZmFyaTsKK30KKworYm9vbCBJT1NBcHBsaWNh
dGlvbjo6aXNEdW1wUmVuZGVyVHJlZSgpCit7CisgICAgLy8gV2UgdXNlIGEgcHJlZml4IG1hdGNo
IGluc3RlYWQgb2Ygc3RyaWN0IGVxdWFsaXR5IHNpbmNlIExheW91dFRlc3RSZWxheSBtYXkgbGF1
bmNoIG11bHRpcGxlIGluc3RhbmNlcyBvZgorICAgIC8vIER1bXBSZW5kZXJUcmVlIHdoZXJlIHRo
ZSBidW5kbGUgaWRlbnRpZmllciBvZiBlYWNoIGluc3RhbmNlIGhhcyBhIHVuaXF1ZSBzdWZmaXgu
CisgICAgc3RhdGljIGJvb2wgaXNEdW1wUmVuZGVyVHJlZSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIik7IC8vIGUuZy4gb3JnLndlYmtpdC5E
dW1wUmVuZGVyVHJlZTAKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzRHVtcFJlbmRlclRyZWUg
PT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUi
KSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKSIpOworICAgIHJldHVybiBpc0R1bXBSZW5kZXJUcmVlOworfQorCitib29sIElPU0Fw
cGxpY2F0aW9uOjppc01vYmlsZVN0b3JlKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01vYmlsZVN0
b3JlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5Nb2JpbGVTdG9yZSIp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVTdG9yZSA9PSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLk1vYmlsZVN0b3JlIiksICJTaG91bGQgbm90IGJlIGNh
bGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1
cm4gaXNNb2JpbGVTdG9yZTsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKQor
eworICAgIHN0YXRpYyBib29sIGlzV2ViQXBwID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5hcHBsZS53ZWJhcHAiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzV2ViQXBwID09
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUud2ViYXBwIiksICJTaG91bGQg
bm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsK
KyAgICByZXR1cm4gaXNXZWJBcHA7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzT2tDdXBp
ZCgpCit7CisgICAgc3RhdGljIGJvb2wgaXNPa0N1cGlkID0gYXBwbGljYXRpb25CdW5kbGVJc0Vx
dWFsVG8oImNvbS5va2N1cGlkLmFwcCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNPa0N1
cGlkID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ub2tjdXBpZC5hcHAiKSwgIlNo
b3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KSIpOworICAgIHJldHVybiBpc09rQ3VwaWQ7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246Omlz
RmFjZWJvb2soKQoreworICAgIHN0YXRpYyBib29sIGlzRmFjZWJvb2sgPSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmZhY2Vib29rLkZhY2Vib29rIik7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShpc0ZhY2Vib29rID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZmFj
ZWJvb2suRmFjZWJvb2siKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0ZhY2Vib29rOworfQorCiti
b29sIElPU0FwcGxpY2F0aW9uOjppc0RhaWppc2VuRGljdGlvbmFyeSgpCit7CisgICAgc3RhdGlj
IGJvb2wgaXNEYWlqaXNlbkRpY3Rpb25hcnkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
anAuY28uc2hvZ2FrdWthbi5kYWlqaXNlbjIwMDlpIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShpc0RhaWppc2VuRGljdGlvbmFyeSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygianAu
Y28uc2hvZ2FrdWthbi5kYWlqaXNlbjIwMDlpIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNEYWlq
aXNlbkRpY3Rpb25hcnk7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTkFTQUhEKCkKK3sK
KyAgICBzdGF0aWMgYm9vbCBpc05BU0FIRCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJn
b3YubmFzYS5OQVNBSEQiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTkFTQUhEID09IGFw
cGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJnb3YubmFzYS5OQVNBSEQiKSwgIlNob3VsZCBub3Qg
YmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAg
IHJldHVybiBpc05BU0FIRDsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNUaGVFY29ub21p
c3RPbklwaG9uZSgpCit7CisgICAgc3RhdGljIGJvb2wgaXNUaGVFY29ub21pc3RPbklwaG9uZSA9
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZWNvbm9taXN0LmlwaG9uZSIpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoaXNUaGVFY29ub21pc3RPbklwaG9uZSA9PSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLmVjb25vbWlzdC5pcGhvbmUiKSwgIlNob3VsZCBub3QgYmUg
Y2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJl
dHVybiBpc1RoZUVjb25vbWlzdE9uSXBob25lOworfQorCisvLyBGSVhNRTogdGhpcyBuZWVkcyB0
byBiZSBjaGFuZ2VkIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgY2hhbmdlZCB0byBhbiBYUEMgc2Vy
dmljZS4KK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpCit7CisgICAgc3RhdGlj
IGJvb2wgaXNXZWJQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRp
Zmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVs
b3BtZW50Il0KKyAgICAgICAgfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRp
Zmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50Il0KKyAg
ICAgICAgfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVh
bFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYlByb2Nlc3MiXTsKKyAgICByZXR1cm4gaXNXZWJQcm9j
ZXNzOworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpCit7CisgICAgc3RhdGlj
IGJvb2wgaXNJQm9va3MgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlC
b29rcyIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJQm9va3MgPT0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3MiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVk
IGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBp
c0lCb29rczsKK30KKworI2VuZGlmCisKK3ZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcikKK3sKKyAgICBhcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKSA9IGJ1bmRsZUlkZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrc0lPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzSU9TLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZDcxNzhh
YTEyNGRjNDMyYmY3YmJhY2UyNWYyNzg3N2RhMGExMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TX2gKLSNkZWZpbmUgUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TX2gKLQotLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBt
ZXJnaW5nIHRoaXMgZmlsZSB3aXRoIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oLgotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVN
YWlsKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsK
LWJvb2wgYXBwbGljYXRpb25Jc0R1bXBSZW5kZXJUcmVlKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNN
b2JpbGVTdG9yZSgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzV2ViQXBwKCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNPa0N1cGlkKCk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIGFwcGxpY2F0aW9uSXNGYWNlYm9vaygpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBh
cHBsaWNhdGlvbklzRGFpamlzZW5EaWN0aW9uYXJ5KCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNOQVNB
SEQoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc1RoZUVjb25vbWlzdE9uSVBo
b25lKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCk7Ci1i
b29sIGFwcGxpY2F0aW9uSXNJQm9va3NPbklPUygpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1NfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWE3Mzc2ZjBmMmQ1NWUzOGJjMzEyMTI0YjMz
NjI3YTdjNjUzZTA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCi0KLS8vIEZJWE1F
OiBXZSBzaG91bGQgY29uc2lkZXIgbWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuY3BwLgotI2lmIFBMQVRGT1JNKElPUykKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1ib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVNYWlsKCkKLXsKLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc01vYmlsZU1haWwgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUubW9iaWxlbWFpbCJdOwotICAgIHJldHVy
biBpc01vYmlsZU1haWw7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNNb2JpbGVTYWZhcmkgPSBbW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUubW9i
aWxlc2FmYXJpIl07Ci0gICAgcmV0dXJuIGlzTW9iaWxlU2FmYXJpOwotfQotCi1ib29sIGFwcGxp
Y2F0aW9uSXNEdW1wUmVuZGVyVHJlZSgpCi17Ci0gICAgLy8gV2UgdXNlIGEgcHJlZml4IG1hdGNo
IGluc3RlYWQgb2Ygc3RyaWN0IGVxdWFsaXR5IHNpbmNlIExheW91dFRlc3RSZWxheSBtYXkgbGF1
bmNoIG11bHRpcGxlIGluc3RhbmNlcyBvZgotICAgIC8vIER1bXBSZW5kZXJUcmVlIHdoZXJlIHRo
ZSBidW5kbGUgaWRlbnRpZmllciBvZiBlYWNoIGluc3RhbmNlIGhhcyBhIHVuaXF1ZSBzdWZmaXgu
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNEdW1wUmVuZGVyVHJlZSA9IFtbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGhhc1ByZWZpeDpAIm9yZy53ZWJraXQuRHVtcFJl
bmRlclRyZWUiXTsgLy8gZS5nLiBvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlMAotICAgIHJldHVy
biBpc0R1bXBSZW5kZXJUcmVlOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgp
Ci17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNNb2JpbGVTdG9yZSA9IFtbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5N
b2JpbGVTdG9yZSJdOwotICAgIHJldHVybiBpc01vYmlsZVN0b3JlOwotfQotCi1ib29sIGFwcGxp
Y2F0aW9uSXNXZWJBcHAoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzV2ViQXBwID0gW1tb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAi
Y29tLmFwcGxlLndlYmFwcCJdOwotICAgIHJldHVybiBpc1dlYkFwcDsKLX0KLQotYm9vbCBhcHBs
aWNhdGlvbklzT2tDdXBpZCgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNPa0N1cGlkID0g
W1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5n
OkAiY29tLm9rY3VwaWQuYXBwIl07Ci0gICAgcmV0dXJuIGlzT2tDdXBpZDsKLX0KLQotYm9vbCBh
cHBsaWNhdGlvbklzRmFjZWJvb2soKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzRmFjZWJv
b2sgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9T
dHJpbmc6QCJjb20uZmFjZWJvb2suRmFjZWJvb2siXTsKLSAgICByZXR1cm4gaXNGYWNlYm9vazsK
LX0KLQotYm9vbCBhcHBsaWNhdGlvbklzRGFpamlzZW5EaWN0aW9uYXJ5KCkKLXsKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc0RhaWppc2VuRGljdGlvbmFyeSA9IFtbW05TQnVuZGxlIG1haW5CdW5k
bGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImpwLmNvLnNob2dha3VrYW4u
ZGFpamlzZW4yMDA5aSJdOwotICAgIHJldHVybiBpc0RhaWppc2VuRGljdGlvbmFyeTsKLX0KLQot
Ym9vbCBhcHBsaWNhdGlvbklzTkFTQUhEKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc05B
U0FIRCA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxU
b1N0cmluZzpAImdvdi5uYXNhLk5BU0FIRCJdOwotICAgIHJldHVybiBpc05BU0FIRDsKLX0KLQot
Ym9vbCBhcHBsaWNhdGlvbklzVGhlRWNvbm9taXN0T25JUGhvbmUoKQotewotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzVGhlRWNvbm9taXN0T25JUGhvbmUgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uZWNvbm9taXN0LmlwaG9u
ZSJdOwotICAgIHJldHVybiBpc1RoZUVjb25vbWlzdE9uSVBob25lOwotfQotCi0vLyBGSVhNRTog
dGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgY2hhbmdlZCB0
byBhbiBYUEMgc2VydmljZS4KLWJvb2wgYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKQotewotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzV2ViUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5EZXZlbG9wbWVudCJdIHx8IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCJd
IHx8IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0
cmluZzpAImNvbS5hcHBsZS5XZWJQcm9jZXNzIl07Ci0gICAgcmV0dXJuIGlzV2ViUHJvY2VzczsK
LX0KLQotYm9vbCBhcHBsaWNhdGlvbklzSUJvb2tzT25JT1MoKQotewotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzSUJvb2tzT25JT1MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVu
dGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUuaUJvb2tzIl07Ci0gICAgcmV0dXJu
IGlzSUJvb2tzT25JT1M7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCBhZGRiNTI0ZjAxN2ExN2VhOTEy
MTEyMzU5OTMyMjBkOGM5YjE0MTljLi4yN2E0NWZjNjk3ZWY1NGRiNTczZDdiZDYzYjU0N2Y4YzY0
ZTc5YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94
L0F1ZGlvU2VydmljZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0lPUy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCmluZGV4IGExZmFlYTVlY2U3Yjkz
MDVkNmZiNTI3OTg3Njc1N2M5YTY5ZTdmNzMuLjA0ZGVmODRhYWI1OGVjNzcxZTA5Y2YzZjBhMTk0
ZWM5MGY0NjdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJ
T1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
TGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9MYXllckZsdXNoU2NoZWR1bGVyTWFjLmNwcAppbmRleCA0NDRiNGM2Mjk3
OWQ2YWEwOGI2OThiNGRmZWEyYzliNGE3NWU1ZTE4Li4xYjIzYjZhOWRjMTY0ODIwZTEwNjZhZDcx
NTBkNmUzZWE0YzJhOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9MYXllckZsdXNoU2NoZWR1bGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZsdXNoU2NoZWR1bGVyTWFjLmNw
cApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KIAog
I2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1Mu
aCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9DRkJ1bmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5o
PgogI2VuZGlmCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1
bkxvb3AoKQogICAgIC8vIHdlIHN0aWxsIGFsbG93IHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0v
NzQwMzMyOD4uIFNpbmNlIHRoZSByYWNlIGNvbmRpdGlvbiBhbmQgc3Vic2VxdWVudAogICAgIC8v
IGNyYXNoIGFyZSBlc3BlY2lhbGx5IHRyb3VibGVzb21lIGZvciBpQm9va3MsIHdlIG5ldmVyIGFs
bG93IHRoZSBvYnNlcnZlciB0byBiZSBhZGRlZCB0byB0aGUKICAgICAvLyBtYWluIHJ1biBsb29w
IGluIGlCb29rcy4KLSAgICBpZiAoYXBwbGljYXRpb25Jc0lCb29rc09uSU9TKCkpCisgICAgaWYg
KElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpKQogICAgICAgICByZXR1cm4gV2ViVGhyZWFkUnVu
TG9vcCgpOwogI2VuZGlmCiAgICAgcmV0dXJuIENGUnVuTG9vcEdldEN1cnJlbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTMyZDM1MjJk
ZjI4NjE1ZTY4NzAwNGViZmMwZTU1Zjc3Njg2YmFlZS4uODljYjBkNmZhZTdjNjg1MzgyMDJjNzZl
ZGZiOTNhNTY2MTdjOWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVn
eS5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFn
ZS5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW1wb3J0ICJS
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2lt
cG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbQppbmRleCAyYTRkNTZjMDQxNDAyNmE3ZWY2NTJlYjU0NmIyMmJmMDgxMGJjZmQ5
Li41YmExYTQ4NjQxZTg2Y2I4YWYxNzA0MWJiOGNiMmExOGMzYWI1MWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0ICJBVktpdFNQSS5o
IgogI2ltcG9ydCAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tCmluZGV4IGU5YTYzMjMwZDI5OGM5YTQxZDUxNTk1YTU1ZGRmMTg1ZTdjMmEzYWQu
LmIyZWQ5NGRhYTUxZDU4YTk0NGQ4ZTNlZmRkYjE1MjhiYjkyYTI1NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTMwLDggKzMw
LDggQEAKIAogI2ltcG9ydCAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCiAjaW1wb3J0ICJK
U0RPTVdpbmRvd0Jhc2UuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2ltcG9ydCAiVGhyZWFkR2xvYmFsRGF0YS5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzSU9TLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYkNvcmVUaHJlYWRNZXNzYWdlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCkBA
IC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIFdlYlRocmVhZFNldERlbGVnYXRlU291cmNlUnVuTG9v
cE1vZGUoQ0ZTdHJpbmdSZWYgbW9kZSkKIAogdm9pZCBXZWJUaHJlYWRFbmFibGUodm9pZCkKIHsK
LSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIVdlYkNvcmU6OmFwcGxpY2F0aW9uSXNX
ZWJQcm9jZXNzKCksICJUaGUgV2ViUHJvY2VzcyBzaG91bGQgbmV2ZXIgcnVuIGEgV2ViIFRocmVh
ZCIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzV2ViUHJvY2VzcygpLCAiVGhlIFdlYlByb2Nlc3Mgc2hvdWxkIG5ldmVyIHJ1biBh
IFdlYiBUaHJlYWQiKTsKIAogICAgIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0Q29udHJvbCA9
IFBUSFJFQURfT05DRV9JTklUOwogICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIFN0YXJ0
V2ViVGhyZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4
IGIzMGZkODEzNDNjMDZhY2Q4OWJhOGY5ZTJmNjc0Mzc2ZjZlYWQwMjYuLjViYTI4MjFiNzBiOWMy
NTI0YzYxNjBhMjc5NWY0OTQzY2E1NGYzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dpZGdldE1hYy5tbQpAQCAtMTk0LDkgKzE5NCwxMyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByKQogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gcGFpbnQgdGhlIHZpZXcgYXQgYWxsIGlmIGl0J3MgbGF5ZXIgYmFja2VkLCBiZWNhdXNlIHRo
ZW4gd2UnbGwgZW5kIHVwCiAgICAgLy8gd2l0aCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHZpZXcg
Y29udGVudHMsIG9uZSBpbiB0aGUgdmlldydzIGxheWVyIGl0c2VsZiBhbmQgb25lIGluIHRoZQog
ICAgIC8vIFdlYkhUTUxWaWV3J3MgYmFja2luZyBzdG9yZSAoZWl0aGVyIGEgbGF5ZXIgb3IgdGhl
IHdpbmRvdyBiYWNraW5nIHN0b3JlKS4KLSAgICAvLyBIb3dldmVyLCBRdWlja2VuIEVzc2VudGlh
bHMgaGFzIGEgcGx1Zy1pbiB0aGF0IGRlcGVuZHMgb24gZHJhd2luZyB0byB1cGRhdGUgdGhlIGxh
eWVyIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzE1MjIxMjMxPikuCi0gICAgaWYgKHZpZXcubGF5ZXIg
JiYgIWFwcGxpY2F0aW9uSXNRdWlja2VuRXNzZW50aWFscygpKQorICAgIGlmICh2aWV3LmxheWVy
KSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBIb3dldmVyLCBRdWlja2VuIEVzc2Vu
dGlhbHMgaGFzIGEgcGx1Zy1pbiB0aGF0IGRlcGVuZHMgb24gZHJhd2luZyB0byB1cGRhdGUgdGhl
IGxheWVyIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzE1MjIxMjMxPikuCisgICAgICAgIGlmICghTWFj
QXBwbGljYXRpb246OmlzUXVpY2tlbkVzc2VudGlhbHMoKSkKKyNlbmRpZgogICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgLy8gVGFrZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVj
YXVzZSBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSB2aWV3cyBjYW4gaW52b2tlIGFyYml0cmFyeQog
ICAgIC8vIGNvZGUsIHdoaWNoIGNhbiBkZXJlZiBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCBhMWVhOWM4OWQwMDNmMDRmZWUw
MzgxMTIzYzdmMWUxYjI5OGUzNGEzLi4xM2QxZGRjM2NhZTllZjIzNjdmNjQxZjQ5MDdlNmUyYTgx
ZGE0MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9R
dWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVp
Y2tMb29rLm1tCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKLSNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQppbmRleCBjM2JkZThhZjdjOGU1ZTAyNGMzZTJkZWZiODNmZmI1MGU2NWZkNDg0Li44YTI2
ODg4ZTdiMjNkYzQyNGI5OGI1MWU3ODIyN2I5ZWIyZjAxNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpA
QCAtNzAsNyArNzAsNyBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1p
bmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZik7CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
ICJDRk5ldHdvcmtTUEkuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5o
IgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
VGhyZWFkUnVuLmgiCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0ICgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGQxNGQwMzAxOTdi
MmI5NDgxYTVkZWEzYjdkZDEyODg5NTViMTMwODYuLjIwZDM4NDdjNDQ3YWVlYzAwNDlhZjQ1YmJl
Y2E1YTQ2ZWY5OTZjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCkBAIC02OSw3ICs2OSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPUykKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmxheWVyV2ls
bEJlRGVzdHJveWVkKCkKIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6Om5lZWRzSU9TRHVtcFJl
bmRlclRyZWVNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXJJc0Fsd2F5c09wYXF1ZUhhY2soY29uc3Qg
R3JhcGhpY3NMYXllciYgbGF5ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1faXNNYWluRnJhbWVSZW5k
ZXJWaWV3TGF5ZXIgJiYgYXBwbGljYXRpb25Jc0R1bXBSZW5kZXJUcmVlKCkpIHsKKyAgICBpZiAo
bV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVu
ZGVyVHJlZSgpKSB7CiAgICAgICAgIC8vIEluIGlPUyBXZWJLaXQxIHRoZSBtYWluIGZyYW1lJ3Mg
UmVuZGVyVmlldyBsYXllciBpcyBhbHdheXMgdHJhbnNwYXJlbnQuIFdlIGxpZSB0aGF0IGl0IGlz
IG9wYXF1ZSBzbyB0aGF0CiAgICAgICAgIC8vIGludGVybmFscy5sYXllclRyZWVBc1RleHQoKSB0
ZXN0cyBzdWNjZWVkLgogICAgICAgICBBU1NFUlRfVU5VU0VEKGxheWVyLCAhbGF5ZXIuY29udGVu
dHNPcGFxdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMjU0NmQ1NGQyZTJjOTBhNDlkNmMz
MmQwYTIwMGNhOTRjMTNhNGIwNS4uNGQ2MThlOTU5Njc1ODBmMGRmMjc3OGE0ZGRmYTVkODVkMjNh
ODVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAt
MjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRp
bmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFJlc291CiAgICAgICAgICAgICByZXF1
ZXN0c1BlbmRpbmcucmVtb3ZlRmlyc3QoKTsKICAgICAgICAgICAgIGhvc3QtPmFkZExvYWRJblBy
b2dyZXNzKHJlc291cmNlTG9hZGVyLmdldCgpKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
ICAgICBpZiAoIWFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIGlmICgh
SU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpKSB7CiAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5tbQppbmRleCBkMjgyNWFmNDdhZjdjNzE0Y2RmMjBmMzk3MTZmMGMz
NDUzNjY5MWM1Li43Nzc0Njk0NjM3MTUyNjE0MWM3MjdlYTFlM2Y1NTgyYTJiODEyZmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50SU9TLm1tCkBAIC01Nyw3ICs1Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2Ny
ZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckJveC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJPYmplY3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdDb25zdHJhaW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
QUtXaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRl
eCA0MGIwMmI2NTlmMWVkOTlmM2RiMTM5NDEwN2U2Njk0MDFmZjBlYjk5Li44NDA2YzE1MmJmMTdh
MjJjZTU1NTlhMTM3OTJlNDFkNmMzYWIyMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCkBAIC02OCw3ICs2OCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjZW5kaWYKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2Fz
QXVkaW9TZXNzaW9uSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGlmICghV2ViQ29yZTo6YXBwbGlj
YXRpb25Jc01vYmlsZVNhZmFyaSgpKQorICAgIGlmICghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246
OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDQ5YjcxOTM4NTI4MjUxODI2OGM3MTRlMTk4ZmIxMmRmODU5
ZmI4ZDAuLjIzZmYzNzUwZWU2NzdjOTQzYzhmMjNlMWIzNzU5OWE1NTQ3MmRiMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCkBAIC0xNDgsNyArMTQ4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bUlPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1F1aWNrTG9vay5oPgotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CiAjZW5kaWYKIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKFdlYkNvcmU6
OlF1aWNrTG9va0hhbmRsZSYgaGEKICAgICAgICAgICAgIDogbV9maXJzdFJlcXVlc3RVUkwoaGFu
ZGxlLmZpcnN0UmVxdWVzdFVSTCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBOU1VSTCAqcHJl
dmlld1JlcXVlc3RVUkwgPSBoYW5kbGUucHJldmlld1JlcXVlc3RVUkwoKTsKLSAgICAgICAgICAg
IGlmICghYXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpKSB7CisgICAgICAgICAgICBpZiAoIUlP
U0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhp
cyBrZWVwcyB0aGUgUUxQcmV2aWV3Q29udmVydGVyIGFsaXZlIHRvIHNlcnZlIGFueSBzdWJyZXNv
dXJjZSByZXF1ZXN0cy4KICAgICAgICAgICAgICAgICAvLyBJdCBpcyByZW1vdmVkIGJ5IC1bV2Vi
RGF0YVNvdXJjZSBkZWFsbG9jXS4KICAgICAgICAgICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0
ZXJXaXRoRmlsZUZvclVSTChwcmV2aWV3UmVxdWVzdFVSTCwgaGFuZGxlLmNvbnZlcnRlcigpLCBu
aWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMDU2NGM1ZjE2YjBi
ZDBmNmJjZTY3OTU4NzFiNzgyNWYzN2Q4NGRkOC4uY2JiZjI0ZmNhM2Y0MzhjZjA5ZjEzZDM3NTVi
MmQxZTRkNWM3OWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0y
NDExLDggKzI0MTEsMTIgQEAgc3RhdGljIFdlYkZyYW1lTG9hZFR5cGUgdG9XZWJGcmFtZUxvYWRU
eXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIAogc3RhdGljIGJvb2wgbmVlZHNNaWNy
b3NvZnRNZXNzZW5nZXJET01Eb2N1bWVudFdvcmthcm91bmQoKQogewotICAgIHN0YXRpYyBib29s
IG5lZWRzV29ya2Fyb3VuZCA9IGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNZXNzZW5nZXIoKSAmJiBb
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJp
bmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XSBjb21wYXJlOkAiNy4xIiBvcHRpb25zOk5TTnVtZXJp
Y1NlYXJjaF0gPT0gTlNPcmRlcmVkQXNjZW5kaW5nOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIHN0YXRpYyBib29sIG5lZWRzV29ya2Fyb3VuZCA9IE1h
Y0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE1lc3NlbmdlcigpICYmIFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OihOU1N0cmluZyAqKWtDRkJ1bmRsZVZl
cnNpb25LZXldIGNvbXBhcmU6QCI3LjEiIG9wdGlvbnM6TlNOdW1lcmljU2VhcmNoXSA9PSBOU09y
ZGVyZWRBc2NlbmRpbmc7CiAgICAgcmV0dXJuIG5lZWRzV29ya2Fyb3VuZDsKKyNlbmRpZgogfQog
CiAtIChET01Eb2N1bWVudCAqKURPTURvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZGJi
MjNiMDI2Nzk0NzRiOWU0ODA5MGJjODIzM2Y1YmYyN2E5ZWVlMS4uMjNlNjIzZDViN2RiMmIyODli
MGYwNWJkMTE3MDY0MGQ1ODY1MDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzE4LDExICsz
MTgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIGN1c3RvbUNsaWVudEFu
aW1hdGlvbkNvbnRyb2xsZXIgPSBbKGlkKVtfd2ViVmlldyBVSURlbGVnYXRlXSBfd2ViVmlldzpf
d2ViVmlldyBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3Vs
dDp3ZWJIaXRUZXN0UmVzdWx0LmdldCgpIHdpdGhUeXBlOl90eXBlXTsKICAgICB9CiAKKyAgICBp
ZiAoY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciA9PSBbTlNOdWxsIG51bGxdKSB7Cisg
ICAgICAgIFtzZWxmIF9jYW5jZWxJbW1lZGlhdGVBY3Rpb25dOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHBl
cm1hbmVudGx5IGRpc2FibGUgdGhpcyBmb3IgaVR1bmVzLiByZGFyOi8vcHJvYmxlbS8xOTQ2MTM1
OAotICAgIGlmIChjdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVyID09IFtOU051bGwgbnVs
bF0gfHwgYXBwbGljYXRpb25Jc0lUdW5lcygpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjpp
c0lUdW5lcygpKSB7CiAgICAgICAgIFtzZWxmIF9jYW5jZWxJbW1lZGlhdGVBY3Rpb25dOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCisKICAgICBpZiAoY3VzdG9tQ2xpZW50QW5pbWF0
aW9uQ29udHJvbGxlciAmJiBbY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciBjb25mb3Jt
c1RvUHJvdG9jb2w6QHByb3RvY29sKE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxl
cildKQogICAgICAgICBbX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgc2V0QW5pbWF0aW9uQ29u
dHJvbGxlcjooaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pY3VzdG9t
Q2xpZW50QW5pbWF0aW9uQ29udHJvbGxlcl07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IDc3ODlmN2RkZDc4MTZkM2ZkNjMxMWI3NDk1YzdmZWI5NjNmMWNl
NDAuLmI2YzMyN2M2YzljZjExNDEzNmFiNzZmOTIwZTUzZGEzZTRiY2YxNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI1Miw3ICsyNTIsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Nb2JpbGVHZXN0YWx0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5v
dGlmaWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSdW4uaD4KQEAgLTczOCw3ICs3MzcsNyBAQCBzdGF0aWMg
dm9pZCBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpCiAg
ICAgaWYgKCFhcHBOYW1lKQogICAgICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nl
c3NJbmZvXSBwcm9jZXNzTmFtZV07CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChXZWJDb3Jl
OjphcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6YXBwbGljYXRpb25Jc1dl
YkFwcCgpKQorICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmko
KSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkKICAgICAgICAgYXBwTmFt
ZSA9IEAiY29tLmFwcGxlLldlYkFwcENhY2hlIjsKICNlbmRpZgogCkBAIC03NzEsNyArNzcwLDEx
IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVBcHBsaWNhdGlvblN0YXRpc3RpY3NTdG9y
YWdlUGF0aElmTmVjZXNzYXJ5KCkKIAogc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlTG9hZERlZmVy
cmluZygpCiB7Ci0gICAgcmV0dXJuICFhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKTsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiAhTWFj
QXBwbGljYXRpb246OmlzQWRvYmVJbnN0YWxsZXIoKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgYm9v
bCBzaG91bGRSZXN0cmljdFdpbmRvd0ZvY3VzKCkKQEAgLTc3OSw3ICs3ODIsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRSZXN0cmljdFdpbmRvd0ZvY3VzKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiAhYXBwbGljYXRpb25Jc0hSQmxvY2soKTsK
KyAgICByZXR1cm4gIU1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKTsKICNlbmRpZgogfQogCkBA
IC04MDIsNyArODA1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVzdHJpY3RXaW5kb3dGb2N1cygp
CiBzdGF0aWMgYm9vbCBuZWVkc091dGxvb2tRdWlya3NTY3JpcHQoKQogewogICAgIHN0YXRpYyBi
b29sIGlzT3V0bG9va05lZWRpbmdRdWlya3NTY3JpcHQgPSAhV2ViS2l0TGlua2VkT25PckFmdGVy
KFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSFRNTDVfUEFSU0VSKQotICAgICAgICAmJiBhcHBs
aWNhdGlvbklzTWljcm9zb2Z0T3V0bG9vaygpOworICAgICAgICAmJiBNYWNBcHBsaWNhdGlvbjo6
aXNNaWNyb3NvZnRPdXRsb29rKCk7CiAgICAgcmV0dXJuIGlzT3V0bG9va05lZWRpbmdRdWlya3NT
Y3JpcHQ7CiB9CiAKQEAgLTgzNywxMyArODQwLDEzIEBAIHN0YXRpYyBib29sIHNob3VsZFJlc3Bl
Y3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpCiAjaWYgUExBVEZPUk0oSU9TKQogc3Rh
dGljIGJvb2wgc2hvdWxkVHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93KCkKIHsKLSAgICBzdGF0aWMg
Ym9vbCBzaG91bGRUcmFuc2Zvcm1zQWZmZWN0T3ZlcmZsb3cgPSAhYXBwbGljYXRpb25Jc09rQ3Vw
aWQoKSB8fCBXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9D
U1NfVFJBTlNGT1JNU19BRkZFQ1RJTkdfT1ZFUkZMT1cpOworICAgIHN0YXRpYyBib29sIHNob3Vs
ZFRyYW5zZm9ybXNBZmZlY3RPdmVyZmxvdyA9ICFJT1NBcHBsaWNhdGlvbjo6aXNPa0N1cGlkKCkg
fHwgV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ1NTX1RS
QU5TRk9STVNfQUZGRUNUSU5HX09WRVJGTE9XKTsKICAgICByZXR1cm4gc2hvdWxkVHJhbnNmb3Jt
c0FmZmVjdE92ZXJmbG93OwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3Jp
cHRXaW5kb3dPbkVycm9yRXZlbnRzKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRj
aEphdmFTY3JpcHRXaW5kb3dPbkVycm9yRXZlbnRzID0gIWFwcGxpY2F0aW9uSXNGYWNlYm9vaygp
IHx8IFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRP
V19PTl9FUlJPUik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2lu
ZG93T25FcnJvckV2ZW50cyA9ICFJT1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9vaygpIHx8IFdlYktp
dExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJP
Uik7CiAgICAgcmV0dXJuIHNob3VsZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVu
dHM7CiB9CiAKQEAgLTg2MSw3ICs4NjQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lC
YWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlv
ciA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9M
RUdBQ1lfQkFDS0dST1VORFNJWkVfU0hPUlRIQU5EX0JFSEFWSU9SKTsKICNlbHNlCi0gICAgc3Rh
dGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9
IGFwcGxpY2F0aW9uSXNWZXJzaW9ucygpCisgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNp
b25zKCkKICAgICAgICAgJiYgIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVS
U0lPTl9XSVRIT1VUX0xFR0FDWV9CQUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVIQVZJT1IpOwog
I2VuZGlmCiAgICAgcmV0dXJuIHNob3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5k
QmVoYXZpb3I7CkBAIC05NzEsNyArOTc0LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6
ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3Vs
ZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhzaG91bGRSZXNwZWN0UHJpb3Jp
dHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
IGlmIChhcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpCisgICAgICAgIGlmIChJT1NBcHBsaWNh
dGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRN
YW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeSh0cnVlKTsKICNlbmRpZgogCkBAIC0xMTk2LDcgKzEx
OTksNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNl
c3NhcnkoKQogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViUG9saWN5
RGVjaXNpb25MaXN0ZW5lciBjbGFzc10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldl
YlRocmVhZChbV2ViVmlldyBjbGFzc10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldl
YlRocmVhZChbV2ViVmlzaWJsZVBvc2l0aW9uIGNsYXNzXSk7Ci0gICAgICAgIGlmIChhcHBsaWNh
dGlvbklzVGhlRWNvbm9taXN0T25JUGhvbmUoKSAmJiAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVMRUdBVEVfQ0FMTFNfSU5fQ09NTU9OX1JVTkxPT1Bf
TU9ERVMpKQorICAgICAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhv
bmUoKSAmJiAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhf
REVMRUdBVEVfQ0FMTFNfSU5fQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICAgICAgV2Vi
VGhyZWFkU2V0RGVsZWdhdGVTb3VyY2VSdW5Mb29wTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUp
OwogICAgICAgICBXZWJUaHJlYWRFbmFibGUoKTsKICAgICAgICAgaXNXZWJUaHJlYWRFbmFibGVk
ID0gWUVTOwpAQCAtMTMyMiw3ICsxMzI1LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6
ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKIAogKyAodm9pZClyZWdpc3RlckZvck1lbW9y
eU5vdGlmaWNhdGlvbnMKIHsKLSAgICBCT09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1v
cnlSZWxlYXNlID0gIVdlYkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsKKyAgICBC
T09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6OklP
U0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpOwogCiAgICAgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpzaW5nbGV0b24oKS5pbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrKF57CiAgICAgICAgIFtX
ZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXTsKQEAgLTIxNDMsNyArMjE0Niw3IEBAIHN0YXRp
YyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAKIC0gKEJPT0wpX25lZWRzS2V5
Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzCiB7Ci0gICAgc3RhdGljIEJPT0wgbmVlZHNR
dWlya3MgPSAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhf
SUVfQ09NUEFUSUJMRV9LRVlCT0FSRF9FVkVOVF9ESVNQQVRDSCkgJiYgIWFwcGxpY2F0aW9uSXNT
YWZhcmkoKTsKKyAgICBzdGF0aWMgQk9PTCBuZWVkc1F1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9y
QWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9JRV9DT01QQVRJQkxFX0tFWUJPQVJEX0VW
RU5UX0RJU1BBVENIKSAmJiAhTWFjQXBwbGljYXRpb246OmlzU2FmYXJpKCk7CiAgICAgcmV0dXJu
IG5lZWRzUXVpcmtzOwogfQogCkBAIC0yMTU1LDcgKzIxNTgsNyBAQCBzdGF0aWMgYm9vbCBmYXN0
RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQogCiBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5X
aGlsZUxvYWRpbmdRdWlyaygpCiB7Ci0gICAgc3RhdGljIGJvb2wgbmVlZHNRdWlyayA9IGFwcGxp
Y2F0aW9uSXNBcGVydHVyZSgpOworICAgIHN0YXRpYyBib29sIG5lZWRzUXVpcmsgPSBNYWNBcHBs
aWNhdGlvbjo6aXNBcGVydHVyZSgpOwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCkBAIC0yMTcwLDEwICsyMTczLDEwIEBAIHN0YXRpYyBib29sIG5l
ZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKICAgICAvLyA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MTM0PiBhbmQKICAgICAvLyA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM0Pi4KICAgICBzdGF0aWMgYm9vbCBpc0Fw
cGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpCi0gICAgICAgICYmIChhcHBsaWNh
dGlvbklzQU9MSW5zdGFudE1lc3NlbmdlcigpIHx8IGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNeURh
eSgpKTsKKyAgICAgICAgJiYgKE1hY0FwcGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIo
KSB8fCBNYWNBcHBsaWNhdGlvbjo6aXNNaWNyb3NvZnRNeURheSgpKTsKICAgICAKICAgICAvLyBN
YWlsLmFwcCBtdXN0IGNvbnRpbnVlIHRvIGRpc3BsYXkgSFRNTCBlbWFpbCB0aGF0IGNvbnRhaW5z
IHF1aXJreSBtYXJrdXAuCi0gICAgc3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBhcHBsaWNhdGlv
bklzQXBwbGVNYWlsKCk7CisgICAgc3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBNYWNBcHBsaWNh
dGlvbjo6aXNBcHBsZU1haWwoKTsKIAogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1Bh
cnNlclF1aXJrcwogICAgICAgICB8fCBpc0FwcGxlTWFpbApAQCAtMjE4NCw3ICsyMTg3LDcgQEAg
c3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogI2VuZGlmCiAg
ICAgICAgIHx8IFtbc2VsZiBwcmVmZXJlbmNlc10gdXNlUHJlSFRNTDVQYXJzZXJRdWlya3NdOwog
I2Vsc2UKLSAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9
ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9Q
QVJTRVIpICYmIGFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9y
QWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIElPU0FwcGxp
Y2F0aW9uOjppc0RhaWppc2VuRGljdGlvbmFyeSgpOwogICAgIHJldHVybiBpc0FwcGxpY2F0aW9u
TmVlZGluZ1BhcnNlclF1aXJrcyB8fCBbW3NlbGYgcHJlZmVyZW5jZXNdIHVzZVByZUhUTUw1UGFy
c2VyUXVpcmtzXTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCAz
MTI4OTFlMjBhYTdmYjliMWUzMzU3M2I1OGMyM2ZhNDZmMzNmZGM4Li4wNjllOTcxODQ3ODk3ZDVj
NjY5MDUwODA5NWZlMDU3ZTAyMWU1MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKIAogI2lmIFBM
QVRGT1JNKElPUykKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9T
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtNDIsNyArNDIsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIC8vIFByZXNlcnZp
bmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KICAg
ICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSBhbmQgV2ViQXBw
IGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAogICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUg
cGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAo
V2ViQ29yZTo6YXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OmFwcGxpY2F0
aW9uSXNXZWJBcHAoKSkgeworICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2Jp
bGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkgewogICAg
ICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNo
ZSJdOwogCiAgICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJ
blBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbQppbmRleCBiNDZkMDA3MTgy
YzJhZTI2ZGRlMmY3ZGU1OTYzNzdjYjFkZTVmMjI4Li4yZTBkZmVkMWZjZWQ4ODYzY2Y5YmNiYjZl
MDY5ZmNlNjExMDFiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVmVyc2lvbkNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VmVyc2lvbkNoZWNrcy5tbQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8bWFjaC1vL2R5bGQu
aD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsNyArNDMsNyBAQCBib29s
IGxpbmtlZE9uT3JBZnRlcihMaWJyYXJ5VmVyc2lvbiB2ZXJzaW9uKQogewogI2lmIFBMQVRGT1JN
KElPUykKICAgICAvLyBBbHdheXMgbWFrZSBuZXcgZmVhdHVyZXMgYXZhaWxhYmxlIGZvciBTYWZh
cmkuCi0gICAgaWYgKFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkKKyAgICBp
ZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMjFkZDg0ZjlmYTRjMWRiMmIxYWM5
ZTRjNTAwZGE5MDQ3M2ViOTk3MC4uMjY2MmE0YTY2Mzg2N2Q5MjA2ZjkwNjNlMTM3YzY4YTgzOTc2
YjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KQEAgLTUyLDcgKzUyLDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAj
aW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQcmVzc3VyZUhh
bmRsZXJJT1MuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9T
Lmg+CiAjZWxzZQogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+CiAj
ZW5kaWYKQEAgLTE4MCw3ICsxNzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgcGFy
YW1ldGVycy5zaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciA9IFtkZWZhdWx0cyBi
b29sRm9yS2V5OldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyRGVmYXVsdHNLZXld
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHBhcmFtZXRlcnMuc2hvdWxkUmV3cml0ZUNvbnN0
QXNWYXIgPSBhcHBsaWNhdGlvbklzSUJvb2tzKCk7CisgICAgcGFyYW1ldGVycy5zaG91bGRSZXdy
aXRlQ29uc3RBc1ZhciA9IE1hY0FwcGxpY2F0aW9uOjppc0lCb29rcygpOwogI2VuZGlmCiAKICNp
ZiBIQVZFKEhPU1RFRF9DT1JFX0FOSU1BVElPTikKQEAgLTM2NSw3ICszNjQsNyBAQCBTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFr
ZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0
IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KICAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0
aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKGFwcGxpY2F0
aW9uSXNNb2JpbGVTYWZhcmkoKSB8fCBhcHBsaWNhdGlvbklzV2ViQXBwKCkpCisgICAgaWYgKElP
U0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IElPU0FwcGxpY2F0aW9uOjppc1dlYkFw
cCgpKQogICAgICAgICBhcHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOTJjNjk4ZjkwZDAyMjA3NWJlOTM2MmY1YmZjMDgyYzlj
YmUyZTdiNS4uNDc2ODcxYjEyZDRlZTQ3NzZhOWMxZmRhMjM1YzU1YzlhYzRhYzUyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTY2LDcgKzY2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2Fy
ZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGls
aXRpZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2Nzg1OGYyMWU3ZWI5ZmFlNGRhMGYx
YTI2NzA5MTk5ODIzM2E4OWMxLi5hOWI0MzI5MTc5MDlkYTEzZWEzMjQ4MGZmNmQ0OTEwODgxN2Vh
ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNjcsNyArNjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGlu
ZSBib29sIGV4cGVjdHNMZWdhY3lJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKCkKIHsKLSAgICBp
ZiAoYXBwbGljYXRpb25Jc1NhZmFyaSgpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc1Nh
ZmFyaSgpKSB7CiAgICAgICAgIGNvbnN0IGludDMyX3QgZmlyc3RWZXJzaW9uT2ZTYWZhcmlOb3RF
eHBlY3RpbmdJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sID0gMHgwMjFBMEYwMDsgLy8gNTM4LjE1
LjAKICAgICAgICAgYm9vbCBsaW5rZWRBZ2FpbnN0U2FmYXJpRXhwZWN0aW5nSW1wbGljaXRSdWJi
ZXJCYW5kQ29udHJvbCA9IE5TVmVyc2lvbk9mTGlua1RpbWVMaWJyYXJ5KCJTYWZhcmkiKSA8IGZp
cnN0VmVyc2lvbk9mU2FmYXJpTm90RXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbDsK
ICAgICAgICAgcmV0dXJuIGxpbmtlZEFnYWluc3RTYWZhcmlFeHBlY3RpbmdJbXBsaWNpdFJ1YmJl
ckJhbmRDb250cm9sOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIENHUmVjdCBXZWJQYWdlUHJveHk6OmJv
dW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqbGF5ZXIp
CiAKIGJvb2wgV2ViUGFnZVByb3h5OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKCkK
IHsKLSAgICByZXR1cm4gYXBwbGljYXRpb25Jc0FwcGxlTWFpbCgpOworICAgIHJldHVybiBNYWNB
cHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZv
bnQoY29uc3QgU3RyaW5nJiBmb250RmFtaWx5LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IGZv
bnRUcmFpdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273051</attachid>
            <date>2016-03-04 15:52:26 -0800</date>
            <delta_ts>2016-03-04 15:53:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155035-20160304155211.patch</filename>
            <type>text/plain</type>
            <size>83893</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFhMzM5ZWI5NTNkOWJm
ZGJmMWVlODg3YWI3NzZjMmExODBiZGI3Yi4uZTE4YmU2Nzg4OTJjNThkNmE4YTk0NTFmMjAxM2Jl
MmQyZjI3OTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE2LTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNvbGlkYXRlIFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TIGlu
dG8KKyAgICAgICAgb25lIGZpbGUuIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6Cisg
ICAgICAgIC0gVGhlIGNoZWNrcyBub3cgYWxsIHJlbHkgb24gYXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCksIHdoaWNoIGhhcyB0aGUKKyAgICAgICAgICBiZW5lZml0IG9mIHdvcmtpbmcgaW4g
V0sxIGFuZCBXSzIgVUkvV2ViQ29udGVudC9OZXR3b3JraW5nIHByb2Nlc3Nlcy4KKyAgICAgICAg
LSBVc2UgbmFtZXNwYWNlcyB0byBkaXN0aW5ndWlzaCBNYWMgYW5kIGlPUyBhcHBsaWNhdGlvbnMg
aW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgICAgb24gdGhlIG1ldGhvZCBuYW1lLiBTbywgYXBw
bGljYXRpb25Jc0lCb29rc0ZvcklPUygpIGJlY29tZXMKKyAgICAgICAgICBJT1NBcHBsaWNhdGlv
bjo6aXNJQm9va3MoKS4KKyAgICAgICAgLSBVc2UgTlNCdW5kbGUgQVBJIG9uIGJvdGggaU9TIGFu
ZCBNYWMgaW5zdGVhZCBvZiB1c2luZyB0aGUgQ0YgQVBJIG9uIE1hYworICAgICAgICAgIGFuZCB0
aGUgTlMgQVBJIG9uIGlPUy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZp
ZXddKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRSdW5Mb29wKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNjcmlwdDo6c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNT
YWZhcmkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzQXBwbGVNYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc0lCb29rcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
Y0FwcGxpY2F0aW9uOjppc0Fkb2JlSW5zdGFsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0Fw
cGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TXlEYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBw
bGljYXRpb246OmlzTWljcm9zb2Z0T3V0bG9vayk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNRdWlja2VuRXNzZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNBcGVydHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6
aXNWZXJzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNIUkJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NvbGlkU3RhdGVOZXR3b3Jr
c0Rvd25sb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzSGlwQ2hh
dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSk6CisgICAgICAg
IChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHApOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzT2tDdXBpZCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNG
YWNlYm9vayk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEYWlqaXNlbkRp
Y3Rpb25hcnkpOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTkFTQUhEKToK
KyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25l
KToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzSUJvb2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9VUkxDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
TGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50UnVu
TG9vcCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFdlYlRo
cmVhZEVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6bmVlZHNJT1NEdW1wUmVu
ZGVyVHJlZU1haW5GcmFtZVJlbmRlclZpZXdMYXllcklzQWx3YXlzT3BhcXVlSGFjayk6CisKIDIw
MTYtMDMtMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1heCBvdXQgdGltZXIgdGhyb3R0bGluZyBpbW1lZGlhdGVseSBmb3IgcHJlLXJlbmRl
ciBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0NWJjZTk3ZGEwZTI0MGY2NTI3ZTA5N2JkZGZhNjcwYTVhYzAz
MmUxLi5hMGMyNGU3NzY3YjQwMGYyMGRhMDNlMDMyMGM0OTNmMzNhYzhmMjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToK
KwogMjAxNi0wMy0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbW92ZSB2Y3hwcm9qIGJ1aWxkIHN5c3RlbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGI0YmQ0ZTUxYzQ1ODdiN2M1MGViNGM4NjE3MjUzNzM0YTZhNDIxNmYuLjY3OWNjMGM2ZWEz
YTU4MDBiYzI2NzhlNGNmMGZkYWYzNTk0Njc0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIENvbnNvbGlkYXRlIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgcnVudGltZSBhcHBsaWNhdGlvbiBjaGVja3MuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW06CisKIDIwMTYtMDItMTcgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMV0gTlNU
aW1lciBpbiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGZpcmVzIG9uIHRoZSBtYWluIHRo
cmVhZCB3aXRob3V0IHRoZSBXZWJUaHJlYWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjI3ZTdm
NGQ5YTY3OGMxOGFjNjgwZmRkMTFkMDc4MzkzZWY3NTMzZC4uOGZkYTZkOTc1NTYxMzJkMmM2Mjlj
MTU4MDY2OTg0ODFkNjYyZWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29u
c29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4KKworICAgICAgICAqIFBsdWdpbnMv
V2ViUGx1Z2luQ29udHJvbGxlci5tbToKKyAgICAgICAgKGluaXRpYWxpemVBdWRpb1Nlc3Npb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgIChuZWVkc01pY3Jvc29mdE1lc3Nl
bmdlckRPTURvY3VtZW50V29ya2Fyb3VuZCk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyIF91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRo
SWZOZWNlc3NhcnkpOgorICAgICAgICAoc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZyk6CisgICAg
ICAgIChzaG91bGRSZXN0cmljdFdpbmRvd0ZvY3VzKToKKyAgICAgICAgKG5lZWRzT3V0bG9va1F1
aXJrc1NjcmlwdCk6CisgICAgICAgIChzaG91bGRUcmFuc2Zvcm1zQWZmZWN0T3ZlcmZsb3cpOgor
ICAgICAgICAoc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50cyk6Cisg
ICAgICAgIChzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKToK
KyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdy
b3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBlbmFibGVXZWJUaHJlYWRdKToKKyAgICAg
ICAgKCtbV2ViVmlldyByZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3NdKToKKyAg
ICAgICAgKG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfbmVlZHNQcmVIVE1MNVBhcnNlclF1aXJrc10pOgorCiAyMDE2LTAyLTI5ICBBZGEgQ2hh
biAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IHRoZSBuZXcgdmVyc2lvbiBv
ZiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyJ3Mgc2hvd01lbnVGb3JSZWN0IG1ldGhvZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlYWQ4ZWJmYTUzMjYzNDRlMDBhMzFmMjZkMzRiZTAyNDEwNzQwODQzLi5m
ZmMzYjc3NDI1Mzg1NGY2MzEwOWFlNTQ5MTgyNmQ0YjNmZGQ1Y2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTYtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBDb25zb2xpZGF0ZSBSdW50aW1lQXBwbGljYXRpb25DaGVja3MgYW5kIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0lPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIHJ1bnRpbWUgYXBwbGljYXRpb24gY2hlY2tzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6bGlua2VkT25PckFmdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmV4cGVjdHNMZWdhY3lJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKToK
KwogMjAxNi0wMy0wNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVGVtcG9yYXJpbHkgdXNlIGJ1bmRsZSBpZGVudGlmaWVyIGFzIHBhcnQgb2YgdXNlciBkaXJl
Y3Rvcnkgc3VmZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc1ZGQxZGY2YmFjNmM0OTdjYTM1
NmY3OGM5NmRlMzFhY2EyMTNmODkuLjNkMjRkMzkwOWQ3YmI5NmVkZjgwMzVkMDdmNGZjMTlhOTA0
ZmZkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTE1LDcgKzIxMTUsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAK
ICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgcGxhdGZvcm0vUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLmNwcAotICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHAKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKICAgICBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0M2VmZWJm
MGE3MDNhMmY1YjY4ZWY5MTg5MGYzNDhiOTRmNzY4YzkuLjc3Zjg5Zjg3MzYyZGQ4MTM2NGQzYzlk
MzEwZGMxYWFhZTc5ZGVjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTIsNyArMTA5Miw2IEBACiAJCTI5MzQ5NDBBMTZD
MDJDMDcwMDkwMTMxOCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1MjdDQzkzMTZCRjkyRUMw
MDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCAqLzsgfTsKIAkJMjkz
NDk0MEIxNkMwMkMwQTAwOTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1MjdD
Qzk1MTZCRjk1REQwMDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgKi87IH07CiAJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5M0VBRTFFMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyOTNFQUUy
MTEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5M0VBRTIwMTM1NkIzMkUw
MDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovOyB9OwogCQkyOTQ4OUZD
NzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NDg5RkM1MTJDMDBGMDMwMEQ4
M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovOyB9OwogCQkyOTQ5ODY4MzE5NTM0
MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTQ5ODY4MTE5NTM0MTk0MDA3MkQy
QkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi87IH07CiAJCTI5N0JFM0Q1MTZD
MDNDMDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjUyN0NDOTExNkJGOEJB
MTAwOUREQUMwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggKi87IH07CkBA
IC0xNzA0LDggKzE3MDMsNiBAQAogCQk0NEEyMERCOTBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9T
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRB
MjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBQjEyREZCOEFDMDBB
RTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJNDRBMjhBQUYxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMu
aCAqLzsgfTsKLQkJNDRDMzYzRjAwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDRDMzYzRUUwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lP
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ0
QzM2M0YxMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEMzNjNFRjBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovOyB9Owog
CQk0NEM5OTE4MjBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4MTBGM0QxRTBE
MDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9s
bGJhclRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CkBAIC0xNzMyLDYgKzE3
MjksNyBAQAogCQk0NjM0NTkyQzFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTky
QjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi87IH07CiAJCTQ2M0VC
NjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8q
IFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07
CisJCTQ2NUE4RTc5MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVBOEU3
ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovOyB9Owog
CQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCAqLzsgfTsKQEAgLTg1MzUsNyArODUzMyw2IEBACiAJCTI5MTdCNTYwMTQ3MzQ5NkMwMDUyQzlE
MCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjkxN0I1NjUxNDczNDk5NTAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVs
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5ZXJGbHVz
aFNjaGVkdWxlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5M0VBRTFF
MTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI5M0VBRTIwMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQw
MDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTkyMTEsOCArOTIwOCw2IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIz
RTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0Ig
LyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1M
TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRDMzYzRUUwRkFBN0JCMzAw
OTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhl
bWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTkyNDEsNiArOTIzNiw3IEBACiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dl
ck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBv
d2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYy
MDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxv
YWRDb3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVu
dFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50
VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjkxMiwxMCAr
MjI5MDgsOCBAQAogCQkJCTk4MzFBRTQ5MTU0MjI1QTIwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGlj
eS5oICovLAogCQkJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovLAogCQkJCUNERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21t
YW5kTGlzdGVuZXIuaCAqLywKLQkJCQkyOTNFQUUyMDEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCAqLywKKwkJCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQg
LyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovLAogCQkJCTI5M0VBRTFFMTM1NkIyRkUw
MDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAqLywKLQkJCQk0NEMzNjNFRTBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi8sCi0JCQkJ
NDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5t
bSAqLywKIAkJCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3Bw
ICovLAogCQkJCTUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oICov
LAogCQkJCTUxNDEyOThGMUM2MDFBODkwMDU5RTcxNCAvKiBTY29wZUd1YXJkLmggKi8sCkBAIC0y
NzcwNyw3ICsyNzcwMSw2IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQUUxRjEzNTZCMkZFMDA2
N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
NEMzNjNGMDBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QzZFQTYxQTExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RENzA4OTcxODM1OUY2RjAwMkIz
REM2IC8qIFNhbXBsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0IwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MzIwLDggKzMxMzEzLDYgQEAKIAkJCQkxQTU2OUQyMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9tZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJC
ODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjkzRUFF
MjExMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0NEMzNjNGMTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOEM2RUE2MTkxMUVGN0UwNDAwRkQ4
RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RE
NzA4OTYxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUU5MTFDQTBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTQzMSw2ICszMTQyMiw3IEBACiAJCQkJQzVBMUVBN0MxNTJC
Q0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQwMEQ3QTQxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDY1QThFNzkxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMzI3RDYxMTFBMzNB
MkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEx
Q0MwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE1MEY5RjIxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggYTZmODM2ZTcyYTA2M2M5OTRlNDZjYjIwNzA2ZjBlMjYwMDgxZmQzOC4uODg0NzQ1
YmUyMjU2ZTc3NGRiZmI3NzA1NjMzNjgwZmQzNDM5YzUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIK
ICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCi0jaW1wb3J0ICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oIgogI2ltcG9ydCAiU1ZHTmFtZXMuaCIKICNpbXBvcnQgIlNWR0VsZW1lbnQuaCIKICNp
bXBvcnQgIlRleHRJdGVyYXRvci5oIgpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpz
dHJpbmcpCiAgICAgLy8gVGhlIHBhcmVudFZpZXcgc2hvdWxkIGhhdmUgYW4gYWNjZXNzaWJpbGl0
eUNvbnRhaW5lciwgaWYgdGhlIFVJS2l0IGFjY2Vzc2liaWxpdHkgYnVuZGxlIHdhcyBsb2FkZWQu
IAogICAgIC8vIFRoZSBleGNlcHRpb24gaXMgRFJULCB3aGljaCB0ZXN0cyBhY2Nlc3NpYmlsaXR5
IHdpdGhvdXQgdGhlIGVudGlyZSBzeXN0ZW0gdHVybmluZyBhY2Nlc3NpYmlsaXR5IG9uLiBIZW5j
ZSwKICAgICAvLyB0aGlzIGNoZWNrIHNob3VsZCBiZSB2YWxpZCBmb3IgZXZlcnl0aGluZyBleGNl
cHQgRFJULgotICAgIEFTU0VSVChbcGFyZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udGFpbmVyXSB8
fCBhcHBsaWNhdGlvbklzRHVtcFJlbmRlclRyZWUoKSk7CisgICAgQVNTRVJUKFtwYXJlbnRWaWV3
IGFjY2Vzc2liaWxpdHlDb250YWluZXJdIHx8IElPU0FwcGxpY2F0aW9uOjppc0R1bXBSZW5kZXJU
cmVlKCkpOwogICAgIAogICAgIHJldHVybiBbcGFyZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udGFp
bmVyXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCmluZGV4IDE5ZmNhMjUwNTliNTY2OTgxZDhkMjhkNDdkNTkzNjdkNjRkYmRkNzIuLjAxNDk2
ZWU2YTQ3YzllYWRkNjI0NDkyOTNiYjBlYzBlZTVjOTIxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIFZN
JiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgICAgICBpZiAoYXBwbGljYXRpb25Jc0lUdW5lcygpIHx8IGFwcGxpY2F0aW9uSXNJQm9v
a3MoKSB8fCBTZXR0aW5nczo6c2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIoKSkKKyAgICAgICAgaWYg
KE1hY0FwcGxpY2F0aW9uOjppc0lUdW5lcygpIHx8IE1hY0FwcGxpY2F0aW9uOjppc0lCb29rcygp
IHx8IFNldHRpbmdzOjpzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcigpKQogICAgICAgICAgICAgdm0t
PnNldFNob3VsZFJld3JpdGVDb25zdEFzVmFyKHRydWUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggYjMzYWQ0ZjVi
MTFkZjM5OTdkNDUzMGVlYzcyMTU2YmZjNTAxMzI4MC4uNTcwZjljZmI4NWU4OWM4YjVhOTY2ZTQ5
OWIxMDhkNDE3NTNjY2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogSGlwQ2hhdCB0cmllcyB0byBz
ZXQgTG9jYXRpb24ucmVsb2FkIHdoaWNoIGNhdXNlcyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3du
IGluIHN0cmljdCBtb2RlIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzI0OTMxOTU5PikuCi0gICAgaWYg
KGFwcGxpY2F0aW9uSXNIaXBDaGF0KCkpCisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc0hpcENo
YXQoKSkKICAgICAgICAgc2xvdC5zZXRTdHJpY3RNb2RlKGZhbHNlKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkNTU4YzdhOThlY2VmMjc5
MTM1MTdmN2RjYjMzYzJkMzY3MjYyNWViLi5kOGU2ZjBhN2U1YWJkNzZkOWMwMzc5ZmE0OTU0MGUw
MWM5OWE5MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmlu
ZGV4IGIxNjkyOGY2NmQwZjljNWRjYmJmMDFmYzM3MDc5MTJiNjZhYjViMjguLjc5NGIxMjM1MTVk
NDg4YjBhMjMwMDhjOTBkZjJlMmZlYjBkMWUzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSAiRHluYW1pY0xpbmtlclNQSS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMg
dm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVgogI2lmIFBMQVRGT1JNKElPUykKIHN0YXRpYyBib29sIHNob3VsZE5v
dFBlcmZvcm1VUkxBZGp1c3RtZW50KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGROb3RQZXJm
b3JtVVJMQWRqdXN0bWVudCA9IGFwcGxpY2F0aW9uSXNOQVNBSEQoKSAmJiBkeWxkX2dldF9wcm9n
cmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzVfMDsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCA9IElPU0FwcGxpY2F0aW9uOjppc05BU0FI
RCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05f
NV8wOwogICAgIHJldHVybiBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudDsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggYTQ3
MDRkMjlmNmI3NDI4NjFmYTJmZDRmMDQxNTQyZWFjMzk2ZjAzZS4uNzZjYjhkMjA3OWI4YzE4ZmFh
ZGNhNzdkODc5NWRmOWQ1NjQ2ZGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGY1Nzk1Njk3MTEwZjY3MDBiMWJiMWUy
NDk0YmM0YjliNGZiYWYxOWEuLmE3M2ZkYWNkZjAzYmJjODY3NGNjNjI2NDI2NDNjZTNhZDM2YjVh
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIApAQCAtNzAsNyArNzAsNyBAQCBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKICAgICAvLyB3ZSBzdGlsbCBhbGxvdyB0
aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzc0MDMzMjg+LiBTaW5jZSB0aGUgcmFjZSBjb25kaXRp
b24gYW5kIHN1YnNlcXVlbnQKICAgICAvLyBjcmFzaCBhcmUgZXNwZWNpYWxseSB0cm91Ymxlc29t
ZSBmb3IgaUJvb2tzLCB3ZSBuZXZlciBhbGxvdyB0aGUgb2JzZXJ2ZXIgdG8gYmUgYWRkZWQgdG8g
dGhlCiAgICAgLy8gbWFpbiBydW4gbG9vcCBpbiBpQm9va3MuCi0gICAgaWYgKGFwcGxpY2F0aW9u
SXNJQm9va3NPbklPUygpKQorICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKSkKICAg
ICAgICAgcmV0dXJuIFdlYlRocmVhZFJ1bkxvb3AoKTsKICNlbmRpZgogICAgIHJldHVybiBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRl
eCBjZjdkNjI1M2RkZDNlOTViZjNjM2MzNTMzMDMwMDk4MDAwN2NhMWMwLi5jZTc1YjU3YmVjOWRi
NmNmZjFhOTg5YmNhY2QwOTQ2ZDNjMDkwMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgog
I2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVk
ZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU3lzdGVtTWVtb3J5Lmgi
CiAjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKICNlbmRpZgpAQCAtMTQ3NSw3ICsx
NDc1LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1
cmwpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIE1vYmlsZVN0b3JlIGRlcGVuZHMgb24gdGhl
IGlPUyA0LjAgZXJhIGNsaWVudCBkZWxlZ2F0ZSBtZXRob2QgYmVjYXVzZSB3ZWJWaWV3OnJlc291
cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291cmNlCiAgICAg
Ly8gZG9lc24ndCBsZXQgdGhlbSB0ZWxsIHdoZW4gYSBsb2FkIHJlcXVlc3QgaXMgY29taW5nIGZy
b20gYSBtZWRpYSBlbGVtZW50LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgyNjY5MTY+IGZvciBtb3Jl
IGRldGFpbHMuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpKQorICAgIGlmIChJ
T1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSgpKQogICAgICAgICByZXR1cm4gbV9jbGllbnQu
c2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTCh1cmwpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDllMzhlYzc0MGQyMzllYjNjMTQ2
NGI5ZDVlNjdkYzg4ZmUwM2FiZDguLmE3N2ExODM0NjYwODJlZWU4NDdhYjA5YmFhZjM1ZGFkY2Rl
NDY4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApA
QCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKLSNpbmNsdWRlIDxSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNp
bmNsdWRlIDxSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTEwMCw3ICsxMDAsNyBAQCBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRS
ZXNvdXJjZQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0
UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIGlmICghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSkgewor
ICAgIGlmICghSU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIE9u
IGlPUywgZG8gbm90IGludm9rZSBzeW5jaHJvbm91cyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlcyB3
aGlsZSByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcKICAgICAgICAgLy8gaXMgZGlzYWJsZWQgdG8g
YXZvaWQgcmUtZW50ZXJpbmcgc3R5bGUgc2VsZWN0aW9uIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFk
IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzkxMjE3MTk+KS4KICAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGZpeGVkIGZvciBhbGwgcG9ydHMgaW4gPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjY0Nz4uCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UKICNpZiBQTEFURk9STShJT1MpCiBib29sIFN1YnJlc291cmNlTG9hZGVyOjpz
dGFydExvYWRpbmcoKQogewotICAgIEFTU0VSVCghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSk7
CisgICAgQVNTRVJUKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpOwogICAgIGlmICgh
aW5pdChtX2lPU09yaWdpbmFsUmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X2lPU09yaWdpbmFsUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBlZGNlY2Y4YzUxN2VjNzM1YzU5
ZGUwZWFjMDdhZDA3Y2FhZDlhZjBlLi4xM2FjMzAxYWJlM2NkM2VhNWM2N2ZiMDIwYjNhODU2NDhj
YTk4NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtMTMxLDE0ICsxMzEsMTYgQEAgYm9vbCBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlQWxsb3dl
ZEJ5Tm9zbmlmZigpIGNvbnN0CiAKIGJvb2wgQ2FjaGVkU2NyaXB0OjpzaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMTM5MTYyOTE+CiAgICAgLy8g
UkVHUkVTU0lPTiAocjExOTc1OSk6IEFkb2JlIEZsYXNoIFBsYXllciAic21hbGxlciIgaW5zdGFs
bGVyIHJlbGllcyBvbiB0aGUgaW5jb3JyZWN0IGZpcmluZwogICAgIC8vIG9mIGEgbG9hZCBldmVu
dCBhbmQgbmVlZHMgYW4gYXBwLXNwZWNpZmljIGhhY2sgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAg
Ly8gVGhlIGluc3RhbGxlciBpbiBxdWVzdGlvbiB0cmllcyB0byBsb2FkIC5qcyBmaWxlIHRoYXQg
ZG9lc24ndCBleGlzdCwgY2F1c2luZyB0aGUgc2VydmVyIHRvCiAgICAgLy8gcmV0dXJuIGEgNDA0
IHJlc3BvbnNlLiBOb3JtYWxseSwgdGhpcyB3b3VsZCB0cmlnZ2VyIGFuIGVycm9yIGV2ZW50IHRv
IGJlIGRpc3BhdGNoZWQsIGJ1dCB0aGUKICAgICAvLyBpbnN0YWxsZXIgZXhwZWN0cyBhIGxvYWQg
ZXZlbnQgaW5zdGVhZCBzbyB3ZSB3b3JrIGFyb3VuZCBpdCBoZXJlLgotICAgIGlmIChhcHBsaWNh
dGlvbklzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpKQorICAgIGlmIChNYWNBcHBsaWNh
dGlvbjo6aXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAKICAgICByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OnNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDhiNGY2NTA0ODk2NTdmMTE1ZTFlMjZiMGM1NzkwOTJiYjhhZWNhNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotI2lmIFVTRShDRikKLXN0YXRpYyBDRlN0cmluZ1JlZiBtYWluQnVuZGxlSWRl
bnRpZmllcigpCi17Ci0gICAgQ0ZCdW5kbGVSZWYgbWFpbkJ1bmRsZSA9IENGQnVuZGxlR2V0TWFp
bkJ1bmRsZSgpOwotICAgIGlmICghbWFpbkJ1bmRsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gQ0ZCdW5kbGVHZXRJZGVudGlmaWVyKG1haW5CdW5kbGUpOwotfQotI2Vu
ZGlmCi0KLS8vIFRoZSBhcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNldCB0byB0
aGUgVUlQcm9jZXNzIGJ1bmRsZSBpZGVudGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFuZAotLy8g
dGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB1cG9uIGluaXRpYWxpemF0aW9uLgotLy8gSWYgbm90IGV4
cGxpY2l0bHkgc2V0LCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVudGlmaWVy
IHdoaWNoIGlzIGFjY3VyYXRlIGZvciBXSzEgb3IKLS8vIHRoZSBXSzIgVUlQcm9jZXNzLgotc3Rh
dGljIFN0cmluZyYgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0jaWYgVVNFKENGKQotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGlkZW50aWZpZXIobWFpbkJ1bmRsZUlkZW50aWZpZXIoKSk7Ci0jZWxzZQot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXI7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBpZGVudGlmaWVyOwotfQotCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFi
bHkgYmUgcmVuYW1lZCB0byBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygpIGFuZCB1c2UgYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKLS8vIGluc3RlYWQgb2YgbWFpbkJ1bmRsZUlkZW50
aWZpZXIoKSBpbnRlcm5hbGx5LiBUaGlzIHdvdWxkIGhhdmUgdGhlIGJlbmVmaXQgb2Ygd29ya2lu
ZyBmb3IgYm90aCBXZWJLaXQxIGFuZAotLy8gV2ViS2l0Mi4KLXN0YXRpYyBib29sIG1haW5CdW5k
bGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQotewotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0uCi0gICAgLy8gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRo
ZSBQTEFURk9STShJT1MpLWd1YXJkLgotI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICBDRlN0cmluZ1JlZiBidW5kbGVJZGVudGlmaWVyID0gbWFpbkJ1bmRsZUlkZW50aWZpZXIoKTsK
LSAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmll
clN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNTYWZhcmkoKQotewot
ICAgIHN0YXRpYyBib29sIGlzU2FmYXJpID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxl
LlNhZmFyaSIpOwotICAgIHJldHVybiBpc1NhZmFyaTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklz
QXBwbGVNYWlsKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0FwcGxlTWFpbCA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7Ci0gICAgcmV0dXJuIGlzQXBwbGVNYWlsOwotfQot
Ci1ib29sIGFwcGxpY2F0aW9uSXNJQm9va3MoKQotewotICAgIHN0YXRpYyBib29sIGlzSUJvb2tz
ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rc1giKTsKLSAgICByZXR1cm4g
aXNJQm9va3M7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0lUdW5lcygpCi17Ci0gICAgc3RhdGlj
IGJvb2wgaXNJVHVuZXMgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaVR1bmVzIik7
Ci0gICAgcmV0dXJuIGlzSVR1bmVzOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRN
ZXNzZW5nZXIoKQotewotICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0TWVzc2VuZ2VyID0gbWFp
bkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5NZXNzZW5nZXIiKTsKLSAgICByZXR1cm4g
aXNNaWNyb3NvZnRNZXNzZW5nZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFs
bGVyKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0Fkb2JlSW5zdGFsbGVyID0gbWFpbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKLSAgICByZXR1cm4gaXNBZG9i
ZUluc3RhbGxlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzQU9MSW5zdGFudE1lc3Nlbmdlcigp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaXNBT0xJbnN0YW50TWVzc2VuZ2VyID0gbWFpbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOwotICAgIHJldHVybiBpc0FPTEluc3RhbnRN
ZXNzZW5nZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE15RGF5KCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29t
Lm1pY3Jvc29mdC5teWRheSIpOwotICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5OwotfQotCi1i
b29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRPdXRsb29rKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBp
c01pY3Jvc29mdE91dGxvb2sgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91
dGxvb2siKTsKLSAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOwotfQotCi1ib29sIGFwcGxp
Y2F0aW9uSXNRdWlja2VuRXNzZW50aWFscygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNRdWlja2Vu
RXNzZW50aWFscyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5pbnR1aXQuUXVpY2tlbkVzc2Vu
dGlhbHMiKTsKLSAgICByZXR1cm4gaXNRdWlja2VuRXNzZW50aWFsczsKLX0KLQotYm9vbCBhcHBs
aWNhdGlvbklzQXBlcnR1cmUoKQotewotICAgIHN0YXRpYyBib29sIGlzQXBlcnR1cmUgPSBtYWlu
QnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuQXBlcnR1cmUiKTsKLSAgICByZXR1cm4gaXNBcGVy
dHVyZTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzVmVyc2lvbnMoKQotewotICAgIHN0YXRpYyBi
b29sIGlzVmVyc2lvbnMgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJz
aW9ucyIpOwotICAgIHJldHVybiBpc1ZlcnNpb25zOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNI
UkJsb2NrKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0hSQmxvY2sgPSBtYWluQnVuZGxlSXNFcXVh
bFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpOwotICAgIHJldHVybiBpc0hSQmxvY2s7Ci19Ci0K
LWJvb2wgYXBwbGljYXRpb25Jc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKQotewotICAg
IHN0YXRpYyBib29sIGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlciA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5zb2xpZHN0YXRlbmV0d29ya3MuYXdraG9zdCIpOwotICAgIHJldHVybiBp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0hp
cENoYXQoKQotewotICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpID09ICJjb20uaGlwY2hhdC5IaXBDaGF0IjsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzSGlwQ2hhdCA9PSAoYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPT0gImNv
bS5oaXBjaGF0LkhpcENoYXQiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwotICAgIHJldHVybiBpc0hpcENoYXQ7Ci19Ci0K
LXZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcikKLXsKLSAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9IGJ1bmRs
ZUlkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggNWM3ZmVk
MDlhNWVlYjFkOTMxNWM5MzFlYmU0MGI0NzMyM2YzNmNhNi4uZGI0MjNiMjc2ZmJlNzYzZDcwNjg3
ZDU2YTJkMTUyODBjMmJiODQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKQEAgLTI2LDI4ICsyNiw2MCBAQAogI2lmbmRlZiBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NfaAogI2RlZmluZSBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NfaAogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
T0xJbnN0YW50TWVzc2VuZ2VyKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
ZG9iZUluc3RhbGxlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzQXBlcnR1
cmUoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0FwcGxlTWFpbCgpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzSUJvb2tzKCk7Ci1XRUJDT1JFX0VYUE9SVCBi
b29sIGFwcGxpY2F0aW9uSXNJVHVuZXMoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRp
b25Jc01pY3Jvc29mdE1lc3NlbmdlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlv
bklzTWljcm9zb2Z0TXlEYXkoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01p
Y3Jvc29mdE91dGxvb2soKTsKLWJvb2wgYXBwbGljYXRpb25Jc1F1aWNrZW5Fc3NlbnRpYWxzKCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNTYWZhcmkoKTsKLWJvb2wgYXBwbGlj
YXRpb25Jc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgYXBwbGljYXRpb25Jc1ZlcnNpb25zKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0
aW9uSXNIUkJsb2NrKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNIaXBDaGF0
KCk7Ci0KIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpOwogCisjaWYgUExBVEZPUk0oTUFDKQorCituYW1lc3BhY2UgTWFjQXBw
bGljYXRpb24geworCitXRUJDT1JFX0VYUE9SVCBib29sIGlzQU9MSW5zdGFudE1lc3Nlbmdlcigp
OworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Fkb2JlSW5zdGFsbGVyKCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIGlzQXBlcnR1cmUoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNBcHBsZU1haWwoKTsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNJQm9va3MoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNJ
VHVuZXMoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaWNyb3NvZnRNZXNzZW5nZXIoKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgaXNNaWNyb3NvZnRNeURheSgpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc01pY3Jvc29mdE91dGxvb2soKTsKK2Jvb2wgaXNRdWlja2VuRXNzZW50aWFscygpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1NhZmFyaSgpOworYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rv
d25sb2FkZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNWZXJzaW9ucygpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0hSQmxvY2soKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNIaXBDaGF0KCk7
CisKK30gLy8gTWFjQXBwbGljYXRpb24KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lm
IFBMQVRGT1JNKElPUykKKworbmFtZXNwYWNlIElPU0FwcGxpY2F0aW9uIHsKKworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc01vYmlsZU1haWwoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNNb2JpbGVT
YWZhcmkoKTsKK2Jvb2wgaXNEdW1wUmVuZGVyVHJlZSgpOworYm9vbCBpc01vYmlsZVN0b3JlKCk7
CitXRUJDT1JFX0VYUE9SVCBib29sIGlzV2ViQXBwKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlz
T2tDdXBpZCgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ZhY2Vib29rKCk7CitXRUJDT1JFX0VY
UE9SVCBib29sIGlzRGFpamlzZW5EaWN0aW9uYXJ5KCk7Citib29sIGlzTkFTQUhEKCk7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzVGhlRWNvbm9taXN0T25JcGhvbmUoKTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgaXNXZWJQcm9jZXNzKCk7Citib29sIGlzSUJvb2tzKCk7CisKK30gLy8gSU9TQXBwbGlj
YXRpb24KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKICNlbmRpZiAvLyBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkYzdmNzE1OWRmMjJkYWM4NDZiNjlkMzU2
Yzc0NDc0OGVkYmJkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0KQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TQnVuZGxlLmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGUgYXBw
bGljYXRpb24gYnVuZGxlIGlkZW50aWZpZXIgZ2V0cyBzZXQgdG8gdGhlIFVJUHJvY2VzcyBidW5k
bGUgaWRlbnRpZmllciBieSB0aGUgV2ViUHJvY2VzcyBhbmQKKy8vIHRoZSBuZXR3b3JraW5nIHBy
b2Nlc3MgdXBvbiBpbml0aWFsaXphdGlvbi4KKy8vIElmIG5vdCBleHBsaWNpdGx5IHNldCwgdGhp
cyB3aWxsIHJldHVybiB0aGUgbWFpbiBidW5kbGUgaWRlbnRpZmllciB3aGljaCBpcyBhY2N1cmF0
ZSBmb3IgV0sxIG9yCisvLyB0aGUgV0syIFVJUHJvY2Vzcy4KK3N0YXRpYyBTdHJpbmcmIGFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXIoW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisKKyAgICByZXR1cm4gaWRlbnRp
ZmllcjsKK30KKworc3RhdGljIGJvb2wgYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQoreworICAgIHJldHVybiBhcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSA9PSBidW5kbGVJZGVudGlmaWVyU3RyaW5nOworfQorCisjaWYg
UExBVEZPUk0oTUFDKQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpCit7CisgICAg
c3RhdGljIGJvb2wgaXNTYWZhcmkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFw
cGxlLlNhZmFyaSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNTYWZhcmkgPT0gYXBwbGlj
YXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5TYWZhcmkiKSwgIlNob3VsZCBub3QgYmUg
Y2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJl
dHVybiBpc1NhZmFyaTsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKQor
eworICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWlsID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5hcHBsZS5tYWlsIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0FwcGxlTWFp
bCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1haWwiKSwgIlNob3Vs
ZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIp
OworICAgIHJldHVybiBpc0FwcGxlTWFpbDsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJ
Qm9va3MoKQoreworICAgIHN0YXRpYyBib29sIGlzSUJvb2tzID0gYXBwbGljYXRpb25CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3NYIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rc1gi
KSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKSIpOworICAgIHJldHVybiBpc0lCb29rczsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlv
bjo6aXNJVHVuZXMoKQoreworICAgIHN0YXRpYyBib29sIGlzSVR1bmVzID0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGlzSVR1bmVzID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaVR1
bmVzIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNJVHVuZXM7Cit9CisKK2Jvb2wgTWFjQXBwbGlj
YXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01pY3Jv
c29mdE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0
Lk1lc3NlbmdlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNaWNyb3NvZnRNZXNzZW5n
ZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQuTWVzc2VuZ2Vy
IiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNaWNyb3NvZnRNZXNzZW5nZXI7Cit9CisKK2Jvb2wg
TWFjQXBwbGljYXRpb246OmlzQWRvYmVJbnN0YWxsZXIoKQoreworICAgIHN0YXRpYyBib29sIGlz
QWRvYmVJbnN0YWxsZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFkb2JlLklu
c3RhbGxlcnMuU2V0dXAiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQWRvYmVJbnN0YWxs
ZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hZG9iZS5JbnN0YWxsZXJzLlNl
dHVwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBZG9iZUluc3RhbGxlcjsKK30KKworYm9vbCBN
YWNBcHBsaWNhdGlvbjo6aXNBT0xJbnN0YW50TWVzc2VuZ2VyKCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
LmFvbC5haW0uZGVza3RvcCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBT0xJbnN0YW50
TWVzc2VuZ2VyID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYW9sLmFpbS5kZXNr
dG9wIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBT0xJbnN0YW50TWVzc2VuZ2VyOworfQorCiti
b29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE15RGF5KCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBpc01pY3Jvc29mdE15RGF5ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNy
b3NvZnQubXlkYXkiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTWljcm9zb2Z0TXlEYXkg
PT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQubXlkYXkiKSwgIlNo
b3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KSIpOworICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5OworfQorCitib29sIE1hY0FwcGxpY2F0
aW9uOjppc01pY3Jvc29mdE91dGxvb2soKQoreworICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0
T3V0bG9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91dGxv
b2siKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTWljcm9zb2Z0T3V0bG9vayA9PSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5PdXRsb29rIiksICJTaG91bGQg
bm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsK
KyAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOworfQorCitib29sIE1hY0FwcGxpY2F0aW9u
Ojppc1F1aWNrZW5Fc3NlbnRpYWxzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1F1aWNrZW5Fc3Nl
bnRpYWxzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5pbnR1aXQuUXVpY2tlbkVz
c2VudGlhbHMiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzUXVpY2tlbkVzc2VudGlhbHMg
PT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5pbnR1aXQuUXVpY2tlbkVzc2VudGlh
bHMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1F1aWNrZW5Fc3NlbnRpYWxzOworfQorCitib29s
IE1hY0FwcGxpY2F0aW9uOjppc0FwZXJ0dXJlKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0FwZXJ0
dXJlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5BcGVydHVyZSIpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBcGVydHVyZSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBcGVy
dHVyZTsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNWZXJzaW9ucygpCit7CisgICAgc3Rh
dGljIGJvb2wgaXNWZXJzaW9ucyA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYmxh
Y2twaXhlbC52ZXJzaW9ucyIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNWZXJzaW9ucyA9
PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmJsYWNrcGl4ZWwudmVyc2lvbnMiKSwg
IlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKSIpOworICAgIHJldHVybiBpc1ZlcnNpb25zOworfQorCitib29sIE1hY0FwcGxpY2F0aW9u
Ojppc0hSQmxvY2soKQoreworICAgIHN0YXRpYyBib29sIGlzSFJCbG9jayA9IGFwcGxpY2F0aW9u
QnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNIUkJsb2NrID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJi
bG9jay50YXguMjAxMCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzSFJCbG9jazsKK30KKworYm9v
bCBNYWNBcHBsaWNhdGlvbjo6aXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkKK3sKKyAg
ICBzdGF0aWMgYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIgPSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLnNvbGlkc3RhdGVuZXR3b3Jrcy5hd2tob3N0Iik7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIgPT0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5zb2xpZHN0YXRlbmV0d29ya3MuYXdraG9zdCIp
LCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpIik7CisKKyAgICByZXR1cm4gaXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyOwor
fQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0hpcENoYXQoKQoreworICAgIHN0YXRpYyBib29s
IGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaGlwY2hhdC5IaXBD
aGF0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0hpcENoYXQgPT0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImNvbS5oaXBjaGF0LkhpcENoYXQiKSwgIlNob3VsZCBub3QgYmUgY2Fs
bGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVy
biBpc0hpcENoYXQ7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNpZiBQTEFURk9S
TShJT1MpCisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTW9iaWxlTWFpbCgpCit7CisgICAgc3Rh
dGljIGJvb2wgaXNNb2JpbGVNYWlsID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
cHBsZS5tb2JpbGVtYWlsIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc01vYmlsZU1haWwg
PT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tb2JpbGVtYWlsIiksICJT
aG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkiKTsKKyAgICByZXR1cm4gaXNNb2JpbGVNYWlsOworfQorCitib29sIElPU0FwcGxpY2F0aW9u
Ojppc01vYmlsZVNhZmFyaSgpCit7CisgICAgc3RhdGljIGJvb2wgaXNNb2JpbGVTYWZhcmkgPSBh
cHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1vYmlsZXNhZmFyaSIpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVTYWZhcmkgPT0gYXBwbGljYXRpb25CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVk
IGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBp
c01vYmlsZVNhZmFyaTsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJl
ZSgpCit7CisgICAgLy8gV2UgdXNlIGEgcHJlZml4IG1hdGNoIGluc3RlYWQgb2Ygc3RyaWN0IGVx
dWFsaXR5IHNpbmNlIExheW91dFRlc3RSZWxheSBtYXkgbGF1bmNoIG11bHRpcGxlIGluc3RhbmNl
cyBvZgorICAgIC8vIER1bXBSZW5kZXJUcmVlIHdoZXJlIHRoZSBidW5kbGUgaWRlbnRpZmllciBv
ZiBlYWNoIGluc3RhbmNlIGhhcyBhIHVuaXF1ZSBzdWZmaXguCisgICAgc3RhdGljIGJvb2wgaXNE
dW1wUmVuZGVyVHJlZSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJvcmcud2Via2l0LkR1
bXBSZW5kZXJUcmVlIik7IC8vIGUuZy4gb3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZTAKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGlzRHVtcFJlbmRlclRyZWUgPT0gYXBwbGljYXRpb25CdW5kbGVJ
c0VxdWFsVG8oIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiKSwgIlNob3VsZCBub3QgYmUgY2Fs
bGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVy
biBpc0R1bXBSZW5kZXJUcmVlOworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc01vYmlsZVN0
b3JlKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01vYmlsZVN0b3JlID0gYXBwbGljYXRpb25CdW5k
bGVJc0VxdWFsVG8oImNvbS5hcHBsZS5Nb2JpbGVTdG9yZSIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXNNb2JpbGVTdG9yZSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFw
cGxlLk1vYmlsZVN0b3JlIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNb2JpbGVTdG9yZTsKK30K
KworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKQoreworICAgIHN0YXRpYyBib29sIGlz
V2ViQXBwID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS53ZWJhcHAiKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzV2ViQXBwID09IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uYXBwbGUud2ViYXBwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNXZWJBcHA7
Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzT2tDdXBpZCgpCit7CisgICAgc3RhdGljIGJv
b2wgaXNPa0N1cGlkID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5va2N1cGlkLmFw
cCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNPa0N1cGlkID09IGFwcGxpY2F0aW9uQnVu
ZGxlSXNFcXVhbFRvKCJjb20ub2tjdXBpZC5hcHAiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc09r
Q3VwaWQ7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzRmFjZWJvb2soKQoreworICAgIHN0
YXRpYyBib29sIGlzRmFjZWJvb2sgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmZh
Y2Vib29rLkZhY2Vib29rIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0ZhY2Vib29rID09
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZmFjZWJvb2suRmFjZWJvb2siKSwgIlNo
b3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KSIpOworICAgIHJldHVybiBpc0ZhY2Vib29rOworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjpp
c0RhaWppc2VuRGljdGlvbmFyeSgpCit7CisgICAgc3RhdGljIGJvb2wgaXNEYWlqaXNlbkRpY3Rp
b25hcnkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygianAuY28uc2hvZ2FrdWthbi5kYWlq
aXNlbjIwMDlpIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0RhaWppc2VuRGljdGlvbmFy
eSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygianAuY28uc2hvZ2FrdWthbi5kYWlqaXNl
bjIwMDlpIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNEYWlqaXNlbkRpY3Rpb25hcnk7Cit9CisK
K2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTkFTQUhEKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc05B
U0FIRCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJnb3YubmFzYS5OQVNBSEQiKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTkFTQUhEID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJnb3YubmFzYS5OQVNBSEQiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc05BU0FIRDsKK30K
KworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNUaGVFY29ub21pc3RPbklwaG9uZSgpCit7CisgICAg
c3RhdGljIGJvb2wgaXNUaGVFY29ub21pc3RPbklwaG9uZSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uZWNvbm9taXN0LmlwaG9uZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
aXNUaGVFY29ub21pc3RPbklwaG9uZSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
LmVjb25vbWlzdC5pcGhvbmUiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1RoZUVjb25vbWlzdE9u
SXBob25lOworfQorCisvLyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIHdoZW4gdGhl
IFdlYlByb2Nlc3MgaXMgY2hhbmdlZCB0byBhbiBYUEMgc2VydmljZS4KK2Jvb2wgSU9TQXBwbGlj
YXRpb246OmlzV2ViUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJvb2wgaXNXZWJQcm9jZXNzID0g
W1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5n
OkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50Il0KKyAgICAgICAgfHwg
W1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5n
OkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50Il0KKyAgICAgICAgfHwgW1tbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxl
LldlYlByb2Nlc3MiXTsKKyAgICByZXR1cm4gaXNXZWJQcm9jZXNzOworfQorCitib29sIElPU0Fw
cGxpY2F0aW9uOjppc0lCb29rcygpCit7CisgICAgc3RhdGljIGJvb2wgaXNJQm9va3MgPSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rcyIpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXNJQm9va3MgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
cHBsZS5pQm9va3MiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0lCb29rczsKK30KKworI2VuZGlm
CisKK3ZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllcikKK3sKKyAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9IGJ1
bmRsZUlkZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZDcxNzhhYTEyNGRjNDMyYmY3YmJhY2UyNWYy
Nzg3N2RhMGExMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TX2gKLSNkZWZpbmUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9T
X2gKLQotLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZmlsZSB3aXRo
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oLgotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XRUJD
T1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVNYWlsKCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsKLWJvb2wgYXBwbGljYXRpb25Jc0R1
bXBSZW5kZXJUcmVlKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzV2ViQXBwKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29s
IGFwcGxpY2F0aW9uSXNPa0N1cGlkKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9u
SXNGYWNlYm9vaygpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzRGFpamlzZW5E
aWN0aW9uYXJ5KCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNOQVNBSEQoKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgYXBwbGljYXRpb25Jc1RoZUVjb25vbWlzdE9uSVBob25lKCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNJQm9v
a3NPbklPUygpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSdW50aW1l
QXBwbGljYXRpb25DaGVja3NJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MWE3Mzc2ZjBmMmQ1NWUzOGJjMzEyMTI0YjMzNjI3YTdjNjUzZTA3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDExMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCi0KLS8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
bWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwLgotI2lm
IFBMQVRGT1JNKElPUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIGFwcGxpY2F0aW9u
SXNNb2JpbGVNYWlsKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc01vYmlsZU1haWwgPSBb
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6
QCJjb20uYXBwbGUubW9iaWxlbWFpbCJdOwotICAgIHJldHVybiBpc01vYmlsZU1haWw7Ci19Ci0K
LWJvb2wgYXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNNb2JpbGVTYWZhcmkgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUubW9iaWxlc2FmYXJpIl07Ci0gICAgcmV0
dXJuIGlzTW9iaWxlU2FmYXJpOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNEdW1wUmVuZGVyVHJl
ZSgpCi17Ci0gICAgLy8gV2UgdXNlIGEgcHJlZml4IG1hdGNoIGluc3RlYWQgb2Ygc3RyaWN0IGVx
dWFsaXR5IHNpbmNlIExheW91dFRlc3RSZWxheSBtYXkgbGF1bmNoIG11bHRpcGxlIGluc3RhbmNl
cyBvZgotICAgIC8vIER1bXBSZW5kZXJUcmVlIHdoZXJlIHRoZSBidW5kbGUgaWRlbnRpZmllciBv
ZiBlYWNoIGluc3RhbmNlIGhhcyBhIHVuaXF1ZSBzdWZmaXguCi0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNEdW1wUmVuZGVyVHJlZSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdIGhhc1ByZWZpeDpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsgLy8gZS5nLiBv
cmcud2Via2l0LkR1bXBSZW5kZXJUcmVlMAotICAgIHJldHVybiBpc0R1bXBSZW5kZXJUcmVlOwot
fQotCi1ib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNNb2JpbGVTdG9yZSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5Nb2JpbGVTdG9yZSJdOwotICAgIHJl
dHVybiBpc01vYmlsZVN0b3JlOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNXZWJBcHAoKQotewot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzV2ViQXBwID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
YnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLndlYmFwcCJdOwot
ICAgIHJldHVybiBpc1dlYkFwcDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzT2tDdXBpZCgpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNPa0N1cGlkID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLm9rY3VwaWQuYXBwIl07
Ci0gICAgcmV0dXJuIGlzT2tDdXBpZDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzRmFjZWJvb2so
KQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzRmFjZWJvb2sgPSBbW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uZmFjZWJvb2su
RmFjZWJvb2siXTsKLSAgICByZXR1cm4gaXNGYWNlYm9vazsKLX0KLQotYm9vbCBhcHBsaWNhdGlv
bklzRGFpamlzZW5EaWN0aW9uYXJ5KCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0RhaWpp
c2VuRGljdGlvbmFyeSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
IGlzRXF1YWxUb1N0cmluZzpAImpwLmNvLnNob2dha3VrYW4uZGFpamlzZW4yMDA5aSJdOwotICAg
IHJldHVybiBpc0RhaWppc2VuRGljdGlvbmFyeTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzTkFT
QUhEKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc05BU0FIRCA9IFtbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImdvdi5uYXNhLk5B
U0FIRCJdOwotICAgIHJldHVybiBpc05BU0FIRDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzVGhl
RWNvbm9taXN0T25JUGhvbmUoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzVGhlRWNvbm9t
aXN0T25JUGhvbmUgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBp
c0VxdWFsVG9TdHJpbmc6QCJjb20uZWNvbm9taXN0LmlwaG9uZSJdOwotICAgIHJldHVybiBpc1Ro
ZUVjb25vbWlzdE9uSVBob25lOwotfQotCi0vLyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSBjaGFu
Z2VkIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgY2hhbmdlZCB0byBhbiBYUEMgc2VydmljZS4KLWJv
b2wgYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
V2ViUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlz
RXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCJd
IHx8IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0
cmluZzpAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCJdIHx8IFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5XZWJQ
cm9jZXNzIl07Ci0gICAgcmV0dXJuIGlzV2ViUHJvY2VzczsKLX0KLQotYm9vbCBhcHBsaWNhdGlv
bklzSUJvb2tzT25JT1MoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzSUJvb2tzT25JT1Mg
PSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJp
bmc6QCJjb20uYXBwbGUuaUJvb2tzIl07Ci0gICAgcmV0dXJuIGlzSUJvb2tzT25JT1M7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcAppbmRleCBhZGRiNTI0ZjAxN2ExN2VhOTEyMTEyMzU5OTMyMjBkOGM5YjE0MTlj
Li4yN2E0NWZjNjk3ZWY1NGRiNTczZDdiZDYzYjU0N2Y4YzY0ZTc5YWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNv
ZnRMaW5raW5nLmgiCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvU2VydmljZXMuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvVVJMQ0YuY3BwCmluZGV4IGExZmFlYTVlY2U3YjkzMDVkNmZiNTI3OTg3Njc1N2M5YTY5
ZTdmNzMuLjA0ZGVmODRhYWI1OGVjNzcxZTA5Y2YzZjBhMTk0ZWM5MGY0NjdjYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvTGF5ZXJGbHVzaFNjaGVkdWxlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZs
dXNoU2NoZWR1bGVyTWFjLmNwcAppbmRleCA0NDRiNGM2Mjk3OWQ2YWEwOGI2OThiNGRmZWEyYzli
NGE3NWU1ZTE4Li4xYjIzYjZhOWRjMTY0ODIwZTEwNjZhZDcxNTBkNmUzZWE0YzJhOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZs
dXNoU2NoZWR1bGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9MYXllckZsdXNoU2NoZWR1bGVyTWFjLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNp
bmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgogI2VuZGlmCkBAIC00Niw3ICs0
Niw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogICAgIC8vIHdlIHN0
aWxsIGFsbG93IHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNzQwMzMyOD4uIFNpbmNlIHRoZSBy
YWNlIGNvbmRpdGlvbiBhbmQgc3Vic2VxdWVudAogICAgIC8vIGNyYXNoIGFyZSBlc3BlY2lhbGx5
IHRyb3VibGVzb21lIGZvciBpQm9va3MsIHdlIG5ldmVyIGFsbG93IHRoZSBvYnNlcnZlciB0byBi
ZSBhZGRlZCB0byB0aGUKICAgICAvLyBtYWluIHJ1biBsb29wIGluIGlCb29rcy4KLSAgICBpZiAo
YXBwbGljYXRpb25Jc0lCb29rc09uSU9TKCkpCisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc0lC
b29rcygpKQogICAgICAgICByZXR1cm4gV2ViVGhyZWFkUnVuTG9vcCgpOwogI2VuZGlmCiAgICAg
cmV0dXJuIENGUnVuTG9vcEdldEN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTMyZDM1MjJkZjI4NjE1ZTY4NzAwNGViZmMwZTU1
Zjc3Njg2YmFlZS4uODljYjBkNmZhZTdjNjg1MzgyMDJjNzZlZGZiOTNhNTY2MTdjOWFjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTQ0LDcg
KzQ0LDcgQEAKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIK
ICNpbXBvcnQgIlRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCAyYTRk
NTZjMDQxNDAyNmE3ZWY2NTJlYjU0NmIyMmJmMDgxMGJjZmQ5Li41YmExYTQ4NjQxZTg2Y2I4YWYx
NzA0MWJiOGNiMmExOGMzYWI1MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC0zNSw3ICszNSw3IEBACiAjaW1wb3J0ICJBVktpdFNQSS5oIgogI2ltcG9ydCAiR2VvbWV0cnlV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IGU5YTYz
MjMwZDI5OGM5YTQxZDUxNTk1YTU1ZGRmMTg1ZTdjMmEzYWQuLmIyZWQ5NGRhYTUxZDU4YTk0NGQ4
ZTNlZmRkYjE1MjhiYjkyYTI1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2ltcG9ydCAiRmxv
YXRpbmdQb2ludEVudmlyb25tZW50LmgiCiAjaW1wb3J0ICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiVGhyZWFkR2xvYmFs
RGF0YS5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRNZXNzYWdl
LmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2
b2lkIFdlYlRocmVhZFNldERlbGVnYXRlU291cmNlUnVuTG9vcE1vZGUoQ0ZTdHJpbmdSZWYgbW9k
ZSkKIAogdm9pZCBXZWJUaHJlYWRFbmFibGUodm9pZCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoIVdlYkNvcmU6OmFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCksICJUaGUgV2Vi
UHJvY2VzcyBzaG91bGQgbmV2ZXIgcnVuIGEgV2ViIFRocmVhZCIpOworICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRSghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2Vzcygp
LCAiVGhlIFdlYlByb2Nlc3Mgc2hvdWxkIG5ldmVyIHJ1biBhIFdlYiBUaHJlYWQiKTsKIAogICAg
IHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0Q29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwog
ICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIFN0YXJ0V2ViVGhyZWFkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IGIzMGZkODEzNDNjMDZhY2Q4OWJh
OGY5ZTJmNjc0Mzc2ZjZlYWQwMjYuLjViYTI4MjFiNzBiOWMyNTI0YzYxNjBhMjc5NWY0OTQzY2E1
NGYzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTk0
LDkgKzE5NCwxMyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25z
dCBJbnRSZWN0JiByKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQgdGhlIHZpZXcgYXQg
YWxsIGlmIGl0J3MgbGF5ZXIgYmFja2VkLCBiZWNhdXNlIHRoZW4gd2UnbGwgZW5kIHVwCiAgICAg
Ly8gd2l0aCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHZpZXcgY29udGVudHMsIG9uZSBpbiB0aGUg
dmlldydzIGxheWVyIGl0c2VsZiBhbmQgb25lIGluIHRoZQogICAgIC8vIFdlYkhUTUxWaWV3J3Mg
YmFja2luZyBzdG9yZSAoZWl0aGVyIGEgbGF5ZXIgb3IgdGhlIHdpbmRvdyBiYWNraW5nIHN0b3Jl
KS4KLSAgICAvLyBIb3dldmVyLCBRdWlja2VuIEVzc2VudGlhbHMgaGFzIGEgcGx1Zy1pbiB0aGF0
IGRlcGVuZHMgb24gZHJhd2luZyB0byB1cGRhdGUgdGhlIGxheWVyIChzZWUgPHJkYXI6Ly9wcm9i
bGVtLzE1MjIxMjMxPikuCi0gICAgaWYgKHZpZXcubGF5ZXIgJiYgIWFwcGxpY2F0aW9uSXNRdWlj
a2VuRXNzZW50aWFscygpKQorICAgIGlmICh2aWV3LmxheWVyKSB7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgICAgICAvLyBIb3dldmVyLCBRdWlja2VuIEVzc2VudGlhbHMgaGFzIGEgcGx1Zy1pbiB0
aGF0IGRlcGVuZHMgb24gZHJhd2luZyB0byB1cGRhdGUgdGhlIGxheWVyIChzZWUgPHJkYXI6Ly9w
cm9ibGVtLzE1MjIxMjMxPikuCisgICAgICAgIGlmICghTWFjQXBwbGljYXRpb246OmlzUXVpY2tl
bkVzc2VudGlhbHMoKSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8g
VGFrZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVjYXVzZSBzZW5kaW5nIG1lc3NhZ2Vz
IHRvIHRoZSB2aWV3cyBjYW4gaW52b2tlIGFyYml0cmFyeQogICAgIC8vIGNvZGUsIHdoaWNoIGNh
biBkZXJlZiBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1
aWNrTG9vay5tbQppbmRleCBhMWVhOWM4OWQwMDNmMDRmZWUwMzgxMTIzYzdmMWUxYjI5OGUzNGEz
Li4xM2QxZGRjM2NhZTllZjIzNjdmNjQxZjQ5MDdlNmUyYTgxZGE0MWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW1wb3J0ICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKICNpbXBvcnQg
IldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCBjM2JkZThhZjdj
OGU1ZTAyNGMzZTJkZWZiODNmZmI1MGU2NWZkNDg0Li44YTI2ODg4ZTdiMjNkYzQyNGI5OGI1MWU3
ODIyN2I5ZWIyZjAxNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNzAsNyArNzAsNyBAQCBDRkRp
Y3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlv
blJlZik7CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKLSNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCiAKIEBpbnRl
cmZhY2UgTlNVUkxSZXF1ZXN0ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGQxNGQwMzAxOTdiMmI5NDgxYTVkZWEzYjdkZDEyODg5
NTViMTMwODYuLjIwZDM4NDdjNDQ3YWVlYzAwNDlhZjQ1YmJlY2E1YTQ2ZWY5OTZjZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC02
OSw3ICs2OSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNTIsNyArMzUyLDcg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmxheWVyV2lsbEJlRGVzdHJveWVkKCkKIAogYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6Om5lZWRzSU9TRHVtcFJlbmRlclRyZWVNYWluRnJhbWVSZW5k
ZXJWaWV3TGF5ZXJJc0Fsd2F5c09wYXF1ZUhhY2soY29uc3QgR3JhcGhpY3NMYXllciYgbGF5ZXIp
IGNvbnN0CiB7Ci0gICAgaWYgKG1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXIgJiYgYXBwbGlj
YXRpb25Jc0R1bXBSZW5kZXJUcmVlKCkpIHsKKyAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZp
ZXdMYXllciAmJiBJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJlZSgpKSB7CiAgICAgICAg
IC8vIEluIGlPUyBXZWJLaXQxIHRoZSBtYWluIGZyYW1lJ3MgUmVuZGVyVmlldyBsYXllciBpcyBh
bHdheXMgdHJhbnNwYXJlbnQuIFdlIGxpZSB0aGF0IGl0IGlzIG9wYXF1ZSBzbyB0aGF0CiAgICAg
ICAgIC8vIGludGVybmFscy5sYXllclRyZWVBc1RleHQoKSB0ZXN0cyBzdWNjZWVkLgogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGxheWVyLCAhbGF5ZXIuY29udGVudHNPcGFxdWUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKaW5kZXggMjU0NmQ1NGQyZTJjOTBhNDlkNmMzMmQwYTIwMGNhOTRjMTNhNGIwNS4u
NGQ2MThlOTU5Njc1ODBmMGRmMjc3OGE0ZGRmYTVkODVkMjNhODVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0lPUy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3Jt
YXRpb24qIGhvc3QsIFJlc291CiAgICAgICAgICAgICByZXF1ZXN0c1BlbmRpbmcucmVtb3ZlRmly
c3QoKTsKICAgICAgICAgICAgIGhvc3QtPmFkZExvYWRJblByb2dyZXNzKHJlc291cmNlTG9hZGVy
LmdldCgpKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICAgICBpZiAoIWFwcGxpY2F0aW9u
SXNXZWJQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIGlmICghSU9TQXBwbGljYXRpb246OmlzV2Vi
UHJvY2VzcygpKSB7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGlu
ZygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQpp
bmRleCBkMjgyNWFmNDdhZjdjNzE0Y2RmMjBmMzk3MTZmMGMzNDUzNjY5MWM1Li43Nzc0Njk0NjM3
MTUyNjE0MWM3MjdlYTFlM2Y1NTgyYTJiODEyZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC01Nyw3ICs1
Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlckJveC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxp
bmdDb25zdHJhaW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRleCA0MGIwMmI2NTlmMWVkOTlmM2Ri
MTM5NDEwN2U2Njk0MDFmZjBlYjk5Li44NDA2YzE1MmJmMTdhMjJjZTU1NTlhMTM3OTJlNDFkNmMz
YWIyMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250
cm9sbGVyLm1tCkBAIC02OCw3ICs2OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+
CiAjZW5kaWYKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQXVkaW9T
ZXNzaW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2FzQXVkaW9TZXNzaW9uSW5pdGlhbGl6
ZWQgPSB0cnVlOwotICAgIGlmICghV2ViQ29yZTo6YXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgp
KQorICAgIGlmICghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENh
dGVnb3J5KEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4
IDQ5YjcxOTM4NTI4MjUxODI2OGM3MTRlMTk4ZmIxMmRmODU5ZmI4ZDAuLjIzZmYzNzUwZWU2Nzdj
OTQzYzhmMjNlMWIzNzU5OWE1NTQ3MmRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDgsNyAr
MTQ4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbUlPUy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9vay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjZW5kaWYKIAogI2lmIEhBVkUo
QVBQX0xJTktTKQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYgaGEK
ICAgICAgICAgICAgIDogbV9maXJzdFJlcXVlc3RVUkwoaGFuZGxlLmZpcnN0UmVxdWVzdFVSTCgp
KQogICAgICAgICB7CiAgICAgICAgICAgICBOU1VSTCAqcHJldmlld1JlcXVlc3RVUkwgPSBoYW5k
bGUucHJldmlld1JlcXVlc3RVUkwoKTsKLSAgICAgICAgICAgIGlmICghYXBwbGljYXRpb25Jc01v
YmlsZVNhZmFyaSgpKSB7CisgICAgICAgICAgICBpZiAoIUlPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBrZWVwcyB0aGUgUUxQcmV2aWV3
Q29udmVydGVyIGFsaXZlIHRvIHNlcnZlIGFueSBzdWJyZXNvdXJjZSByZXF1ZXN0cy4KICAgICAg
ICAgICAgICAgICAvLyBJdCBpcyByZW1vdmVkIGJ5IC1bV2ViRGF0YVNvdXJjZSBkZWFsbG9jXS4K
ICAgICAgICAgICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChwcmV2
aWV3UmVxdWVzdFVSTCwgaGFuZGxlLmNvbnZlcnRlcigpLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMDU2NGM1ZjE2YjBiZDBmNmJjZTY3OTU4NzFiNzgyNWYz
N2Q4NGRkOC4uY2JiZjI0ZmNhM2Y0MzhjZjA5ZjEzZDM3NTViMmQxZTRkNWM3OWIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDExLDggKzI0MTEsMTIgQEAgc3Rh
dGljIFdlYkZyYW1lTG9hZFR5cGUgdG9XZWJGcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUgZnJh
bWVMb2FkVHlwZSkKIAogc3RhdGljIGJvb2wgbmVlZHNNaWNyb3NvZnRNZXNzZW5nZXJET01Eb2N1
bWVudFdvcmthcm91bmQoKQogewotICAgIHN0YXRpYyBib29sIG5lZWRzV29ya2Fyb3VuZCA9IGFw
cGxpY2F0aW9uSXNNaWNyb3NvZnRNZXNzZW5nZXIoKSAmJiBbW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9u
S2V5XSBjb21wYXJlOkAiNy4xIiBvcHRpb25zOk5TTnVtZXJpY1NlYXJjaF0gPT0gTlNPcmRlcmVk
QXNjZW5kaW5nOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQor
ICAgIHN0YXRpYyBib29sIG5lZWRzV29ya2Fyb3VuZCA9IE1hY0FwcGxpY2F0aW9uOjppc01pY3Jv
c29mdE1lc3NlbmdlcigpICYmIFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9E
aWN0aW9uYXJ5S2V5OihOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldIGNvbXBhcmU6QCI3
LjEiIG9wdGlvbnM6TlNOdW1lcmljU2VhcmNoXSA9PSBOU09yZGVyZWRBc2NlbmRpbmc7CiAgICAg
cmV0dXJuIG5lZWRzV29ya2Fyb3VuZDsKKyNlbmRpZgogfQogCiAtIChET01Eb2N1bWVudCAqKURP
TURvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZGJiMjNiMDI2Nzk0NzRiOWU0ODA5MGJj
ODIzM2Y1YmYyN2E5ZWVlMS4uMjNlNjIzZDViN2RiMmIyODliMGYwNWJkMTE3MDY0MGQ1ODY1MDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzE4LDExICszMTgsMTkgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgICAgIGN1c3RvbUNsaWVudEFuaW1hdGlvbkNvbnRyb2xsZXIgPSBb
KGlkKVtfd2ViVmlldyBVSURlbGVnYXRlXSBfd2ViVmlldzpfd2ViVmlldyBpbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdDp3ZWJIaXRUZXN0UmVzdWx0Lmdl
dCgpIHdpdGhUeXBlOl90eXBlXTsKICAgICB9CiAKKyAgICBpZiAoY3VzdG9tQ2xpZW50QW5pbWF0
aW9uQ29udHJvbGxlciA9PSBbTlNOdWxsIG51bGxdKSB7CisgICAgICAgIFtzZWxmIF9jYW5jZWxJ
bW1lZGlhdGVBY3Rpb25dOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgUExBVEZPUk0o
TUFDKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHBlcm1hbmVudGx5IGRpc2FibGUgdGhp
cyBmb3IgaVR1bmVzLiByZGFyOi8vcHJvYmxlbS8xOTQ2MTM1OAotICAgIGlmIChjdXN0b21DbGll
bnRBbmltYXRpb25Db250cm9sbGVyID09IFtOU051bGwgbnVsbF0gfHwgYXBwbGljYXRpb25Jc0lU
dW5lcygpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc0lUdW5lcygpKSB7CiAgICAgICAg
IFtzZWxmIF9jYW5jZWxJbW1lZGlhdGVBY3Rpb25dOwogICAgICAgICByZXR1cm47CiAgICAgfQor
I2VuZGlmCisKICAgICBpZiAoY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciAmJiBbY3Vz
dG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29s
KE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcildKQogICAgICAgICBbX2ltbWVk
aWF0ZUFjdGlvblJlY29nbml6ZXIgc2V0QW5pbWF0aW9uQ29udHJvbGxlcjooaWQgPE5TSW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJv
bGxlcl07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc3
ODlmN2RkZDc4MTZkM2ZkNjMxMWI3NDk1YzdmZWI5NjNmMWNlNDAuLmI2YzMyN2M2YzljZjExNDEz
NmFiNzZmOTIwZTUzZGEzZTRiY2YxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTI1Miw3ICsyNTIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb2JpbGVHZXN0YWx0U1BJ
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Rl
eHRSdW4uaD4KQEAgLTczOCw3ICs3MzcsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXpl
QXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFhcHBOYW1lKQogICAg
ICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChXZWJDb3JlOjphcHBsaWNhdGlvbklzTW9iaWxl
U2FmYXJpKCkgfHwgV2ViQ29yZTo6YXBwbGljYXRpb25Jc1dlYkFwcCgpKQorICAgIGlmIChXZWJD
b3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBs
aWNhdGlvbjo6aXNXZWJBcHAoKSkKICAgICAgICAgYXBwTmFtZSA9IEAiY29tLmFwcGxlLldlYkFw
cENhY2hlIjsKICNlbmRpZgogCkBAIC03NzEsNyArNzcwLDExIEBAIHN0YXRpYyB2b2lkIFdlYktp
dEluaXRpYWxpemVBcHBsaWNhdGlvblN0YXRpc3RpY3NTdG9yYWdlUGF0aElmTmVjZXNzYXJ5KCkK
IAogc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZygpCiB7Ci0gICAgcmV0dXJu
ICFhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiAhTWFjQXBwbGljYXRpb246OmlzQWRvYmVJ
bnN0YWxsZXIoKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXN0cmljdFdpbmRv
d0ZvY3VzKCkKQEAgLTc3OSw3ICs3ODIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZXN0cmljdFdp
bmRvd0ZvY3VzKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQot
ICAgIHJldHVybiAhYXBwbGljYXRpb25Jc0hSQmxvY2soKTsKKyAgICByZXR1cm4gIU1hY0FwcGxp
Y2F0aW9uOjppc0hSQmxvY2soKTsKICNlbmRpZgogfQogCkBAIC04MDIsNyArODA1LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkUmVzdHJpY3RXaW5kb3dGb2N1cygpCiBzdGF0aWMgYm9vbCBuZWVkc091
dGxvb2tRdWlya3NTY3JpcHQoKQogewogICAgIHN0YXRpYyBib29sIGlzT3V0bG9va05lZWRpbmdR
dWlya3NTY3JpcHQgPSAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9O
X1dJVEhfSFRNTDVfUEFSU0VSKQotICAgICAgICAmJiBhcHBsaWNhdGlvbklzTWljcm9zb2Z0T3V0
bG9vaygpOworICAgICAgICAmJiBNYWNBcHBsaWNhdGlvbjo6aXNNaWNyb3NvZnRPdXRsb29rKCk7
CiAgICAgcmV0dXJuIGlzT3V0bG9va05lZWRpbmdRdWlya3NTY3JpcHQ7CiB9CiAKQEAgLTgzNywx
MyArODQwLDEzIEBAIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmli
dXRlU2V0dGVycygpCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgc2hvdWxkVHJhbnNm
b3Jtc0FmZmVjdE92ZXJmbG93KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmFuc2Zvcm1z
QWZmZWN0T3ZlcmZsb3cgPSAhYXBwbGljYXRpb25Jc09rQ3VwaWQoKSB8fCBXZWJLaXRMaW5rZWRP
bk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9DU1NfVFJBTlNGT1JNU19BRkZFQ1RJ
TkdfT1ZFUkZMT1cpOworICAgIHN0YXRpYyBib29sIHNob3VsZFRyYW5zZm9ybXNBZmZlY3RPdmVy
ZmxvdyA9ICFJT1NBcHBsaWNhdGlvbjo6aXNPa0N1cGlkKCkgfHwgV2ViS2l0TGlua2VkT25PckFm
dGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ1NTX1RSQU5TRk9STVNfQUZGRUNUSU5HX09W
RVJGTE9XKTsKICAgICByZXR1cm4gc2hvdWxkVHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93OwogfQog
CiBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9yRXZlbnRz
KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVy
cm9yRXZlbnRzID0gIWFwcGxpY2F0aW9uSXNGYWNlYm9vaygpIHx8IFdlYktpdExpbmtlZE9uT3JB
ZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJPUik7CisgICAgc3Rh
dGljIGJvb2wgc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50cyA9ICFJ
T1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9vaygpIHx8IFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJL
SVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJPUik7CiAgICAgcmV0dXJuIHNob3Vs
ZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVudHM7CiB9CiAKQEAgLTg2MSw3ICs4
NjQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFu
ZEJlaGF2aW9yKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9ICFXZWJLaXRMaW5rZWRPbk9y
QWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJWkVf
U0hPUlRIQU5EX0JFSEFWSU9SKTsKICNlbHNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IGFwcGxpY2F0aW9uSXNWZXJzaW9u
cygpCisgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhh
bmRCZWhhdmlvciA9IE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNpb25zKCkKICAgICAgICAgJiYgIVdl
YktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FDWV9C
QUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVIQVZJT1IpOwogI2VuZGlmCiAgICAgcmV0dXJuIHNo
b3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3I7CkBAIC05NzEsNyAr
OTc0LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVj
ZXNzYXJ5KCkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NT
QXR0cmlidXRlU2V0dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRl
cnMoKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmIChhcHBsaWNhdGlvbklzTW9i
aWxlU2FmYXJpKCkpCisgICAgICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmko
KSkKICAgICAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRl
Z29yeSh0cnVlKTsKICNlbmRpZgogCkBAIC0xMTk2LDcgKzExOTksNyBAQCBzdGF0aWMgdm9pZCBX
ZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgICAgICBXZWJD
b3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBjbGFz
c10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViVmlldyBjbGFz
c10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViVmlzaWJsZVBv
c2l0aW9uIGNsYXNzXSk7Ci0gICAgICAgIGlmIChhcHBsaWNhdGlvbklzVGhlRWNvbm9taXN0T25J
UGhvbmUoKSAmJiAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJ
VEhfREVMRUdBVEVfQ0FMTFNfSU5fQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQorICAgICAgICBpZiAo
SU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhvbmUoKSAmJiAhV2ViS2l0TGlua2Vk
T25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVMRUdBVEVfQ0FMTFNfSU5fQ09N
TU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICAgICAgV2ViVGhyZWFkU2V0RGVsZWdhdGVTb3Vy
Y2VSdW5Mb29wTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAgICBXZWJUaHJlYWRF
bmFibGUoKTsKICAgICAgICAgaXNXZWJUaHJlYWRFbmFibGVkID0gWUVTOwpAQCAtMTMyMiw3ICsx
MzI1LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVj
ZXNzYXJ5KCkKIAogKyAodm9pZClyZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnMKIHsKLSAg
ICBCT09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6
OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsKKyAgICBCT09MIHNob3VsZEF1dG9DbGVhclBy
ZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpOwogCiAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pbnN0
YWxsTWVtb3J5UmVsZWFzZUJsb2NrKF57CiAgICAgICAgIFtXZWJWaWV3IF9oYW5kbGVNZW1vcnlX
YXJuaW5nXTsKQEAgLTIxNDMsNyArMjE0Niw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRl
YXJkb3duRW5hYmxlZCgpCiAKIC0gKEJPT0wpX25lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0
aW9uUXVpcmtzCiB7Ci0gICAgc3RhdGljIEJPT0wgbmVlZHNRdWlya3MgPSAhV2ViS2l0TGlua2Vk
T25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSUVfQ09NUEFUSUJMRV9LRVlCT0FS
RF9FVkVOVF9ESVNQQVRDSCkgJiYgIWFwcGxpY2F0aW9uSXNTYWZhcmkoKTsKKyAgICBzdGF0aWMg
Qk9PTCBuZWVkc1F1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZF
UlNJT05fV0lUSF9JRV9DT01QQVRJQkxFX0tFWUJPQVJEX0VWRU5UX0RJU1BBVENIKSAmJiAhTWFj
QXBwbGljYXRpb246OmlzU2FmYXJpKCk7CiAgICAgcmV0dXJuIG5lZWRzUXVpcmtzOwogfQogCkBA
IC0yMTU1LDcgKzIxNTgsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJs
ZWQoKQogCiBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiB7
Ci0gICAgc3RhdGljIGJvb2wgbmVlZHNRdWlyayA9IGFwcGxpY2F0aW9uSXNBcGVydHVyZSgpOwor
ICAgIHN0YXRpYyBib29sIG5lZWRzUXVpcmsgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcGVydHVyZSgp
OwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkBA
IC0yMTcwLDEwICsyMTczLDEwIEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9h
ZGluZ1F1aXJrKCkKICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2MTM0PiBhbmQKICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2MzM0Pi4KICAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNl
clF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lU
SF9IVE1MNV9QQVJTRVIpCi0gICAgICAgICYmIChhcHBsaWNhdGlvbklzQU9MSW5zdGFudE1lc3Nl
bmdlcigpIHx8IGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNeURheSgpKTsKKyAgICAgICAgJiYgKE1h
Y0FwcGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIoKSB8fCBNYWNBcHBsaWNhdGlvbjo6
aXNNaWNyb3NvZnRNeURheSgpKTsKICAgICAKICAgICAvLyBNYWlsLmFwcCBtdXN0IGNvbnRpbnVl
IHRvIGRpc3BsYXkgSFRNTCBlbWFpbCB0aGF0IGNvbnRhaW5zIHF1aXJreSBtYXJrdXAuCi0gICAg
c3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7CisgICAg
c3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKTsK
IAogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcwogICAgICAgICB8
fCBpc0FwcGxlTWFpbApAQCAtMjE4NCw3ICsyMTg3LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxm
UmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogI2VuZGlmCiAgICAgICAgIHx8IFtbc2VsZiBwcmVm
ZXJlbmNlc10gdXNlUHJlSFRNTDVQYXJzZXJRdWlya3NdOwogI2Vsc2UKLSAgICBzdGF0aWMgYm9v
bCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIGFwcGxpY2F0aW9u
SXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVl
ZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZF
UlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIElPU0FwcGxpY2F0aW9uOjppc0RhaWppc2VuRGlj
dGlvbmFyeSgpOwogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyB8
fCBbW3NlbGYgcHJlZmVyZW5jZXNdIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzXTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCAzMTI4OTFlMjBhYTdmYjliMWUzMzU3
M2I1OGMyM2ZhNDZmMzNmZGM4Li4wNjllOTcxODQ3ODk3ZDVjNjY5MDUwODA5NWZlMDU3ZTAyMWU1
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgewpA
QCAtNDIsNyArNDIsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVk
IHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KICAgICAvLyBGSVhNRTogSWRlYWxseSB3
ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSBhbmQgV2ViQXBwIGNyZWF0ZSBhIGRhdGEgc3RvcmUg
d2l0aAogICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qg
c3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6YXBwbGljYXRpb25J
c01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNXZWJBcHAoKSkgeworICAg
IGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkgewogICAgICAgICBOU1N0cmluZyAqY2FjaGVQ
YXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwogCiAgICAgICAgIHJldHVy
biBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVmVyc2lvbkNoZWNrcy5tbQppbmRleCBiNDZkMDA3MTgyYzJhZTI2ZGRlMmY3ZGU1OTYzNzdj
YjFkZTVmMjI4Li4yZTBkZmVkMWZjZWQ4ODYzY2Y5YmNiYjZlMDY5ZmNlNjExMDFiNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbQpAQCAt
MjksNyArMjksNyBAQAogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDMsNyArNDMsNyBAQCBib29sIGxpbmtlZE9uT3JBZnRlcihMaWJy
YXJ5VmVyc2lvbiB2ZXJzaW9uKQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBBbHdheXMg
bWFrZSBuZXcgZmVhdHVyZXMgYXZhaWxhYmxlIGZvciBTYWZhcmkuCi0gICAgaWYgKFdlYkNvcmU6
OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkKKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KaW5kZXggMjFkZDg0ZjlmYTRjMWRiMmIxYWM5ZTRjNTAwZGE5MDQ3M2ViOTk3MC4u
MjY2MmE0YTY2Mzg2N2Q5MjA2ZjkwNjNlMTM3YzY4YTgzOTc2YjUyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAg
LTUyLDcgKzUyLDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVy
c0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjZWxzZQogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+CiAjZW5kaWYKQEAgLTE4MCw3ICsxNzks
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgcGFyYW1ldGVycy5zaG91bGRTdXBwcmVz
c01lbW9yeVByZXNzdXJlSGFuZGxlciA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdFN1cHBy
ZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyRGVmYXVsdHNLZXldOwogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIHBhcmFtZXRlcnMuc2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIgPSBhcHBsaWNhdGlvbklz
SUJvb2tzKCk7CisgICAgcGFyYW1ldGVycy5zaG91bGRSZXdyaXRlQ29uc3RBc1ZhciA9IE1hY0Fw
cGxpY2F0aW9uOjppc0lCb29rcygpOwogI2VuZGlmCiAKICNpZiBIQVZFKEhPU1RFRF9DT1JFX0FO
SU1BVElPTikKQEAgLTM2NSw3ICszNjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogI2lmIFBMQVRGT1JN
KElPUykKICAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNoYXJlIGFw
cGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhhdCBhbnkg
bW9yZS4KICAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdyYXRlIGRh
dGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSB8
fCBhcHBsaWNhdGlvbklzV2ViQXBwKCkpCisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpIHx8IElPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpKQogICAgICAgICBhcHBOYW1l
ID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggOTJjNjk4ZjkwZDAyMjA3NWJlOTM2MmY1YmZjMDgyYzljYmUyZTdiNS4uNDc2ODcxYjEyZDRl
ZTQ3NzZhOWMxZmRhMjM1YzU1YzlhYzRhYzUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY2LDcg
KzY2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCA2Nzg1OGYyMWU3ZWI5ZmFlNGRhMGYxYTI2NzA5MTk5ODIzM2E4OWMxLi5h
OWI0MzI5MTc5MDlkYTEzZWEzMjQ4MGZmNmQ0OTEwODgxN2VhODVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNjcsNyArNjcsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBib29sIGV4cGVjdHNMZWdhY3lJ
bXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKCkKIHsKLSAgICBpZiAoYXBwbGljYXRpb25Jc1NhZmFy
aSgpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpKSB7CiAgICAgICAgIGNv
bnN0IGludDMyX3QgZmlyc3RWZXJzaW9uT2ZTYWZhcmlOb3RFeHBlY3RpbmdJbXBsaWNpdFJ1YmJl
ckJhbmRDb250cm9sID0gMHgwMjFBMEYwMDsgLy8gNTM4LjE1LjAKICAgICAgICAgYm9vbCBsaW5r
ZWRBZ2FpbnN0U2FmYXJpRXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbCA9IE5TVmVy
c2lvbk9mTGlua1RpbWVMaWJyYXJ5KCJTYWZhcmkiKSA8IGZpcnN0VmVyc2lvbk9mU2FmYXJpTm90
RXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbDsKICAgICAgICAgcmV0dXJuIGxpbmtl
ZEFnYWluc3RTYWZhcmlFeHBlY3RpbmdJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sOwpAQCAtNTQ3
LDcgKzU0Nyw3IEBAIENHUmVjdCBXZWJQYWdlUHJveHk6OmJvdW5kc09mTGF5ZXJJbkxheWVyQmFj
a2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqbGF5ZXIpCiAKIGJvb2wgV2ViUGFnZVByb3h5
OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gYXBwbGlj
YXRpb25Jc0FwcGxlTWFpbCgpOworICAgIHJldHVybiBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1h
aWwoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBmb250
RmFtaWx5LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273052</attachid>
            <date>2016-03-04 15:53:57 -0800</date>
            <delta_ts>2016-03-04 15:58:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155035-20160304155343.patch</filename>
            <type>text/plain</type>
            <size>83893</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFhMzM5ZWI5NTNkOWJm
ZGJmMWVlODg3YWI3NzZjMmExODBiZGI3Yi4uZTE4YmU2Nzg4OTJjNThkNmE4YTk0NTFmMjAxM2Jl
MmQyZjI3OTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE2LTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNvbGlkYXRlIFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TIGlu
dG8KKyAgICAgICAgb25lIGZpbGUuIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6Cisg
ICAgICAgIC0gVGhlIGNoZWNrcyBub3cgYWxsIHJlbHkgb24gYXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCksIHdoaWNoIGhhcyB0aGUKKyAgICAgICAgICBiZW5lZml0IG9mIHdvcmtpbmcgaW4g
V0sxIGFuZCBXSzIgVUkvV2ViQ29udGVudC9OZXR3b3JraW5nIHByb2Nlc3Nlcy4KKyAgICAgICAg
LSBVc2UgbmFtZXNwYWNlcyB0byBkaXN0aW5ndWlzaCBNYWMgYW5kIGlPUyBhcHBsaWNhdGlvbnMg
aW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgICAgb24gdGhlIG1ldGhvZCBuYW1lLiBTbywgYXBw
bGljYXRpb25Jc0lCb29rc0ZvcklPUygpIGJlY29tZXMKKyAgICAgICAgICBJT1NBcHBsaWNhdGlv
bjo6aXNJQm9va3MoKS4KKyAgICAgICAgLSBVc2UgTlNCdW5kbGUgQVBJIG9uIGJvdGggaU9TIGFu
ZCBNYWMgaW5zdGVhZCBvZiB1c2luZyB0aGUgQ0YgQVBJIG9uIE1hYworICAgICAgICAgIGFuZCB0
aGUgTlMgQVBJIG9uIGlPUy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZp
ZXddKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRSdW5Mb29wKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNjcmlwdDo6c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNT
YWZhcmkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzQXBwbGVNYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc0lCb29rcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
Y0FwcGxpY2F0aW9uOjppc0Fkb2JlSW5zdGFsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0Fw
cGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TXlEYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBw
bGljYXRpb246OmlzTWljcm9zb2Z0T3V0bG9vayk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNRdWlja2VuRXNzZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNBcGVydHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6
aXNWZXJzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNIUkJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NvbGlkU3RhdGVOZXR3b3Jr
c0Rvd25sb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzSGlwQ2hh
dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSk6CisgICAgICAg
IChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHApOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzT2tDdXBpZCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNG
YWNlYm9vayk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEYWlqaXNlbkRp
Y3Rpb25hcnkpOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTkFTQUhEKToK
KyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25l
KToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzSUJvb2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9VUkxDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
TGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50UnVu
TG9vcCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFdlYlRo
cmVhZEVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6bmVlZHNJT1NEdW1wUmVu
ZGVyVHJlZU1haW5GcmFtZVJlbmRlclZpZXdMYXllcklzQWx3YXlzT3BhcXVlSGFjayk6CisKIDIw
MTYtMDMtMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1heCBvdXQgdGltZXIgdGhyb3R0bGluZyBpbW1lZGlhdGVseSBmb3IgcHJlLXJlbmRl
ciBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0NWJjZTk3ZGEwZTI0MGY2NTI3ZTA5N2JkZGZhNjcwYTVhYzAz
MmUxLi5hMGMyNGU3NzY3YjQwMGYyMGRhMDNlMDMyMGM0OTNmMzNhYzhmMjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToK
KwogMjAxNi0wMy0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbW92ZSB2Y3hwcm9qIGJ1aWxkIHN5c3RlbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGI0YmQ0ZTUxYzQ1ODdiN2M1MGViNGM4NjE3MjUzNzM0YTZhNDIxNmYuLjY3OWNjMGM2ZWEz
YTU4MDBiYzI2NzhlNGNmMGZkYWYzNTk0Njc0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIENvbnNvbGlkYXRlIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgcnVudGltZSBhcHBsaWNhdGlvbiBjaGVja3MuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW06CisKIDIwMTYtMDItMTcgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMV0gTlNU
aW1lciBpbiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGZpcmVzIG9uIHRoZSBtYWluIHRo
cmVhZCB3aXRob3V0IHRoZSBXZWJUaHJlYWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjI3ZTdm
NGQ5YTY3OGMxOGFjNjgwZmRkMTFkMDc4MzkzZWY3NTMzZC4uOGZkYTZkOTc1NTYxMzJkMmM2Mjlj
MTU4MDY2OTg0ODFkNjYyZWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29u
c29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4KKworICAgICAgICAqIFBsdWdpbnMv
V2ViUGx1Z2luQ29udHJvbGxlci5tbToKKyAgICAgICAgKGluaXRpYWxpemVBdWRpb1Nlc3Npb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgIChuZWVkc01pY3Jvc29mdE1lc3Nl
bmdlckRPTURvY3VtZW50V29ya2Fyb3VuZCk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyIF91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRo
SWZOZWNlc3NhcnkpOgorICAgICAgICAoc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZyk6CisgICAg
ICAgIChzaG91bGRSZXN0cmljdFdpbmRvd0ZvY3VzKToKKyAgICAgICAgKG5lZWRzT3V0bG9va1F1
aXJrc1NjcmlwdCk6CisgICAgICAgIChzaG91bGRUcmFuc2Zvcm1zQWZmZWN0T3ZlcmZsb3cpOgor
ICAgICAgICAoc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50cyk6Cisg
ICAgICAgIChzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKToK
KyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdy
b3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBlbmFibGVXZWJUaHJlYWRdKToKKyAgICAg
ICAgKCtbV2ViVmlldyByZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3NdKToKKyAg
ICAgICAgKG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfbmVlZHNQcmVIVE1MNVBhcnNlclF1aXJrc10pOgorCiAyMDE2LTAyLTI5ICBBZGEgQ2hh
biAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IHRoZSBuZXcgdmVyc2lvbiBv
ZiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyJ3Mgc2hvd01lbnVGb3JSZWN0IG1ldGhvZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlYWQ4ZWJmYTUzMjYzNDRlMDBhMzFmMjZkMzRiZTAyNDEwNzQwODQzLi5m
ZmMzYjc3NDI1Mzg1NGY2MzEwOWFlNTQ5MTgyNmQ0YjNmZGQ1Y2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTYtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBDb25zb2xpZGF0ZSBSdW50aW1lQXBwbGljYXRpb25DaGVja3MgYW5kIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0lPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIHJ1bnRpbWUgYXBwbGljYXRpb24gY2hlY2tzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6bGlua2VkT25PckFmdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmV4cGVjdHNMZWdhY3lJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKToK
KwogMjAxNi0wMy0wNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVGVtcG9yYXJpbHkgdXNlIGJ1bmRsZSBpZGVudGlmaWVyIGFzIHBhcnQgb2YgdXNlciBkaXJl
Y3Rvcnkgc3VmZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc1ZGQxZGY2YmFjNmM0OTdjYTM1
NmY3OGM5NmRlMzFhY2EyMTNmODkuLjNkMjRkMzkwOWQ3YmI5NmVkZjgwMzVkMDdmNGZjMTlhOTA0
ZmZkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTE1LDcgKzIxMTUsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAK
ICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgcGxhdGZvcm0vUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLmNwcAotICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHAKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKICAgICBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0M2VmZWJm
MGE3MDNhMmY1YjY4ZWY5MTg5MGYzNDhiOTRmNzY4YzkuLjc3Zjg5Zjg3MzYyZGQ4MTM2NGQzYzlk
MzEwZGMxYWFhZTc5ZGVjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTIsNyArMTA5Miw2IEBACiAJCTI5MzQ5NDBBMTZD
MDJDMDcwMDkwMTMxOCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1MjdDQzkzMTZCRjkyRUMw
MDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCAqLzsgfTsKIAkJMjkz
NDk0MEIxNkMwMkMwQTAwOTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1MjdD
Qzk1MTZCRjk1REQwMDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgKi87IH07CiAJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5M0VBRTFFMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyOTNFQUUy
MTEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5M0VBRTIwMTM1NkIzMkUw
MDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovOyB9OwogCQkyOTQ4OUZD
NzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NDg5RkM1MTJDMDBGMDMwMEQ4
M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovOyB9OwogCQkyOTQ5ODY4MzE5NTM0
MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTQ5ODY4MTE5NTM0MTk0MDA3MkQy
QkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi87IH07CiAJCTI5N0JFM0Q1MTZD
MDNDMDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjUyN0NDOTExNkJGOEJB
MTAwOUREQUMwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggKi87IH07CkBA
IC0xNzA0LDggKzE3MDMsNiBAQAogCQk0NEEyMERCOTBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9T
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRB
MjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBQjEyREZCOEFDMDBB
RTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJNDRBMjhBQUYxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMu
aCAqLzsgfTsKLQkJNDRDMzYzRjAwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDRDMzYzRUUwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lP
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ0
QzM2M0YxMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEMzNjNFRjBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovOyB9Owog
CQk0NEM5OTE4MjBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4MTBGM0QxRTBE
MDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9s
bGJhclRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CkBAIC0xNzMyLDYgKzE3
MjksNyBAQAogCQk0NjM0NTkyQzFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTky
QjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi87IH07CiAJCTQ2M0VC
NjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8q
IFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07
CisJCTQ2NUE4RTc5MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVBOEU3
ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovOyB9Owog
CQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCAqLzsgfTsKQEAgLTg1MzUsNyArODUzMyw2IEBACiAJCTI5MTdCNTYwMTQ3MzQ5NkMwMDUyQzlE
MCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjkxN0I1NjUxNDczNDk5NTAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVs
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5ZXJGbHVz
aFNjaGVkdWxlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5M0VBRTFF
MTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI5M0VBRTIwMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQw
MDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTkyMTEsOCArOTIwOCw2IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIz
RTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0Ig
LyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1M
TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRDMzYzRUUwRkFBN0JCMzAw
OTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhl
bWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTkyNDEsNiArOTIzNiw3IEBACiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dl
ck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBv
d2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYy
MDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxv
YWRDb3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVu
dFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50
VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjkxMiwxMCAr
MjI5MDgsOCBAQAogCQkJCTk4MzFBRTQ5MTU0MjI1QTIwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGlj
eS5oICovLAogCQkJCUNERkMzNjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwICovLAogCQkJCUNERkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21t
YW5kTGlzdGVuZXIuaCAqLywKLQkJCQkyOTNFQUUyMDEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCAqLywKKwkJCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQg
LyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovLAogCQkJCTI5M0VBRTFFMTM1NkIyRkUw
MDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCAqLywKLQkJCQk0NEMzNjNFRTBG
QUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi8sCi0JCQkJ
NDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5t
bSAqLywKIAkJCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3Bw
ICovLAogCQkJCTUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oICov
LAogCQkJCTUxNDEyOThGMUM2MDFBODkwMDU5RTcxNCAvKiBTY29wZUd1YXJkLmggKi8sCkBAIC0y
NzcwNyw3ICsyNzcwMSw2IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQUUxRjEzNTZCMkZFMDA2
N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
NEMzNjNGMDBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QzZFQTYxQTExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RENzA4OTcxODM1OUY2RjAwMkIz
REM2IC8qIFNhbXBsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0IwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MzIwLDggKzMxMzEzLDYgQEAKIAkJCQkxQTU2OUQyMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9tZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJC
ODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjkzRUFF
MjExMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0NEMzNjNGMTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOEM2RUE2MTkxMUVGN0UwNDAwRkQ4
RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RE
NzA4OTYxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUU5MTFDQTBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTQzMSw2ICszMTQyMiw3IEBACiAJCQkJQzVBMUVBN0MxNTJC
Q0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQwMEQ3QTQxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDY1QThFNzkxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMzI3RDYxMTFBMzNB
MkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEx
Q0MwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE1MEY5RjIxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggYTZmODM2ZTcyYTA2M2M5OTRlNDZjYjIwNzA2ZjBlMjYwMDgxZmQzOC4uODg0NzQ1
YmUyMjU2ZTc3NGRiZmI3NzA1NjMzNjgwZmQzNDM5YzUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIK
ICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCi0jaW1wb3J0ICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oIgogI2ltcG9ydCAiU1ZHTmFtZXMuaCIKICNpbXBvcnQgIlNWR0VsZW1lbnQuaCIKICNp
bXBvcnQgIlRleHRJdGVyYXRvci5oIgpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpz
dHJpbmcpCiAgICAgLy8gVGhlIHBhcmVudFZpZXcgc2hvdWxkIGhhdmUgYW4gYWNjZXNzaWJpbGl0
eUNvbnRhaW5lciwgaWYgdGhlIFVJS2l0IGFjY2Vzc2liaWxpdHkgYnVuZGxlIHdhcyBsb2FkZWQu
IAogICAgIC8vIFRoZSBleGNlcHRpb24gaXMgRFJULCB3aGljaCB0ZXN0cyBhY2Nlc3NpYmlsaXR5
IHdpdGhvdXQgdGhlIGVudGlyZSBzeXN0ZW0gdHVybmluZyBhY2Nlc3NpYmlsaXR5IG9uLiBIZW5j
ZSwKICAgICAvLyB0aGlzIGNoZWNrIHNob3VsZCBiZSB2YWxpZCBmb3IgZXZlcnl0aGluZyBleGNl
cHQgRFJULgotICAgIEFTU0VSVChbcGFyZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udGFpbmVyXSB8
fCBhcHBsaWNhdGlvbklzRHVtcFJlbmRlclRyZWUoKSk7CisgICAgQVNTRVJUKFtwYXJlbnRWaWV3
IGFjY2Vzc2liaWxpdHlDb250YWluZXJdIHx8IElPU0FwcGxpY2F0aW9uOjppc0R1bXBSZW5kZXJU
cmVlKCkpOwogICAgIAogICAgIHJldHVybiBbcGFyZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udGFp
bmVyXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCmluZGV4IDE5ZmNhMjUwNTliNTY2OTgxZDhkMjhkNDdkNTkzNjdkNjRkYmRkNzIuLjAxNDk2
ZWU2YTQ3YzllYWRkNjI0NDkyOTNiYjBlYzBlZTVjOTIxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIFZN
JiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgICAgICBpZiAoYXBwbGljYXRpb25Jc0lUdW5lcygpIHx8IGFwcGxpY2F0aW9uSXNJQm9v
a3MoKSB8fCBTZXR0aW5nczo6c2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIoKSkKKyAgICAgICAgaWYg
KE1hY0FwcGxpY2F0aW9uOjppc0lUdW5lcygpIHx8IE1hY0FwcGxpY2F0aW9uOjppc0lCb29rcygp
IHx8IFNldHRpbmdzOjpzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcigpKQogICAgICAgICAgICAgdm0t
PnNldFNob3VsZFJld3JpdGVDb25zdEFzVmFyKHRydWUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggYjMzYWQ0ZjVi
MTFkZjM5OTdkNDUzMGVlYzcyMTU2YmZjNTAxMzI4MC4uNTcwZjljZmI4NWU4OWM4YjVhOTY2ZTQ5
OWIxMDhkNDE3NTNjY2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogSGlwQ2hhdCB0cmllcyB0byBz
ZXQgTG9jYXRpb24ucmVsb2FkIHdoaWNoIGNhdXNlcyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3du
IGluIHN0cmljdCBtb2RlIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzI0OTMxOTU5PikuCi0gICAgaWYg
KGFwcGxpY2F0aW9uSXNIaXBDaGF0KCkpCisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc0hpcENo
YXQoKSkKICAgICAgICAgc2xvdC5zZXRTdHJpY3RNb2RlKGZhbHNlKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkNTU4YzdhOThlY2VmMjc5
MTM1MTdmN2RjYjMzYzJkMzY3MjYyNWViLi5kOGU2ZjBhN2U1YWJkNzZkOWMwMzc5ZmE0OTU0MGUw
MWM5OWE5MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmlu
ZGV4IGIxNjkyOGY2NmQwZjljNWRjYmJmMDFmYzM3MDc5MTJiNjZhYjViMjguLjc5NGIxMjM1MTVk
NDg4YjBhMjMwMDhjOTBkZjJlMmZlYjBkMWUzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSAiRHluYW1pY0xpbmtlclNQSS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMg
dm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVgogI2lmIFBMQVRGT1JNKElPUykKIHN0YXRpYyBib29sIHNob3VsZE5v
dFBlcmZvcm1VUkxBZGp1c3RtZW50KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGROb3RQZXJm
b3JtVVJMQWRqdXN0bWVudCA9IGFwcGxpY2F0aW9uSXNOQVNBSEQoKSAmJiBkeWxkX2dldF9wcm9n
cmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzVfMDsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCA9IElPU0FwcGxpY2F0aW9uOjppc05BU0FI
RCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05f
NV8wOwogICAgIHJldHVybiBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudDsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggYTQ3
MDRkMjlmNmI3NDI4NjFmYTJmZDRmMDQxNTQyZWFjMzk2ZjAzZS4uNzZjYjhkMjA3OWI4YzE4ZmFh
ZGNhNzdkODc5NWRmOWQ1NjQ2ZGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGY1Nzk1Njk3MTEwZjY3MDBiMWJiMWUy
NDk0YmM0YjliNGZiYWYxOWEuLmE3M2ZkYWNkZjAzYmJjODY3NGNjNjI2NDI2NDNjZTNhZDM2YjVh
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIApAQCAtNzAsNyArNzAsNyBAQCBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKICAgICAvLyB3ZSBzdGlsbCBhbGxvdyB0
aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzc0MDMzMjg+LiBTaW5jZSB0aGUgcmFjZSBjb25kaXRp
b24gYW5kIHN1YnNlcXVlbnQKICAgICAvLyBjcmFzaCBhcmUgZXNwZWNpYWxseSB0cm91Ymxlc29t
ZSBmb3IgaUJvb2tzLCB3ZSBuZXZlciBhbGxvdyB0aGUgb2JzZXJ2ZXIgdG8gYmUgYWRkZWQgdG8g
dGhlCiAgICAgLy8gbWFpbiBydW4gbG9vcCBpbiBpQm9va3MuCi0gICAgaWYgKGFwcGxpY2F0aW9u
SXNJQm9va3NPbklPUygpKQorICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKSkKICAg
ICAgICAgcmV0dXJuIFdlYlRocmVhZFJ1bkxvb3AoKTsKICNlbmRpZgogICAgIHJldHVybiBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRl
eCBjZjdkNjI1M2RkZDNlOTViZjNjM2MzNTMzMDMwMDk4MDAwN2NhMWMwLi5jZTc1YjU3YmVjOWRi
NmNmZjFhOTg5YmNhY2QwOTQ2ZDNjMDkwMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgog
I2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVk
ZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU3lzdGVtTWVtb3J5Lmgi
CiAjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKICNlbmRpZgpAQCAtMTQ3NSw3ICsx
NDc1LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1
cmwpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIE1vYmlsZVN0b3JlIGRlcGVuZHMgb24gdGhl
IGlPUyA0LjAgZXJhIGNsaWVudCBkZWxlZ2F0ZSBtZXRob2QgYmVjYXVzZSB3ZWJWaWV3OnJlc291
cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291cmNlCiAgICAg
Ly8gZG9lc24ndCBsZXQgdGhlbSB0ZWxsIHdoZW4gYSBsb2FkIHJlcXVlc3QgaXMgY29taW5nIGZy
b20gYSBtZWRpYSBlbGVtZW50LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgyNjY5MTY+IGZvciBtb3Jl
IGRldGFpbHMuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpKQorICAgIGlmIChJ
T1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSgpKQogICAgICAgICByZXR1cm4gbV9jbGllbnQu
c2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTCh1cmwpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDllMzhlYzc0MGQyMzllYjNjMTQ2
NGI5ZDVlNjdkYzg4ZmUwM2FiZDguLmE3N2ExODM0NjYwODJlZWU4NDdhYjA5YmFhZjM1ZGFkY2Rl
NDY4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApA
QCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKLSNpbmNsdWRlIDxSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNp
bmNsdWRlIDxSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTEwMCw3ICsxMDAsNyBAQCBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRS
ZXNvdXJjZQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0
UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIGlmICghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSkgewor
ICAgIGlmICghSU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIE9u
IGlPUywgZG8gbm90IGludm9rZSBzeW5jaHJvbm91cyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlcyB3
aGlsZSByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcKICAgICAgICAgLy8gaXMgZGlzYWJsZWQgdG8g
YXZvaWQgcmUtZW50ZXJpbmcgc3R5bGUgc2VsZWN0aW9uIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFk
IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzkxMjE3MTk+KS4KICAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGZpeGVkIGZvciBhbGwgcG9ydHMgaW4gPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjY0Nz4uCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UKICNpZiBQTEFURk9STShJT1MpCiBib29sIFN1YnJlc291cmNlTG9hZGVyOjpz
dGFydExvYWRpbmcoKQogewotICAgIEFTU0VSVCghYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSk7
CisgICAgQVNTRVJUKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpOwogICAgIGlmICgh
aW5pdChtX2lPU09yaWdpbmFsUmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X2lPU09yaWdpbmFsUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBlZGNlY2Y4YzUxN2VjNzM1YzU5
ZGUwZWFjMDdhZDA3Y2FhZDlhZjBlLi4xM2FjMzAxYWJlM2NkM2VhNWM2N2ZiMDIwYjNhODU2NDhj
YTk4NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtMTMxLDE0ICsxMzEsMTYgQEAgYm9vbCBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlQWxsb3dl
ZEJ5Tm9zbmlmZigpIGNvbnN0CiAKIGJvb2wgQ2FjaGVkU2NyaXB0OjpzaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMTM5MTYyOTE+CiAgICAgLy8g
UkVHUkVTU0lPTiAocjExOTc1OSk6IEFkb2JlIEZsYXNoIFBsYXllciAic21hbGxlciIgaW5zdGFs
bGVyIHJlbGllcyBvbiB0aGUgaW5jb3JyZWN0IGZpcmluZwogICAgIC8vIG9mIGEgbG9hZCBldmVu
dCBhbmQgbmVlZHMgYW4gYXBwLXNwZWNpZmljIGhhY2sgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAg
Ly8gVGhlIGluc3RhbGxlciBpbiBxdWVzdGlvbiB0cmllcyB0byBsb2FkIC5qcyBmaWxlIHRoYXQg
ZG9lc24ndCBleGlzdCwgY2F1c2luZyB0aGUgc2VydmVyIHRvCiAgICAgLy8gcmV0dXJuIGEgNDA0
IHJlc3BvbnNlLiBOb3JtYWxseSwgdGhpcyB3b3VsZCB0cmlnZ2VyIGFuIGVycm9yIGV2ZW50IHRv
IGJlIGRpc3BhdGNoZWQsIGJ1dCB0aGUKICAgICAvLyBpbnN0YWxsZXIgZXhwZWN0cyBhIGxvYWQg
ZXZlbnQgaW5zdGVhZCBzbyB3ZSB3b3JrIGFyb3VuZCBpdCBoZXJlLgotICAgIGlmIChhcHBsaWNh
dGlvbklzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpKQorICAgIGlmIChNYWNBcHBsaWNh
dGlvbjo6aXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAKICAgICByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OnNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDhiNGY2NTA0ODk2NTdmMTE1ZTFlMjZiMGM1NzkwOTJiYjhhZWNhNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotI2lmIFVTRShDRikKLXN0YXRpYyBDRlN0cmluZ1JlZiBtYWluQnVuZGxlSWRl
bnRpZmllcigpCi17Ci0gICAgQ0ZCdW5kbGVSZWYgbWFpbkJ1bmRsZSA9IENGQnVuZGxlR2V0TWFp
bkJ1bmRsZSgpOwotICAgIGlmICghbWFpbkJ1bmRsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gQ0ZCdW5kbGVHZXRJZGVudGlmaWVyKG1haW5CdW5kbGUpOwotfQotI2Vu
ZGlmCi0KLS8vIFRoZSBhcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNldCB0byB0
aGUgVUlQcm9jZXNzIGJ1bmRsZSBpZGVudGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFuZAotLy8g
dGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB1cG9uIGluaXRpYWxpemF0aW9uLgotLy8gSWYgbm90IGV4
cGxpY2l0bHkgc2V0LCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVudGlmaWVy
IHdoaWNoIGlzIGFjY3VyYXRlIGZvciBXSzEgb3IKLS8vIHRoZSBXSzIgVUlQcm9jZXNzLgotc3Rh
dGljIFN0cmluZyYgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0jaWYgVVNFKENGKQotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGlkZW50aWZpZXIobWFpbkJ1bmRsZUlkZW50aWZpZXIoKSk7Ci0jZWxzZQot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXI7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBpZGVudGlmaWVyOwotfQotCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFi
bHkgYmUgcmVuYW1lZCB0byBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygpIGFuZCB1c2UgYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKLS8vIGluc3RlYWQgb2YgbWFpbkJ1bmRsZUlkZW50
aWZpZXIoKSBpbnRlcm5hbGx5LiBUaGlzIHdvdWxkIGhhdmUgdGhlIGJlbmVmaXQgb2Ygd29ya2lu
ZyBmb3IgYm90aCBXZWJLaXQxIGFuZAotLy8gV2ViS2l0Mi4KLXN0YXRpYyBib29sIG1haW5CdW5k
bGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQotewotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0uCi0gICAgLy8gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRo
ZSBQTEFURk9STShJT1MpLWd1YXJkLgotI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICBDRlN0cmluZ1JlZiBidW5kbGVJZGVudGlmaWVyID0gbWFpbkJ1bmRsZUlkZW50aWZpZXIoKTsK
LSAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmll
clN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNTYWZhcmkoKQotewot
ICAgIHN0YXRpYyBib29sIGlzU2FmYXJpID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxl
LlNhZmFyaSIpOwotICAgIHJldHVybiBpc1NhZmFyaTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklz
QXBwbGVNYWlsKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0FwcGxlTWFpbCA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7Ci0gICAgcmV0dXJuIGlzQXBwbGVNYWlsOwotfQot
Ci1ib29sIGFwcGxpY2F0aW9uSXNJQm9va3MoKQotewotICAgIHN0YXRpYyBib29sIGlzSUJvb2tz
ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rc1giKTsKLSAgICByZXR1cm4g
aXNJQm9va3M7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0lUdW5lcygpCi17Ci0gICAgc3RhdGlj
IGJvb2wgaXNJVHVuZXMgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaVR1bmVzIik7
Ci0gICAgcmV0dXJuIGlzSVR1bmVzOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRN
ZXNzZW5nZXIoKQotewotICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0TWVzc2VuZ2VyID0gbWFp
bkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5NZXNzZW5nZXIiKTsKLSAgICByZXR1cm4g
aXNNaWNyb3NvZnRNZXNzZW5nZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFs
bGVyKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0Fkb2JlSW5zdGFsbGVyID0gbWFpbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKLSAgICByZXR1cm4gaXNBZG9i
ZUluc3RhbGxlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzQU9MSW5zdGFudE1lc3Nlbmdlcigp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaXNBT0xJbnN0YW50TWVzc2VuZ2VyID0gbWFpbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOwotICAgIHJldHVybiBpc0FPTEluc3RhbnRN
ZXNzZW5nZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE15RGF5KCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29t
Lm1pY3Jvc29mdC5teWRheSIpOwotICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5OwotfQotCi1i
b29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRPdXRsb29rKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBp
c01pY3Jvc29mdE91dGxvb2sgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91
dGxvb2siKTsKLSAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOwotfQotCi1ib29sIGFwcGxp
Y2F0aW9uSXNRdWlja2VuRXNzZW50aWFscygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNRdWlja2Vu
RXNzZW50aWFscyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5pbnR1aXQuUXVpY2tlbkVzc2Vu
dGlhbHMiKTsKLSAgICByZXR1cm4gaXNRdWlja2VuRXNzZW50aWFsczsKLX0KLQotYm9vbCBhcHBs
aWNhdGlvbklzQXBlcnR1cmUoKQotewotICAgIHN0YXRpYyBib29sIGlzQXBlcnR1cmUgPSBtYWlu
QnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuQXBlcnR1cmUiKTsKLSAgICByZXR1cm4gaXNBcGVy
dHVyZTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzVmVyc2lvbnMoKQotewotICAgIHN0YXRpYyBi
b29sIGlzVmVyc2lvbnMgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJz
aW9ucyIpOwotICAgIHJldHVybiBpc1ZlcnNpb25zOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNI
UkJsb2NrKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0hSQmxvY2sgPSBtYWluQnVuZGxlSXNFcXVh
bFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpOwotICAgIHJldHVybiBpc0hSQmxvY2s7Ci19Ci0K
LWJvb2wgYXBwbGljYXRpb25Jc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKQotewotICAg
IHN0YXRpYyBib29sIGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlciA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5zb2xpZHN0YXRlbmV0d29ya3MuYXdraG9zdCIpOwotICAgIHJldHVybiBp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXI7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0hp
cENoYXQoKQotewotICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpID09ICJjb20uaGlwY2hhdC5IaXBDaGF0IjsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzSGlwQ2hhdCA9PSAoYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPT0gImNv
bS5oaXBjaGF0LkhpcENoYXQiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwotICAgIHJldHVybiBpc0hpcENoYXQ7Ci19Ci0K
LXZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcikKLXsKLSAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9IGJ1bmRs
ZUlkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKaW5kZXggNWM3ZmVk
MDlhNWVlYjFkOTMxNWM5MzFlYmU0MGI0NzMyM2YzNmNhNi4uZGI0MjNiMjc2ZmJlNzYzZDcwNjg3
ZDU2YTJkMTUyODBjMmJiODQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKQEAgLTI2LDI4ICsyNiw2MCBAQAogI2lmbmRlZiBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NfaAogI2RlZmluZSBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NfaAogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
T0xJbnN0YW50TWVzc2VuZ2VyKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
ZG9iZUluc3RhbGxlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzQXBlcnR1
cmUoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0FwcGxlTWFpbCgpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzSUJvb2tzKCk7Ci1XRUJDT1JFX0VYUE9SVCBi
b29sIGFwcGxpY2F0aW9uSXNJVHVuZXMoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRp
b25Jc01pY3Jvc29mdE1lc3NlbmdlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlv
bklzTWljcm9zb2Z0TXlEYXkoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01p
Y3Jvc29mdE91dGxvb2soKTsKLWJvb2wgYXBwbGljYXRpb25Jc1F1aWNrZW5Fc3NlbnRpYWxzKCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNTYWZhcmkoKTsKLWJvb2wgYXBwbGlj
YXRpb25Jc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgYXBwbGljYXRpb25Jc1ZlcnNpb25zKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0
aW9uSXNIUkJsb2NrKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNIaXBDaGF0
KCk7Ci0KIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpOwogCisjaWYgUExBVEZPUk0oTUFDKQorCituYW1lc3BhY2UgTWFjQXBw
bGljYXRpb24geworCitXRUJDT1JFX0VYUE9SVCBib29sIGlzQU9MSW5zdGFudE1lc3Nlbmdlcigp
OworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Fkb2JlSW5zdGFsbGVyKCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIGlzQXBlcnR1cmUoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNBcHBsZU1haWwoKTsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNJQm9va3MoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNJ
VHVuZXMoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaWNyb3NvZnRNZXNzZW5nZXIoKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgaXNNaWNyb3NvZnRNeURheSgpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc01pY3Jvc29mdE91dGxvb2soKTsKK2Jvb2wgaXNRdWlja2VuRXNzZW50aWFscygpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1NhZmFyaSgpOworYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rv
d25sb2FkZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNWZXJzaW9ucygpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0hSQmxvY2soKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNIaXBDaGF0KCk7
CisKK30gLy8gTWFjQXBwbGljYXRpb24KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lm
IFBMQVRGT1JNKElPUykKKworbmFtZXNwYWNlIElPU0FwcGxpY2F0aW9uIHsKKworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc01vYmlsZU1haWwoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNNb2JpbGVT
YWZhcmkoKTsKK2Jvb2wgaXNEdW1wUmVuZGVyVHJlZSgpOworYm9vbCBpc01vYmlsZVN0b3JlKCk7
CitXRUJDT1JFX0VYUE9SVCBib29sIGlzV2ViQXBwKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlz
T2tDdXBpZCgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ZhY2Vib29rKCk7CitXRUJDT1JFX0VY
UE9SVCBib29sIGlzRGFpamlzZW5EaWN0aW9uYXJ5KCk7Citib29sIGlzTkFTQUhEKCk7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzVGhlRWNvbm9taXN0T25JcGhvbmUoKTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgaXNXZWJQcm9jZXNzKCk7Citib29sIGlzSUJvb2tzKCk7CisKK30gLy8gSU9TQXBwbGlj
YXRpb24KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKICNlbmRpZiAvLyBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NmJiMmU0ZTI0OThmOGQxZWYwMDY2NzM0
ZjhiNzQ5ODlkMzg0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0KQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TQnVuZGxlLmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGUgYXBw
bGljYXRpb24gYnVuZGxlIGlkZW50aWZpZXIgZ2V0cyBzZXQgdG8gdGhlIFVJUHJvY2VzcyBidW5k
bGUgaWRlbnRpZmllciBieSB0aGUgV2ViUHJvY2VzcyBhbmQKKy8vIHRoZSBuZXR3b3JraW5nIHBy
b2Nlc3MgdXBvbiBpbml0aWFsaXphdGlvbi4KKy8vIElmIG5vdCBleHBsaWNpdGx5IHNldCwgdGhp
cyB3aWxsIHJldHVybiB0aGUgbWFpbiBidW5kbGUgaWRlbnRpZmllciB3aGljaCBpcyBhY2N1cmF0
ZSBmb3IgV0sxIG9yCisvLyB0aGUgV0syIFVJUHJvY2Vzcy4KK3N0YXRpYyBTdHJpbmcmIGFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXIoW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisKKyAgICByZXR1cm4gaWRlbnRp
ZmllcjsKK30KKwordm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBidW5kbGVJZGVudGlmaWVyKQoreworICAgIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigpID0gYnVuZGxlSWRlbnRpZmllcjsKK30KKworc3RhdGljIGJvb2wgYXBwbGljYXRpb25CdW5k
bGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQoreworICAg
IHJldHVybiBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9PSBidW5kbGVJZGVudGlmaWVy
U3RyaW5nOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorCitib29sIE1hY0FwcGxpY2F0aW9uOjpp
c1NhZmFyaSgpCit7CisgICAgc3RhdGljIGJvb2wgaXNTYWZhcmkgPSBhcHBsaWNhdGlvbkJ1bmRs
ZUlzRXF1YWxUbygiY29tLmFwcGxlLlNhZmFyaSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
aXNTYWZhcmkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5TYWZhcmki
KSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKSIpOworICAgIHJldHVybiBpc1NhZmFyaTsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlv
bjo6aXNBcHBsZU1haWwoKQoreworICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWlsID0gYXBwbGlj
YXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShpc0FwcGxlTWFpbCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFw
cGxlLm1haWwiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0FwcGxlTWFpbDsKK30KKworYm9vbCBN
YWNBcHBsaWNhdGlvbjo6aXNJQm9va3MoKQoreworICAgIHN0YXRpYyBib29sIGlzSUJvb2tzID0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3NYIik7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Y29tLmFwcGxlLmlCb29rc1giKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0lCb29rczsKK30KKwor
Ym9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMoKQoreworICAgIHN0YXRpYyBib29sIGlzSVR1
bmVzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMiKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSVR1bmVzID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uYXBwbGUuaVR1bmVzIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNJVHVuZXM7Cit9
CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkKK3sKKyAgICBz
dGF0aWMgYm9vbCBpc01pY3Jvc29mdE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20ubWljcm9zb2Z0Lk1lc3NlbmdlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
aXNNaWNyb3NvZnRNZXNzZW5nZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5t
aWNyb3NvZnQuTWVzc2VuZ2VyIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNaWNyb3NvZnRNZXNz
ZW5nZXI7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzQWRvYmVJbnN0YWxsZXIoKQorewor
ICAgIHN0YXRpYyBib29sIGlzQWRvYmVJbnN0YWxsZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGlzQWRvYmVJbnN0YWxsZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
ZG9iZS5JbnN0YWxsZXJzLlNldHVwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBZG9iZUluc3Rh
bGxlcjsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNBT0xJbnN0YW50TWVzc2VuZ2VyKCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXNBT0xJbnN0YW50TWVzc2VuZ2VyID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRv
KCJjb20uYW9sLmFpbS5kZXNrdG9wIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNBT0xJbnN0YW50
TWVzc2VuZ2VyOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE15RGF5KCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gYXBwbGljYXRpb25CdW5kbGVJ
c0VxdWFsVG8oImNvbS5taWNyb3NvZnQubXlkYXkiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGlzTWljcm9zb2Z0TXlEYXkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNy
b3NvZnQubXlkYXkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5OworfQor
Citib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE91dGxvb2soKQoreworICAgIHN0YXRp
YyBib29sIGlzTWljcm9zb2Z0T3V0bG9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJj
b20ubWljcm9zb2Z0Lk91dGxvb2siKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTWljcm9z
b2Z0T3V0bG9vayA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5P
dXRsb29rIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOworfQorCiti
b29sIE1hY0FwcGxpY2F0aW9uOjppc1F1aWNrZW5Fc3NlbnRpYWxzKCkKK3sKKyAgICBzdGF0aWMg
Ym9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlz
UXVpY2tlbkVzc2VudGlhbHMgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5pbnR1
aXQuUXVpY2tlbkVzc2VudGlhbHMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1F1aWNrZW5Fc3Nl
bnRpYWxzOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0FwZXJ0dXJlKCkKK3sKKyAgICBz
dGF0aWMgYm9vbCBpc0FwZXJ0dXJlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
cHBsZS5BcGVydHVyZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBcGVydHVyZSA9PSBh
cHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIiksICJTaG91bGQg
bm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsK
KyAgICByZXR1cm4gaXNBcGVydHVyZTsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNWZXJz
aW9ucygpCit7CisgICAgc3RhdGljIGJvb2wgaXNWZXJzaW9ucyA9IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJzaW9ucyIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXNWZXJzaW9ucyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmJsYWNr
cGl4ZWwudmVyc2lvbnMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc1ZlcnNpb25zOworfQorCiti
b29sIE1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKQoreworICAgIHN0YXRpYyBib29sIGlzSFJC
bG9jayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNIUkJsb2NrID09IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQg
YmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlz
SFJCbG9jazsKK30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNTb2xpZFN0YXRlTmV0d29ya3NE
b3dubG9hZGVyKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25s
b2FkZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLnNvbGlkc3RhdGVuZXR3b3Jr
cy5hd2tob3N0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1NvbGlkU3RhdGVOZXR3b3Jr
c0Rvd25sb2FkZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5zb2xpZHN0YXRl
bmV0d29ya3MuYXdraG9zdCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisKKyAgICByZXR1cm4gaXNTb2xpZFN0YXRlTmV0
d29ya3NEb3dubG9hZGVyOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0hpcENoYXQoKQor
eworICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRv
KCJjb20uaGlwY2hhdC5IaXBDaGF0Iik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0hpcENo
YXQgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5oaXBjaGF0LkhpcENoYXQiKSwg
IlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKSIpOworICAgIHJldHVybiBpc0hpcENoYXQ7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCisKKyNpZiBQTEFURk9STShJT1MpCisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTW9iaWxl
TWFpbCgpCit7CisgICAgc3RhdGljIGJvb2wgaXNNb2JpbGVNYWlsID0gYXBwbGljYXRpb25CdW5k
bGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tb2JpbGVtYWlsIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShpc01vYmlsZU1haWwgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBs
ZS5tb2JpbGVtYWlsIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNNb2JpbGVNYWlsOworfQorCiti
b29sIElPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpCit7CisgICAgc3RhdGljIGJvb2wg
aXNNb2JpbGVTYWZhcmkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1v
YmlsZXNhZmFyaSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVTYWZhcmkgPT0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiKSwgIlNo
b3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KSIpOworICAgIHJldHVybiBpc01vYmlsZVNhZmFyaTsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlv
bjo6aXNEdW1wUmVuZGVyVHJlZSgpCit7CisgICAgLy8gV2UgdXNlIGEgcHJlZml4IG1hdGNoIGlu
c3RlYWQgb2Ygc3RyaWN0IGVxdWFsaXR5IHNpbmNlIExheW91dFRlc3RSZWxheSBtYXkgbGF1bmNo
IG11bHRpcGxlIGluc3RhbmNlcyBvZgorICAgIC8vIER1bXBSZW5kZXJUcmVlIHdoZXJlIHRoZSBi
dW5kbGUgaWRlbnRpZmllciBvZiBlYWNoIGluc3RhbmNlIGhhcyBhIHVuaXF1ZSBzdWZmaXguCisg
ICAgc3RhdGljIGJvb2wgaXNEdW1wUmVuZGVyVHJlZSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIik7IC8vIGUuZy4gb3JnLndlYmtpdC5EdW1w
UmVuZGVyVHJlZTAKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzRHVtcFJlbmRlclRyZWUgPT0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiKSwg
IlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKSIpOworICAgIHJldHVybiBpc0R1bXBSZW5kZXJUcmVlOworfQorCitib29sIElPU0FwcGxp
Y2F0aW9uOjppc01vYmlsZVN0b3JlKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01vYmlsZVN0b3Jl
ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5Nb2JpbGVTdG9yZSIpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVTdG9yZSA9PSBhcHBsaWNhdGlvbkJ1bmRs
ZUlzRXF1YWxUbygiY29tLmFwcGxlLk1vYmlsZVN0b3JlIiksICJTaG91bGQgbm90IGJlIGNhbGxl
ZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4g
aXNNb2JpbGVTdG9yZTsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKQorewor
ICAgIHN0YXRpYyBib29sIGlzV2ViQXBwID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5hcHBsZS53ZWJhcHAiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzV2ViQXBwID09IGFw
cGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUud2ViYXBwIiksICJTaG91bGQgbm90
IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAg
ICByZXR1cm4gaXNXZWJBcHA7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzT2tDdXBpZCgp
Cit7CisgICAgc3RhdGljIGJvb2wgaXNPa0N1cGlkID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5va2N1cGlkLmFwcCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNPa0N1cGlk
ID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ub2tjdXBpZC5hcHAiKSwgIlNob3Vs
ZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIp
OworICAgIHJldHVybiBpc09rQ3VwaWQ7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzRmFj
ZWJvb2soKQoreworICAgIHN0YXRpYyBib29sIGlzRmFjZWJvb2sgPSBhcHBsaWNhdGlvbkJ1bmRs
ZUlzRXF1YWxUbygiY29tLmZhY2Vib29rLkZhY2Vib29rIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShpc0ZhY2Vib29rID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZmFjZWJv
b2suRmFjZWJvb2siKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0ZhY2Vib29rOworfQorCitib29s
IElPU0FwcGxpY2F0aW9uOjppc0RhaWppc2VuRGljdGlvbmFyeSgpCit7CisgICAgc3RhdGljIGJv
b2wgaXNEYWlqaXNlbkRpY3Rpb25hcnkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygianAu
Y28uc2hvZ2FrdWthbi5kYWlqaXNlbjIwMDlpIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c0RhaWppc2VuRGljdGlvbmFyeSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygianAuY28u
c2hvZ2FrdWthbi5kYWlqaXNlbjIwMDlpIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNEYWlqaXNl
bkRpY3Rpb25hcnk7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzTkFTQUhEKCkKK3sKKyAg
ICBzdGF0aWMgYm9vbCBpc05BU0FIRCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJnb3Yu
bmFzYS5OQVNBSEQiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTkFTQUhEID09IGFwcGxp
Y2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJnb3YubmFzYS5OQVNBSEQiKSwgIlNob3VsZCBub3QgYmUg
Y2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJl
dHVybiBpc05BU0FIRDsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNUaGVFY29ub21pc3RP
bklwaG9uZSgpCit7CisgICAgc3RhdGljIGJvb2wgaXNUaGVFY29ub21pc3RPbklwaG9uZSA9IGFw
cGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uZWNvbm9taXN0LmlwaG9uZSIpOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaXNUaGVFY29ub21pc3RPbklwaG9uZSA9PSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmVjb25vbWlzdC5pcGhvbmUiKSwgIlNob3VsZCBub3QgYmUgY2Fs
bGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVy
biBpc1RoZUVjb25vbWlzdE9uSXBob25lOworfQorCisvLyBGSVhNRTogdGhpcyBuZWVkcyB0byBi
ZSBjaGFuZ2VkIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgY2hhbmdlZCB0byBhbiBYUEMgc2Vydmlj
ZS4KK2Jvb2wgSU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpCit7CisgICAgc3RhdGljIGJv
b2wgaXNXZWJQcm9jZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3Bt
ZW50Il0KKyAgICAgICAgfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50Il0KKyAgICAg
ICAgfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRv
U3RyaW5nOkAiY29tLmFwcGxlLldlYlByb2Nlc3MiXTsKKyAgICByZXR1cm4gaXNXZWJQcm9jZXNz
OworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpCit7CisgICAgc3RhdGljIGJv
b2wgaXNJQm9va3MgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29r
cyIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJQm9va3MgPT0gYXBwbGljYXRpb25CdW5k
bGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3MiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0lC
b29rczsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZDcxNzhhYTEyNGRjNDMyYmY3YmJhY2UyNWYy
Nzg3N2RhMGExMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TX2gKLSNkZWZpbmUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9T
X2gKLQotLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZmlsZSB3aXRo
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oLgotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XRUJD
T1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVNYWlsKCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsKLWJvb2wgYXBwbGljYXRpb25Jc0R1
bXBSZW5kZXJUcmVlKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzV2ViQXBwKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29s
IGFwcGxpY2F0aW9uSXNPa0N1cGlkKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9u
SXNGYWNlYm9vaygpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzRGFpamlzZW5E
aWN0aW9uYXJ5KCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNOQVNBSEQoKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgYXBwbGljYXRpb25Jc1RoZUVjb25vbWlzdE9uSVBob25lKCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCk7Ci1ib29sIGFwcGxpY2F0aW9uSXNJQm9v
a3NPbklPUygpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSdW50aW1l
QXBwbGljYXRpb25DaGVja3NJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MWE3Mzc2ZjBmMmQ1NWUzOGJjMzEyMTI0YjMzNjI3YTdjNjUzZTA3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDExMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCi0KLS8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
bWVyZ2luZyB0aGlzIGZpbGUgd2l0aCBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwLgotI2lm
IFBMQVRGT1JNKElPUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIGFwcGxpY2F0aW9u
SXNNb2JpbGVNYWlsKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc01vYmlsZU1haWwgPSBb
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6
QCJjb20uYXBwbGUubW9iaWxlbWFpbCJdOwotICAgIHJldHVybiBpc01vYmlsZU1haWw7Ci19Ci0K
LWJvb2wgYXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNNb2JpbGVTYWZhcmkgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUubW9iaWxlc2FmYXJpIl07Ci0gICAgcmV0
dXJuIGlzTW9iaWxlU2FmYXJpOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNEdW1wUmVuZGVyVHJl
ZSgpCi17Ci0gICAgLy8gV2UgdXNlIGEgcHJlZml4IG1hdGNoIGluc3RlYWQgb2Ygc3RyaWN0IGVx
dWFsaXR5IHNpbmNlIExheW91dFRlc3RSZWxheSBtYXkgbGF1bmNoIG11bHRpcGxlIGluc3RhbmNl
cyBvZgotICAgIC8vIER1bXBSZW5kZXJUcmVlIHdoZXJlIHRoZSBidW5kbGUgaWRlbnRpZmllciBv
ZiBlYWNoIGluc3RhbmNlIGhhcyBhIHVuaXF1ZSBzdWZmaXguCi0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNEdW1wUmVuZGVyVHJlZSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdIGhhc1ByZWZpeDpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsgLy8gZS5nLiBv
cmcud2Via2l0LkR1bXBSZW5kZXJUcmVlMAotICAgIHJldHVybiBpc0R1bXBSZW5kZXJUcmVlOwot
fQotCi1ib29sIGFwcGxpY2F0aW9uSXNNb2JpbGVTdG9yZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNNb2JpbGVTdG9yZSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5Nb2JpbGVTdG9yZSJdOwotICAgIHJl
dHVybiBpc01vYmlsZVN0b3JlOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNXZWJBcHAoKQotewot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzV2ViQXBwID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
YnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLndlYmFwcCJdOwot
ICAgIHJldHVybiBpc1dlYkFwcDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzT2tDdXBpZCgpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNPa0N1cGlkID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLm9rY3VwaWQuYXBwIl07
Ci0gICAgcmV0dXJuIGlzT2tDdXBpZDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzRmFjZWJvb2so
KQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzRmFjZWJvb2sgPSBbW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uZmFjZWJvb2su
RmFjZWJvb2siXTsKLSAgICByZXR1cm4gaXNGYWNlYm9vazsKLX0KLQotYm9vbCBhcHBsaWNhdGlv
bklzRGFpamlzZW5EaWN0aW9uYXJ5KCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0RhaWpp
c2VuRGljdGlvbmFyeSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
IGlzRXF1YWxUb1N0cmluZzpAImpwLmNvLnNob2dha3VrYW4uZGFpamlzZW4yMDA5aSJdOwotICAg
IHJldHVybiBpc0RhaWppc2VuRGljdGlvbmFyeTsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzTkFT
QUhEKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc05BU0FIRCA9IFtbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImdvdi5uYXNhLk5B
U0FIRCJdOwotICAgIHJldHVybiBpc05BU0FIRDsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzVGhl
RWNvbm9taXN0T25JUGhvbmUoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzVGhlRWNvbm9t
aXN0T25JUGhvbmUgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBp
c0VxdWFsVG9TdHJpbmc6QCJjb20uZWNvbm9taXN0LmlwaG9uZSJdOwotICAgIHJldHVybiBpc1Ro
ZUVjb25vbWlzdE9uSVBob25lOwotfQotCi0vLyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSBjaGFu
Z2VkIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgY2hhbmdlZCB0byBhbiBYUEMgc2VydmljZS4KLWJv
b2wgYXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
V2ViUHJvY2VzcyA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlz
RXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCJd
IHx8IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0
cmluZzpAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCJdIHx8IFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5XZWJQ
cm9jZXNzIl07Ci0gICAgcmV0dXJuIGlzV2ViUHJvY2VzczsKLX0KLQotYm9vbCBhcHBsaWNhdGlv
bklzSUJvb2tzT25JT1MoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzSUJvb2tzT25JT1Mg
PSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJp
bmc6QCJjb20uYXBwbGUuaUJvb2tzIl07Ci0gICAgcmV0dXJuIGlzSUJvb2tzT25JT1M7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcAppbmRleCBhZGRiNTI0ZjAxN2ExN2VhOTEyMTEyMzU5OTMyMjBkOGM5YjE0MTlj
Li4yN2E0NWZjNjk3ZWY1NGRiNTczZDdiZDYzYjU0N2Y4YzY0ZTc5YWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNv
ZnRMaW5raW5nLmgiCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvU2VydmljZXMuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvVVJMQ0YuY3BwCmluZGV4IGExZmFlYTVlY2U3YjkzMDVkNmZiNTI3OTg3Njc1N2M5YTY5
ZTdmNzMuLjA0ZGVmODRhYWI1OGVjNzcxZTA5Y2YzZjBhMTk0ZWM5MGY0NjdjYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvTGF5ZXJGbHVzaFNjaGVkdWxlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZs
dXNoU2NoZWR1bGVyTWFjLmNwcAppbmRleCA0NDRiNGM2Mjk3OWQ2YWEwOGI2OThiNGRmZWEyYzli
NGE3NWU1ZTE4Li4xYjIzYjZhOWRjMTY0ODIwZTEwNjZhZDcxNTBkNmUzZWE0YzJhOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZs
dXNoU2NoZWR1bGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9MYXllckZsdXNoU2NoZWR1bGVyTWFjLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNp
bmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgogI2VuZGlmCkBAIC00Niw3ICs0
Niw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogICAgIC8vIHdlIHN0
aWxsIGFsbG93IHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNzQwMzMyOD4uIFNpbmNlIHRoZSBy
YWNlIGNvbmRpdGlvbiBhbmQgc3Vic2VxdWVudAogICAgIC8vIGNyYXNoIGFyZSBlc3BlY2lhbGx5
IHRyb3VibGVzb21lIGZvciBpQm9va3MsIHdlIG5ldmVyIGFsbG93IHRoZSBvYnNlcnZlciB0byBi
ZSBhZGRlZCB0byB0aGUKICAgICAvLyBtYWluIHJ1biBsb29wIGluIGlCb29rcy4KLSAgICBpZiAo
YXBwbGljYXRpb25Jc0lCb29rc09uSU9TKCkpCisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc0lC
b29rcygpKQogICAgICAgICByZXR1cm4gV2ViVGhyZWFkUnVuTG9vcCgpOwogI2VuZGlmCiAgICAg
cmV0dXJuIENGUnVuTG9vcEdldEN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTMyZDM1MjJkZjI4NjE1ZTY4NzAwNGViZmMwZTU1
Zjc3Njg2YmFlZS4uODljYjBkNmZhZTdjNjg1MzgyMDJjNzZlZGZiOTNhNTY2MTdjOWFjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTQ0LDcg
KzQ0LDcgQEAKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIK
ICNpbXBvcnQgIlRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCAyYTRk
NTZjMDQxNDAyNmE3ZWY2NTJlYjU0NmIyMmJmMDgxMGJjZmQ5Li41YmExYTQ4NjQxZTg2Y2I4YWYx
NzA0MWJiOGNiMmExOGMzYWI1MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC0zNSw3ICszNSw3IEBACiAjaW1wb3J0ICJBVktpdFNQSS5oIgogI2ltcG9ydCAiR2VvbWV0cnlV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IGU5YTYz
MjMwZDI5OGM5YTQxZDUxNTk1YTU1ZGRmMTg1ZTdjMmEzYWQuLmIyZWQ5NGRhYTUxZDU4YTk0NGQ4
ZTNlZmRkYjE1MjhiYjkyYTI1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2ltcG9ydCAiRmxv
YXRpbmdQb2ludEVudmlyb25tZW50LmgiCiAjaW1wb3J0ICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiVGhyZWFkR2xvYmFs
RGF0YS5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVGhyZWFkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRNZXNzYWdl
LmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2
b2lkIFdlYlRocmVhZFNldERlbGVnYXRlU291cmNlUnVuTG9vcE1vZGUoQ0ZTdHJpbmdSZWYgbW9k
ZSkKIAogdm9pZCBXZWJUaHJlYWRFbmFibGUodm9pZCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoIVdlYkNvcmU6OmFwcGxpY2F0aW9uSXNXZWJQcm9jZXNzKCksICJUaGUgV2Vi
UHJvY2VzcyBzaG91bGQgbmV2ZXIgcnVuIGEgV2ViIFRocmVhZCIpOworICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRSghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2Vzcygp
LCAiVGhlIFdlYlByb2Nlc3Mgc2hvdWxkIG5ldmVyIHJ1biBhIFdlYiBUaHJlYWQiKTsKIAogICAg
IHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0Q29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwog
ICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIFN0YXJ0V2ViVGhyZWFkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IGIzMGZkODEzNDNjMDZhY2Q4OWJh
OGY5ZTJmNjc0Mzc2ZjZlYWQwMjYuLjViYTI4MjFiNzBiOWMyNTI0YzYxNjBhMjc5NWY0OTQzY2E1
NGYzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTk0
LDkgKzE5NCwxMyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25z
dCBJbnRSZWN0JiByKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQgdGhlIHZpZXcgYXQg
YWxsIGlmIGl0J3MgbGF5ZXIgYmFja2VkLCBiZWNhdXNlIHRoZW4gd2UnbGwgZW5kIHVwCiAgICAg
Ly8gd2l0aCBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHZpZXcgY29udGVudHMsIG9uZSBpbiB0aGUg
dmlldydzIGxheWVyIGl0c2VsZiBhbmQgb25lIGluIHRoZQogICAgIC8vIFdlYkhUTUxWaWV3J3Mg
YmFja2luZyBzdG9yZSAoZWl0aGVyIGEgbGF5ZXIgb3IgdGhlIHdpbmRvdyBiYWNraW5nIHN0b3Jl
KS4KLSAgICAvLyBIb3dldmVyLCBRdWlja2VuIEVzc2VudGlhbHMgaGFzIGEgcGx1Zy1pbiB0aGF0
IGRlcGVuZHMgb24gZHJhd2luZyB0byB1cGRhdGUgdGhlIGxheWVyIChzZWUgPHJkYXI6Ly9wcm9i
bGVtLzE1MjIxMjMxPikuCi0gICAgaWYgKHZpZXcubGF5ZXIgJiYgIWFwcGxpY2F0aW9uSXNRdWlj
a2VuRXNzZW50aWFscygpKQorICAgIGlmICh2aWV3LmxheWVyKSB7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgICAgICAvLyBIb3dldmVyLCBRdWlja2VuIEVzc2VudGlhbHMgaGFzIGEgcGx1Zy1pbiB0
aGF0IGRlcGVuZHMgb24gZHJhd2luZyB0byB1cGRhdGUgdGhlIGxheWVyIChzZWUgPHJkYXI6Ly9w
cm9ibGVtLzE1MjIxMjMxPikuCisgICAgICAgIGlmICghTWFjQXBwbGljYXRpb246OmlzUXVpY2tl
bkVzc2VudGlhbHMoKSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8g
VGFrZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVjYXVzZSBzZW5kaW5nIG1lc3NhZ2Vz
IHRvIHRoZSB2aWV3cyBjYW4gaW52b2tlIGFyYml0cmFyeQogICAgIC8vIGNvZGUsIHdoaWNoIGNh
biBkZXJlZiBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1
aWNrTG9vay5tbQppbmRleCBhMWVhOWM4OWQwMDNmMDRmZWUwMzgxMTIzYzdmMWUxYjI5OGUzNGEz
Li4xM2QxZGRjM2NhZTllZjIzNjdmNjQxZjQ5MDdlNmUyYTgxZGE0MWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW1wb3J0ICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKICNpbXBvcnQg
IldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCBjM2JkZThhZjdj
OGU1ZTAyNGMzZTJkZWZiODNmZmI1MGU2NWZkNDg0Li44YTI2ODg4ZTdiMjNkYzQyNGI5OGI1MWU3
ODIyN2I5ZWIyZjAxNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNzAsNyArNzAsNyBAQCBDRkRp
Y3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlv
blJlZik7CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKLSNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCiAKIEBpbnRl
cmZhY2UgTlNVUkxSZXF1ZXN0ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGQxNGQwMzAxOTdiMmI5NDgxYTVkZWEzYjdkZDEyODg5
NTViMTMwODYuLjIwZDM4NDdjNDQ3YWVlYzAwNDlhZjQ1YmJlY2E1YTQ2ZWY5OTZjZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC02
OSw3ICs2OSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNTIsNyArMzUyLDcg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmxheWVyV2lsbEJlRGVzdHJveWVkKCkKIAogYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6Om5lZWRzSU9TRHVtcFJlbmRlclRyZWVNYWluRnJhbWVSZW5k
ZXJWaWV3TGF5ZXJJc0Fsd2F5c09wYXF1ZUhhY2soY29uc3QgR3JhcGhpY3NMYXllciYgbGF5ZXIp
IGNvbnN0CiB7Ci0gICAgaWYgKG1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXIgJiYgYXBwbGlj
YXRpb25Jc0R1bXBSZW5kZXJUcmVlKCkpIHsKKyAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZp
ZXdMYXllciAmJiBJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJlZSgpKSB7CiAgICAgICAg
IC8vIEluIGlPUyBXZWJLaXQxIHRoZSBtYWluIGZyYW1lJ3MgUmVuZGVyVmlldyBsYXllciBpcyBh
bHdheXMgdHJhbnNwYXJlbnQuIFdlIGxpZSB0aGF0IGl0IGlzIG9wYXF1ZSBzbyB0aGF0CiAgICAg
ICAgIC8vIGludGVybmFscy5sYXllclRyZWVBc1RleHQoKSB0ZXN0cyBzdWNjZWVkLgogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGxheWVyLCAhbGF5ZXIuY29udGVudHNPcGFxdWUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKaW5kZXggMjU0NmQ1NGQyZTJjOTBhNDlkNmMzMmQwYTIwMGNhOTRjMTNhNGIwNS4u
NGQ2MThlOTU5Njc1ODBmMGRmMjc3OGE0ZGRmYTVkODVkMjNhODVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0lPUy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3Jt
YXRpb24qIGhvc3QsIFJlc291CiAgICAgICAgICAgICByZXF1ZXN0c1BlbmRpbmcucmVtb3ZlRmly
c3QoKTsKICAgICAgICAgICAgIGhvc3QtPmFkZExvYWRJblByb2dyZXNzKHJlc291cmNlTG9hZGVy
LmdldCgpKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICAgICBpZiAoIWFwcGxpY2F0aW9u
SXNXZWJQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIGlmICghSU9TQXBwbGljYXRpb246OmlzV2Vi
UHJvY2VzcygpKSB7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGlu
ZygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQpp
bmRleCBkMjgyNWFmNDdhZjdjNzE0Y2RmMjBmMzk3MTZmMGMzNDUzNjY5MWM1Li43Nzc0Njk0NjM3
MTUyNjE0MWM3MjdlYTFlM2Y1NTgyYTJiODEyZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC01Nyw3ICs1
Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlckJveC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxp
bmdDb25zdHJhaW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRleCA0MGIwMmI2NTlmMWVkOTlmM2Ri
MTM5NDEwN2U2Njk0MDFmZjBlYjk5Li44NDA2YzE1MmJmMTdhMjJjZTU1NTlhMTM3OTJlNDFkNmMz
YWIyMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250
cm9sbGVyLm1tCkBAIC02OCw3ICs2OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+
CiAjZW5kaWYKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQXVkaW9T
ZXNzaW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2FzQXVkaW9TZXNzaW9uSW5pdGlhbGl6
ZWQgPSB0cnVlOwotICAgIGlmICghV2ViQ29yZTo6YXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgp
KQorICAgIGlmICghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENh
dGVnb3J5KEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4
IDQ5YjcxOTM4NTI4MjUxODI2OGM3MTRlMTk4ZmIxMmRmODU5ZmI4ZDAuLjIzZmYzNzUwZWU2Nzdj
OTQzYzhmMjNlMWIzNzU5OWE1NTQ3MmRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDgsNyAr
MTQ4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbUlPUy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9vay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjZW5kaWYKIAogI2lmIEhBVkUo
QVBQX0xJTktTKQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYgaGEK
ICAgICAgICAgICAgIDogbV9maXJzdFJlcXVlc3RVUkwoaGFuZGxlLmZpcnN0UmVxdWVzdFVSTCgp
KQogICAgICAgICB7CiAgICAgICAgICAgICBOU1VSTCAqcHJldmlld1JlcXVlc3RVUkwgPSBoYW5k
bGUucHJldmlld1JlcXVlc3RVUkwoKTsKLSAgICAgICAgICAgIGlmICghYXBwbGljYXRpb25Jc01v
YmlsZVNhZmFyaSgpKSB7CisgICAgICAgICAgICBpZiAoIUlPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBrZWVwcyB0aGUgUUxQcmV2aWV3
Q29udmVydGVyIGFsaXZlIHRvIHNlcnZlIGFueSBzdWJyZXNvdXJjZSByZXF1ZXN0cy4KICAgICAg
ICAgICAgICAgICAvLyBJdCBpcyByZW1vdmVkIGJ5IC1bV2ViRGF0YVNvdXJjZSBkZWFsbG9jXS4K
ICAgICAgICAgICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChwcmV2
aWV3UmVxdWVzdFVSTCwgaGFuZGxlLmNvbnZlcnRlcigpLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMDU2NGM1ZjE2YjBiZDBmNmJjZTY3OTU4NzFiNzgyNWYz
N2Q4NGRkOC4uY2JiZjI0ZmNhM2Y0MzhjZjA5ZjEzZDM3NTViMmQxZTRkNWM3OWIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDExLDggKzI0MTEsMTIgQEAgc3Rh
dGljIFdlYkZyYW1lTG9hZFR5cGUgdG9XZWJGcmFtZUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUgZnJh
bWVMb2FkVHlwZSkKIAogc3RhdGljIGJvb2wgbmVlZHNNaWNyb3NvZnRNZXNzZW5nZXJET01Eb2N1
bWVudFdvcmthcm91bmQoKQogewotICAgIHN0YXRpYyBib29sIG5lZWRzV29ya2Fyb3VuZCA9IGFw
cGxpY2F0aW9uSXNNaWNyb3NvZnRNZXNzZW5nZXIoKSAmJiBbW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9u
S2V5XSBjb21wYXJlOkAiNy4xIiBvcHRpb25zOk5TTnVtZXJpY1NlYXJjaF0gPT0gTlNPcmRlcmVk
QXNjZW5kaW5nOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQor
ICAgIHN0YXRpYyBib29sIG5lZWRzV29ya2Fyb3VuZCA9IE1hY0FwcGxpY2F0aW9uOjppc01pY3Jv
c29mdE1lc3NlbmdlcigpICYmIFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9E
aWN0aW9uYXJ5S2V5OihOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldIGNvbXBhcmU6QCI3
LjEiIG9wdGlvbnM6TlNOdW1lcmljU2VhcmNoXSA9PSBOU09yZGVyZWRBc2NlbmRpbmc7CiAgICAg
cmV0dXJuIG5lZWRzV29ya2Fyb3VuZDsKKyNlbmRpZgogfQogCiAtIChET01Eb2N1bWVudCAqKURP
TURvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZGJiMjNiMDI2Nzk0NzRiOWU0ODA5MGJj
ODIzM2Y1YmYyN2E5ZWVlMS4uMjNlNjIzZDViN2RiMmIyODliMGYwNWJkMTE3MDY0MGQ1ODY1MDE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzE4LDExICszMTgsMTkgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgICAgIGN1c3RvbUNsaWVudEFuaW1hdGlvbkNvbnRyb2xsZXIgPSBb
KGlkKVtfd2ViVmlldyBVSURlbGVnYXRlXSBfd2ViVmlldzpfd2ViVmlldyBpbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdDp3ZWJIaXRUZXN0UmVzdWx0Lmdl
dCgpIHdpdGhUeXBlOl90eXBlXTsKICAgICB9CiAKKyAgICBpZiAoY3VzdG9tQ2xpZW50QW5pbWF0
aW9uQ29udHJvbGxlciA9PSBbTlNOdWxsIG51bGxdKSB7CisgICAgICAgIFtzZWxmIF9jYW5jZWxJ
bW1lZGlhdGVBY3Rpb25dOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgUExBVEZPUk0o
TUFDKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHBlcm1hbmVudGx5IGRpc2FibGUgdGhp
cyBmb3IgaVR1bmVzLiByZGFyOi8vcHJvYmxlbS8xOTQ2MTM1OAotICAgIGlmIChjdXN0b21DbGll
bnRBbmltYXRpb25Db250cm9sbGVyID09IFtOU051bGwgbnVsbF0gfHwgYXBwbGljYXRpb25Jc0lU
dW5lcygpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc0lUdW5lcygpKSB7CiAgICAgICAg
IFtzZWxmIF9jYW5jZWxJbW1lZGlhdGVBY3Rpb25dOwogICAgICAgICByZXR1cm47CiAgICAgfQor
I2VuZGlmCisKICAgICBpZiAoY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciAmJiBbY3Vz
dG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29s
KE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcildKQogICAgICAgICBbX2ltbWVk
aWF0ZUFjdGlvblJlY29nbml6ZXIgc2V0QW5pbWF0aW9uQ29udHJvbGxlcjooaWQgPE5TSW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJv
bGxlcl07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc3
ODlmN2RkZDc4MTZkM2ZkNjMxMWI3NDk1YzdmZWI5NjNmMWNlNDAuLmI2YzMyN2M2YzljZjExNDEz
NmFiNzZmOTIwZTUzZGEzZTRiY2YxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTI1Miw3ICsyNTIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb2JpbGVHZXN0YWx0U1BJ
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Rl
eHRSdW4uaD4KQEAgLTczOCw3ICs3MzcsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXpl
QXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFhcHBOYW1lKQogICAg
ICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChXZWJDb3JlOjphcHBsaWNhdGlvbklzTW9iaWxl
U2FmYXJpKCkgfHwgV2ViQ29yZTo6YXBwbGljYXRpb25Jc1dlYkFwcCgpKQorICAgIGlmIChXZWJD
b3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBs
aWNhdGlvbjo6aXNXZWJBcHAoKSkKICAgICAgICAgYXBwTmFtZSA9IEAiY29tLmFwcGxlLldlYkFw
cENhY2hlIjsKICNlbmRpZgogCkBAIC03NzEsNyArNzcwLDExIEBAIHN0YXRpYyB2b2lkIFdlYktp
dEluaXRpYWxpemVBcHBsaWNhdGlvblN0YXRpc3RpY3NTdG9yYWdlUGF0aElmTmVjZXNzYXJ5KCkK
IAogc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZygpCiB7Ci0gICAgcmV0dXJu
ICFhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiAhTWFjQXBwbGljYXRpb246OmlzQWRvYmVJ
bnN0YWxsZXIoKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXN0cmljdFdpbmRv
d0ZvY3VzKCkKQEAgLTc3OSw3ICs3ODIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZXN0cmljdFdp
bmRvd0ZvY3VzKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQot
ICAgIHJldHVybiAhYXBwbGljYXRpb25Jc0hSQmxvY2soKTsKKyAgICByZXR1cm4gIU1hY0FwcGxp
Y2F0aW9uOjppc0hSQmxvY2soKTsKICNlbmRpZgogfQogCkBAIC04MDIsNyArODA1LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkUmVzdHJpY3RXaW5kb3dGb2N1cygpCiBzdGF0aWMgYm9vbCBuZWVkc091
dGxvb2tRdWlya3NTY3JpcHQoKQogewogICAgIHN0YXRpYyBib29sIGlzT3V0bG9va05lZWRpbmdR
dWlya3NTY3JpcHQgPSAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9O
X1dJVEhfSFRNTDVfUEFSU0VSKQotICAgICAgICAmJiBhcHBsaWNhdGlvbklzTWljcm9zb2Z0T3V0
bG9vaygpOworICAgICAgICAmJiBNYWNBcHBsaWNhdGlvbjo6aXNNaWNyb3NvZnRPdXRsb29rKCk7
CiAgICAgcmV0dXJuIGlzT3V0bG9va05lZWRpbmdRdWlya3NTY3JpcHQ7CiB9CiAKQEAgLTgzNywx
MyArODQwLDEzIEBAIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmli
dXRlU2V0dGVycygpCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgc2hvdWxkVHJhbnNm
b3Jtc0FmZmVjdE92ZXJmbG93KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmFuc2Zvcm1z
QWZmZWN0T3ZlcmZsb3cgPSAhYXBwbGljYXRpb25Jc09rQ3VwaWQoKSB8fCBXZWJLaXRMaW5rZWRP
bk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9DU1NfVFJBTlNGT1JNU19BRkZFQ1RJ
TkdfT1ZFUkZMT1cpOworICAgIHN0YXRpYyBib29sIHNob3VsZFRyYW5zZm9ybXNBZmZlY3RPdmVy
ZmxvdyA9ICFJT1NBcHBsaWNhdGlvbjo6aXNPa0N1cGlkKCkgfHwgV2ViS2l0TGlua2VkT25PckFm
dGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ1NTX1RSQU5TRk9STVNfQUZGRUNUSU5HX09W
RVJGTE9XKTsKICAgICByZXR1cm4gc2hvdWxkVHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93OwogfQog
CiBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9yRXZlbnRz
KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVy
cm9yRXZlbnRzID0gIWFwcGxpY2F0aW9uSXNGYWNlYm9vaygpIHx8IFdlYktpdExpbmtlZE9uT3JB
ZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJPUik7CisgICAgc3Rh
dGljIGJvb2wgc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50cyA9ICFJ
T1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9vaygpIHx8IFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJL
SVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJPUik7CiAgICAgcmV0dXJuIHNob3Vs
ZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVudHM7CiB9CiAKQEAgLTg2MSw3ICs4
NjQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFu
ZEJlaGF2aW9yKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9ICFXZWJLaXRMaW5rZWRPbk9y
QWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJWkVf
U0hPUlRIQU5EX0JFSEFWSU9SKTsKICNlbHNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IGFwcGxpY2F0aW9uSXNWZXJzaW9u
cygpCisgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhh
bmRCZWhhdmlvciA9IE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNpb25zKCkKICAgICAgICAgJiYgIVdl
YktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FDWV9C
QUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVIQVZJT1IpOwogI2VuZGlmCiAgICAgcmV0dXJuIHNo
b3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3I7CkBAIC05NzEsNyAr
OTc0LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVj
ZXNzYXJ5KCkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NT
QXR0cmlidXRlU2V0dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRl
cnMoKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmIChhcHBsaWNhdGlvbklzTW9i
aWxlU2FmYXJpKCkpCisgICAgICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmko
KSkKICAgICAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRl
Z29yeSh0cnVlKTsKICNlbmRpZgogCkBAIC0xMTk2LDcgKzExOTksNyBAQCBzdGF0aWMgdm9pZCBX
ZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgICAgICBXZWJD
b3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBjbGFz
c10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViVmlldyBjbGFz
c10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViVmlzaWJsZVBv
c2l0aW9uIGNsYXNzXSk7Ci0gICAgICAgIGlmIChhcHBsaWNhdGlvbklzVGhlRWNvbm9taXN0T25J
UGhvbmUoKSAmJiAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJ
VEhfREVMRUdBVEVfQ0FMTFNfSU5fQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQorICAgICAgICBpZiAo
SU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhvbmUoKSAmJiAhV2ViS2l0TGlua2Vk
T25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVMRUdBVEVfQ0FMTFNfSU5fQ09N
TU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICAgICAgV2ViVGhyZWFkU2V0RGVsZWdhdGVTb3Vy
Y2VSdW5Mb29wTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAgICBXZWJUaHJlYWRF
bmFibGUoKTsKICAgICAgICAgaXNXZWJUaHJlYWRFbmFibGVkID0gWUVTOwpAQCAtMTMyMiw3ICsx
MzI1LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVj
ZXNzYXJ5KCkKIAogKyAodm9pZClyZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnMKIHsKLSAg
ICBCT09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6
OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsKKyAgICBCT09MIHNob3VsZEF1dG9DbGVhclBy
ZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpOwogCiAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pbnN0
YWxsTWVtb3J5UmVsZWFzZUJsb2NrKF57CiAgICAgICAgIFtXZWJWaWV3IF9oYW5kbGVNZW1vcnlX
YXJuaW5nXTsKQEAgLTIxNDMsNyArMjE0Niw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRl
YXJkb3duRW5hYmxlZCgpCiAKIC0gKEJPT0wpX25lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0
aW9uUXVpcmtzCiB7Ci0gICAgc3RhdGljIEJPT0wgbmVlZHNRdWlya3MgPSAhV2ViS2l0TGlua2Vk
T25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSUVfQ09NUEFUSUJMRV9LRVlCT0FS
RF9FVkVOVF9ESVNQQVRDSCkgJiYgIWFwcGxpY2F0aW9uSXNTYWZhcmkoKTsKKyAgICBzdGF0aWMg
Qk9PTCBuZWVkc1F1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZF
UlNJT05fV0lUSF9JRV9DT01QQVRJQkxFX0tFWUJPQVJEX0VWRU5UX0RJU1BBVENIKSAmJiAhTWFj
QXBwbGljYXRpb246OmlzU2FmYXJpKCk7CiAgICAgcmV0dXJuIG5lZWRzUXVpcmtzOwogfQogCkBA
IC0yMTU1LDcgKzIxNTgsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJs
ZWQoKQogCiBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiB7
Ci0gICAgc3RhdGljIGJvb2wgbmVlZHNRdWlyayA9IGFwcGxpY2F0aW9uSXNBcGVydHVyZSgpOwor
ICAgIHN0YXRpYyBib29sIG5lZWRzUXVpcmsgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcGVydHVyZSgp
OwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkBA
IC0yMTcwLDEwICsyMTczLDEwIEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9h
ZGluZ1F1aXJrKCkKICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2MTM0PiBhbmQKICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2MzM0Pi4KICAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNl
clF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lU
SF9IVE1MNV9QQVJTRVIpCi0gICAgICAgICYmIChhcHBsaWNhdGlvbklzQU9MSW5zdGFudE1lc3Nl
bmdlcigpIHx8IGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNeURheSgpKTsKKyAgICAgICAgJiYgKE1h
Y0FwcGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIoKSB8fCBNYWNBcHBsaWNhdGlvbjo6
aXNNaWNyb3NvZnRNeURheSgpKTsKICAgICAKICAgICAvLyBNYWlsLmFwcCBtdXN0IGNvbnRpbnVl
IHRvIGRpc3BsYXkgSFRNTCBlbWFpbCB0aGF0IGNvbnRhaW5zIHF1aXJreSBtYXJrdXAuCi0gICAg
c3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7CisgICAg
c3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKTsK
IAogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcwogICAgICAgICB8
fCBpc0FwcGxlTWFpbApAQCAtMjE4NCw3ICsyMTg3LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNTZWxm
UmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogI2VuZGlmCiAgICAgICAgIHx8IFtbc2VsZiBwcmVm
ZXJlbmNlc10gdXNlUHJlSFRNTDVQYXJzZXJRdWlya3NdOwogI2Vsc2UKLSAgICBzdGF0aWMgYm9v
bCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIGFwcGxpY2F0aW9u
SXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVl
ZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZF
UlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIElPU0FwcGxpY2F0aW9uOjppc0RhaWppc2VuRGlj
dGlvbmFyeSgpOwogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyB8
fCBbW3NlbGYgcHJlZmVyZW5jZXNdIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzXTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCAzMTI4OTFlMjBhYTdmYjliMWUzMzU3
M2I1OGMyM2ZhNDZmMzNmZGM4Li4wNjllOTcxODQ3ODk3ZDVjNjY5MDUwODA5NWZlMDU3ZTAyMWU1
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgewpA
QCAtNDIsNyArNDIsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVk
IHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KICAgICAvLyBGSVhNRTogSWRlYWxseSB3
ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSBhbmQgV2ViQXBwIGNyZWF0ZSBhIGRhdGEgc3RvcmUg
d2l0aAogICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qg
c3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6YXBwbGljYXRpb25J
c01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNXZWJBcHAoKSkgeworICAg
IGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkgewogICAgICAgICBOU1N0cmluZyAqY2FjaGVQ
YXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwogCiAgICAgICAgIHJldHVy
biBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVmVyc2lvbkNoZWNrcy5tbQppbmRleCBiNDZkMDA3MTgyYzJhZTI2ZGRlMmY3ZGU1OTYzNzdj
YjFkZTVmMjI4Li4yZTBkZmVkMWZjZWQ4ODYzY2Y5YmNiYjZlMDY5ZmNlNjExMDFiNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbQpAQCAt
MjksNyArMjksNyBAQAogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDMsNyArNDMsNyBAQCBib29sIGxpbmtlZE9uT3JBZnRlcihMaWJy
YXJ5VmVyc2lvbiB2ZXJzaW9uKQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBBbHdheXMg
bWFrZSBuZXcgZmVhdHVyZXMgYXZhaWxhYmxlIGZvciBTYWZhcmkuCi0gICAgaWYgKFdlYkNvcmU6
OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkKKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KaW5kZXggMjFkZDg0ZjlmYTRjMWRiMmIxYWM5ZTRjNTAwZGE5MDQ3M2ViOTk3MC4u
MjY2MmE0YTY2Mzg2N2Q5MjA2ZjkwNjNlMTM3YzY4YTgzOTc2YjUyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAg
LTUyLDcgKzUyLDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJBcmd1bWVudENvZGVy
c0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjZWxzZQogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+CiAjZW5kaWYKQEAgLTE4MCw3ICsxNzks
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgcGFyYW1ldGVycy5zaG91bGRTdXBwcmVz
c01lbW9yeVByZXNzdXJlSGFuZGxlciA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdFN1cHBy
ZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyRGVmYXVsdHNLZXldOwogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIHBhcmFtZXRlcnMuc2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIgPSBhcHBsaWNhdGlvbklz
SUJvb2tzKCk7CisgICAgcGFyYW1ldGVycy5zaG91bGRSZXdyaXRlQ29uc3RBc1ZhciA9IE1hY0Fw
cGxpY2F0aW9uOjppc0lCb29rcygpOwogI2VuZGlmCiAKICNpZiBIQVZFKEhPU1RFRF9DT1JFX0FO
SU1BVElPTikKQEAgLTM2NSw3ICszNjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogI2lmIFBMQVRGT1JN
KElPUykKICAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNoYXJlIGFw
cGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhhdCBhbnkg
bW9yZS4KICAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdyYXRlIGRh
dGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSB8
fCBhcHBsaWNhdGlvbklzV2ViQXBwKCkpCisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpIHx8IElPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpKQogICAgICAgICBhcHBOYW1l
ID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggOTJjNjk4ZjkwZDAyMjA3NWJlOTM2MmY1YmZjMDgyYzljYmUyZTdiNS4uNDc2ODcxYjEyZDRl
ZTQ3NzZhOWMxZmRhMjM1YzU1YzlhYzRhYzUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY2LDcg
KzY2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCA2Nzg1OGYyMWU3ZWI5ZmFlNGRhMGYxYTI2NzA5MTk5ODIzM2E4OWMxLi5h
OWI0MzI5MTc5MDlkYTEzZWEzMjQ4MGZmNmQ0OTEwODgxN2VhODVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNjcsNyArNjcsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBib29sIGV4cGVjdHNMZWdhY3lJ
bXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKCkKIHsKLSAgICBpZiAoYXBwbGljYXRpb25Jc1NhZmFy
aSgpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpKSB7CiAgICAgICAgIGNv
bnN0IGludDMyX3QgZmlyc3RWZXJzaW9uT2ZTYWZhcmlOb3RFeHBlY3RpbmdJbXBsaWNpdFJ1YmJl
ckJhbmRDb250cm9sID0gMHgwMjFBMEYwMDsgLy8gNTM4LjE1LjAKICAgICAgICAgYm9vbCBsaW5r
ZWRBZ2FpbnN0U2FmYXJpRXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbCA9IE5TVmVy
c2lvbk9mTGlua1RpbWVMaWJyYXJ5KCJTYWZhcmkiKSA8IGZpcnN0VmVyc2lvbk9mU2FmYXJpTm90
RXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbDsKICAgICAgICAgcmV0dXJuIGxpbmtl
ZEFnYWluc3RTYWZhcmlFeHBlY3RpbmdJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sOwpAQCAtNTQ3
LDcgKzU0Nyw3IEBAIENHUmVjdCBXZWJQYWdlUHJveHk6OmJvdW5kc09mTGF5ZXJJbkxheWVyQmFj
a2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqbGF5ZXIpCiAKIGJvb2wgV2ViUGFnZVByb3h5
OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gYXBwbGlj
YXRpb25Jc0FwcGxlTWFpbCgpOworICAgIHJldHVybiBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1h
aWwoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBmb250
RmFtaWx5LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273053</attachid>
            <date>2016-03-04 15:58:23 -0800</date>
            <delta_ts>2016-03-05 19:28:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155035-20160304155808.patch</filename>
            <type>text/plain</type>
            <size>83842</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3NjIyMGMyM2M1OGY2
NDkyYzlhNzYxNjA3OTRiZjg5OWU4MjI2My4uODBmNmZiNWQ4MTgzNDc1ZmFiN2YwNjk3MGQ5MjI4
ODc1YjM2NjkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE2LTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzIGFuZCBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNvbGlkYXRlIFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TIGlu
dG8KKyAgICAgICAgb25lIGZpbGUuIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6Cisg
ICAgICAgIC0gVGhlIGNoZWNrcyBub3cgYWxsIHJlbHkgb24gYXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCksIHdoaWNoIGhhcyB0aGUKKyAgICAgICAgICBiZW5lZml0IG9mIHdvcmtpbmcgaW4g
V0sxIGFuZCBXSzIgVUkvV2ViQ29udGVudC9OZXR3b3JraW5nIHByb2Nlc3Nlcy4KKyAgICAgICAg
LSBVc2UgbmFtZXNwYWNlcyB0byBkaXN0aW5ndWlzaCBNYWMgYW5kIGlPUyBhcHBsaWNhdGlvbnMg
aW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgICAgb24gdGhlIG1ldGhvZCBuYW1lLiBTbywgYXBw
bGljYXRpb25Jc0lCb29rc0ZvcklPUygpIGJlY29tZXMKKyAgICAgICAgICBJT1NBcHBsaWNhdGlv
bjo6aXNJQm9va3MoKS4KKyAgICAgICAgLSBVc2UgTlNCdW5kbGUgQVBJIG9uIGJvdGggaU9TIGFu
ZCBNYWMgaW5zdGVhZCBvZiB1c2luZyB0aGUgQ0YgQVBJIG9uIE1hYworICAgICAgICAgIGFuZCB0
aGUgTlMgQVBJIG9uIGlPUy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlXZWJEb2N1bWVudFZp
ZXddKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9u
OjpwdXREZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRSdW5Mb29wKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNjcmlwdDo6c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNT
YWZhcmkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzQXBwbGVNYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc0lCb29rcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
Y0FwcGxpY2F0aW9uOjppc0Fkb2JlSW5zdGFsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0Fw
cGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzTWljcm9zb2Z0TXlEYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBw
bGljYXRpb246OmlzTWljcm9zb2Z0T3V0bG9vayk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNRdWlja2VuRXNzZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBs
aWNhdGlvbjo6aXNBcGVydHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6
aXNWZXJzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNIUkJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NvbGlkU3RhdGVOZXR3b3Jr
c0Rvd25sb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzSGlwQ2hh
dCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSk6CisgICAgICAg
IChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHApOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzT2tDdXBpZCk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNG
YWNlYm9vayk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEYWlqaXNlbkRp
Y3Rpb25hcnkpOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTkFTQUhEKToK
KyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25l
KToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzSUJvb2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9VUkxDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
TGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50UnVu
TG9vcCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFdlYlRo
cmVhZEVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6bmVlZHNJT1NEdW1wUmVu
ZGVyVHJlZU1haW5GcmFtZVJlbmRlclZpZXdMYXllcklzQWx3YXlzT3BhcXVlSGFjayk6CisKIDIw
MTYtMDMtMDMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplIHRoZSBsb25nIHByZXNzIGFjdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNDViY2U5N2RhMGUyNDBmNjUyN2UwOTdiZGRmYTY3MGE1YWMwMzJlMS4uYTBjMjRlNzc2
N2I0MDBmMjBkYTAzZTAzMjBjNDkzZjMzYWM4ZjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxNi0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnNvbGlkYXRlIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgcnVudGltZSBhcHBsaWNhdGlvbiBjaGVja3MuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisKIDIwMTYtMDMtMDQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZW1vdmUgdmN4cHJvaiBidWlsZCBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCBiNGJkNGU1MWM0
NTg3YjdjNTBlYjRjODYxNzI1MzczNGE2YTQyMTZmLi42NzljYzBjNmVhM2E1ODAwYmMyNjc4ZTRj
ZjBmZGFmMzU5NDY3NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYt
MDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDb25zb2xp
ZGF0ZSBSdW50aW1lQXBwbGljYXRpb25DaGVja3MgYW5kIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
c0lPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHJ1bnRpbWUgYXBwbGljYXRpb24gY2hlY2tzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorCiAyMDE2LTAyLTE3ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzFdIE5TVGltZXIgaW4gV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbSBmaXJlcyBvbiB0aGUgbWFpbiB0aHJlYWQgd2l0aG91dCB0
aGUgV2ViVGhyZWFkTG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY4MTQzNTMzNWEyZWJmMjE1ZTAw
YjQ3NmEwYTdmZTNhZTM2NTQxMzUuLmQ1NjQ0MTc1OTY0MDRkODgzZjljNTUyN2UyMjY2OGZjMjg0
NzI3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNi0wMy0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIENvbnNvbGlkYXRlIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcyBhbmQgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgcnVudGlt
ZSBhcHBsaWNhdGlvbiBjaGVja3MuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRy
b2xsZXIubW06CisgICAgICAgIChpbml0aWFsaXplQXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lLm1tOgorICAgICAgICAobmVlZHNNaWNyb3NvZnRNZXNzZW5nZXJET01Eb2N1bWVu
dFdvcmthcm91bmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfdXBkYXRl
SW1tZWRpYXRlQWN0aW9uSXRlbV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKFdlYktpdEluaXRpYWxpemVBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVjZXNzYXJ5KToK
KyAgICAgICAgKHNob3VsZEVuYWJsZUxvYWREZWZlcnJpbmcpOgorICAgICAgICAoc2hvdWxkUmVz
dHJpY3RXaW5kb3dGb2N1cyk6CisgICAgICAgIChuZWVkc091dGxvb2tRdWlya3NTY3JpcHQpOgor
ICAgICAgICAoc2hvdWxkVHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93KToKKyAgICAgICAgKHNob3Vs
ZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVudHMpOgorICAgICAgICAoc2hvdWxk
VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcik6CisgICAgICAgICgtW1dl
YlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6Cisg
ICAgICAgICgrW1dlYlZpZXcgZW5hYmxlV2ViVGhyZWFkXSk6CisgICAgICAgICgrW1dlYlZpZXcg
cmVnaXN0ZXJGb3JNZW1vcnlOb3RpZmljYXRpb25zXSk6CisgICAgICAgICgtW1dlYlZpZXcgX25l
ZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzXSk6CisgICAgICAgIChuZWVkc1Nl
bGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyayk6CisgICAgICAgICgtW1dlYlZpZXcgX25lZWRzUHJl
SFRNTDVQYXJzZXJRdWlya3NdKToKKwogMjAxNi0wMy0wNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0
aXN0aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDJmNjI5MjY4ZTU0ZGQ2NjJjMDFlYTY3NmJiNGY0ZTBkMGVi
NjMzYy4uMTcwM2ZjYTRhOGQ0NTAzNGJhYjg1MGVmNTM5NTQ3YTFiYWM2YjJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ29uc29saWRhdGUgUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzIGFu
ZCBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBydW50aW1lIGFwcGxpY2F0aW9uIGNoZWNrcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3Mu
bW06CisgICAgICAgIChXZWJLaXQ6OmxpbmtlZE9uT3JBZnRlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpleHBlY3RzTGVnYWN5SW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5h
YmxlZCk6CisKIDIwMTYtMDMtMDMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplIHRoZSBsb25nIHByZXNzIGFj
dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGVlNTJhYTEzNTc5MjQxZGRiMDQyZmJmZTE4
N2UzYjg0ZjQ4Y2U2ZC4uODg2ZWM3ZWNiMGRhMDBjYTc5MmUwOTYwYzk3MDVkMDRhMjk4OGM1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxMTYsNyArMjExNiw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAogICAgIHBs
YXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAgICBwbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuY3BwCi0gICAgcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAog
ICAgIHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAogICAgIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2I3NGY1NjlmNzgwNTdk
MjNkY2RkNGRiOTU0YjVjMTNiOTI5ZTE1OC4uZDk0MWMzY2IzYjk0ZjViZjVkY2Y2ZjEwOGE5YzY3
YTYzODVjN2FjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA5MSw3ICsxMDkxLDYgQEAKIAkJMjkzNDk0MEExNkMwMkMwNzAw
OTAxMzE4IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjUyN0NDOTMxNkJGOTJFQzAwOUREQUMw
IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwICovOyB9OwogCQkyOTM0OTQwQjE2
QzAyQzBBMDA5MDEzMTggLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjUyN0NDOTUxNkJG
OTVERDAwOUREQUMwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCAqLzsg
fTsKIAkJMjkzRUFFMUYxMzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkzRUFF
MUUxMzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTI5M0VBRTIxMTM1NkIz
MkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkzRUFFMjAxMzU2QjMyRTAwNjdBQ0Y5
IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgKi87IH07CiAJCTI5NDg5RkM3MTJDMDBG
MDMwMEQ4M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8q
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi87IH07CiAJCTI5NDk4NjgzMTk1MzQxOTQwMDcy
RDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBU
ZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAqLzsgfTsKIAkJMjk3QkUzRDUxNkMwM0MwODAw
MzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNTI3Q0M5MTE2QkY4QkExMDA5RERB
QzAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCAqLzsgfTsKQEAgLTE3MDMs
OCArMTcwMiw2IEBACiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEy
REZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAv
KiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTky
M0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9
OwotCQk0NEMzNjNGMDBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEMz
NjNFRTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDRDMzYzRjEw
RkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzM2M0VGMEZBQTdCQjMw
MDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0gKi87IH07CiAJCTQ0Qzk5
MTgyMEYzRDFFMEQwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTgxMEYzRDFFMEQwMDU4NjY3
MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5tbSAqLzsgfTsKIAkJNDRDOTkxODYwRjNEMUVCRTAwNTg2
NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhl
bWVJT1MuaCAqLzsgfTsKIAkJNDRDOTkxOUYwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE5RDBG
M0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLzsgfTsKQEAgLTE3MzEsNiArMTcyOCw3IEBA
CiAJCTQ2MzQ1OTJDMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzQ1OTJCMUFDMjI3
MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLzsgfTsKIAkJNDYzRUI2MjIxQjg3
ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRUI2MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0Nv
bGxlY3Rpb24uY3BwICovOyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJNDY1
QThFNzkxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUE4RTc4MUM4QTI0
Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0gKi87IH07CiAJCTQ2NjlC
Mjg3MUI4NTJBMEIwMDBGOTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUx
Qjg1Mjk3RjAwNUMyNTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87
IH07CiAJCTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9h
ZENvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1Vu
bG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgw
IC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyB9
OwpAQCAtODUzNSw3ICs4NTMzLDYgQEAKIAkJMjkxN0I1NjAxNDczNDk2QzAwNTJDOUQwIC8qIExh
eWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOTE3QjU2NTE0NzM0OTk1MDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXllckZsdXNoU2NoZWR1
bGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkzRUFFMUUxMzU2QjJG
RTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMjkzRUFFMjAxMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
dW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0OTg2ODExOTUzNDE5NDAwNzJEMkJE
IC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTIxMSw4ICs5MjA4LDYgQEAKIAkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8q
IFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRo
TUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NEMzNjNFRTBGQUE3QkIzMDA5N0Y4Q0Mg
LyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0NEMzNjNFRjBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEM5OTE4MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODUwRjNEMUVCRTAwNTg2Njcw
IC8qIFNjcm9sbGJhclRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbGJhclRoZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5
MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI0
MSw2ICs5MjM2LDcgQEAKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNl
cnZlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2M0VCNjIwMUI4Nzg5
Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
dW50aW1lQXBwbGljYXRpb25DaGVja3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50
SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3Bl
bnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRD
dXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTE1LDEwICsyMjkxMSw4
IEBACiAJCQkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8s
CiAJCQkJQ0RGQzM2MDMxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5j
cHAgKi8sCiAJCQkJQ0RGQzM2MDQxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lci5oICovLAotCQkJCTI5M0VBRTIwMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuY3BwICovLAorCQkJCTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50
aW1lQXBwbGljYXRpb25DaGVja3MubW0gKi8sCiAJCQkJMjkzRUFFMUUxMzU2QjJGRTAwNjdBQ0Y5
IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oICovLAotCQkJCTQ0QzM2M0VFMEZBQTdCQjMw
MDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCAqLywKLQkJCQk0NEMzNjNF
RjBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovLAog
CQkJCTUxNjJDN0YyMTFGNzdFRkEwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgKi8sCiAJ
CQkJNTE2MkM3RjMxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggKi8sCiAJCQkJ
NTE0MTI5OEYxQzYwMUE4OTAwNTlFNzE0IC8qIFNjb3BlR3VhcmQuaCAqLywKQEAgLTI3NzEwLDcg
KzI3NzA0LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50
aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNGOSAv
KiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0QzM2M0Yw
MEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCThDNkVBNjFBMTFFRjdFMDQwMEZEOEVFMyAvKiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyog
U2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDQjBFRjg2RDQ3MDA5RDBDQUYg
LyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzEzMjQsOCAr
MzEzMTcsNiBAQAogCQkJCTFBNTY5RDIwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhv
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyogcnVu
dGltZV9vYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjQwRDdFMkI4MjAwN0Mz
OTgzIC8qIHJ1bnRpbWVfcm9vdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyOTNFQUUyMTEzNTZC
MzJFMDA2N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTQ0QzM2M0YxMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk4QzZFQTYxOTExRUY3RTA0MDBGRDhFRTMgLyog
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREQ3MDg5NjE4
MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkx
MUNBMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMxNDM1LDYgKzMxNDI2LDcgQEAKIAkJCQlDNUExRUE3QzE1MkJDRjA0MDA0
RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3
MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0NjVBOEU3OTFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMjdENjExMUEzM0EyQjAwNEY5
RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDQzBFRjg2
RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTUwRjlGMjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRl
eCBhNmY4MzZlNzJhMDYzYzk5NGU0NmNiMjA3MDZmMGUyNjAwODFmZDM4Li44ODQ3NDViZTIyNTZl
Nzc0ZGJmYjc3MDU2MzM2ODBmZDM0MzljNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQpAQCAtNDgsNyArNDgsNyBAQAogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9y
dCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlclZpZXcuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrc0lPUy5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
CiAjaW1wb3J0ICJTVkdOYW1lcy5oIgogI2ltcG9ydCAiU1ZHRWxlbWVudC5oIgogI2ltcG9ydCAi
VGV4dEl0ZXJhdG9yLmgiCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRT
dHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykK
ICAgICAvLyBUaGUgcGFyZW50VmlldyBzaG91bGQgaGF2ZSBhbiBhY2Nlc3NpYmlsaXR5Q29udGFp
bmVyLCBpZiB0aGUgVUlLaXQgYWNjZXNzaWJpbGl0eSBidW5kbGUgd2FzIGxvYWRlZC4gCiAgICAg
Ly8gVGhlIGV4Y2VwdGlvbiBpcyBEUlQsIHdoaWNoIHRlc3RzIGFjY2Vzc2liaWxpdHkgd2l0aG91
dCB0aGUgZW50aXJlIHN5c3RlbSB0dXJuaW5nIGFjY2Vzc2liaWxpdHkgb24uIEhlbmNlLAogICAg
IC8vIHRoaXMgY2hlY2sgc2hvdWxkIGJlIHZhbGlkIGZvciBldmVyeXRoaW5nIGV4Y2VwdCBEUlQu
Ci0gICAgQVNTRVJUKFtwYXJlbnRWaWV3IGFjY2Vzc2liaWxpdHlDb250YWluZXJdIHx8IGFwcGxp
Y2F0aW9uSXNEdW1wUmVuZGVyVHJlZSgpKTsKKyAgICBBU1NFUlQoW3BhcmVudFZpZXcgYWNjZXNz
aWJpbGl0eUNvbnRhaW5lcl0gfHwgSU9TQXBwbGljYXRpb246OmlzRHVtcFJlbmRlclRyZWUoKSk7
CiAgICAgCiAgICAgcmV0dXJuIFtwYXJlbnRWaWV3IGFjY2Vzc2liaWxpdHlDb250YWluZXJdOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5k
ZXggMTlmY2EyNTA1OWI1NjY5ODFkOGQyOGQ0N2Q1OTM2N2Q2NGRiZGQ3Mi4uMDE0OTZlZTZhNDdj
OWVhZGQ2MjQ0OTI5M2JiMGVjMGVlNWM5MjE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgVk0mIEpTRE9N
V2luZG93QmFzZTo6Y29tbW9uVk0oKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAg
ICAgIGlmIChhcHBsaWNhdGlvbklzSVR1bmVzKCkgfHwgYXBwbGljYXRpb25Jc0lCb29rcygpIHx8
IFNldHRpbmdzOjpzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcigpKQorICAgICAgICBpZiAoTWFjQXBw
bGljYXRpb246OmlzSVR1bmVzKCkgfHwgTWFjQXBwbGljYXRpb246OmlzSUJvb2tzKCkgfHwgU2V0
dGluZ3M6OnNob3VsZFJld3JpdGVDb25zdEFzVmFyKCkpCiAgICAgICAgICAgICB2bS0+c2V0U2hv
dWxkUmV3cml0ZUNvbnN0QXNWYXIodHJ1ZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBiMzNhZDRmNWIxMWRmMzk5
N2Q0NTMwZWVjNzIxNTZiZmM1MDEzMjgwLi41NzBmOWNmYjg1ZTg5YzhiNWE5NjZlNDk5YjEwOGQ0
MTc1M2NjY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcApAQCAtODcsNyArODcsNyBAQCBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBIaXBDaGF0IHRyaWVzIHRvIHNldCBMb2Nh
dGlvbi5yZWxvYWQgd2hpY2ggY2F1c2VzIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24gaW4gc3Ry
aWN0IG1vZGUgKHNlZSA8cmRhcjovL3Byb2JsZW0vMjQ5MzE5NTk+KS4KLSAgICBpZiAoYXBwbGlj
YXRpb25Jc0hpcENoYXQoKSkKKyAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzSGlwQ2hhdCgpKQog
ICAgICAgICBzbG90LnNldFN0cmljdE1vZGUoZmFsc2UpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ1NThjN2E5OGVjZWYyNzkxMzUxN2Y3
ZGNiMzNjMmQzNjcyNjI1ZWIuLmQ4ZTZmMGE3ZTVhYmQ3NmQ5YzAzNzlmYTQ5NTQwZTAxYzk5YTky
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTEzLDcg
KzExMyw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYjE2
OTI4ZjY2ZDBmOWM1ZGNiYmYwMWZjMzcwNzkxMmI2NmFiNWIyOC4uNzk0YjEyMzUxNWQ0ODhiMGEy
MzAwOGM5MGRmMmUyZmViMGQxZTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNs
dWRlICJEeW5hbWljTGlua2VyU1BJLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIG1h
cERhdGFQYXJhbVRvU3JjKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgc2hvdWxkTm90UGVyZm9y
bVVSTEFkanVzdG1lbnQoKQogewotICAgIHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1VUkxB
ZGp1c3RtZW50ID0gYXBwbGljYXRpb25Jc05BU0FIRCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2Rr
X3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05fNV8wOworICAgIHN0YXRpYyBib29sIHNob3Vs
ZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50ID0gSU9TQXBwbGljYXRpb246OmlzTkFTQUhEKCkgJiYg
ZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigpIDwgRFlMRF9JT1NfVkVSU0lPTl81XzA7CiAg
ICAgcmV0dXJuIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50OwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBhNDcwNGQyOWY2
Yjc0Mjg2MWZhMmZkNGYwNDE1NDJlYWMzOTZmMDNlLi43NmNiOGQyMDc5YjhjMThmYWFkY2E3N2Q4
Nzk1ZGY5ZDU2NDZkZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRl
ICJBdWRpb1Nlc3Npb24uaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1Mu
aCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggZjU3OTU2OTcxMTBmNjcwMGIxYmIxZTI0OTRiYzRi
OWI0ZmJhZjE5YS4uYTczZmRhY2RmMDNiYmM4Njc0Y2M2MjY0MjY0M2NlM2FkMzZiNWEzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIK
KyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkNvcmVUaHJlYWQuaD4KICNlbmRpZgogCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBDRlJ1
bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogICAgIC8vIHdlIHN0aWxsIGFsbG93IHRoaXMsIHNl
ZSA8cmRhcjovL3Byb2JsZW0vNzQwMzMyOD4uIFNpbmNlIHRoZSByYWNlIGNvbmRpdGlvbiBhbmQg
c3Vic2VxdWVudAogICAgIC8vIGNyYXNoIGFyZSBlc3BlY2lhbGx5IHRyb3VibGVzb21lIGZvciBp
Qm9va3MsIHdlIG5ldmVyIGFsbG93IHRoZSBvYnNlcnZlciB0byBiZSBhZGRlZCB0byB0aGUKICAg
ICAvLyBtYWluIHJ1biBsb29wIGluIGlCb29rcy4KLSAgICBpZiAoYXBwbGljYXRpb25Jc0lCb29r
c09uSU9TKCkpCisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpKQogICAgICAgICBy
ZXR1cm4gV2ViVGhyZWFkUnVuTG9vcCgpOwogI2VuZGlmCiAgICAgcmV0dXJuIENGUnVuTG9vcEdl
dEN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDFlZWZi
MzNiYmRlMWMyZjVkMDNjMjkzNTZjMzE3ZDdiM2RmY2JhMDAuLmRhYTc1MzRiZTJhMjk0MTViOTFh
MjNmNGUwYzc2MjNiNDY4MWIxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVk
ZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIK
LSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTeXN0ZW1NZW1vcnkuaCIKICNpbmNs
dWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2VuZGlmCkBAIC0xNDc1LDcgKzE0NzUsNyBA
QCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChVUkwmIHVybCkKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgLy8gTW9iaWxlU3RvcmUgZGVwZW5kcyBvbiB0aGUgaU9TIDQu
MCBlcmEgY2xpZW50IGRlbGVnYXRlIG1ldGhvZCBiZWNhdXNlIHdlYlZpZXc6cmVzb3VyY2U6d2ls
bFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2UKICAgICAvLyBkb2Vz
bid0IGxldCB0aGVtIHRlbGwgd2hlbiBhIGxvYWQgcmVxdWVzdCBpcyBjb21pbmcgZnJvbSBhIG1l
ZGlhIGVsZW1lbnQuIFNlZSA8cmRhcjovL3Byb2JsZW0vODI2NjkxNj4gZm9yIG1vcmUgZGV0YWls
cy4KLSAgICBpZiAoYXBwbGljYXRpb25Jc01vYmlsZVN0b3JlKCkpCisgICAgaWYgKElPU0FwcGxp
Y2F0aW9uOjppc01vYmlsZVN0b3JlKCkpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRM
b2FkTWVkaWFFbGVtZW50VVJMKHVybCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOWUzOGVjNzQwZDIzOWViM2MxNDY0YjlkNWU2
N2RjODhmZTAzYWJkOC4uYTc3YTE4MzQ2NjA4MmVlZTg0N2FiMDliYWFmMzVkYWRjZGU0NjhlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00OSw3
ICs0OSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgorI2luY2x1ZGUg
PFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNl
CiB7CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzdWJsb2FkZXIoYWRvcHRSZWYobmV3
IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCByZXNvdXJjZSwgb3B0aW9ucykpKTsKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgaWYgKCFhcHBsaWNhdGlvbklzV2ViUHJvY2VzcygpKSB7CisgICAgaWYg
KCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gT24gaU9TLCBk
byBub3QgaW52b2tlIHN5bmNocm9ub3VzIHJlc291cmNlIGxvYWQgZGVsZWdhdGVzIHdoaWxlIHJl
c291cmNlIGxvYWQgc2NoZWR1bGluZwogICAgICAgICAvLyBpcyBkaXNhYmxlZCB0byBhdm9pZCBy
ZS1lbnRlcmluZyBzdHlsZSBzZWxlY3Rpb24gZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQgKHNlZSA8
cmRhcjovL3Byb2JsZW0vOTEyMTcxOT4pLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZml4ZWQgZm9yIGFsbCBwb3J0cyBpbiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NjQ3Pi4KQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNv
dXJjZQogI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9h
ZGluZygpCiB7Ci0gICAgQVNTRVJUKCFhcHBsaWNhdGlvbklzV2ViUHJvY2VzcygpKTsKKyAgICBB
U1NFUlQoIUlPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MoKSk7CiAgICAgaWYgKCFpbml0KG1f
aU9TT3JpZ2luYWxSZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1faU9TT3Jp
Z2luYWxSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IGVkY2VjZjhjNTE3ZWM3MzVjNTlkZTBlYWMw
N2FkMDdjYWFkOWFmMGUuLjEzYWMzMDFhYmUzY2QzZWE1YzY3ZmIwMjBiM2E4NTY0OGNhOTg2MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC0x
MzEsMTQgKzEzMSwxNiBAQCBib29sIENhY2hlZFNjcmlwdDo6bWltZVR5cGVBbGxvd2VkQnlOb3Nu
aWZmKCkgY29uc3QKIAogYm9vbCBDYWNoZWRTY3JpcHQ6OnNob3VsZElnbm9yZUhUVFBTdGF0dXND
b2RlRXJyb3JzKCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gVGhpcyBpcyBh
IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMzkxNjI5MT4KICAgICAvLyBSRUdSRVNT
SU9OIChyMTE5NzU5KTogQWRvYmUgRmxhc2ggUGxheWVyICJzbWFsbGVyIiBpbnN0YWxsZXIgcmVs
aWVzIG9uIHRoZSBpbmNvcnJlY3QgZmlyaW5nCiAgICAgLy8gb2YgYSBsb2FkIGV2ZW50IGFuZCBu
ZWVkcyBhbiBhcHAtc3BlY2lmaWMgaGFjayBmb3IgY29tcGF0aWJpbGl0eS4KICAgICAvLyBUaGUg
aW5zdGFsbGVyIGluIHF1ZXN0aW9uIHRyaWVzIHRvIGxvYWQgLmpzIGZpbGUgdGhhdCBkb2Vzbid0
IGV4aXN0LCBjYXVzaW5nIHRoZSBzZXJ2ZXIgdG8KICAgICAvLyByZXR1cm4gYSA0MDQgcmVzcG9u
c2UuIE5vcm1hbGx5LCB0aGlzIHdvdWxkIHRyaWdnZXIgYW4gZXJyb3IgZXZlbnQgdG8gYmUgZGlz
cGF0Y2hlZCwgYnV0IHRoZQogICAgIC8vIGluc3RhbGxlciBleHBlY3RzIGEgbG9hZCBldmVudCBp
bnN0ZWFkIHNvIHdlIHdvcmsgYXJvdW5kIGl0IGhlcmUuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNT
b2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkpCisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjpp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKIAogICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6c2hvdWxkSWdub3JlSFRUUFN0YXR1
c0NvZGVFcnJvcnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
OGI0ZjY1MDQ4OTY1N2YxMTVlMWUyNmIwYzU3OTA5MmJiOGFlY2E2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKLQotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0jaWYgVVNFKENGKQotc3RhdGljIENGU3RyaW5nUmVmIG1haW5CdW5kbGVJZGVudGlmaWVy
KCkKLXsKLSAgICBDRkJ1bmRsZVJlZiBtYWluQnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxl
KCk7Ci0gICAgaWYgKCFtYWluQnVuZGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IHJldHVybiBDRkJ1bmRsZUdldElkZW50aWZpZXIobWFpbkJ1bmRsZSk7Ci19Ci0jZW5kaWYKLQot
Ly8gVGhlIGFwcGxpY2F0aW9uIGJ1bmRsZSBpZGVudGlmaWVyIGdldHMgc2V0IHRvIHRoZSBVSVBy
b2Nlc3MgYnVuZGxlIGlkZW50aWZpZXIgYnkgdGhlIFdlYlByb2Nlc3MgYW5kCi0vLyB0aGUgbmV0
d29ya2luZyBwcm9jZXNzIHVwb24gaW5pdGlhbGl6YXRpb24uCi0vLyBJZiBub3QgZXhwbGljaXRs
eSBzZXQsIHRoaXMgd2lsbCByZXR1cm4gdGhlIG1haW4gYnVuZGxlIGlkZW50aWZpZXIgd2hpY2gg
aXMgYWNjdXJhdGUgZm9yIFdLMSBvcgotLy8gdGhlIFdLMiBVSVByb2Nlc3MuCi1zdGF0aWMgU3Ry
aW5nJiBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKQotewotICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0KLSNpZiBVU0UoQ0YpCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gaWRlbnRpZmllcihtYWluQnVuZGxlSWRlbnRpZmllcigpKTsKLSNlbHNlCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcjsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGlkZW50aWZpZXI7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBy
ZW5hbWVkIHRvIGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCkgYW5kIHVzZSBhcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKQotLy8gaW5zdGVhZCBvZiBtYWluQnVuZGxlSWRlbnRpZmllcigp
IGludGVybmFsbHkuIFRoaXMgd291bGQgaGF2ZSB0aGUgYmVuZWZpdCBvZiB3b3JraW5nIGZvciBi
b3RoIFdlYktpdDEgYW5kCi0vLyBXZWJLaXQyLgotc3RhdGljIGJvb2wgbWFpbkJ1bmRsZUlzRXF1
YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCi17Ci0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBjb25zaWRlciBtZXJnaW5nIHRoaXMgZmlsZSB3aXRoIFJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrc0lPUy5tbS4KLSAgICAvLyBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRG
T1JNKElPUyktZ3VhcmQuCi0jaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIENGU3Ry
aW5nUmVmIGJ1bmRsZUlkZW50aWZpZXIgPSBtYWluQnVuZGxlSWRlbnRpZmllcigpOwotICAgIGlm
ICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IENGU3RyaW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyU3RyaW5n
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0cmluZyk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc1NhZmFyaSgpCi17Ci0gICAgc3Rh
dGljIGJvb2wgaXNTYWZhcmkgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuU2FmYXJp
Iik7Ci0gICAgcmV0dXJuIGlzU2FmYXJpOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNBcHBsZU1h
aWwoKQotewotICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWlsID0gbWFpbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmFwcGxlLm1haWwiKTsKLSAgICByZXR1cm4gaXNBcHBsZU1haWw7Ci19Ci0KLWJvb2wg
YXBwbGljYXRpb25Jc0lCb29rcygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNJQm9va3MgPSBtYWlu
QnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaUJvb2tzWCIpOwotICAgIHJldHVybiBpc0lCb29r
czsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzSVR1bmVzKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBp
c0lUdW5lcyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMiKTsKLSAgICBy
ZXR1cm4gaXNJVHVuZXM7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3Nlbmdl
cigpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNNaWNyb3NvZnRNZXNzZW5nZXIgPSBtYWluQnVuZGxl
SXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk1lc3NlbmdlciIpOwotICAgIHJldHVybiBpc01pY3Jv
c29mdE1lc3NlbmdlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKQot
ewotICAgIHN0YXRpYyBib29sIGlzQWRvYmVJbnN0YWxsZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRv
KCJjb20uYWRvYmUuSW5zdGFsbGVycy5TZXR1cCIpOwotICAgIHJldHVybiBpc0Fkb2JlSW5zdGFs
bGVyOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNBT0xJbnN0YW50TWVzc2VuZ2VyKCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRv
KCJjb20uYW9sLmFpbS5kZXNrdG9wIik7Ci0gICAgcmV0dXJuIGlzQU9MSW5zdGFudE1lc3Nlbmdl
cjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0TXlEYXkoKQotewotICAgIHN0YXRp
YyBib29sIGlzTWljcm9zb2Z0TXlEYXkgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9z
b2Z0Lm15ZGF5Iik7Ci0gICAgcmV0dXJuIGlzTWljcm9zb2Z0TXlEYXk7Ci19Ci0KLWJvb2wgYXBw
bGljYXRpb25Jc01pY3Jvc29mdE91dGxvb2soKQotewotICAgIHN0YXRpYyBib29sIGlzTWljcm9z
b2Z0T3V0bG9vayA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQuT3V0bG9vayIp
OwotICAgIHJldHVybiBpc01pY3Jvc29mdE91dGxvb2s7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25J
c1F1aWNrZW5Fc3NlbnRpYWxzKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc1F1aWNrZW5Fc3NlbnRp
YWxzID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmludHVpdC5RdWlja2VuRXNzZW50aWFscyIp
OwotICAgIHJldHVybiBpc1F1aWNrZW5Fc3NlbnRpYWxzOwotfQotCi1ib29sIGFwcGxpY2F0aW9u
SXNBcGVydHVyZSgpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNBcGVydHVyZSA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5BcGVydHVyZSIpOwotICAgIHJldHVybiBpc0FwZXJ0dXJlOwot
fQotCi1ib29sIGFwcGxpY2F0aW9uSXNWZXJzaW9ucygpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNW
ZXJzaW9ucyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5ibGFja3BpeGVsLnZlcnNpb25zIik7
Ci0gICAgcmV0dXJuIGlzVmVyc2lvbnM7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0hSQmxvY2so
KQotewotICAgIHN0YXRpYyBib29sIGlzSFJCbG9jayA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNv
bS5ocmJsb2NrLnRheC4yMDEwIik7Ci0gICAgcmV0dXJuIGlzSFJCbG9jazsKLX0KLQotYm9vbCBh
cHBsaWNhdGlvbklzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpCi17Ci0gICAgc3RhdGlj
IGJvb2wgaXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyID0gbWFpbkJ1bmRsZUlzRXF1YWxU
bygiY29tLnNvbGlkc3RhdGVuZXR3b3Jrcy5hd2tob3N0Iik7Ci0gICAgcmV0dXJuIGlzU29saWRT
dGF0ZU5ldHdvcmtzRG93bmxvYWRlcjsKLX0KLQotYm9vbCBhcHBsaWNhdGlvbklzSGlwQ2hhdCgp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaXNIaXBDaGF0ID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCkgPT0gImNvbS5oaXBjaGF0LkhpcENoYXQiOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
aXNIaXBDaGF0ID09IChhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSA9PSAiY29tLmhpcGNo
YXQuSGlwQ2hhdCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigpIik7Ci0gICAgcmV0dXJuIGlzSGlwQ2hhdDsKLX0KLQotdm9pZCBz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlm
aWVyKQotewotICAgIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpID0gYnVuZGxlSWRlbnRp
ZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAppbmRleCA1YzdmZWQwOWE1ZWVi
MWQ5MzE1YzkzMWViZTQwYjQ3MzIzZjM2Y2E2Li5kYjQyM2IyNzZmYmU3NjNkNzA2ODdkNTZhMmQx
NTI4MGMyYmI4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaApAQCAtMjYsMjggKzI2LDYwIEBACiAjaWZuZGVmIFJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc19oCiAjZGVmaW5lIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc19oCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0FPTEluc3Rh
bnRNZXNzZW5nZXIoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW5z
dGFsbGVyKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNBcGVydHVyZSgpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIGFwcGxpY2F0aW9uSXNJQm9va3MoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBw
bGljYXRpb25Jc0lUdW5lcygpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzTWlj
cm9zb2Z0TWVzc2VuZ2VyKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNaWNy
b3NvZnRNeURheSgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0
T3V0bG9vaygpOwotYm9vbCBhcHBsaWNhdGlvbklzUXVpY2tlbkVzc2VudGlhbHMoKTsKLVdFQkNP
UkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc1NhZmFyaSgpOwotYm9vbCBhcHBsaWNhdGlvbklz
U29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlcigpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBs
aWNhdGlvbklzVmVyc2lvbnMoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0hS
QmxvY2soKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0hpcENoYXQoKTsKLQog
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJik7CiAKKyNpZiBQTEFURk9STShNQUMpCisKK25hbWVzcGFjZSBNYWNBcHBsaWNhdGlv
biB7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNBT0xJbnN0YW50TWVzc2VuZ2VyKCk7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzQWRvYmVJbnN0YWxsZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
aXNBcGVydHVyZSgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FwcGxlTWFpbCgpOworV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc0lCb29rcygpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lUdW5lcygp
OworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01pY3Jvc29mdE1lc3NlbmdlcigpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc01pY3Jvc29mdE15RGF5KCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlzTWlj
cm9zb2Z0T3V0bG9vaygpOworYm9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzKCk7CitXRUJDT1JFX0VY
UE9SVCBib29sIGlzU2FmYXJpKCk7Citib29sIGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRl
cigpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZlcnNpb25zKCk7CitXRUJDT1JFX0VYUE9SVCBi
b29sIGlzSFJCbG9jaygpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0hpcENoYXQoKTsKKworfSAv
LyBNYWNBcHBsaWNhdGlvbgorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjaWYgUExBVEZP
Uk0oSU9TKQorCituYW1lc3BhY2UgSU9TQXBwbGljYXRpb24geworCitXRUJDT1JFX0VYUE9SVCBi
b29sIGlzTW9iaWxlTWFpbCgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01vYmlsZVNhZmFyaSgp
OworYm9vbCBpc0R1bXBSZW5kZXJUcmVlKCk7Citib29sIGlzTW9iaWxlU3RvcmUoKTsKK1dFQkNP
UkVfRVhQT1JUIGJvb2wgaXNXZWJBcHAoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNPa0N1cGlk
KCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGlzRmFjZWJvb2soKTsKK1dFQkNPUkVfRVhQT1JUIGJv
b2wgaXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKK2Jvb2wgaXNOQVNBSEQoKTsKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNUaGVFY29ub21pc3RPbklwaG9uZSgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1dlYlByb2Nlc3MoKTsKK2Jvb2wgaXNJQm9va3MoKTsKKworfSAvLyBJT1NBcHBsaWNhdGlvbgor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNl
bmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwogI2VuZGlmIC8vIFJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc2YmIyZTRlMjQ5OGY4ZDFlZjAwNjY3MzRmOGI3NDk4
OWQzODQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5tbQpAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
LmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNCdW5kbGUuaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoZSBhcHBsaWNhdGlv
biBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNldCB0byB0aGUgVUlQcm9jZXNzIGJ1bmRsZSBpZGVu
dGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFuZAorLy8gdGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB1
cG9uIGluaXRpYWxpemF0aW9uLgorLy8gSWYgbm90IGV4cGxpY2l0bHkgc2V0LCB0aGlzIHdpbGwg
cmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVudGlmaWVyIHdoaWNoIGlzIGFjY3VyYXRlIGZvciBX
SzEgb3IKKy8vIHRoZSBXSzIgVUlQcm9jZXNzLgorc3RhdGljIFN0cmluZyYgYXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcihbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKworICAgIHJldHVybiBpZGVudGlmaWVyOwor
fQorCit2b2lkIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1
bmRsZUlkZW50aWZpZXIpCit7CisgICAgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPSBi
dW5kbGVJZGVudGlmaWVyOworfQorCitzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCit7CisgICAgcmV0dXJu
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpID09IGJ1bmRsZUlkZW50aWZpZXJTdHJpbmc7
Cit9CisKKyNpZiBQTEFURk9STShNQUMpCisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzU2FmYXJp
KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1NhZmFyaSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uYXBwbGUuU2FmYXJpIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1NhZmFy
aSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLlNhZmFyaSIpLCAiU2hv
dWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigp
Iik7CisgICAgcmV0dXJuIGlzU2FmYXJpOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0Fw
cGxlTWFpbCgpCit7CisgICAgc3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1haWwiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGlzQXBwbGVNYWlsID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubWFp
bCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzQXBwbGVNYWlsOworfQorCitib29sIE1hY0FwcGxp
Y2F0aW9uOjppc0lCb29rcygpCit7CisgICAgc3RhdGljIGJvb2wgaXNJQm9va3MgPSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rc1giKTsKKyAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGlzSUJvb2tzID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBw
bGUuaUJvb2tzWCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzSUJvb2tzOworfQorCitib29sIE1h
Y0FwcGxpY2F0aW9uOjppc0lUdW5lcygpCit7CisgICAgc3RhdGljIGJvb2wgaXNJVHVuZXMgPSBh
cHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlUdW5lcyIpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaXNJVHVuZXMgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5hcHBsZS5pVHVuZXMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0lUdW5lczsKK30KKworYm9v
bCBNYWNBcHBsaWNhdGlvbjo6aXNNaWNyb3NvZnRNZXNzZW5nZXIoKQoreworICAgIHN0YXRpYyBi
b29sIGlzTWljcm9zb2Z0TWVzc2VuZ2VyID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5taWNyb3NvZnQuTWVzc2VuZ2VyIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc01pY3Jv
c29mdE1lc3NlbmdlciA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29m
dC5NZXNzZW5nZXIiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc01pY3Jvc29mdE1lc3NlbmdlcjsK
K30KKworYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNBZG9iZUluc3RhbGxlcigpCit7CisgICAgc3Rh
dGljIGJvb2wgaXNBZG9iZUluc3RhbGxlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJj
b20uYWRvYmUuSW5zdGFsbGVycy5TZXR1cCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNB
ZG9iZUluc3RhbGxlciA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFkb2JlLklu
c3RhbGxlcnMuU2V0dXAiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0Fkb2JlSW5zdGFsbGVyOwor
fQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIoKQoreworICAg
IHN0YXRpYyBib29sIGlzQU9MSW5zdGFudE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uYW9sLmFpbS5kZXNrdG9wIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c0FPTEluc3RhbnRNZXNzZW5nZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5h
b2wuYWltLmRlc2t0b3AiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0FPTEluc3RhbnRNZXNzZW5n
ZXI7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TXlEYXkoKQoreworICAg
IHN0YXRpYyBib29sIGlzTWljcm9zb2Z0TXlEYXkgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLm1pY3Jvc29mdC5teWRheSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNaWNy
b3NvZnRNeURheSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5t
eWRheSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzTWljcm9zb2Z0TXlEYXk7Cit9CisKK2Jvb2wg
TWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0T3V0bG9vaygpCit7CisgICAgc3RhdGljIGJvb2wg
aXNNaWNyb3NvZnRPdXRsb29rID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNy
b3NvZnQuT3V0bG9vayIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNaWNyb3NvZnRPdXRs
b29rID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91dGxvb2si
KSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKSIpOworICAgIHJldHVybiBpc01pY3Jvc29mdE91dGxvb2s7Cit9CisKK2Jvb2wgTWFj
QXBwbGljYXRpb246OmlzUXVpY2tlbkVzc2VudGlhbHMoKQoreworICAgIHN0YXRpYyBib29sIGlz
UXVpY2tlbkVzc2VudGlhbHMgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmludHVp
dC5RdWlja2VuRXNzZW50aWFscyIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNRdWlja2Vu
RXNzZW50aWFscyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmludHVpdC5RdWlj
a2VuRXNzZW50aWFscyIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzUXVpY2tlbkVzc2VudGlhbHM7
Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzQXBlcnR1cmUoKQoreworICAgIHN0YXRpYyBi
b29sIGlzQXBlcnR1cmUgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFw
ZXJ0dXJlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0FwZXJ0dXJlID09IGFwcGxpY2F0
aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuQXBlcnR1cmUiKSwgIlNob3VsZCBub3QgYmUg
Y2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJl
dHVybiBpc0FwZXJ0dXJlOworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNpb25zKCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBpc1ZlcnNpb25zID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5ibGFja3BpeGVsLnZlcnNpb25zIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c1ZlcnNpb25zID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52
ZXJzaW9ucyIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzVmVyc2lvbnM7Cit9CisKK2Jvb2wgTWFj
QXBwbGljYXRpb246OmlzSFJCbG9jaygpCit7CisgICAgc3RhdGljIGJvb2wgaXNIUkJsb2NrID0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5ocmJsb2NrLnRheC4yMDEwIik7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShpc0hSQmxvY2sgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5ocmJsb2NrLnRheC4yMDEwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICByZXR1cm4gaXNIUkJsb2Nr
OworfQorCitib29sIE1hY0FwcGxpY2F0aW9uOjppc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2Fk
ZXIoKQoreworICAgIHN0YXRpYyBib29sIGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxvYWRlciA9
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uc29saWRzdGF0ZW5ldHdvcmtzLmF3a2hv
c3QiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzU29saWRTdGF0ZU5ldHdvcmtzRG93bmxv
YWRlciA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLnNvbGlkc3RhdGVuZXR3b3Jr
cy5hd2tob3N0IiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCkiKTsKKworICAgIHJldHVybiBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rv
d25sb2FkZXI7Cit9CisKK2Jvb2wgTWFjQXBwbGljYXRpb246OmlzSGlwQ2hhdCgpCit7CisgICAg
c3RhdGljIGJvb2wgaXNIaXBDaGF0ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5o
aXBjaGF0LkhpcENoYXQiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSGlwQ2hhdCA9PSBh
cHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmhpcGNoYXQuSGlwQ2hhdCIpLCAiU2hvdWxk
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7
CisgICAgcmV0dXJuIGlzSGlwQ2hhdDsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwor
I2lmIFBMQVRGT1JNKElPUykKKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBpc01vYmlsZU1haWwgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbygiY29tLmFwcGxlLm1vYmlsZW1haWwiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlz
TW9iaWxlTWFpbCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1vYmls
ZW1haWwiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc01vYmlsZU1haWw7Cit9CisKK2Jvb2wgSU9T
QXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc01vYmls
ZVNhZmFyaSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubW9iaWxlc2Fm
YXJpIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc01vYmlsZVNhZmFyaSA9PSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLm1vYmlsZXNhZmFyaSIpLCAiU2hvdWxkIG5v
dCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7Cisg
ICAgcmV0dXJuIGlzTW9iaWxlU2FmYXJpOworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc0R1
bXBSZW5kZXJUcmVlKCkKK3sKKyAgICAvLyBXZSB1c2UgYSBwcmVmaXggbWF0Y2ggaW5zdGVhZCBv
ZiBzdHJpY3QgZXF1YWxpdHkgc2luY2UgTGF5b3V0VGVzdFJlbGF5IG1heSBsYXVuY2ggbXVsdGlw
bGUgaW5zdGFuY2VzIG9mCisgICAgLy8gRHVtcFJlbmRlclRyZWUgd2hlcmUgdGhlIGJ1bmRsZSBp
ZGVudGlmaWVyIG9mIGVhY2ggaW5zdGFuY2UgaGFzIGEgdW5pcXVlIHN1ZmZpeC4KKyAgICBzdGF0
aWMgYm9vbCBpc0R1bXBSZW5kZXJUcmVlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oIm9y
Zy53ZWJraXQuRHVtcFJlbmRlclRyZWUiKTsgLy8gZS5nLiBvcmcud2Via2l0LkR1bXBSZW5kZXJU
cmVlMAorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNEdW1wUmVuZGVyVHJlZSA9PSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSIpLCAiU2hvdWxk
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7
CisgICAgcmV0dXJuIGlzRHVtcFJlbmRlclRyZWU7Cit9CisKK2Jvb2wgSU9TQXBwbGljYXRpb246
OmlzTW9iaWxlU3RvcmUoKQoreworICAgIHN0YXRpYyBib29sIGlzTW9iaWxlU3RvcmUgPSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLk1vYmlsZVN0b3JlIik7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc01vYmlsZVN0b3JlID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uYXBwbGUuTW9iaWxlU3RvcmUiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc01vYmls
ZVN0b3JlOworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpCit7CisgICAgc3Rh
dGljIGJvb2wgaXNXZWJBcHAgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxl
LndlYmFwcCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNXZWJBcHAgPT0gYXBwbGljYXRp
b25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS53ZWJhcHAiKSwgIlNob3VsZCBub3QgYmUgY2Fs
bGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVy
biBpc1dlYkFwcDsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNPa0N1cGlkKCkKK3sKKyAg
ICBzdGF0aWMgYm9vbCBpc09rQ3VwaWQgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
Lm9rY3VwaWQuYXBwIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc09rQ3VwaWQgPT0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5va2N1cGlkLmFwcCIpLCAiU2hvdWxkIG5vdCBi
ZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAg
cmV0dXJuIGlzT2tDdXBpZDsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9vaygp
Cit7CisgICAgc3RhdGljIGJvb2wgaXNGYWNlYm9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uZmFjZWJvb2suRmFjZWJvb2siKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlz
RmFjZWJvb2sgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5mYWNlYm9vay5GYWNl
Ym9vayIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzRmFjZWJvb2s7Cit9CisKK2Jvb2wgSU9TQXBw
bGljYXRpb246OmlzRGFpamlzZW5EaWN0aW9uYXJ5KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0Rh
aWppc2VuRGljdGlvbmFyeSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJqcC5jby5zaG9n
YWt1a2FuLmRhaWppc2VuMjAwOWkiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzRGFpamlz
ZW5EaWN0aW9uYXJ5ID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJqcC5jby5zaG9nYWt1
a2FuLmRhaWppc2VuMjAwOWkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOworICAgIHJldHVybiBpc0RhaWppc2VuRGljdGlv
bmFyeTsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNOQVNBSEQoKQoreworICAgIHN0YXRp
YyBib29sIGlzTkFTQUhEID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImdvdi5uYXNhLk5B
U0FIRCIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNOQVNBSEQgPT0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImdvdi5uYXNhLk5BU0FIRCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQg
YmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlz
TkFTQUhEOworfQorCitib29sIElPU0FwcGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25l
KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1RoZUVjb25vbWlzdE9uSXBob25lID0gYXBwbGljYXRp
b25CdW5kbGVJc0VxdWFsVG8oImNvbS5lY29ub21pc3QuaXBob25lIik7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpc1RoZUVjb25vbWlzdE9uSXBob25lID09IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uZWNvbm9taXN0LmlwaG9uZSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVm
b3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzVGhl
RWNvbm9taXN0T25JcGhvbmU7Cit9CisKKy8vIEZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIGNoYW5n
ZWQgd2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBjaGFuZ2VkIHRvIGFuIFhQQyBzZXJ2aWNlLgorYm9v
bCBJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc1dl
YlByb2Nlc3MgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0Vx
dWFsVG9TdHJpbmc6QCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQiXQor
ICAgICAgICB8fCBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0Vx
dWFsVG9TdHJpbmc6QCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiXQorICAgICAgICB8fCBb
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6
QCJjb20uYXBwbGUuV2ViUHJvY2VzcyJdOworICAgIHJldHVybiBpc1dlYlByb2Nlc3M7Cit9CisK
K2Jvb2wgSU9TQXBwbGljYXRpb246OmlzSUJvb2tzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0lC
b29rcyA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaUJvb2tzIik7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbygiY29tLmFwcGxlLmlCb29rcyIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CisgICAgcmV0dXJuIGlzSUJvb2tzOwor
fQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkNzE3OGFhMTI0ZGM0MzJiZjdiYmFjZTI1ZjI3ODc3ZGEw
YTEyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3NJT1NfaAotI2RlZmluZSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1NfaAotCi0v
LyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1lcmdpbmcgdGhpcyBmaWxlIHdpdGggUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmguCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgYXBwbGljYXRpb25Jc01vYmlsZU1haWwoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wg
YXBwbGljYXRpb25Jc01vYmlsZVNhZmFyaSgpOwotYm9vbCBhcHBsaWNhdGlvbklzRHVtcFJlbmRl
clRyZWUoKTsKLWJvb2wgYXBwbGljYXRpb25Jc01vYmlsZVN0b3JlKCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIGFwcGxpY2F0aW9uSXNXZWJBcHAoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGlj
YXRpb25Jc09rQ3VwaWQoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0ZhY2Vi
b29rKCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25h
cnkoKTsKLWJvb2wgYXBwbGljYXRpb25Jc05BU0FIRCgpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBh
cHBsaWNhdGlvbklzVGhlRWNvbm9taXN0T25JUGhvbmUoKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wg
YXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKTsKLWJvb2wgYXBwbGljYXRpb25Jc0lCb29rc09uSU9T
KCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYxYTczNzZmMGYyZDU1ZTM4YmMzMTIxMjRiMzM2MjdhN2M2NTNlMDcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTExICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MuaCIKLQotLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtZXJnaW5n
IHRoaXMgZmlsZSB3aXRoIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAuCi0jaWYgUExBVEZP
Uk0oSU9TKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgYXBwbGljYXRpb25Jc01vYmls
ZU1haWwoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzTW9iaWxlTWFpbCA9IFtbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5h
cHBsZS5tb2JpbGVtYWlsIl07Ci0gICAgcmV0dXJuIGlzTW9iaWxlTWFpbDsKLX0KLQotYm9vbCBh
cHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc01v
YmlsZVNhZmFyaSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlz
RXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiXTsKLSAgICByZXR1cm4gaXNN
b2JpbGVTYWZhcmk7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc0R1bXBSZW5kZXJUcmVlKCkKLXsK
LSAgICAvLyBXZSB1c2UgYSBwcmVmaXggbWF0Y2ggaW5zdGVhZCBvZiBzdHJpY3QgZXF1YWxpdHkg
c2luY2UgTGF5b3V0VGVzdFJlbGF5IG1heSBsYXVuY2ggbXVsdGlwbGUgaW5zdGFuY2VzIG9mCi0g
ICAgLy8gRHVtcFJlbmRlclRyZWUgd2hlcmUgdGhlIGJ1bmRsZSBpZGVudGlmaWVyIG9mIGVhY2gg
aW5zdGFuY2UgaGFzIGEgdW5pcXVlIHN1ZmZpeC4KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0R1
bXBSZW5kZXJUcmVlID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0g
aGFzUHJlZml4OkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSJdOyAvLyBlLmcuIG9yZy53ZWJr
aXQuRHVtcFJlbmRlclRyZWUwCi0gICAgcmV0dXJuIGlzRHVtcFJlbmRlclRyZWU7Ci19Ci0KLWJv
b2wgYXBwbGljYXRpb25Jc01vYmlsZVN0b3JlKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c01vYmlsZVN0b3JlID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0g
aXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLk1vYmlsZVN0b3JlIl07Ci0gICAgcmV0dXJuIGlz
TW9iaWxlU3RvcmU7Ci19Ci0KLWJvb2wgYXBwbGljYXRpb25Jc1dlYkFwcCgpCi17Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNXZWJBcHAgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20uYXBwbGUud2ViYXBwIl07Ci0gICAgcmV0
dXJuIGlzV2ViQXBwOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNPa0N1cGlkKCkKLXsKLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc09rQ3VwaWQgPSBbW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5k
bGVJZGVudGlmaWVyXSBpc0VxdWFsVG9TdHJpbmc6QCJjb20ub2tjdXBpZC5hcHAiXTsKLSAgICBy
ZXR1cm4gaXNPa0N1cGlkOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNGYWNlYm9vaygpCi17Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGYWNlYm9vayA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5mYWNlYm9vay5GYWNlYm9v
ayJdOwotICAgIHJldHVybiBpc0ZhY2Vib29rOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNEYWlq
aXNlbkRpY3Rpb25hcnkoKQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzRGFpamlzZW5EaWN0
aW9uYXJ5ID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVh
bFRvU3RyaW5nOkAianAuY28uc2hvZ2FrdWthbi5kYWlqaXNlbjIwMDlpIl07Ci0gICAgcmV0dXJu
IGlzRGFpamlzZW5EaWN0aW9uYXJ5OwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNOQVNBSEQoKQot
ewotICAgIHN0YXRpYyBjb25zdCBib29sIGlzTkFTQUhEID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiZ292Lm5hc2EuTkFTQUhEIl07
Ci0gICAgcmV0dXJuIGlzTkFTQUhEOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNUaGVFY29ub21p
c3RPbklQaG9uZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNUaGVFY29ub21pc3RPbklQ
aG9uZSA9IFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxU
b1N0cmluZzpAImNvbS5lY29ub21pc3QuaXBob25lIl07Ci0gICAgcmV0dXJuIGlzVGhlRWNvbm9t
aXN0T25JUGhvbmU7Ci19Ci0KLS8vIEZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgd2hl
biB0aGUgV2ViUHJvY2VzcyBpcyBjaGFuZ2VkIHRvIGFuIFhQQyBzZXJ2aWNlLgotYm9vbCBhcHBs
aWNhdGlvbklzV2ViUHJvY2VzcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNXZWJQcm9j
ZXNzID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRv
U3RyaW5nOkAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50Il0gfHwgW1tb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAi
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50Il0gfHwgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
YnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLldlYlByb2Nlc3Mi
XTsKLSAgICByZXR1cm4gaXNXZWJQcm9jZXNzOwotfQotCi1ib29sIGFwcGxpY2F0aW9uSXNJQm9v
a3NPbklPUygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJQm9va3NPbklPUyA9IFtbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIGlzRXF1YWxUb1N0cmluZzpAImNv
bS5hcHBsZS5pQm9va3MiXTsKLSAgICByZXR1cm4gaXNJQm9va3NPbklPUzsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwCmluZGV4IGFkZGI1MjRmMDE3YTE3ZWE5MTIxMTIzNTk5MzIyMGQ4YzliMTQxOWMuLjI3YTQ1
ZmM2OTdlZjU0ZGI1NzNkN2JkNjNiNTQ3ZjhjNjRlNzlhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU29mdExpbmtp
bmcuaCIKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9TZXJ2aWNlcy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9V
UkxDRi5jcHAKaW5kZXggYTFmYWVhNWVjZTdiOTMwNWQ2ZmI1Mjc5ODc2NzU3YzlhNjllN2Y3My4u
MDRkZWY4NGFhYjU4ZWM3NzFlMDljZjNmMGExOTRlYzkwZjQ2N2NjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1VSTENGLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9MYXllckZsdXNoU2NoZWR1bGVyTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL0xheWVyRmx1c2hTY2hl
ZHVsZXJNYWMuY3BwCmluZGV4IDQ0NGI0YzYyOTc5ZDZhYTA4YjY5OGI0ZGZlYTJjOWI0YTc1ZTVl
MTguLjFiMjNiNmE5ZGMxNjQ4MjBlMTA2NmFkNzE1MGQ2ZTNlYTRjMmE5ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL0xheWVyRmx1c2hTY2hl
ZHVsZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVk
ZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKQEAgLTQ2LDcgKzQ2LDcgQEAg
c3RhdGljIENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCgpCiAgICAgLy8gd2Ugc3RpbGwgYWxs
b3cgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS83NDAzMzI4Pi4gU2luY2UgdGhlIHJhY2UgY29u
ZGl0aW9uIGFuZCBzdWJzZXF1ZW50CiAgICAgLy8gY3Jhc2ggYXJlIGVzcGVjaWFsbHkgdHJvdWJs
ZXNvbWUgZm9yIGlCb29rcywgd2UgbmV2ZXIgYWxsb3cgdGhlIG9ic2VydmVyIHRvIGJlIGFkZGVk
IHRvIHRoZQogICAgIC8vIG1haW4gcnVuIGxvb3AgaW4gaUJvb2tzLgotICAgIGlmIChhcHBsaWNh
dGlvbklzSUJvb2tzT25JT1MoKSkKKyAgICBpZiAoSU9TQXBwbGljYXRpb246OmlzSUJvb2tzKCkp
CiAgICAgICAgIHJldHVybiBXZWJUaHJlYWRSdW5Mb29wKCk7CiAjZW5kaWYKICAgICByZXR1cm4g
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQppbmRleCA5MzJkMzUyMmRmMjg2MTVlNjg3MDA0ZWJmYzBlNTVmNzc2ODZi
YWVlLi44OWNiMGQ2ZmFlN2M2ODUzODIwMmM3NmVkZmI5M2E1NjYxN2M5YWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNDQsNyArNDQsNyBA
QAogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3NJT1MuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9y
dCAiVGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDJhNGQ1NmMwNDE0
MDI2YTdlZjY1MmViNTQ2YjIyYmYwODEwYmNmZDkuLjViYTFhNDg2NDFlODZjYjhhZjE3MDQxYmI4
Y2IyYTE4YzNhYjUxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTM1LDcg
KzM1LDcgQEAKICNpbXBvcnQgIkFWS2l0U1BJLmgiCiAjaW1wb3J0ICJHZW9tZXRyeVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQg
IlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggZTlhNjMyMzBkMjk4
YzlhNDFkNTE1OTVhNTVkZGYxODVlN2MyYTNhZC4uYjJlZDk0ZGFhNTFkNThhOTQ0ZDhlM2VmZGRi
MTUyOGJiOTJhMjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQpAQCAtMzAsOCArMzAsOCBAQAogCiAjaW1wb3J0ICJGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQuaCIKICNpbXBvcnQgIkpTRE9NV2luZG93QmFzZS5oIgorI2ltcG9ydCAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJUaHJlYWRHbG9iYWxEYXRhLmgi
Ci0jaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKICNpbXBvcnQgIldlYkNv
cmVUaHJlYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKICNp
bXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgV2Vi
VGhyZWFkU2V0RGVsZWdhdGVTb3VyY2VSdW5Mb29wTW9kZShDRlN0cmluZ1JlZiBtb2RlKQogCiB2
b2lkIFdlYlRocmVhZEVuYWJsZSh2b2lkKQogewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRSghV2ViQ29yZTo6YXBwbGljYXRpb25Jc1dlYlByb2Nlc3MoKSwgIlRoZSBXZWJQcm9jZXNz
IHNob3VsZCBuZXZlciBydW4gYSBXZWIgVGhyZWFkIik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCksICJUaGUg
V2ViUHJvY2VzcyBzaG91bGQgbmV2ZXIgcnVuIGEgV2ViIFRocmVhZCIpOwogCiAgICAgc3RhdGlj
IHB0aHJlYWRfb25jZV90IGluaXRDb250cm9sID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiAgICAgcHRo
cmVhZF9vbmNlKCZpbml0Q29udHJvbCwgU3RhcnRXZWJUaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggYjMwZmQ4MTM0M2MwNmFjZDg5YmE4ZjllMmY2
NzQzNzZmNmVhZDAyNi4uNWJhMjgyMWI3MGI5YzI1MjRjNjE2MGEyNzk1ZjQ5NDNjYTU0ZjNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xOTQsOSArMTk0
LDEzIEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJl
Y3QmIHIpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYWludCB0aGUgdmlldyBhdCBhbGwgaWYg
aXQncyBsYXllciBiYWNrZWQsIGJlY2F1c2UgdGhlbiB3ZSdsbCBlbmQgdXAKICAgICAvLyB3aXRo
IG11bHRpcGxlIGNvcGllcyBvZiB0aGUgdmlldyBjb250ZW50cywgb25lIGluIHRoZSB2aWV3J3Mg
bGF5ZXIgaXRzZWxmIGFuZCBvbmUgaW4gdGhlCiAgICAgLy8gV2ViSFRNTFZpZXcncyBiYWNraW5n
IHN0b3JlIChlaXRoZXIgYSBsYXllciBvciB0aGUgd2luZG93IGJhY2tpbmcgc3RvcmUpLgotICAg
IC8vIEhvd2V2ZXIsIFF1aWNrZW4gRXNzZW50aWFscyBoYXMgYSBwbHVnLWluIHRoYXQgZGVwZW5k
cyBvbiBkcmF3aW5nIHRvIHVwZGF0ZSB0aGUgbGF5ZXIgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTUy
MjEyMzE+KS4KLSAgICBpZiAodmlldy5sYXllciAmJiAhYXBwbGljYXRpb25Jc1F1aWNrZW5Fc3Nl
bnRpYWxzKCkpCisgICAgaWYgKHZpZXcubGF5ZXIpIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIC8vIEhvd2V2ZXIsIFF1aWNrZW4gRXNzZW50aWFscyBoYXMgYSBwbHVnLWluIHRoYXQgZGVw
ZW5kcyBvbiBkcmF3aW5nIHRvIHVwZGF0ZSB0aGUgbGF5ZXIgKHNlZSA8cmRhcjovL3Byb2JsZW0v
MTUyMjEyMzE+KS4KKyAgICAgICAgaWYgKCFNYWNBcHBsaWNhdGlvbjo6aXNRdWlja2VuRXNzZW50
aWFscygpKQorI2VuZGlmCiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBUYWtlIGEg
cmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0LCBiZWNhdXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhl
IHZpZXdzIGNhbiBpbnZva2UgYXJiaXRyYXJ5CiAgICAgLy8gY29kZSwgd2hpY2ggY2FuIGRlcmVm
IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVp
Y2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tCmluZGV4IGExZWE5Yzg5ZDAwM2YwNGZlZTAzODExMjNjN2YxZTFiMjk4ZTM0YTMuLjEzZDFk
ZGMzY2FlOWVmMjM2N2Y2NDFmNDkwN2U2ZTJhODFkYTQxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTM1LDcgKzM1LDcgQEAK
ICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUxvYWRlci5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQg
IlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IGMzYmRlOGFmN2M4ZTVlMDI0
YzNlMmRlZmI4M2ZmYjUwZTY1ZmQ0ODQuLjhhMjY4ODhlN2IyM2RjNDI0Yjk4YjUxZTc4MjI3Yjll
YjJmMDE3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC03MCw3ICs3MCw3IEBAIENGRGljdGlvbmFy
eVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsK
IAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgotI2ltcG9ydCAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKIAogQGludGVyZmFjZSBO
U1VSTFJlcXVlc3QgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggZDE0ZDAzMDE5N2IyYjk0ODFhNWRlYTNiN2RkMTI4ODk1NWIxMzA4
Ni4uMjBkMzg0N2M0NDdhZWVjMDA0OWFmNDViYmVjYTVhNDZlZjk5NmNkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrc0lPUy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6bGF5ZXJXaWxsQmVEZXN0cm95ZWQoKQogCiBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6bmVlZHNJT1NEdW1wUmVuZGVyVHJlZU1haW5GcmFtZVJlbmRlclZpZXdM
YXllcklzQWx3YXlzT3BhcXVlSGFjayhjb25zdCBHcmFwaGljc0xheWVyJiBsYXllcikgY29uc3QK
IHsKLSAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBhcHBsaWNhdGlvbklz
RHVtcFJlbmRlclRyZWUoKSkgeworICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVy
ICYmIElPU0FwcGxpY2F0aW9uOjppc0R1bXBSZW5kZXJUcmVlKCkpIHsKICAgICAgICAgLy8gSW4g
aU9TIFdlYktpdDEgdGhlIG1haW4gZnJhbWUncyBSZW5kZXJWaWV3IGxheWVyIGlzIGFsd2F5cyB0
cmFuc3BhcmVudC4gV2UgbGllIHRoYXQgaXQgaXMgb3BhcXVlIHNvIHRoYXQKICAgICAgICAgLy8g
aW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dCgpIHRlc3RzIHN1Y2NlZWQuCiAgICAgICAgIEFTU0VS
VF9VTlVTRUQobGF5ZXIsICFsYXllci5jb250ZW50c09wYXF1ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAppbmRleCAyNTQ2ZDU0ZDJlMmM5MGE0OWQ2YzMyZDBhMjAwY2E5NGMxM2E0YjA1Li40ZDYxOGU5
NTk2NzU4MGYwZGYyNzc4YTRkZGZhNWQ4NWQyM2E4NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBA
IC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExB
VEZPUk0oSU9TKQotI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9T
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRp
ZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKEhvc3RJbmZvcm1hdGlvbiog
aG9zdCwgUmVzb3UKICAgICAgICAgICAgIHJlcXVlc3RzUGVuZGluZy5yZW1vdmVGaXJzdCgpOwog
ICAgICAgICAgICAgaG9zdC0+YWRkTG9hZEluUHJvZ3Jlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCkp
OwogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgIGlmICghYXBwbGljYXRpb25Jc1dlYlBy
b2Nlc3MoKSkgeworICAgICAgICAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNz
KCkpIHsKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IGQy
ODI1YWY0N2FmN2M3MTRjZGYyMGYzOTcxNmYwYzM0NTM2NjkxYzUuLjc3NzQ2OTQ2MzcxNTI2MTQx
YzcyN2VhMWUzZjU1ODJhMmI4MTJmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTU3LDcgKzU3LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVu
ZGVyQm94Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0
cmFpbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCmluZGV4IDQwYjAyYjY1OWYxZWQ5OWYzZGIxMzk0MTA3
ZTY2OTQwMWZmMGViOTkuLjg0MDZjMTUyYmYxN2EyMmNlNTU1OWExMzc5MmU0MWQ2YzNhYjIwODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIu
bW0KQEAgLTY4LDcgKzY4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgot
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nv
ZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KICNlbmRp
ZgpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVBdWRpb1Nlc3Npb24o
KQogICAgICAgICByZXR1cm47CiAKICAgICB3YXNBdWRpb1Nlc3Npb25Jbml0aWFsaXplZCA9IHRy
dWU7Ci0gICAgaWYgKCFXZWJDb3JlOjphcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpCisgICAg
aWYgKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnko
QXVkaW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNDliNzE5
Mzg1MjgyNTE4MjY4YzcxNGUxOThmYjEyZGY4NTlmYjhkMC4uMjNmZjM3NTBlZTY3N2M5NDNjOGYy
M2UxYjM3NTk5YTU1NDcyZGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0OCw3ICsxNDgsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05T
RmlsZU1hbmFnZXJTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUXVpY2tMb29rLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNlbmRpZgogCiAjaWYgSEFWRShBUFBfTElO
S1MpCkBAIC0yMjM5LDcgKzIyMzksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRD
cmVhdGVRdWlja0xvb2tIYW5kbGUoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiBoYQogICAgICAg
ICAgICAgOiBtX2ZpcnN0UmVxdWVzdFVSTChoYW5kbGUuZmlyc3RSZXF1ZXN0VVJMKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIE5TVVJMICpwcmV2aWV3UmVxdWVzdFVSTCA9IGhhbmRsZS5wcmV2
aWV3UmVxdWVzdFVSTCgpOwotICAgICAgICAgICAgaWYgKCFhcHBsaWNhdGlvbklzTW9iaWxlU2Fm
YXJpKCkpIHsKKyAgICAgICAgICAgIGlmICghSU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJp
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGtlZXBzIHRoZSBRTFByZXZpZXdDb252ZXJ0
ZXIgYWxpdmUgdG8gc2VydmUgYW55IHN1YnJlc291cmNlIHJlcXVlc3RzLgogICAgICAgICAgICAg
ICAgIC8vIEl0IGlzIHJlbW92ZWQgYnkgLVtXZWJEYXRhU291cmNlIGRlYWxsb2NdLgogICAgICAg
ICAgICAgICAgIGFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9yVVJMKHByZXZpZXdSZXF1
ZXN0VVJMLCBoYW5kbGUuY29udmVydGVyKCksIG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCAwNTY0YzVmMTZiMGJkMGY2YmNlNjc5NTg3MWI3ODI1ZjM3ZDg0ZGQ4
Li5jYmJmMjRmY2EzZjQzOGNmMDlmMTNkMzc1NWIyZDFlNGQ1Yzc5YjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTI0MTEsOCArMjQxMSwxMiBAQCBzdGF0aWMgV2Vi
RnJhbWVMb2FkVHlwZSB0b1dlYkZyYW1lTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRU
eXBlKQogCiBzdGF0aWMgYm9vbCBuZWVkc01pY3Jvc29mdE1lc3NlbmdlckRPTURvY3VtZW50V29y
a2Fyb3VuZCgpCiB7Ci0gICAgc3RhdGljIGJvb2wgbmVlZHNXb3JrYXJvdW5kID0gYXBwbGljYXRp
b25Jc01pY3Jvc29mdE1lc3NlbmdlcigpICYmIFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVj
dEZvckluZm9EaWN0aW9uYXJ5S2V5OihOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldIGNv
bXBhcmU6QCI3LjEiIG9wdGlvbnM6TlNOdW1lcmljU2VhcmNoXSA9PSBOU09yZGVyZWRBc2NlbmRp
bmc7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgc3Rh
dGljIGJvb2wgbmVlZHNXb3JrYXJvdW5kID0gTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVz
c2VuZ2VyKCkgJiYgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0Rm9ySW5mb0RpY3Rpb25h
cnlLZXk6KE5TU3RyaW5nICopa0NGQnVuZGxlVmVyc2lvbktleV0gY29tcGFyZTpAIjcuMSIgb3B0
aW9uczpOU051bWVyaWNTZWFyY2hdID09IE5TT3JkZXJlZEFzY2VuZGluZzsKICAgICByZXR1cm4g
bmVlZHNXb3JrYXJvdW5kOworI2VuZGlmCiB9CiAKIC0gKERPTURvY3VtZW50ICopRE9NRG9jdW1l
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBkYmIyM2IwMjY3OTQ3NGI5ZTQ4MDkwYmM4MjMzZjVi
ZjI3YTllZWUxLi4yM2U2MjNkNWI3ZGIyYjI4OWIwZjA1YmQxMTcwNjQwZDU4NjUwMThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCkBAIC0zMTgsMTEgKzMxOCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKICAgICAgICAgY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciA9IFsoaWQpW193
ZWJWaWV3IFVJRGVsZWdhdGVdIF93ZWJWaWV3Ol93ZWJWaWV3IGltbWVkaWF0ZUFjdGlvbkFuaW1h
dGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0OndlYkhpdFRlc3RSZXN1bHQuZ2V0KCkgd2l0
aFR5cGU6X3R5cGVdOwogICAgIH0KIAorICAgIGlmIChjdXN0b21DbGllbnRBbmltYXRpb25Db250
cm9sbGVyID09IFtOU051bGwgbnVsbF0pIHsKKyAgICAgICAgW3NlbGYgX2NhbmNlbEltbWVkaWF0
ZUFjdGlvbl07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgcGVybWFuZW50bHkgZGlzYWJsZSB0aGlzIGZvciBp
VHVuZXMuIHJkYXI6Ly9wcm9ibGVtLzE5NDYxMzU4Ci0gICAgaWYgKGN1c3RvbUNsaWVudEFuaW1h
dGlvbkNvbnRyb2xsZXIgPT0gW05TTnVsbCBudWxsXSB8fCBhcHBsaWNhdGlvbklzSVR1bmVzKCkp
IHsKKyAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzSVR1bmVzKCkpIHsKICAgICAgICAgW3NlbGYg
X2NhbmNlbEltbWVkaWF0ZUFjdGlvbl07CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYK
KwogICAgIGlmIChjdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVyICYmIFtjdXN0b21DbGll
bnRBbmltYXRpb25Db250cm9sbGVyIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNJbW1l
ZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyKV0pCiAgICAgICAgIFtfaW1tZWRpYXRlQWN0
aW9uUmVjb2duaXplciBzZXRBbmltYXRpb25Db250cm9sbGVyOihpZCA8TlNJbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyPiljdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVyXTsK
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDY1MDg1OWFj
NTYzMTRiZGZlNzA2NzZkZTMxMTJmMjU3OGM4MGY2OS4uNGJkNjExOWRkODNjY2U0NDJlN2Q3ZjMy
YjlmNDUzNzc4MzY3MDFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MjU0LDcgKzI1NCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RleHRSdW4uaD4KQEAgLTc0MSw3ICs3NDAsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0
aWFsaXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFhcHBOYW1l
KQogICAgICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNz
TmFtZV07CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChXZWJDb3JlOjphcHBsaWNhdGlvbklz
TW9iaWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6YXBwbGljYXRpb25Jc1dlYkFwcCgpKQorICAgIGlm
IChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJ
T1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkKICAgICAgICAgYXBwTmFtZSA9IEAiY29tLmFwcGxl
LldlYkFwcENhY2hlIjsKICNlbmRpZgogCkBAIC03NzYsNyArNzc1LDExIEBAIHN0YXRpYyB2b2lk
IFdlYktpdEluaXRpYWxpemVBcHBsaWNhdGlvblN0YXRpc3RpY3NTdG9yYWdlUGF0aElmTmVjZXNz
YXJ5KCkKIAogc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlTG9hZERlZmVycmluZygpCiB7Ci0gICAg
cmV0dXJuICFhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXIoKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiAhTWFjQXBwbGljYXRpb246Omlz
QWRvYmVJbnN0YWxsZXIoKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXN0cmlj
dFdpbmRvd0ZvY3VzKCkKQEAgLTc4NCw3ICs3ODcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZXN0
cmljdFdpbmRvd0ZvY3VzKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQotICAgIHJldHVybiAhYXBwbGljYXRpb25Jc0hSQmxvY2soKTsKKyAgICByZXR1cm4gIU1h
Y0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKTsKICNlbmRpZgogfQogCkBAIC04MDcsNyArODEwLDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkUmVzdHJpY3RXaW5kb3dGb2N1cygpCiBzdGF0aWMgYm9vbCBu
ZWVkc091dGxvb2tRdWlya3NTY3JpcHQoKQogewogICAgIHN0YXRpYyBib29sIGlzT3V0bG9va05l
ZWRpbmdRdWlya3NTY3JpcHQgPSAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhfSFRNTDVfUEFSU0VSKQotICAgICAgICAmJiBhcHBsaWNhdGlvbklzTWljcm9z
b2Z0T3V0bG9vaygpOworICAgICAgICAmJiBNYWNBcHBsaWNhdGlvbjo6aXNNaWNyb3NvZnRPdXRs
b29rKCk7CiAgICAgcmV0dXJuIGlzT3V0bG9va05lZWRpbmdRdWlya3NTY3JpcHQ7CiB9CiAKQEAg
LTg0MiwxMyArODQ1LDEzIEBAIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NT
QXR0cmlidXRlU2V0dGVycygpCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgc2hvdWxk
VHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmFu
c2Zvcm1zQWZmZWN0T3ZlcmZsb3cgPSAhYXBwbGljYXRpb25Jc09rQ3VwaWQoKSB8fCBXZWJLaXRM
aW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9DU1NfVFJBTlNGT1JNU19B
RkZFQ1RJTkdfT1ZFUkZMT1cpOworICAgIHN0YXRpYyBib29sIHNob3VsZFRyYW5zZm9ybXNBZmZl
Y3RPdmVyZmxvdyA9ICFJT1NBcHBsaWNhdGlvbjo6aXNPa0N1cGlkKCkgfHwgV2ViS2l0TGlua2Vk
T25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ1NTX1RSQU5TRk9STVNfQUZGRUNU
SU5HX09WRVJGTE9XKTsKICAgICByZXR1cm4gc2hvdWxkVHJhbnNmb3Jtc0FmZmVjdE92ZXJmbG93
OwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9y
RXZlbnRzKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5k
b3dPbkVycm9yRXZlbnRzID0gIWFwcGxpY2F0aW9uSXNGYWNlYm9vaygpIHx8IFdlYktpdExpbmtl
ZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJPUik7Cisg
ICAgc3RhdGljIGJvb2wgc2hvdWxkRGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50
cyA9ICFJT1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9vaygpIHx8IFdlYktpdExpbmtlZE9uT3JBZnRl
cihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1dJTkRPV19PTl9FUlJPUik7CiAgICAgcmV0dXJu
IHNob3VsZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09uRXJyb3JFdmVudHM7CiB9CiAKQEAgLTg2
Niw3ICs4NjksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNo
b3J0aGFuZEJlaGF2aW9yKCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgc2hv
dWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9ICFXZWJLaXRMaW5r
ZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VO
RFNJWkVfU0hPUlRIQU5EX0JFSEFWSU9SKTsKICNlbHNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxk
VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9IGFwcGxpY2F0aW9uSXNW
ZXJzaW9ucygpCisgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVT
aG9ydGhhbmRCZWhhdmlvciA9IE1hY0FwcGxpY2F0aW9uOjppc1ZlcnNpb25zKCkKICAgICAgICAg
JiYgIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0xF
R0FDWV9CQUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVIQVZJT1IpOwogI2VuZGlmCiAgICAgcmV0
dXJuIHNob3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3I7CkBAIC05
NzYsNyArOTc5LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRl
cklmTmVjZXNzYXJ5KCkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0
eUluQ1NTQXR0cmlidXRlU2V0dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0
ZVNldHRlcnMoKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmIChhcHBsaWNhdGlv
bklzTW9iaWxlU2FmYXJpKCkpCisgICAgICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVT
YWZhcmkoKSkKICAgICAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Np
b25DYXRlZ29yeSh0cnVlKTsKICNlbmRpZgogCkBAIC0xMjAxLDcgKzEyMDQsNyBAQCBzdGF0aWMg
dm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgICAg
ICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5l
ciBjbGFzc10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViVmll
dyBjbGFzc10pOwogICAgICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV2ViVmlz
aWJsZVBvc2l0aW9uIGNsYXNzXSk7Ci0gICAgICAgIGlmIChhcHBsaWNhdGlvbklzVGhlRWNvbm9t
aXN0T25JUGhvbmUoKSAmJiAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJT
SU9OX1dJVEhfREVMRUdBVEVfQ0FMTFNfSU5fQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQorICAgICAg
ICBpZiAoSU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhvbmUoKSAmJiAhV2ViS2l0
TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVMRUdBVEVfQ0FMTFNf
SU5fQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICAgICAgV2ViVGhyZWFkU2V0RGVsZWdh
dGVTb3VyY2VSdW5Mb29wTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAgICBXZWJU
aHJlYWRFbmFibGUoKTsKICAgICAgICAgaXNXZWJUaHJlYWRFbmFibGVkID0gWUVTOwpAQCAtMTMy
Nyw3ICsxMzMwLDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRl
cklmTmVjZXNzYXJ5KCkKIAogKyAodm9pZClyZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnMK
IHsKLSAgICBCT09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdl
YkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKTsKKyAgICBCT09MIHNob3VsZEF1dG9D
bGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjpp
c01vYmlsZVNhZmFyaSgpOwogCiAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24o
KS5pbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrKF57CiAgICAgICAgIFtXZWJWaWV3IF9oYW5kbGVN
ZW1vcnlXYXJuaW5nXTsKQEAgLTIxNDgsNyArMjE1MSw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1
bWVudFRlYXJkb3duRW5hYmxlZCgpCiAKIC0gKEJPT0wpX25lZWRzS2V5Ym9hcmRFdmVudERpc2Ft
YmlndWF0aW9uUXVpcmtzCiB7Ci0gICAgc3RhdGljIEJPT0wgbmVlZHNRdWlya3MgPSAhV2ViS2l0
TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSUVfQ09NUEFUSUJMRV9L
RVlCT0FSRF9FVkVOVF9ESVNQQVRDSCkgJiYgIWFwcGxpY2F0aW9uSXNTYWZhcmkoKTsKKyAgICBz
dGF0aWMgQk9PTCBuZWVkc1F1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJ
UlNUX1ZFUlNJT05fV0lUSF9JRV9DT01QQVRJQkxFX0tFWUJPQVJEX0VWRU5UX0RJU1BBVENIKSAm
JiAhTWFjQXBwbGljYXRpb246OmlzU2FmYXJpKCk7CiAgICAgcmV0dXJuIG5lZWRzUXVpcmtzOwog
fQogCkBAIC0yMTYwLDcgKzIxNjMsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93
bkVuYWJsZWQoKQogCiBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWly
aygpCiB7Ci0gICAgc3RhdGljIGJvb2wgbmVlZHNRdWlyayA9IGFwcGxpY2F0aW9uSXNBcGVydHVy
ZSgpOworICAgIHN0YXRpYyBib29sIG5lZWRzUXVpcmsgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcGVy
dHVyZSgpOwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCkBAIC0yMTc1LDEwICsyMTc4LDEwIEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldo
aWxlTG9hZGluZ1F1aXJrKCkKICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2MTM0PiBhbmQKICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ2MzM0Pi4KICAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVlZGlu
Z1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJ
T05fV0lUSF9IVE1MNV9QQVJTRVIpCi0gICAgICAgICYmIChhcHBsaWNhdGlvbklzQU9MSW5zdGFu
dE1lc3NlbmdlcigpIHx8IGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNeURheSgpKTsKKyAgICAgICAg
JiYgKE1hY0FwcGxpY2F0aW9uOjppc0FPTEluc3RhbnRNZXNzZW5nZXIoKSB8fCBNYWNBcHBsaWNh
dGlvbjo6aXNNaWNyb3NvZnRNeURheSgpKTsKICAgICAKICAgICAvLyBNYWlsLmFwcCBtdXN0IGNv
bnRpbnVlIHRvIGRpc3BsYXkgSFRNTCBlbWFpbCB0aGF0IGNvbnRhaW5zIHF1aXJreSBtYXJrdXAu
Ci0gICAgc3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7
CisgICAgc3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1h
aWwoKTsKIAogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcwogICAg
ICAgICB8fCBpc0FwcGxlTWFpbApAQCAtMjE4OSw3ICsyMTkyLDcgQEAgc3RhdGljIGJvb2wgbmVl
ZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogI2VuZGlmCiAgICAgICAgIHx8IFtbc2Vs
ZiBwcmVmZXJlbmNlc10gdXNlUHJlSFRNTDVQYXJzZXJRdWlya3NdOwogI2Vsc2UKLSAgICBzdGF0
aWMgYm9vbCBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRP
bk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIGFwcGxp
Y2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnkoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0
aW9uTmVlZGluZ1BhcnNlclF1aXJrcyA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJ
UlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpICYmIElPU0FwcGxpY2F0aW9uOjppc0RhaWpp
c2VuRGljdGlvbmFyeSgpOwogICAgIHJldHVybiBpc0FwcGxpY2F0aW9uTmVlZGluZ1BhcnNlclF1
aXJrcyB8fCBbW3NlbGYgcHJlZmVyZW5jZXNdIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzXTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA1MzgyNzM2MDFkZDU5Y2Qx
OTczODA3MmM2MWNmNzE4ZTAxZjAyMjIwLi44MjMxYWJiYzYyMGVhM2IwMTE2NTU0ZGNjNGMwZmIx
OWQ0YmYyN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKIAogI2lmIFBMQVRGT1JNKElPUykKLSNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBB
UEkgewpAQCAtNDIsNyArNDIsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRo
ZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KICAgICAvLyBGSVhNRTogSWRl
YWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSBhbmQgV2ViQXBwIGNyZWF0ZSBhIGRhdGEg
c3RvcmUgd2l0aAogICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQn
cyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6YXBwbGlj
YXRpb25Jc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNXZWJBcHAoKSkg
eworICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSkgewogICAgICAgICBOU1N0cmluZyAq
Y2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwogCiAgICAgICAg
IHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRo
LnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5tbQppbmRleCBiNDZkMDA3MTgyYzJhZTI2ZGRlMmY3ZGU1
OTYzNzdjYjFkZTVmMjI4Li4yZTBkZmVkMWZjZWQ4ODYzY2Y5YmNiYjZlMDY5ZmNlNjExMDFiNzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNr
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5t
bQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KIAogI2lmIFBMQVRG
T1JNKElPUykKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsNyArNDMsNyBAQCBib29sIGxpbmtlZE9uT3JBZnRl
cihMaWJyYXJ5VmVyc2lvbiB2ZXJzaW9uKQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBB
bHdheXMgbWFrZSBuZXcgZmVhdHVyZXMgYXZhaWxhYmxlIGZvciBTYWZhcmkuCi0gICAgaWYgKFdl
YkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkKKyAgICBpZiAoV2ViQ29yZTo6SU9T
QXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KaW5kZXggMjFkZDg0ZjlmYTRjMWRiMmIxYWM5ZTRjNTAwZGE5MDQ3M2Vi
OTk3MC4uMjY2MmE0YTY2Mzg2N2Q5MjA2ZjkwNjNlMTM3YzY4YTgzOTc2YjUyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KQEAgLTUyLDcgKzUyLDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NGLmgiCiAjaW1wb3J0ICJXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCIKLSNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjZWxzZQogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+CiAjZW5kaWYKQEAgLTE4MCw3
ICsxNzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmCiAgICAgcGFyYW1ldGVycy5zaG91bGRT
dXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktp
dFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyRGVmYXVsdHNLZXldOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIHBhcmFtZXRlcnMuc2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIgPSBhcHBsaWNh
dGlvbklzSUJvb2tzKCk7CisgICAgcGFyYW1ldGVycy5zaG91bGRSZXdyaXRlQ29uc3RBc1ZhciA9
IE1hY0FwcGxpY2F0aW9uOjppc0lCb29rcygpOwogI2VuZGlmCiAKICNpZiBIQVZFKEhPU1RFRF9D
T1JFX0FOSU1BVElPTikKQEAgLTM2NSw3ICszNjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogI2lmIFBM
QVRGT1JNKElPUykKICAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNo
YXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhh
dCBhbnkgbW9yZS4KICAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdy
YXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNNb2JpbGVTYWZh
cmkoKSB8fCBhcHBsaWNhdGlvbklzV2ViQXBwKCkpCisgICAgaWYgKElPU0FwcGxpY2F0aW9uOjpp
c01vYmlsZVNhZmFyaSgpIHx8IElPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpKQogICAgICAgICBh
cHBOYW1lID0gQCJjb20uYXBwbGUuV2ViQXBwQ2FjaGUiOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggYzQwODA1YmMzMTgxYTk2ODdkNjc3OWU3NWI4ZmI1ZThkZWY2NDE3My4uY2VmNjU0
NDk2NjRjZTllYmFkYjFhMDJmNGUwYTZjNGU1ZDgwOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTY2LDcgKzY2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxi
YXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dEluZGljYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCA2Nzg1OGYyMWU3ZWI5ZmFlNGRhMGYxYTI2NzA5MTk5ODIzM2E4
OWMxLi5hOWI0MzI5MTc5MDlkYTEzZWEzMjQ4MGZmNmQ0OTEwODgxN2VhODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNjcsNyAr
NjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBib29sIGV4cGVjdHNM
ZWdhY3lJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKCkKIHsKLSAgICBpZiAoYXBwbGljYXRpb25J
c1NhZmFyaSgpKSB7CisgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpKSB7CiAgICAg
ICAgIGNvbnN0IGludDMyX3QgZmlyc3RWZXJzaW9uT2ZTYWZhcmlOb3RFeHBlY3RpbmdJbXBsaWNp
dFJ1YmJlckJhbmRDb250cm9sID0gMHgwMjFBMEYwMDsgLy8gNTM4LjE1LjAKICAgICAgICAgYm9v
bCBsaW5rZWRBZ2FpbnN0U2FmYXJpRXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbCA9
IE5TVmVyc2lvbk9mTGlua1RpbWVMaWJyYXJ5KCJTYWZhcmkiKSA8IGZpcnN0VmVyc2lvbk9mU2Fm
YXJpTm90RXhwZWN0aW5nSW1wbGljaXRSdWJiZXJCYW5kQ29udHJvbDsKICAgICAgICAgcmV0dXJu
IGxpbmtlZEFnYWluc3RTYWZhcmlFeHBlY3RpbmdJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sOwpA
QCAtNTQ3LDcgKzU0Nyw3IEBAIENHUmVjdCBXZWJQYWdlUHJveHk6OmJvdW5kc09mTGF5ZXJJbkxh
eWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqbGF5ZXIpCiAKIGJvb2wgV2ViUGFn
ZVByb3h5OjphcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKCkKIHsKLSAgICByZXR1cm4g
YXBwbGljYXRpb25Jc0FwcGxlTWFpbCgpOworICAgIHJldHVybiBNYWNBcHBsaWNhdGlvbjo6aXNB
cHBsZU1haWwoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvbnQoY29uc3QgU3RyaW5n
JiBmb250RmFtaWx5LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>