<?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>135185</bug_id>
          
          <creation_ts>2014-07-22 19:08:29 -0700</creation_ts>
          <short_desc>Migrate accessibility/ to using nullptr instead of 0</short_desc>
          <delta_ts>2014-07-23 07:57:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jonlee</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1024141</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-07-22 19:08:29 -0700</bug_when>
    <thetext>Migrate accessibility/ to using nullptr instead of 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024142</commentid>
    <comment_count>1</comment_count>
      <attachid>235337</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-07-22 19:09:26 -0700</bug_when>
    <thetext>Created attachment 235337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024143</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-22 19:11:58 -0700</bug_when>
    <thetext>Attachment 235337 did not pass style-queue:


ERROR: Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.h:52:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/accessibility/AccessibilityObject.cpp:2214:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024146</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-07-22 19:16:48 -0700</bug_when>
    <thetext>The style comments are false negatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024168</commentid>
    <comment_count>4</comment_count>
      <attachid>235337</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-22 22:34:35 -0700</bug_when>
    <thetext>Comment on attachment 235337
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024227</commentid>
    <comment_count>5</comment_count>
      <attachid>235337</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 07:57:35 -0700</bug_when>
    <thetext>Comment on attachment 235337
Patch

Clearing flags on attachment: 235337

Committed r171477: &lt;http://trac.webkit.org/changeset/171477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024228</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 07:57:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235337</attachid>
            <date>2014-07-22 19:09:26 -0700</date>
            <delta_ts>2014-07-23 07:57:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135185-20140722190911.patch</filename>
            <type>text/plain</type>
            <size>99598</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAyMmVlYjM3NmJmY2Zl
YzJmNjAxNGQwYjFlNjYyNzhkM2FlZDRiYi4uZGYyZWFmOWM4M2JiY2I3YTU0MmE1M2YwNTk0NTA5
MmI4ODUxOTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxMiBAQAogMjAxNC0wNy0yMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCisgICAgICAgIE1pZ3JhdGUg
YWNjZXNzaWJpbGl0eS8gdG8gdXNpbmcgbnVsbHB0ciBpbnN0ZWFkIG9mIDAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTE4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1
c2VkSW1hZ2VNYXBVSUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0
Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyb290T2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RPYmplY3RGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6ZGlzY2xvc2VkQnlSb3cpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bms6OnBhcmVudE9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveDo6bGlz
dEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6QWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OnBh
cmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6bGlzdEJveE9wdGlvblBhcmVudE5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TW9ja09iamVjdDo6QWNjZXNzaWJpbGl0eU1vY2tP
YmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Qu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmZpcnN0Q2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omxhc3RDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cHJldmlvdXNTaWJsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpuZXh0U2libGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cGFyZW50T2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpkb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVBY3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY3Rpb25FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpsYWJlbEZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1lbnVJdGVt
RWxlbWVudEZvck1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6Om1lbnVCdXR0b25Gb3JNZW51KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmly
c3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpyZW5k
ZXJMaXN0SXRlbUNvbnRhaW5lckZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZG9jdW1lbnRGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6YW5jaG9yRWxlbWVudEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdENoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRpdGxlVUlFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNv
bnRyb2xFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNv
cnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJhcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphbmNob3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6d2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bWF0aFJhZGljYW5kT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhSb290SW5kZXhPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhPdmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhOdW1lcmF0b3JPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhCYXNlT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGhTdWJzY3JpcHRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0aFN1cGVyc2NyaXB0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldFNjcm9s
bGFibGVBcmVhSWZTY3JvbGxhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OnByb2dyZXNzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6Om1ldGVyRWxlbWVudCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJCb3hNb2RlbE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpmaXJzdENoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omxhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mQ29udGludWF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpjaGlsZEJlZm9yZUNvbnNpZGVyaW5nQ29udGludWF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwcmV2aW91c1NpYmxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bmV4dFNpYmxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6bmV4dENvbnRpbnVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJQYXJlbnRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFuY2hvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpub2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxl
bWVudENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnRpdGxlVUlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEZvY3VzZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dG9wUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6d2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb2N1bWVudEZy
YW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp3
aWRnZXRGb3JBdHRhY2htZW50Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpyb290RWRpdGFibGVFbGVtZW50Rm9yUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNz
aWJpbGl0eUltYWdlTWFwSGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzUHJl
c2VudGF0aW9uYWxSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkSGlkZGVuQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNj
cm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
bWF0aFJhZGljYW5kT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om1hdGhSb290SW5kZXhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aE51bWVyYXRvck9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoRGVub21pbmF0b3JPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFVuZGVyT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhP
dmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om1hdGhCYXNlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Om1hdGhTdWJzY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6bWF0aFN1cGVyc2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTVkdSb290OjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxCYXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0
VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1l
bnRGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OnBhcmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6cGFyZW50T2JqZWN0SWZFeGlzdHMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyOjpkb2N1bWVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bjo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZTo6Y2xlYXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFi
bGU6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpwYXJlbnRUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uOjpoZWFkZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6ZGV0YWNoV3JhcHBlcik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGRldGFjaF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciB0YWJsZUNlbGxQYXJlbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgdGFibGVQYXJlbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY29udmVydFBvaW50VG9TY3JlZW5TcGFjZTpdKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAocmVuZGVyZXJGb3JWaWV3KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGV0YWNoRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgZGV0YWNoXSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06Cisg
ICAgICAgIChDcmVhdGVDR0NvbG9ySWZEaWZmZXJlbnQpOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBjb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOl0pOgorICAgICAg
ICAocmVuZGVyZXJGb3JWaWV3KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L3dpbi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKToKKworMjAxNC0wNy0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAgIFtpT1NdIFtPU1hdIERvbid0IHRyYW5zY29kZSBX
T0ZGIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQgbmF0aXZlbHkKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDkwNAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTk0ODEwZTQwZGNh
N2MyMTQ4M2IyMWY1N2U1NjIwYTFkMTNhMDVmLi5jMzFkNjQyYjQyMDcwNjY4NzNjYTZlNjRhNjBj
Njc3YTUxMGQ2YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKQEAgLTE0NSwxNSArMTQ1LDE1IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFY
T2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudChIVE1MQXJlYUVsZW1lbnQqIGFy
CiAgICAgLy8gRmluZCB0aGUgY29ycmVzcG9uZGluZyBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3Ig
dGhlIEhUTUxBcmVhRWxlbWVudC4gVGhpcyBzaG91bGQgYmUKICAgICAvLyBpbiB0aGUgbGlzdCBv
ZiBjaGlsZHJlbiBmb3IgaXRzIGNvcnJlc3BvbmRpbmcgaW1hZ2UuCiAgICAgaWYgKCFhcmVhRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAog
ICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IGFyZWFFbGVtZW50LT5pbWFnZUVs
ZW1lbnQoKTsKICAgICBpZiAoIWltYWdlRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4UmVu
ZGVySW1hZ2UgPSBhcmVhRWxlbWVudC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFheFJlbmRlckltYWdlKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGF4UmVuZGVySW1hZ2UtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKCFj
aGlsZC0+aXNJbWFnZU1hcExpbmsoKSkKQEAgLTE2MywxMyArMTYzLDEzIEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudChIVE1MQXJl
YUVsZW1lbnQqIGFyCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CiAgICAgfSAgICAK
ICAgICAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNv
bnN0IFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFnQWNjZXNzaWJpbGl0eUVuYWJsZWQpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIGdldCB0aGUg
Zm9jdXNlZCBub2RlIGluIHRoZSBwYWdlCiAgICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7
CkBAIC0xNzksNyArMTc5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6
Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKIAogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1c2VkRWxlbWVu
dCkgOiBmb2N1c2VkRG9jdW1lbnQpOwogICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAob2JqLT5zaG91bGRGb2N1c0FjdGl2
ZURlc2NlbmRhbnQoKSkgewogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogZGVzY2Vu
ZGFudCA9IG9iai0+YWN0aXZlRGVzY2VuZGFudCgpKQpAQCAtMTk2LDEyICsxOTYsMTIgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2Uo
Y29uc3QgUGFnZSogcGFnZSkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dChXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBWElEIGF4SUQgPSBtX3dp
ZGdldE9iamVjdE1hcHBpbmcuZ2V0KHdpZGdldCk7CiAgICAgQVNTRVJUKCFIYXNoVHJhaXRzPEFY
SUQ+Ojppc0RlbGV0ZWRWYWx1ZShheElEKSk7CiAgICAgaWYgKCFheElEKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIG1fb2JqZWN0
cy5nZXQoYXhJRCk7ICAgIAogfQpAQCAtMjA5LDEyICsyMDksMTIgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFdpZGdldCogd2lkZ2V0KQogQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAg
aWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAogICAgIEFYSUQgYXhJRCA9IG1fcmVuZGVyT2JqZWN0TWFwcGluZy5nZXQocmVuZGVy
ZXIpOwogICAgIEFTU0VSVCghSGFzaFRyYWl0czxBWElEPjo6aXNEZWxldGVkVmFsdWUoYXhJRCkp
OwogICAgIGlmICghYXhJRCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgcmV0dXJuIG1fb2JqZWN0cy5nZXQoYXhJRCk7ICAgIAogfQpAQCAtMjIyLDcg
KzIyMiw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0
KE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBWElEIHJlbmRlcklEID0gbm9kZS0+cmVuZGVyZXIo
KSA/IG1fcmVuZGVyT2JqZWN0TWFwcGluZy5nZXQobm9kZS0+cmVuZGVyZXIoKSkgOiAwOwogICAg
IEFTU0VSVCghSGFzaFRyYWl0czxBWElEPjo6aXNEZWxldGVkVmFsdWUocmVuZGVySUQpKTsKQEAg
LTIzNSwxNCArMjM1LDE0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dChOb2RlKiBub2RlKQogICAgICAgICAvLyByZW5kZXJlZCwgYnV0IGxhdGVyIHNvbWV0aGluZyBj
aGFuZ2VzIGFuZCBpdCBnZXRzIGEgcmVuZGVyZXIgKGxpa2UgaWYgaXQncwogICAgICAgICAvLyBy
ZXBhcmVudGVkKS4KICAgICAgICAgcmVtb3ZlKG5vZGVJRCk7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAocmVuZGVySUQpCiAgICAg
ICAgIHJldHVybiBtX29iamVjdHMuZ2V0KHJlbmRlcklEKTsKIAogICAgIGlmICghbm9kZUlEKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
bV9vYmplY3RzLmdldChub2RlSUQpOwogfQpAQCAtMzM1LDEyICszMzUsMTIgQEAgc3RhdGljIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gY3JlYXRlRnJvbU5vZGUoTm9kZSogbm9kZSkK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFdpZGdldCog
d2lkZ2V0KQogewogICAgIGlmICghd2lkZ2V0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0
KHdpZGdldCkpCiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgCi0gICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IG5ld09iaiA9IDA7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IG5ld09iaiA9IG51bGxwdHI7CiAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAg
ICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNyZWF0ZSh0b1Njcm9sbFZpZXco
d2lkZ2V0KSk7CiAgICAgZWxzZSBpZiAod2lkZ2V0LT5pc1Njcm9sbGJhcigpKQpAQCAtMzUyLDcg
KzM1Miw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRl
KFdpZGdldCogd2lkZ2V0KQogICAgIC8vIENhdGNoIHRoZSBjYXNlIGlmIGFuICh1bnN1cHBvcnRl
ZCkgd2lkZ2V0IHR5cGUgaXMgdXNlZC4gT25seSBGcmFtZVZpZXcgYW5kIFNjcm9sbEJhciBhcmUg
c3VwcG9ydGVkIG5vdy4KICAgICBBU1NFUlQobmV3T2JqKTsKICAgICBpZiAoIW5ld09iaikKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZ2V0QVhJRChu
ZXdPYmouZ2V0KCkpOwogICAgIApAQCAtMzY2LDcgKzM2Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFdpZGdldCogd2lkZ2V0KQogQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKIHsKICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXQobm9kZSkpCiAgICAgICAg
IHJldHVybiBvYmo7CkBAIC0zNzUsNyArMzc1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhP
YmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGdldE9y
Q3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkpOwogCiAgICAgaWYgKCFub2RlLT5wYXJlbnRFbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAg
ICAvLyBJdCdzIG9ubHkgYWxsb3dlZCB0byBjcmVhdGUgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCBm
cm9tIGEgTm9kZSBpZiBpdCdzIGluIGEgY2FudmFzIHN1YnRyZWUuCiAgICAgLy8gT3IgaWYgaXQn
cyBhIGhpZGRlbiBlbGVtZW50LCBidXQgd2Ugc3RpbGwgd2FudCB0byBleHBvc2UgaXQgYmVjYXVz
ZSBvZiBvdGhlciBBUklBIGF0dHJpYnV0ZXMuCkBAIC0zODgsNyArMzg4LDcgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKICNlbmRp
ZgogICAgIAogICAgIGlmICghaW5DYW52YXNTdWJ0cmVlICYmICFpc0hpZGRlbiAmJiAhaW5zaWRl
TWV0ZXJFbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbmV3T2JqID0gY3JlYXRlRnJvbU5v
ZGUobm9kZSk7CiAKQEAgLTQxMyw3ICs0MTMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogQWNjZXNzaWJpbGl0eU9iamVjdCog
QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAg
ICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0KHJlbmRlcmVyKSkK
ICAgICAgICAgcmV0dXJuIG9iajsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdCgpCiB7CiAgICAg
aWYgKCFnQWNjZXNzaWJpbGl0eUVuYWJsZWQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBnZXRPckNyZWF0ZShtX2RvY3VtZW50LnZpZXco
KSk7CiB9CkBAIC00NDksMTYgKzQ0OSwxNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVj
dENhY2hlOjpyb290T2JqZWN0KCkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6
OnJvb3RPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFnQWNjZXNzaWJp
bGl0eUVuYWJsZWQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gZ2V0T3JDcmVhdGUoZnJhbWUtPnZpZXcoKSk7CiB9ICAgIAogICAg
IAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSkKIHsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2Jq
ID0gMDsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gbnVsbHB0cjsKICAg
ICAKICAgICAvLyB3aWxsIGJlIGZpbGxlZCBpbi4uLgogICAgIHN3aXRjaCAocm9sZSkgewpAQCAt
NDkwLDEzICs0OTAsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0
T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgb2JqID0gQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b25QYXJ0OjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgb2JqID0gMDsKKyAgICAgICAgb2JqID0gbnVsbHB0cjsKICAgICB9CiAgICAg
CiAgICAgaWYgKG9iaikKICAgICAgICAgZ2V0QVhJRChvYmouZ2V0KCkpOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbV9vYmplY3Rz
LnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCiAgICAgb2JqLT5pbml0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGZkZTU2MWY2
ZGNkNGU3ZjVjMjkzZGNlNDdhZmNkM2YzN2YwMTQ1NTcuLmE0ZWJkMDNhZGRhZThhYzVlMjlkY2E4
ZjI1NzMwNmMyY2EwZDE1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCkBAIC0yNzIsMjIgKzI3MiwyMiBAQCBpbmxpbmUgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OmdldElnbm9yZWQo
QQogaW5saW5lIHZvaWQgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpzZXRJZ25vcmVk
KEFYSUQsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24pIHsgfQogaW5saW5lIEFYT2JqZWN0
Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSA6IG1fZG9jdW1lbnQoZG9j
dW1lbnQpLCBtX25vdGlmaWNhdGlvblBvc3RUaW1lcih0aGlzLCAoVGltZXI8QVhPYmplY3RDYWNo
ZT46OlRpbWVyRmlyZWRGdW5jdGlvbikgbnVsbHB0cikgeyB9CiBpbmxpbmUgQVhPYmplY3RDYWNo
ZTo6fkFYT2JqZWN0Q2FjaGUoKSB7IH0KLWlubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKikgeyByZXR1cm4g
MDsgfQotaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChSZW5k
ZXJPYmplY3QqKSB7IHJldHVybiAwOyB9Ci1pbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhP
YmplY3RDYWNoZTo6Z2V0KE5vZGUqKSB7IHJldHVybiAwOyB9Ci1pbmxpbmUgQWNjZXNzaWJpbGl0
eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFdpZGdldCopIHsgcmV0dXJuIDA7IH0KLWlubGlu
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZSkgeyByZXR1cm4gMDsgfQotaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFY
T2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCopIHsgcmV0dXJuIDA7IH0KLWlu
bGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2Rl
KikgeyByZXR1cm4gMDsgfQotaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmdldE9yQ3JlYXRlKFdpZGdldCopIHsgcmV0dXJuIDA7IH0KLWlubGluZSBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290T2JqZWN0KCkgeyByZXR1cm4gMDsgfQotaW5s
aW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OnJvb3RPYmplY3RGb3JGcmFt
ZShGcmFtZSopIHsgcmV0dXJuIDA7IH0KLWlubGluZSBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpy
b290QVhFZGl0YWJsZUVsZW1lbnQoTm9kZSopIHsgcmV0dXJuIDA7IH0KK2lubGluZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25z
dCBQYWdlKikgeyByZXR1cm4gbnVsbHB0cjsgfQoraW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFYT2JqZWN0Q2FjaGU6OmdldChSZW5kZXJPYmplY3QqKSB7IHJldHVybiBudWxscHRyOyB9Citp
bmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KE5vZGUqKSB7IHJl
dHVybiBudWxscHRyOyB9CitpbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0KFdpZGdldCopIHsgcmV0dXJuIG51bGxwdHI7IH0KK2lubGluZSBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQoraW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCopIHsgcmV0dXJuIG51bGxwdHI7IH0KK2lubGlu
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKikg
eyByZXR1cm4gbnVsbHB0cjsgfQoraW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0
Q2FjaGU6OmdldE9yQ3JlYXRlKFdpZGdldCopIHsgcmV0dXJuIG51bGxwdHI7IH0KK2lubGluZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290T2JqZWN0KCkgeyByZXR1cm4g
bnVsbHB0cjsgfQoraW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OnJv
b3RPYmplY3RGb3JGcmFtZShGcmFtZSopIHsgcmV0dXJuIG51bGxwdHI7IH0KK2lubGluZSBFbGVt
ZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQoTm9kZSopIHsgcmV0dXJu
IG51bGxwdHI7IH0KIGlubGluZSBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcm
KSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RhcnRDYWNo
aW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygpIHsgfQogaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMo
KSB7IH0KIGlubGluZSBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqKSB7IHJldHVybiB0cnVl
OyB9Ci1pbmxpbmUgY29uc3QgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVF
bGVtZW50KGNvbnN0IE5vZGUqKSB7IHJldHVybiAwOyB9CitpbmxpbmUgY29uc3QgRWxlbWVudCog
QVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50KGNvbnN0IE5vZGUqKSB7IHJldHVy
biBudWxscHRyOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFj
Y2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoZWNr
ZWRTdGF0ZUNoYW5nZWQoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hp
bGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCopIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3cuY3BwCmluZGV4IGMzZmUwZGRkZWYxMWE5MGE1OWFkMWYzODYxODJlMmUxZWVmMWNmMGYuLjlk
ZmEwYmU0MDYxOThlZmM5YTdiMjQ2Y2Y3Mzg3MTIzNWZjYjE3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHAKQEAgLTkxLDE5ICs5MSwxOSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3c6OmRpc2Nsb3NlZEJ5Um93KCkgY29uc3QKICAgICAvLyB0aGF0IGlzIGFyaWEt
bGV2ZWwgc3VidHJhY3QgMSBmcm9tIHRoaXMgcm93LgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50IHx8ICFw
YXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICAvLyBJZiB0aGUgbGV2ZWwgaXMgMSBvciBsZXNz
LCB0aGFuIG5vdGhpbmcgZGlzY2xvc2VzIHRoaXMgcm93LgogICAgIHVuc2lnbmVkIGxldmVsID0g
aGllcmFyY2hpY2FsTGV2ZWwoKTsKICAgICBpZiAobGV2ZWwgPD0gMSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIFNlYXJjaCBmb3IgdGhl
IHByZXZpb3VzIHJvdyB0aGF0IG1hdGNoZXMgdGhlIGNvcnJlY3QgbGV2ZWwuCiAgICAgaW50IGlu
ZGV4ID0gcm93SW5kZXgoKTsKICAgICBhdXRvJiBhbGxSb3dzID0gdG9BY2Nlc3NpYmlsaXR5VGFi
bGUocGFyZW50KS0+cm93cygpOwogICAgIGludCByb3dDb3VudCA9IGFsbFJvd3Muc2l6ZSgpOwog
ICAgIGlmIChpbmRleCA+PSByb3dDb3VudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAogICAgIGZvciAoaW50IGsgPSBpbmRleCAtIDE7IGsgPj0gMDsg
LS1rKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IGFsbFJvd3Nba10uZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAppbmRleCA0YWYwY2NmYjZkZDYzMTVmNTZmZjg0Nzc5NDBm
NTQwYjhlYjcyODJhLi5hYmMwMGRiYTM4NDljNjgxM2U2M2JlNWFmNDZmYTliOTc1YTllODA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluay5jcHAKQEAgLTQwLDggKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
azo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaygpCi0gICAgOiBtX2FyZWFFbGVtZW50KDApCi0g
ICAgLCBtX21hcEVsZW1lbnQoMCkKKyAgICA6IG1fYXJlYUVsZW1lbnQobnVsbHB0cikKKyAgICAs
IG1fbWFwRWxlbWVudChudWxscHRyKQogewogfQogCkBAIC02MCw3ICs2MCw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnBhcmVudE9iamVjdCgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBtX3BhcmVudDsKICAgICAKICAgICBpZiAoIW1fbWFwRWxlbWVu
dC5nZXQoKSB8fCAhbV9tYXBFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIG1fbWFwRWxlbWVudC0+
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1fbWFwRWxlbWVudC0+cmVu
ZGVyZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guY3BwCmluZGV4IDcwY2Y0MDdiMzZhOWFlMjRmNWQzY2VhYTBlYWY2
NWQwZDM3YmE1MjcuLjYyYjkzNGQ3ZDNiODU1NjNiYmZmNDVjZjc4NWU2ZTcyZDcyNzYxN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3guY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eUxpc3RCb3g6Omxpc3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUwKIHsK
ICAgICAvLyBza2lwIGhyIGVsZW1lbnRzCiAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQtPmhh
c1RhZ05hbWUoaHJUYWcpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9iamVjdCA9IG1fcmVu
ZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShMaXN0Qm94T3B0
aW9uUm9sZSk7CiAgICAgdG9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbihsaXN0Qm94T2JqZWN0
KS0+c2V0SFRNTEVsZW1lbnQoZWxlbWVudCk7CkBAIC0xNDksMTUgKzE0OSwxNSBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludAogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxlbWVudCBt
ZXRob2RzIGZvciByZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CiAgICAgLy8g
aWdub3JlIG9wdGdyb3VwIGVsZW1lbnRzLgogICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIE5vZGUqIG5vZGUg
PSBtX3JlbmRlcmVyLT5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0
ID0gYm91bmRpbmdCb3hSZWN0KCk7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlz
dEJveE9wdGlvbiA9IDA7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbiA9
IG51bGxwdHI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIExheW91dFJl
Y3QgcmVjdCA9IHRvUmVuZGVyTGlzdEJveChtX3JlbmRlcmVyKS0+aXRlbUJvdW5kaW5nQm94UmVj
dChwYXJlbnRSZWN0LmxvY2F0aW9uKCksIGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCBh
NTEzM2ZhN2Q0ZTc3Nzc4MGM1NmEzNzg2MjE0ZDg4ZGMwMDA2NjFkLi5iNzU5MWQ0MDBjMjZlMGRk
YTJiODY2NDU0MzFmYjM4YzA4Y2QzZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogICAgIAogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OkFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uKCkKLSAgICA6IG1fb3B0aW9uRWxlbWVudCgwKQorICAgIDogbV9vcHRpb25FbGVtZW50
KG51bGxwdHIpCiB7CiB9CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6cGFyZW50T2JqZWN0KCkgY29uc3QKIHsKICAg
ICBIVE1MU2VsZWN0RWxlbWVudCogcGFyZW50Tm9kZSA9IGxpc3RCb3hPcHRpb25QYXJlbnROb2Rl
KCk7CiAgICAgaWYgKCFwYXJlbnROb2RlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIG1fb3B0aW9uRWxlbWVudC0+ZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHBhcmVudE5vZGUpOwogfQpAQCAtMjAwLDcg
KzIwMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OnNldFNlbGVjdGVkKGJv
b2wgc2VsZWN0ZWQpCiBIVE1MU2VsZWN0RWxlbWVudCogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRp
b246Omxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3B0aW9u
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0
dXJuIHRvSFRNTE9wdGlvbkVsZW1lbnQobV9vcHRpb25FbGVtZW50KS0+b3duZXJTZWxlY3RFbGVt
ZW50KCk7CkBAIC0yMDgsNyArMjA4LDcgQEAgSFRNTFNlbGVjdEVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlMaXN0Qm94T3B0aW9uOjpsaXN0Qm94T3B0aW9uUGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgaWYg
KGlzSFRNTE9wdEdyb3VwRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
dG9IVE1MT3B0R3JvdXBFbGVtZW50KG1fb3B0aW9uRWxlbWVudCktPm93bmVyU2VsZWN0RWxlbWVu
dCgpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGludCBBY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlvbkluZGV4KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5jcHAKaW5kZXggNTcyMDkyZTA4ZjllM2E3NDEyNWNiZDM0ZDE5OWEyNmVlMzEx
ZDhhZi4uMWQ1MjE5ZDYzM2IwNWQ3NTZlMTQ4ZDc1Zjc0N2Q4NzEzMzg3YTNjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RP
cHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewog
ICAgIGlmICghZWxlbWVudCB8fCAhaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSB8fCAhZWxl
bWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoTWVudUxpc3RPcHRpb25Sb2xlKTsK
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QtPmlzTWVudUxpc3RP
cHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwCmluZGV4IGY0ODE1NjEyNTM4MmZhMDIwMWNmYTc3OTZm
ODkxNDg0NjE4NzhhNDguLjBkODA0Y2VjYjFkMjk5ZDUzMTUzZmRjZThhYjM5Y2U3ZDA5YTExNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1v
Y2tPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1vY2tPYmplY3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdDo6QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Qo
KQotICAgIDogbV9wYXJlbnQoMCkKKyAgICA6IG1fcGFyZW50KG51bGxwdHIpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tP
YmplY3QuaAppbmRleCA5ODVhMjE5ODJkN2ZiNjZmZWY4MWMyN2EzYzgyZDM4MGI0ZTk5MzMxLi5l
MDRmZDdmN2UwNzI5ZDRhMjJmYTljOWRmMTBlNGJmNjVjOTk4YzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCkBA
IC00NSw3ICs0NSw3IEBAIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX3Bh
cmVudDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIHBhcmVudCBvYmplY3QgY2xl
YXJzIGl0cyBjaGlsZHJlbi4KLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92
ZXJyaWRlIHsgbV9wYXJlbnQgPSAwOyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJl
bnQoKSBvdmVycmlkZSB7IG1fcGFyZW50ID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwCmluZGV4IDRhYzMyZDM4NTI0Yjk5MGRjMWExMmVkNGI3MjM1OGVkYzI0
OTVkMjcuLmIzNGZlOTZjNThkOWVmMWIwZTk0ZTAwOWRmMzQ1OTBmOTliNzhjNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSBkZXRhY2htZW50VHlwZSwKIHsK
ICAgICAvLyBBY2Nlc3NpYmlsaXR5T2JqZWN0IGNhbGxzIGNsZWFyQ2hpbGRyZW4uCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoKGRldGFjaG1lbnRUeXBlLCBjYWNoZSk7Ci0gICAgbV9u
b2RlID0gMDsKKyAgICBtX25vZGUgPSBudWxscHRyOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpjaGlsZHJlbkNoYW5nZWQoKQpAQCAtMTcwLDEyICsxNzAsMTIgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKQogQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmZpcnN0Q2hpbGQoKSBjb25z
dAogewogICAgIGlmICghbm9kZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgTm9kZSogZmlyc3RDaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGls
ZCgpOwogCiAgICAgaWYgKCFmaXJzdENoaWxkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoZmlyc3RDaGlsZCk7CiB9CkBAIC0xODMsMTEgKzE4MywxMSBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Zmlyc3RDaGlsZCgpIGNvbnN0CiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bGFzdENoaWxkKCkgY29u
c3QKIHsKICAgICBpZiAoIW5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIAogICAgIE5vZGUqIGxhc3RDaGlsZCA9IG5vZGUoKS0+bGFzdENoaWxk
KCk7CiAgICAgaWYgKCFsYXN0Q2hpbGQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShsYXN0Q2hpbGQpOwogfQpAQCAtMTk1LDExICsxOTUsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omxhc3RDaGlsZCgpIGNvbnN0CiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cHJldmlvdXNTaWJsaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoIW5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gbm9kZSgpLT5wcmV2aW91
c1NpYmxpbmcoKTsKICAgICBpZiAoIXByZXZpb3VzU2libGluZykKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUocHJldmlvdXNTaWJsaW5nKTsKIH0KQEAgLTIwNywxMSArMjA3LDExIEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpwcmV2aW91c1NpYmxp
bmcoKSBjb25zdAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
Om5leHRTaWJsaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgTm9kZSogbmV4dFNpYmxpbmcgPSBu
b2RlKCktPm5leHRTaWJsaW5nKCk7CiAgICAgaWYgKCFuZXh0U2libGluZykKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUobmV4dFNpYmxpbmcpOwogfQpAQCAtMjI0LDcgKzIyNCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpwYXJlbnRPYmplY3RJ
ZkV4aXN0cygpIGNvbnN0CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6cGFyZW50T2JqZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgTm9kZSogcGFyZW50T2Jq
ID0gbm9kZSgpLT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnRPYmopCkBAIC0yMzMsNyAr
MjMzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnBh
cmVudE9iamVjdCgpIGNvbnN0CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmpl
Y3RDYWNoZSgpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKHBhcmVudE9iaik7
CiAgICAgCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIExheW91dFJl
Y3QgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKQEAgLTI2OSw3
ICsyNjksNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZXROb2RlKE5vZGUqIG5v
ZGUpCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRvY3VtZW50KCkgY29uc3QK
IHsKICAgICBpZiAoIW5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiAmbm9kZSgpLT5kb2N1bWVudCgpOwogfQogCkBAIC05NjEsNyAr
OTYxLDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFuY2hvckVsZW1lbnQo
KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKIApAQCAtOTcyLDcgKzk3Miw3IEBA
IEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QK
ICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyBib29sIGlzTm9kZUFjdGlvbkVs
ZW1lbnQoTm9kZSogbm9kZSkKQEAgLTk5MCw3ICs5OTAsNyBAQCBzdGF0aWMgYm9vbCBpc05vZGVB
Y3Rpb25FbGVtZW50KE5vZGUqIG5vZGUpCiBzdGF0aWMgRWxlbWVudCogbmF0aXZlQWN0aW9uRWxl
bWVudChOb2RlKiBzdGFydCkKIHsKICAgICBpZiAoIXN0YXJ0KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gRG8gYSBkZWVwLWRpdmUgdG8g
c2VlIGlmIGFueSBub2RlcyBzaG91bGQgYmUgdXNlZCBhcyB0aGUgYWN0aW9uIGVsZW1lbnQuCiAg
ICAgLy8gV2UgaGF2ZSB0byBsb29rIGF0IE5vZGVzLCBzaW5jZSB0aGlzIG1ldGhvZCBzaG91bGQg
b25seSBiZSBjYWxsZWQgb24gb2JqZWN0cyB0aGF0IGRvIG5vdCBoYXZlIGNoaWxkcmVuIChsaWtl
IGJ1dHRvbnMpLgpAQCAtMTAwMywxNCArMTAwMywxNCBAQCBzdGF0aWMgRWxlbWVudCogbmF0aXZl
QWN0aW9uRWxlbWVudChOb2RlKiBzdGFydCkKICAgICAgICAgaWYgKEVsZW1lbnQqIHN1YkNoaWxk
ID0gbmF0aXZlQWN0aW9uRWxlbWVudChjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gc3ViQ2hp
bGQ7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAog
RWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjdGlvbkVsZW1lbnQoKSBjb25zdAog
ewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoaXNOb2RlQWN0
aW9uRWxlbWVudChub2RlKSkKICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKQEAgLTEw
NDUsNyArMTA0NSw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1
dHRvbkxpc3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGCiB7CiAgICAgTm9kZSogbm9k
ZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBt
b3VzZSBidXR0b24gbGlzdGVuZXIKICAgICAvLyBGSVhNRTogRG8gdGhlIGNvbnRpbnVhdGlvbiBz
ZWFyY2ggbGlrZSBhbmNob3JFbGVtZW50IGRvZXMKQEAgLTEwNTksNyArMTA1OSw3IEBAIEVsZW1l
bnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVyKE1vdXNlQnV0
dG9uTGlzdGVuZXJSZXN1bHRGCiAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgfQog
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3QKQEAgLTEx
NjUsNyArMTE2NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0Zv
Y3VzYWJsZUVsZW1lbnQoKSBjb25zdAogSFRNTExhYmVsRWxlbWVudCogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAg
IGlmICghZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpIHx8ICF0b0hUTUxFbGVtZW50KGVsZW1lbnQp
LT5pc0xhYmVsYWJsZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1
dGUoKTsKICAgICBpZiAoIWlkLmlzRW1wdHkoKSkgewpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1lbnVGb3JNZW51QnV0
dG9uKCkgY29uc3QKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptZW51SXRlbUVs
ZW1lbnRGb3JNZW51KCkgY29uc3QKIHsKICAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBN
ZW51Um9sZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFSb2xlKCJtZW51aXRlbSIsIG5vZGUoKSk7ICAg
IAogfQpAQCAtMTI0MSw3ICsxMjQxLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6Om1lbnVCdXR0b25Gb3JNZW51KCkgY29uc3QKICAgICAgICAgaWYgKG1l
bnVJdGVtQVggJiYgbWVudUl0ZW1BWC0+aXNNZW51QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1
cm4gbWVudUl0ZW1BWDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnVzZXNBbHRUYWdGb3JUZXh0Q29t
cHV0YXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggOTU2NmIyNjYxOTkyMzAxYTEyZjJkZjcyMjI1
NWM2MTY1MDM4NmE0OS4uOTM4OTkyYWU4NGE2MDNhNGU5MmY2NjZiNDc0MWZlNzg1NWM5YzNlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCkBAIC04Myw3ICs4Myw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QoKQogICAgICwgbV9yb2xlKFVua25vd25Sb2xlKQogICAgICwgbV9sYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZShEZWZhdWx0QmVoYXZpb3IpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCAo
UExBVEZPUk0oRUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkpKQotICAgICwgbV93cmFwcGVyKDAp
CisgICAgLCBtX3dyYXBwZXIobnVsbHB0cikKICNlbmRpZgogewogfQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZSBkZXRhY2htZW50VHlwZSwgQVhPCiAgICAgY2xlYXJDaGlsZHJlbigpOwogCiAjaWYg
SEFWRShBQ0NFU1NJQklMSVRZKQotICAgIHNldFdyYXBwZXIoMCk7CisgICAgc2V0V3JhcHBlcihu
dWxscHRyKTsKICNlbmRpZgogfQogCkBAIC0zODAsNyArMzgwLDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3QK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0QWNjZXNzaWJs
ZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICgh
Y2FjaGUpCkBAIC0zOTQsNyArMzk0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eU9iamVjdDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm8KICAgICAg
ICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihub2RlKTsK
IAogICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGFjY2Vzc2libGVPYmplY3QgPSBjYWNoZS0+Z2V0
T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSk7CiAgICAgfQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWEqIGNyaXRlCiAgICAgLy8gVGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUg
b3V0ZXIgbG9vcCB3aWxsIGV4YW1pbmUgdGhlIGNoaWxkcmVuIG9mIHRoZSBzdGFydCBvYmplY3Qg
Zm9yIG1hdGNoZXMuIEhvd2V2ZXIsIHdoZW4KICAgICAvLyBpdGVyYXRpbmcgYmFja3dhcmRzLCB0
aGUgc3RhcnQgb2JqZWN0IGNoaWxkcmVuIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCwgc28gdGhl
IGxvb3AgaXMgc2tpcHBlZCBhaGVhZC4gV2UgbWFrZSBhbgogICAgIC8vIGV4Y2VwdGlvbiB3aGVu
IG5vIHN0YXJ0IG9iamVjdCB3YXMgc3BlY2lmaWVkIGJlY2F1c2Ugd2Ugd2FudCB0byBzZWFyY2gg
ZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIHNlYXJjaCBkaXJlY3Rpb24uCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcHJldmlvdXNPYmplY3QgPSAwOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHByZXZpb3VzT2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoIWlzRm9yd2FyZCAmJiBzdGFydE9i
amVjdCAhPSB0aGlzKSB7CiAgICAgICAgIHByZXZpb3VzT2JqZWN0ID0gc3RhcnRPYmplY3Q7CiAg
ICAgICAgIHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgp
OwpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgc3RhdGljIFJlbmRlckxpc3RJdGVtKiByZW5kZXJMaXN0
SXRlbUNvbnRhaW5lckZvck5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKHJlbmRlcmVyICYm
IHJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJMaXN0
SXRlbShyZW5kZXJlcik7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogICAgIAogLy8gUmV0dXJucyB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggYSBsaXN0IG1h
cmtlciBpZiB0aGlzIG5vZGUgaXMgY29udGFpbmVkIHdpdGhpbiBhIGxpc3QgaXRlbS4KQEAgLTEz
MjYsMTEgKzEzMjYsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmwKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0CiB7CiAgICAgaWYgKHZp
c2libGVQb3MuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIFJlbmRlck9iamVjdCogb2JqID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVu
dCgpLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFvYmopCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBvYmotPmRv
Y3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvYmopOwogfQpAQCAtMTQ1NCw3
ICsxNDU0LDcgQEAgRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCkgY29u
c3QKIHsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50RnJhbWVWaWV3KCk7CiAg
ICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50KCk7CiB9
CkBAIC0xNDYzLDcgKzE0NjMsNyBAQCBQYWdlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYWdlKCkg
Y29uc3QKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKTsKIH0KIApAQCAtMTQ3NCw3ICsxNDc0LDcg
QEAgRnJhbWVWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudEZyYW1lVmlldygpIGNv
bnN0CiAgICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0KCk7CiAgICAgICAgIAog
ICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOwogfQpAQCAtMTUw
OSwxNiArMTUwOSwxNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphbmNob3JFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogewogICAgIFJlbmRlck9iamVjdCog
b2JqID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBheE9iaiA9IG9iai0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKG9iaik7CiAgICAgRWxlbWVudCogYW5jaG9yID0gYXhPYmotPmFuY2hvckVsZW1lbnQoKTsK
ICAgICBpZiAoIWFuY2hvcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIFJlbmRlck9iamVjdCogYW5jaG9yUmVuZGVyZXIgPSBhbmNob3ItPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFhbmNob3JSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiBhbmNob3JSZW5kZXJlci0+
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFuY2hvclJlbmRlcmVyKTsK
IH0KQEAgLTE1MjYsMTEgKzE1MjYsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eU9iamVjdDo6YW5jaG9yRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZShOb2Rl
KiBub2RlKQogewogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbm9k
ZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGF4T2JqZWN0ID0gcmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUocmVuZGVyT2JqZWN0KTsKICAgICBmb3IgKDsgYXhPYmplY3QgJiYgYXhPYmplY3Qt
PnJvbGVWYWx1ZSgpICE9IEhlYWRpbmdSb2xlOyBheE9iamVjdCA9IGF4T2JqZWN0LT5wYXJlbnRP
YmplY3QoKSkgeyB9CkBAIC0xNzI5LDcgKzE3MjksNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdAogICAg
ICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkgJiYgY2hpbGQtPnJlbmRlcmVyKCktPmlzQW5vbnlt
b3VzQmxvY2soKSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKICAgICB9Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFj
Y2Vzc2liaWxpdHlSb2xlLCBDYXNlRm9sZGluZ0hhc2g+IEFSSUFSb2xlTWFwOwpAQCAtMTg3Niw3
ICsxODc2LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudCgpIGNvbnN0
CiAgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAobm9kZSAmJiBub2RlLT5p
c0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0CkBAIC0xOTY0LDExICsx
OTY0LDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3Vz
ZWRVSUVsZW1lbnQoKSBjb25zdAogewogICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwog
ICAgIGlmICghZG9jKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgCiAgICAgUGFnZSogcGFnZSA9IGRvYy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVy
biBBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShwYWdlKTsKIH0KQEAgLTIy
MTEsNyArMjIxMSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1CiAgICAgLy8gU2VhcmNoIHVw
IHRoZSBwYXJlbnQgY2hhaW4gdW50aWwgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQncyBzY3Jv
bGxhYmxlLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbFBhcmVudCA9IHBhcmVudE9i
amVjdCgpOwogICAgIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYTsKLSAgICBmb3IgKHNj
cm9sbGFibGVBcmVhID0gMDsKKyAgICBmb3IgKHNjcm9sbGFibGVBcmVhID0gbnVsbHB0cjsKICAg
ICAgICAgIHNjcm9sbFBhcmVudCAmJiAhKHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsUGFyZW50LT5n
ZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpKTsKICAgICAgICAgIHNjcm9sbFBhcmVudCA9
IHNjcm9sbFBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsgfQogICAgIGlmICghc2Nyb2xsYWJsZUFy
ZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oCmluZGV4IDVjMmIxOWQ4MWQ5ZmQxOTYwZjY2NDM1ODEwYThkMmQ5MzM2YmRkMjMuLjZm
NDY4NDgwZjQ0ZjlmMDA2MTNhMjJlN2UwNTcwZTEzNTVmMmUzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01NTYsOCAr
NTU2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgRWxlbWVudCogZWxlbWVudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9u
KCkgY29uc3Q7CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29u
c3Q7CkBAIC01NzEsOCArNTcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFs
dWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1p
blZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9CiAgICAgdmlydHVhbCBmbG9h
dCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSB7IHJldHVybiAwOyB9
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSB7IHJl
dHVybiAwOyB9ICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRS
YWRpb0J1dHRvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0
dWFsIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGRv
dWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
c3RhdGljIGJvb2wgaXNBUklBQ29udHJvbChBY2Nlc3NpYmlsaXR5Um9sZSk7CkBAIC02MTAsMTkg
KzYxMCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFSSUFEcm9wRWZm
ZWN0cyhWZWN0b3I8U3RyaW5nPiYpIHsgfQogICAgIAogICAgIC8vIENhbGxlZCBvbiB0aGUgcm9v
dCBBWCBvYmplY3QgdG8gcmV0dXJuIHRoZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICAvLyBDYWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUg
cmVuZGVyIHRyZWUgZGV0ZXJtaW5lcyB3aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC4KICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiAwOyB9
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxp
bmcoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxp
bmcoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMo
KSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0
aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29u
c3QgTm9kZSopOwogICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2Vh
cmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNjMyLDEzICs2MzIsMTMgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNl
bGVjdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlbGVjdFRleHQoQWNjZXNzaWJpbGl0
eVNlbGVjdFRleHRDcml0ZXJpYSopOwogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25k
aW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJv
bEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNj
cm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29u
c3QgeyByZXR1cm4gVW5rbm93blJvbGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRp
b25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02ODMsOCAr
NjgzLDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
bmNob3JFbGVtZW50Rm9yTm9kZShOb2RlKik7CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGhlYWRpbmdFbGVtZW50Rm9yTm9kZShOb2RlKik7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBh
bmNob3JFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgRWxlbWVudCog
YWN0aW9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQq
IGFuY2hvckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBF
bGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRS
ZWN0KCk7IH0KICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYm91bmRpbmdCb3hSZWN0KCkpOyB9CiAgICAg
dmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAwOwpAQCAtNzA2LDggKzcw
Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhY2Nl
c3NLZXkoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbTsgfQogICAgIGNvbnN0IFN0cmluZyYgYWN0
aW9uVmVyYigpIGNvbnN0OwotICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1l
bnRWaWV3KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIFBhZ2UqIHBhZ2UoKSBjb25z
dDsKICAgICB2aXJ0dWFsIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
RnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0OwpAQCAtNzU4LDcgKzc1OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9jdXNB
Y3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCB7IHJldHVybiAwOyB9
ICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZl
RGVzY2VuZGFudENoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXJpYUV4cGFu
ZGVkQ2hhbmdlZCgpIHsgfQogICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCopIGNvbnN0OwpAQCAtODkxLDIxICs4OTEsMjEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICAvLyBSb290IGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgeyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJv
b3RJbmRleE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICAvLyBVbmRlciBv
dmVyIGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoVW5k
ZXJPYmplY3QoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBtYXRoT3Zlck9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogCiAgICAgLy8gRnJhY3Rpb24gY29tcG9uZW50cy4KLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSB7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2Jq
ZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgLy8g
U3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSB7IHJldHVybiAwOyB9Ci0g
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoQmFzZU9i
amVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgCiAgICAgLy8gRmVuY2VkIGNvbXBvbmVudHMuCiAgICAgdmlydHVhbCBT
dHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpA
QCAtOTY5LDcgKzk2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBJ
ZiB0aGlzIG9iamVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJuIGl0cyBTY3JvbGxhYmxlQXJlYS4K
LSAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRT
Y3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCB7IH0KIAogICAg
IHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgc2l6ZV90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVBy
b2dyZXNzSW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAppbmRleCA3ODFiMjkzYzk4NDMzMjA0OWI5MGQ2
NmQ5MWJiMTI1ZjE2YTMxYzUzLi5iNTJiZjc4NTkyYmU0NmQ0M2I1YmI4NTVjZmI4Nzk5NmI0ODEz
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAg
ZmxvYXQgQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yOjptaW5WYWx1ZUZvclJhbmdlKCkg
Y29uc3QKIEhUTUxQcm9ncmVzc0VsZW1lbnQqIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRv
cjo6cHJvZ3Jlc3NFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXItPmlzUHJv
Z3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIHJldHVybiB0b1JlbmRlclByb2dyZXNzKG1fcmVuZGVyZXIpLT5wcm9ncmVzc0VsZW1l
bnQoKTsKIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OnByb2dyZXNzRWxlbWVudCgpIGNvbnN0CiBIVE1MTWV0
ZXJFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6Om1ldGVyRWxlbWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyLT5pc01ldGVyKCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiB0b1JlbmRlck1ldGVy
KG1fcmVuZGVyZXIpLT5tZXRlckVsZW1lbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDVmZTlkM2QxZWIxODkzZjA4MjU5OTViM2IzODQ5Y2YzYzExNGZlMjEuLjY3ZTA1YWE3NTUzNTEw
YzczNzY2NjQ4M2U1MmUxYjRmZTcyMzhhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTQz
LDEzICsxNDMsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRhY2goQWNj
ZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXAKICAgICBpZiAobV9yZW5kZXJl
cikKICAgICAgICAgbV9yZW5kZXJlci0+c2V0SGFzQVhPYmplY3QoZmFsc2UpOwogI2VuZGlmCi0g
ICAgbV9yZW5kZXJlciA9IDA7CisgICAgbV9yZW5kZXJlciA9IG51bGxwdHI7CiB9CiAKIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJCb3hNb2Rl
bE9iamVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5p
c0JveE1vZGVsT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX3JlbmRlcmVyKTsKIH0K
IApAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBsYXN0Q2hp
bGRDb25zaWRlcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlCiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpmaXJzdENoaWxkKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSBmaXJzdENo
aWxkQ29uc2lkZXJpbmdDb250aW51YXRpb24obV9yZW5kZXJlcik7CiAKQEAgLTI0Miw3ICsyNDIs
NyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpmaXJz
dENoaWxkKCkgY29uc3QKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Omxhc3RDaGlsZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZW5kZXJPYmplY3Qq
IGxhc3RDaGlsZCA9IGxhc3RDaGlsZENvbnNpZGVyaW5nQ29udGludWF0aW9uKG1fcmVuZGVyZXIp
OwogCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJJbmxpbmUqIHN0YXJ0
T2ZDb250aW51YXRpb25zKFJlbmRlck9iamVjdCogcikKICAgICBpZiAoci0+aXNSZW5kZXJCbG9j
aygpICYmIHRvUmVuZGVyQmxvY2sociktPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIHRvUmVuZGVySW5saW5lKHRvUmVuZGVyQmxvY2sociktPmlubGluZUVsZW1l
bnRDb250aW51YXRpb24oKS0+ZWxlbWVudCgpLT5yZW5kZXJlcigpKTsKIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCog
ZW5kT2ZDb250aW51YXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0yODgsOCArMjg4
LDggQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGVuZE9mQ29udGludWF0aW9ucyhSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGNoaWxkQmVm
b3JlQ29uc2lkZXJpbmdDb250aW51YXRpb25zKFJlbmRlcklubGluZSogciwgUmVuZGVyT2JqZWN0
KiBjaGlsZCkKIHsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3VyQ29udGFpbmVyID0gcjsK
LSAgICBSZW5kZXJPYmplY3QqIGN1ciA9IDA7Ci0gICAgUmVuZGVyT2JqZWN0KiBwcmV2ID0gMDsK
KyAgICBSZW5kZXJPYmplY3QqIGN1ciA9IG51bGxwdHI7CisgICAgUmVuZGVyT2JqZWN0KiBwcmV2
ID0gbnVsbHB0cjsKIAogICAgIHdoaWxlIChjdXJDb250YWluZXIpIHsKICAgICAgICAgaWYgKGN1
ckNvbnRhaW5lci0+aXNSZW5kZXJJbmxpbmUoKSkgewpAQCAtMzEzLDcgKzMxMyw3IEBAIHN0YXRp
YyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBjaGlsZEJlZm9yZUNvbnNpZGVyaW5nQ29udGludWF0aW9u
cyhSZW5kZXJJbmxpbmUqIHIsCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgZmly
c3RDaGlsZElzSW5saW5lQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0z
MjUsOSArMzI1LDkgQEAgc3RhdGljIGlubGluZSBib29sIGZpcnN0Q2hpbGRJc0lubGluZUNvbnRp
bnVhdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cHJldmlvdXNTaWJsaW5nKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNTaWJsaW5nID0gMDsKKyAgICBSZW5kZXJP
YmplY3QqIHByZXZpb3VzU2libGluZyA9IG51bGxwdHI7CiAKICAgICAvLyBDYXNlIDE6IFRoZSBu
b2RlIGlzIGEgYmxvY2sgYW5kIGlzIGFuIGlubGluZSdzIGNvbnRpbnVhdGlvbi4gSW4gdGhhdCBj
YXNlLCB0aGUgaW5saW5lJ3MKICAgICAvLyBsYXN0IGNoaWxkIGlzIG91ciBwcmV2aW91cyBzaWJs
aW5nIChvciBmdXJ0aGVyIGJhY2sgaW4gdGhlIGNvbnRpbnVhdGlvbiBjaGFpbikKQEAgLTM1NCw3
ICszNTQsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpwcmV2aW91c1NpYmxpbmcoKSBjb25zdAogICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBjaGls
ZEJlZm9yZUNvbnNpZGVyaW5nQ29udGludWF0aW9ucyhzdGFydE9mQ29udHMsIG1fcmVuZGVyZXIt
PnBhcmVudCgpLT5maXJzdENoaWxkKCkpOwogCiAgICAgaWYgKCFwcmV2aW91c1NpYmxpbmcpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1
cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShwcmV2aW91c1NpYmxpbmcpOwogfQpAQCAt
MzY4LDkgKzM2OCw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBsYXN0Q2hpbGRIYXNDb250aW51YXRp
b24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om5leHRTaWJsaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcgPSAwOworICAgIFJlbmRlck9iamVjdCogbmV4dFNp
YmxpbmcgPSBudWxscHRyOwogCiAgICAgLy8gQ2FzZSAxOiBub2RlIGlzIGEgYmxvY2sgYW5kIGhh
cyBhbiBpbmxpbmUgY29udGludWF0aW9uLiBOZXh0IHNpYmxpbmcgaXMgdGhlIGlubGluZSBjb250
aW51YXRpb24ncwogICAgIC8vIGZpcnN0IGNoaWxkLgpAQCAtNDA5LDcgKzQwOSw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5leHRTaWJsaW5nKCkg
Y29uc3QKICAgICB9CiAKICAgICBpZiAoIW5leHRTaWJsaW5nKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUobmV4dFNpYmxpbmcpOwogfQpAQCAtNDIxLDIwICs0MjEsMjAgQEAgc3Rh
dGljIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0Q29udGludWF0aW9uKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgICAgIHJldHVybiB0b1JlbmRlcklubGluZShyZW5kZXJlciktPmNvbnRp
bnVhdGlvbigpOwogICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpKQogICAgICAgICBy
ZXR1cm4gdG9SZW5kZXJCbG9jayhyZW5kZXJlciktPmlubGluZUVsZW1lbnRDb250aW51YXRpb24o
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKIFJlbmRlck9i
amVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVuZGVyUGFyZW50T2JqZWN0KCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudCA9IG1fcmVuZGVyZXIt
PnBhcmVudCgpOwogCiAgICAgLy8gQ2FzZSAxOiBub2RlIGlzIGEgYmxvY2sgYW5kIGlzIGFuIGlu
bGluZSdzIGNvbnRpbnVhdGlvbi4gUGFyZW50CiAgICAgLy8gaXMgdGhlIHN0YXJ0IG9mIHRoZSBj
b250aW51YXRpb24gY2hhaW4uCiAgICAgUmVuZGVySW5saW5lKiBzdGFydE9mQ29udHMgPSBudWxs
cHRyOwotICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCA9IDA7CisgICAgUmVuZGVyT2JqZWN0
KiBmaXJzdENoaWxkID0gbnVsbHB0cjsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSZW5kZXJCbG9j
aygpICYmIChzdGFydE9mQ29udHMgPSBzdGFydE9mQ29udGludWF0aW9ucyhtX3JlbmRlcmVyKSkp
CiAgICAgICAgIHBhcmVudCA9IHN0YXJ0T2ZDb250czsKIApAQCAtNDgzLDcgKzQ4Myw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVj
dElmRXhpc3RzKCkgY29uc3QKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUJhclJvbGUpCiAgICAgICAgIHJldHVybiBheE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1fcmVuZGVyZXItPnBhcmVudCgpKTsKQEAgLTUwNyw3
ICs1MDcsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpwYXJlbnRPYmplY3QoKSBjb25zdAogICAgIGlmIChpc1dlYkFyZWEoKSkKICAgICAgICAgcmV0
dXJuIGNhY2hlLT5nZXRPckNyZWF0ZSgmbV9yZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpKTsK
ICAgICAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50KCkgY29uc3QKQEAgLTU2MCw3
ICs1NjAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKCkg
Y29uc3QKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFuY2hvckVsZW1lbnQo
KSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhP
YmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCkBAIC01ODksNyArNTg5LDcgQEAgRWxlbWVu
dCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAg
ICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmhlbHBUZXh0KCkgY29uc3QKQEAgLTY1NSw3ICs2NTUsNyBAQCBTdHJpbmcgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVu
ZGVyRWxlbWVudAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1RleHQoKSB8fCBtb2RlLmNoaWxkcmVu
SW5jbHVzaW9uID09IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZTo6VGV4dFVuZGVy
RWxlbWVudE1vZGVJbmNsdWRlQWxsQ2hpbGRyZW4pIHsKICAgICAgICAgLy8gSWYgcG9zc2libGUs
IHVzZSBhIHRleHQgaXRlcmF0b3IgdG8gZ2V0IHRoZSB0ZXh0LCBzbyB0aGF0IHdoaXRlc3BhY2UK
ICAgICAgICAgLy8gaXMgaGFuZGxlZCBjb25zaXN0ZW50bHkuCi0gICAgICAgIERvY3VtZW50KiBu
b2RlRG9jdW1lbnQgPSAwOworICAgICAgICBEb2N1bWVudCogbm9kZURvY3VtZW50ID0gbnVsbHB0
cjsKICAgICAgICAgUmVmUHRyPFJhbmdlPiB0ZXh0UmFuZ2U7CiAgICAgICAgIGlmIChOb2RlKiBu
b2RlID0gbV9yZW5kZXJlci0+bm9kZSgpKSB7CiAgICAgICAgICAgICBub2RlRG9jdW1lbnQgPSAm
bm9kZS0+ZG9jdW1lbnQoKTsKQEAgLTcxMiw3ICs3MTIsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudAogTm9kZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bm9kZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUmVuZGVyVmlldygpKQogICAgICAgICByZXR1
cm4gJm1fcmVuZGVyZXItPmRvY3VtZW50KCk7CiAgICAgcmV0dXJuIG1fcmVuZGVyZXItPm5vZGUo
KTsKQEAgLTc3NCwxMSArNzc0LDExIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiBIVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAogewogICAgIGlmICghbV9y
ZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gdGhlIGNvbnRyb2wgZWxlbWVudCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgcGFydCBv
ZiB0aGUgbGFiZWwKICAgICBpZiAoaXNDb250cm9sKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICAvLyBmaW5kIGlmIHRoaXMgaGFzIGEgcGFy
ZW50IHRoYXQgaXMgYSBsYWJlbAogICAgIGZvciAoTm9kZSogcGFyZW50Tm9kZSA9IG1fcmVuZGVy
ZXItPm5vZGUoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUtPnBhcmVudE5v
ZGUoKSkgewpAQCAtNzg2LDcgKzc4Niw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0CiAgICAgICAgICAg
ICByZXR1cm4gdG9IVE1MTGFiZWxFbGVtZW50KHBhcmVudE5vZGUpOwogICAgIH0KICAgICAKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gVGhlIGJvdW5kaW5nQm94
IGZvciBlbGVtZW50cyB3aXRoaW4gdGhlIHJlbW90ZSBTVkcgZWxlbWVudCBuZWVkcyB0byBiZSBv
ZmZzZXQgYnkgaXRzIHBvc2l0aW9uCkBAIC05MTEsMjYgKzkxMSwyNiBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkg
Y29uc3QKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOwogICAgIGlm
ICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIAogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1cHBvcnQgQVJJQSBsaW5rcyBhcyBp
bnRlcm5hbCBsaW5rIGVsZW1lbnRzCiAgICAgaWYgKCFpc0hUTUxBbmNob3JFbGVtZW50KGVsZW1l
bnQpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSFRN
TEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IHRvSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCk7CiAg
ICAgCiAgICAgVVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKICAgICBTdHJpbmcgZnJhZ21l
bnRJZGVudGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJh
Z21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAogICAgIC8vIGNoZWNrIGlmIFVSTCBpcyB0aGUgc2FtZSBhcyBj
dXJyZW50IFVSTAogICAgIFVSTCBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCku
dXJsKCk7CiAgICAgaWYgKCFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGRvY3VtZW50
VVJMLCBsaW5rVVJMKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAogICAgIE5vZGUqIGxpbmtlZE5vZGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZp
bmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKTsKICAgICBpZiAoIWxpbmtlZE5vZGUpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICAvLyBUaGUg
ZWxlbWVudCB3ZSBmaW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSwgc28gZmluZCB0aGUgZmlyc3Qg
YWNjZXNzaWJsZSBvYmplY3QuCiAgICAgcmV0dXJuIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21O
b2RlKGxpbmtlZE5vZGUpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdAogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGVVSUVsZW1lbnQoKSBjb25z
dAogewogICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAogICAgIC8vIGlmIGlzRmllbGRzZXQgaXMgdHJ1ZSwgdGhlIHJl
bmRlcmVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBSZW5kZXJGaWVsZHNldAogICAgIGlmIChpc0Zp
ZWxkc2V0KCkpCkBAIC0xMTA1LDEyICsxMTA1LDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxlVUlFbGVtZW50KCkgY29uc3QKICAgICAKICAg
ICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAgIGlmICghbm9kZSB8fCAhbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWwgPSBsYWJlbEZvckVsZW1lbnQodG9F
bGVtZW50KG5vZGUpKTsKICAgICBpZiAobGFiZWwgJiYgbGFiZWwtPnJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGxhYmVsKTsKIAotICAgIHJl
dHVybiAwOyAgIAorICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc0FsbG93ZWRDaGlsZE9mVHJlZSgpIGNvbnN0CkBAIC0xNjM4LDcg
KzE2MzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEZvY3VzZWQoYm9v
bCBvbikKICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwogCiAgICAgaWYgKCFvbiB8fCAh
bm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIGRvY3VtZW50LT5zZXRG
b2N1c2VkRWxlbWVudCgwKTsKKyAgICAgICAgZG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50KG51
bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjQ2LDcgKzE2NDYsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEZvY3VzZWQoYm9vbCBvbikKICAgICAv
LyBUaGF0IGlzIGEgcHJvYmxlbSB3aGVuIGZvY3VzIGlzIHJlbW92ZWQgZnJvbSB0aGUgd2VicGFn
ZSB0byBjaHJvbWUsIGFuZCB0aGVuIHJldHVybnMuCiAgICAgLy8gSW4gdGhlc2UgY2FzZXMsIHdl
IG5lZWQgdG8gZG8gd2hhdCBrZXlib2FyZCBhbmQgbW91c2UgZm9jdXMgZG8sIHdoaWNoIGlzIHJl
c2V0IGZvY3VzIGZpcnN0LgogICAgIGlmIChkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9PSBu
b2RlKQotICAgICAgICBkb2N1bWVudC0+c2V0Rm9jdXNlZEVsZW1lbnQoMCk7CisgICAgICAgIGRv
Y3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKIAogICAgIHRvRWxlbWVudChub2Rl
KS0+Zm9jdXMoKTsKIH0KQEAgLTE3MDUsNyArMTcwNSw3IEBAIFJlbmRlclZpZXcqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRvcFJlbmRlcmVyKCkgY29uc3QKIHsKICAgICBEb2N1bWVudCog
dG9wRG9jID0gdG9wRG9jdW1lbnQoKTsKICAgICBpZiAoIXRvcERvYykKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiB0b3BEb2MtPnJl
bmRlclZpZXcoKTsKIH0KQEAgLTE3MTMsMTQgKzE3MTMsMTQgQEAgUmVuZGVyVmlldyogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dG9wUmVuZGVyZXIoKSBjb25zdAogRG9jdW1lbnQqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gJm1fcmVuZGVyZXItPmRvY3VtZW50KCk7CiB9CiAKIFdpZGdldCogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6d2lkZ2V0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXItPmlz
Qm94TW9kZWxPYmplY3QoKSB8fCAhdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX3JlbmRlcmVyKS0+
aXNXaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiB0b1JlbmRlcldpZGdldChtX3JlbmRlcmVyKS0+d2lkZ2V0KCk7CiB9CiAKQEAg
LTE3MjgsMTEgKzE3MjgsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKEgKIHsKICAgICAvLyBm
aW5kIGFuIGltYWdlIHRoYXQgaXMgdXNpbmcgdGhpcyBtYXAKICAgICBpZiAoIW1hcCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSFRNTEltYWdlRWxl
bWVudCogaW1hZ2VFbGVtZW50ID0gbWFwLT5pbWFnZUVsZW1lbnQoKTsKICAgICBpZiAoIWltYWdl
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKICAgICAg
ICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShpbWFnZUVsZW1lbnQpOwpAQCAtMTc2OSw3ICsx
NzY5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bWVudExpbmtz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmUKIEZyYW1lVmlldyogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCAKIHsgCiAgICAgaWYgKCFt
X3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsgCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gdGhpcyBpcyB0aGUgUmVuZGVyT2JqZWN0J3MgRG9jdW1lbnQncyBGcmFtZSdzIEZy
YW1lVmlldyAKICAgICByZXR1cm4gJm1fcmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKTsKQEAg
LTE3NzgsNyArMTc3OCw3IEBAIEZyYW1lVmlldyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdAogV2lkZ2V0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0F0dGFj
aG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiB0b1JlbmRlcldpZGdldChtX3JlbmRlcmVyKS0+d2lkZ2V0KCk7CiB9CiAKQEAgLTE4
ODYsNyArMTg4Niw3IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbmRleEZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvCiBFbGVtZW50KiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpyb290RWRpdGFibGVFbGVtZW50Rm9yUG9zaXRpb24oY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogewogICAgIC8vIEZpbmQgdGhlIHJvb3QgZWRpdGFi
bGUgb3IgcHNldWRvLWVkaXRhYmxlIChpLmUuIGhhdmluZyBhbiBlZGl0YWJsZSBBUklBIHJvbGUp
IGVsZW1lbnQuCi0gICAgRWxlbWVudCogcmVzdWx0ID0gMDsKKyAgICBFbGVtZW50KiByZXN1bHQg
PSBudWxscHRyOwogICAgIAogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBwb3Np
dGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKQEAgLTE5ODYsNyArMTk4Niw3IEBAIFZpc2li
bGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQ
b2ludChjb25zdCBJbnRQb2luCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSAmcmVuZGVyVmll
dy0+ZnJhbWVWaWV3KCk7CiAjZW5kaWYKIAotICAgIE5vZGUqIGlubmVyTm9kZSA9IDA7CisgICAg
Tm9kZSogaW5uZXJOb2RlID0gbnVsbHB0cjsKICAgICAKICAgICAvLyBsb2NhdGUgdGhlIG5vZGUg
Y29udGFpbmluZyB0aGUgcG9pbnQKICAgICBMYXlvdXRQb2ludCBwb2ludFJlc3VsdDsKQEAgLTIx
NDgsOSArMjE0OCw5IEBAIEludFJlY3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BWEJv
dW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nCiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRU
ZXN0KEhUTUxBcmVhRWxlbWVudCogYXJlYSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAog
ewogICAgIGlmICghYXJlYSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gMDsKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwogICAgIGZvciAoRWxlbWVudCogbWFwUGFy
ZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1hcFBhcmVudCA9IG1hcFBh
cmVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpc0hUTUxNYXBFbGVtZW50KG1h
cFBhcmVudCkpIHsKICAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJ
bWFnZU1hcCh0b0hUTUxNYXBFbGVtZW50KG1hcFBhcmVudCkpOwpAQCAtMjE1OCwyMSArMjE1OCwy
MSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTQogICAgICAgICB9CiAgICAgfQogICAgIGlmICgh
cGFyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4oKSkgewogICAg
ICAgICBpZiAoY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50
KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZSA9IHJlbW90ZVNWR1Jv
b3RFbGVtZW50KCk7CiAgICAgaWYgKCFyZW1vdGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBJbnRTaXplIG9mZnNldCA9IHBvaW50IC0gcm91
bmRlZEludFBvaW50KGJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBy
ZW1vdGUtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KG9mZnNldCkpOwpAQCAtMjE4OSw3
ICsyMTg5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnMKIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVy
ZXItPmhhc0xheWVyKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveChtX3JlbmRlcmVy
KS0+bGF5ZXIoKTsKICAgICAgCkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQbwogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQo
cG9pbnQpOwogICAgIGxheWVyLT5oaXRUZXN0KHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQpOwogICAg
IGlmICghaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVy
Tm9kZSgpLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7CiAKICAgICBpZiAoaXNIVE1M
QXJlYUVsZW1lbnQobm9kZSkpCkBAIC0yMjA4LDcgKzIyMDgsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQbwogICAgIAogICAgIFJlbmRlck9iamVjdCogb2JqID0gbm9kZS0+cmVuZGVyZXIoKTsK
ICAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlc3VsdCA9IG9iai0+ZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG9iaik7CiAgICAgcmVzdWx0LT51cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7CkBAIC0yMzQ5LDE1ICsyMzQ5LDE1IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtCiB7CiAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWxFbGVtZW50ID0gbGFi
ZWxFbGVtZW50Q29udGFpbmVyKCk7CiAgICAgaWYgKCFsYWJlbEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBIVE1MRWxlbWVudCog
Y29ycmVzcG9uZGluZ0NvbnRyb2wgPSBsYWJlbEVsZW1lbnQtPmNvbnRyb2woKTsKICAgICBpZiAo
IWNvcnJlc3BvbmRpbmdDb250cm9sKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbCBp
c24ndCBhIGRlc2NlbmRhbnQgb2YgdGhpcyBsYWJlbCB0aGF0J3MgaW4gdGhlIG1pZGRsZSBvZiBi
ZWluZyBkZXN0cm95ZWQuCiAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb250cm9sLT5yZW5kZXJlcigp
ICYmICFjb3JyZXNwb25kaW5nQ29udHJvbC0+cmVuZGVyZXIoKS0+cGFyZW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjb3JyZXNwb25kaW5nQ29udHJvbCk7ICAgICAKIH0K
QEAgLTIzNjUsMTIgKzIzNjUsMTIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW0KIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJl
bEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEFSSUE6IHNl
Y3Rpb24gMkEsIGJ1bGxldCAjMyBzYXlzIGlmIGFyaWEtbGFiZWxlZGJ5IG9yIGFyaWEtbGFiZWwg
YXBwZWFycywgaXQgc2hvdWxkCiAgICAgLy8gb3ZlcnJpZGUgdGhlICJsYWJlbCIgZWxlbWVudCBh
c3NvY2lhdGlvbi4KICAgICBpZiAoaGFzVGV4dEFsdGVybmF0aXZlKCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRl
cmVyLT5ub2RlKCk7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CkBA
IC0yMzc5LDcgKzIzNzksNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbQogICAgICAgICAgICAg
cmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobGFiZWwpOwogICAgIH0KIAotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNEZXNjZW5kYW50T2ZFbGVtZW50VHlw
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSBjb25zdApAQCAtMjY1OCw3ICsyNjU4LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFs
Um9sZSgpIGNvbnN0CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVk
TmFtZT4+IGxpc3RJdGVtUGFyZW50czsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxRdWFsaWZpZWROYW1lPj4gdGFibGVDZWxsUGFyZW50czsKIAotICAgIEhhc2hTZXQ8UXVhbGlm
aWVkTmFtZT4qIHBvc3NpYmxlUGFyZW50VGFnTmFtZXMgPSAwOworICAgIEhhc2hTZXQ8UXVhbGlm
aWVkTmFtZT4qIHBvc3NpYmxlUGFyZW50VGFnTmFtZXMgPSBudWxscHRyOwogICAgIHN3aXRjaCAo
cm9sZVZhbHVlKCkpIHsKICAgICBjYXNlIExpc3RJdGVtUm9sZToKICAgICBjYXNlIExpc3RNYXJr
ZXJSb2xlOgpAQCAtMjg0OSw3ICsyODQ5LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1NWR0ltYWdlKCkgY29uc3QKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCiB7CiAgICAgaWYgKEFjY2Vzc2liaWxpdHlTVkdSb290KiBy
b290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSkKLSAgICAgICAgcm9vdC0+c2V0UGFyZW50KDAp
OworICAgICAgICByb290LT5zZXRQYXJlbnQobnVsbHB0cik7CiB9CiAKIEFjY2Vzc2liaWxpdHlT
VkdSb290KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCgp
IGNvbnN0CkBAIC0yOTg4LDcgKzI5ODgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEhpZGRlbkNoaWxkcmVuKCkKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6
ZSgpKQogICAgICAgICAgICAgICAgICAgICBjaGlsZE9iamVjdCA9IGNoaWxkcmVuLmxhc3QoKS5n
ZXQoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkT2Jq
ZWN0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRPYmplY3QgPSBudWxscHRyOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY2hpbGRPYmplY3QpCkBAIC0zMjM1LDcgKzMy
MzUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEFjY2Vzc2libGVOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIE5vZGUqIGRvbU5vZGUgPSAwOworICAgIE5vZGUqIGRvbU5vZGUgPSBu
dWxscHRyOwogICAgIC8vIEZvciB3ZWIgYXJlYXMsIHNldCB0aGUgYXJpYS1sYWJlbCBvbiB0aGUg
SFRNTCBlbGVtZW50LgogICAgIGlmIChpc1dlYkFyZWEoKSkKICAgICAgICAgZG9tTm9kZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCk7CkBAIC0zNDUwLDE0ICszNDUw
LDE0IEBAIFNjcm9sbGFibGVBcmVhKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3Jv
bGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIHBhcmVudCBp
cyBhIHNjcm9sbCB2aWV3LCB0aGVuIHRoaXMgb2JqZWN0IGlzbid0IHJlYWxseSBzY3JvbGxhYmxl
LCB0aGUgcGFyZW50IFNjcm9sbFZpZXcgc2hvdWxkIGhhbmRsZSB0aGUgc2Nyb2xsaW5nLgogICAg
IGlmIChwYXJlbnRPYmplY3QoKSAmJiBwYXJlbnRPYmplY3QoKS0+aXNBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzQm94KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlckJveCogYm94ID0g
dG9SZW5kZXJCb3gobV9yZW5kZXJlcik7CiAgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gYm94LT5sYXllcigpOwogfQpAQCAtMzYxMiw3ICszNjEyLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0lnbm9yZWRFbGVtZW50V2l0aGlu
TWF0aFRyZWUoKSBjb25zdAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKIHsKICAgICBpZiAoIWlzTWF0aFJvb3QoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGNv
bnN0IGF1dG8mIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKICAgICBpZiAoY2hpbGRyZW4u
c2l6ZSgpIDwgMSkKQEAgLTM2MjUsMTEgKzM2MjUsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFJhZGljYW5kT2JqZWN0KCkKIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhSb290SW5kZXhPYmpl
Y3QoKQogewogICAgIGlmICghaXNNYXRoUm9vdCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSB0aGlz
LT5jaGlsZHJlbigpOwogICAgIGlmIChjaGlsZHJlbi5zaXplKCkgIT0gMikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVGhlIGluZGV4IGluIGEg
cm9vdCBpcyB0aGUgdmFsdWUgd2hpY2ggZGV0ZXJtaW5lcyBpZiBpdCdzIGEgc3F1YXJlLCBjdWJl
LCBldGMsIHJvb3QKICAgICAvLyBhbmQgbXVzdCBiZSBsaXN0ZWQgc2Vjb25kLgpAQCAtMzYzOSwx
MSArMzYzOSwxMSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjptYXRoUm9vdEluZGV4T2JqZWN0KCkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogewogICAgIGlmICghaXNN
YXRoRnJhY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKICAg
ICBpZiAoY2hpbGRyZW4uc2l6ZSgpICE9IDIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gY2hpbGRyZW5bMF0uZ2V0KCk7CiB9CkBA
IC0zNjUxLDExICszNjUxLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6Om1hdGhOdW1lcmF0b3JPYmplY3QoKQogQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aERlbm9taW5hdG9yT2JqZWN0KCkKIHsKICAg
ICBpZiAoIWlzTWF0aEZyYWN0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4o
KTsKICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpICE9IDIpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7
CiB9CkBAIC0zNjYzLDY3ICszNjYzLDY3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhEZW5vbWluYXRvck9iamVjdCgpCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoVW5kZXJPYmplY3QoKQogewog
ICAgIGlmICghaXNNYXRoVW5kZXJPdmVyKCkgfHwgIW5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVu
ID0gdGhpcy0+Y2hpbGRyZW4oKTsKICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpIDwgMikKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGlmIChub2Rl
KCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om11bmRlclRhZykgfHwgbm9kZSgpLT5oYXNUYWdO
YW1lKE1hdGhNTE5hbWVzOjptdW5kZXJvdmVyVGFnKSkKICAgICAgICAgcmV0dXJuIGNoaWxkcmVu
WzFdLmdldCgpOwogICAgIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoT3Zl
ck9iamVjdCgpCiB7CiAgICAgaWYgKCFpc01hdGhVbmRlck92ZXIoKSB8fCAhbm9kZSgpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgY29uc3Qg
YXV0byYgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwogICAgIGlmIChjaGlsZHJlbi5zaXpl
KCkgPCAyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW92ZXJUYWcpKQogICAg
ICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6bXVuZGVyb3ZlclRhZykpCiAgICAgICAgIHJldHVybiBjaGlsZHJlblsy
XS5nZXQoKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoQmFzZU9iamVj
dCgpCiB7CiAgICAgaWYgKCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpICYmICFpc01hdGhV
bmRlck92ZXIoKSAmJiAhaXNNYXRoTXVsdGlzY3JpcHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0g
dGhpcy0+Y2hpbGRyZW4oKTsKICAgICAvLyBUaGUgYmFzZSBvYmplY3QgaW4gcXVlc3Rpb24gaXMg
YWx3YXlzIHRoZSBmaXJzdCBjaGlsZC4KICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID4gMCkKICAg
ICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdLmdldCgpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om1hdGhTdWJzY3JpcHRPYmplY3QoKQogewogICAgIGlmICghaXNNYXRoU3Vic2Ny
aXB0U3VwZXJzY3JpcHQoKSB8fCAhbm9kZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSB0aGlzLT5j
aGlsZHJlbigpOwogICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1l
KE1hdGhNTE5hbWVzOjptc3ViVGFnKSB8fCBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1zdWJzdXBUYWcpKQogICAgICAgICByZXR1cm4gY2hpbGRyZW5bMV0uZ2V0KCk7CiAgICAgCi0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhTdXBlcnNjcmlwdE9iamVjdCgpCiB7
CiAgICAgaWYgKCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIHx8ICFub2RlKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBjb25zdCBh
dXRvJiBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CiAgICAgdW5zaWduZWQgY291bnQgPSBj
aGlsZHJlbi5zaXplKCk7CkBAIC0zNzM0LDcgKzM3MzQsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoU3VwZXJzY3JpcHRPYmplY3QoKQogICAg
IGlmIChjb3VudCA+PSAzICYmIG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXN1YnN1
cFRhZykpCiAgICAgICAgIHJldHVybiBjaGlsZHJlblsyXS5nZXQoKTsKICAgICAKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjptYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwCmluZGV4
IGIzMGUxZTEzMDA0OTQ1MDI0MGM5NzY2ZWMyMGRkZDc3ZDhiOTc0NTIuLmUyYWQwMGYyMzYwODUz
YjJjMmRiNTY0ZTA2Njc2NTUyZGZjZGI2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxp
dHlTVkdSb290KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KHJlbmRlcmVyKQotICAgICwgbV9wYXJlbnQoMCkKKyAgICAsIG1fcGFyZW50KG51
bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggM2E5M2IwOWFkM2RkZjU3NjkwNWQ4
MTljOWYyNjA1NThjOGJjZDRjNy4uN2M2YTgyZGJiNTAzMGQ0YTgwZTlkMTI3MDA0ZmZlYzBjZjZi
Y2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lkIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpkZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRU
eXBlLCBBWE9iamVjdENhY2hlKiBjYWNoZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpk
ZXRhY2goZGV0YWNobWVudFR5cGUsIGNhY2hlKTsKLSAgICBtX3Njcm9sbFZpZXcgPSAwOworICAg
IG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CiB9CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc+IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjcmVhdGUoU2Nyb2xsVmlldyogdmll
dykKQEAgLTcwLDcgKzcwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24KICAgICAgICAgcmV0
dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSA6
IDA7CiAgICAgfQogICAgIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiAvLyBJZiB0aGlzIGlzIFdlYktpdDEgdGhlbiB0aGUgbmF0aXZlIHNjcm9sbCB2aWV3IG5lZWRz
IHRvIHJldHVybiB0aGUKQEAgLTEyNCwxNCArMTI0LDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoKQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXIgPSBhZGRDaGlsZFNjcm9sbGJhcihtX3Njcm9sbFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIo
KSk7CiAgICAgZWxzZSBpZiAoIW1fc2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYm
IG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICByZW1vdmVDaGlsZFNjcm9sbGJhciht
X2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCkpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXIgPSAwOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAgIH0K
IAogICAgIGlmIChtX3Njcm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIW1fdmVydGlj
YWxTY3JvbGxiYXIpCiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBhZGRDaGlsZFNjcm9s
bGJhcihtX3Njcm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgIGVsc2UgaWYgKCFt
X3Njcm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgbV92ZXJ0aWNhbFNjcm9sbGJhcikg
ewogICAgICAgICByZW1vdmVDaGlsZFNjcm9sbGJhcihtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgp
KTsKLSAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IDA7CisgICAgICAgIG1fdmVydGljYWxT
Y3JvbGxiYXIgPSBudWxscHRyOwogICAgIH0KIH0KICAgICAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZFNjcm9sbGJhcihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBzY3JvbGxiYQogQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQog
ewogICAgIGlmICghc2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hl
KCk7CiAgICAgaWYgKCFjYWNoZSkKQEAgLTE2Miw4ICsxNjIsOCBAQCBBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzYwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbigpCiB7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigpOwotICAgIG1fdmVydGlj
YWxTY3JvbGxiYXIgPSAwOwotICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IDA7CisgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxwdHI7CisgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0g
bnVsbHB0cjsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdApAQCAtMTkwLDExICsxOTAsMTEgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogewogICAgIGlm
ICghbV9zY3JvbGxWaWV3IHx8ICFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBEb2N1bWVudCog
ZG9jID0gdG9GcmFtZVZpZXcobV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jIHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gYXhPYmplY3RDYWNoZSgpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRl
KGRvYyk7CkBAIC0yMDYsNyArMjA2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW4KIHsKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlm
ICghd2ViQXJlYSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIAogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0dXJuIG1faG9y
aXpvbnRhbFNjcm9sbGJhci5nZXQoKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBMYXlvdXRSZWN0IEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiBGcmFtZVZpZXcqIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiB0
b0ZyYW1lVmlldyhtX3Njcm9sbFZpZXcpOwogfSAgICAKQEAgLTIzNyw3ICsyMzcsNyBAQCBGcmFt
ZVZpZXcqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2Jq
ZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3LT5p
c0ZyYW1lVmlldygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAo
IWNhY2hlKQpAQCAtMjQ3LDEzICsyNDcsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgaWYgKG93bmVyICYm
IG93bmVyLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93
bmVyKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAogQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdElm
RXhpc3RzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3
LT5pc0ZyYW1lVmlldygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CiAg
ICAgaWYgKCFjYWNoZSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAogICAg
IGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlLT5n
ZXQob3duZXIpOwogICAgIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiBTY3JvbGxhYmxlQXJlYSogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVB
cmVhSWZTY3JvbGxhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCmluZGV4IDdiNDRiMTVlMzhmYTk5
ZGI1OGY2YzJiYTQ0NzZmZjdkNzBjNGVlNDguLmVlZGMyNjkwZDhiODdkZjQzMmUwZDIzZmQzZTUw
YjJkODZjMGRiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcApAQCAtNTksNyArNTksNyBAQCBEb2N1bWVudCog
QWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOwogICAgIGlmICghcGFyZW50KQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHBh
cmVudC0+ZG9jdW1lbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAppbmRleCBiYzMwODhmMWIxM2Fh
YzQ0ZTJiYjhiNzkyYzYwY2NjY2JmYzI4MGUwLi45MzJhY2I0ZGZkNzcxOTFmYzdmOTM4NzFjOGQx
ZGJiZTE4ZjdjZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcApAQCAtMzcsNyArMzcsNyBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6Y3Jl
YXRlKCkKIH0KICAgICAKIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbigpCi0gICAgOiBtX3NwaW5CdXR0b25FbGVtZW50KDApCisgICAgOiBtX3NwaW5CdXR0
b25FbGVtZW50KG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCAwZGZhMTAwYzMxYjdjMzViYjU5
MzM5OGY5NDcyNzY1Yzk2MWM5ZTMxLi5kOWQ0MzVmOGJlYTdjMmJiMzNmN2M4ZGM5ZTFiOGExMWRi
MDgxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIEFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQot
ICAgICwgbV9oZWFkZXJDb250YWluZXIoMCkKKyAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxw
dHIpCiAgICAgLCBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlKHRydWUpCiB7CiB9CkBAIC0zNDIsNyAr
MzQyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNsZWFyQ2hpbGRyZW4oKQogCiAgICAg
aWYgKG1faGVhZGVyQ29udGFpbmVyKSB7CiAgICAgICAgIG1faGVhZGVyQ29udGFpbmVyLT5kZXRh
Y2hGcm9tUGFyZW50KCk7Ci0gICAgICAgIG1faGVhZGVyQ29udGFpbmVyID0gMDsKKyAgICAgICAg
bV9oZWFkZXJDb250YWluZXIgPSBudWxscHRyOwogICAgIH0KIH0KIApAQCAtNTM3LDcgKzUzNyw3
IEBAIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNv
bHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiB7CiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vz
c2FyeSgpOwogICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291
bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAog
ICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVz
aXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cyBpbiBhIHByZXZpb3VzIHJvdy4KICAg
ICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9IHJvdyArIDE7IHJvd0luZGV4Q291bnRl
ciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CkBAIC01NjQsNyArNTY0LDcgQEAgQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRh
YmxlOjpyb2xlVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggYmZlNTdmZmIxNDBiYTI0
ZTUzNGNhNTU1Y2E3MDAwNDJjNWM3NzFjMy4uOTAzYmExNzg2ODVhYTFkM2FkNjgwOTNjMWY5YTY4
ZWUwODFiODljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFRhYmxl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVD
ZWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIElmIHRoZSBkb2N1bWVudCBubyBsb25nZXIgZXhpc3RzLCB3ZSBtaWdodCBub3QgaGF2ZSBh
biBheE9iamVjdENhY2hlLgogICAgIGlmICghYXhPYmplY3RDYWNoZSgpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gRG8gbm90IHVzZSBn
ZXRPckNyZWF0ZS4gcGFyZW50VGFibGUoKSBjYW4gYmUgY2FsbGVkIHdoaWxlIHRoZSByZW5kZXIg
dHJlZSBpcyBiZWluZyBtb2RpZmllZCAKICAgICAvLyBieSBqYXZhc2NyaXB0LCBhbmQgY3JlYXRp
bmcgYSB0YWJsZSBlbGVtZW50IG1heSB0cnkgdG8gYWNjZXNzIHRoZSByZW5kZXIgdHJlZSB3aGls
ZSBpbiBhIGJhZCBzdGF0ZS4KQEAgLTI2MSwzMyArMjYxLDMzIEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50KCkgY29uc3QKICAgICAv
LyB0aGVuIGl0IGNhbiBhY3QgYXMgdGhlIHRpdGxlIHVpIGVsZW1lbnQuIChUaGlzIGlzIG9ubHkg
aW4gdGhlCiAgICAgLy8gY2FzZSB3aGVuIHRoZSB0YWJsZSBpcyBub3QgYXBwZWFyaW5nIGFzIGFu
IEFYVGFibGUuKQogICAgIGlmIChpc1RhYmxlQ2VsbCgpIHx8ICFtX3JlbmRlcmVyIHx8ICFtX3Jl
bmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAvLyBUYWJsZSBjZWxscyB0aGF0IGFyZSB0aCBjYW5ub3QgaGF2ZSB0
aXRsZSB1aSBlbGVtZW50cywgc2luY2UgYnkgZGVmaW5pdGlvbgogICAgIC8vIHRoZXkgYXJlIHRp
dGxlIHVpIGVsZW1lbnRzCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAg
ICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogcmVu
ZGVyQ2VsbCA9IHRvUmVuZGVyVGFibGVDZWxsKG1fcmVuZGVyZXIpOwogCiAgICAgLy8gSWYgdGhp
cyBjZWxsIGlzIGluIHRoZSBmaXJzdCBjb2x1bW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29udGlu
dWUuCiAgICAgaW50IGNvbCA9IHJlbmRlckNlbGwtPmNvbCgpOwogICAgIGlmICghY29sKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpbnQgcm93ID0g
cmVuZGVyQ2VsbC0+cm93SW5kZXgoKTsKIAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlv
biA9IHJlbmRlckNlbGwtPnNlY3Rpb24oKTsKICAgICBpZiAoIXNlY3Rpb24pCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBSZW5kZXJUYWJsZUNl
bGwqIGhlYWRlckNlbGwgPSBzZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHJvdywgMCk7CiAgICAgaWYg
KCFoZWFkZXJDZWxsIHx8IGhlYWRlckNlbGwgPT0gcmVuZGVyQ2VsbCkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFoZWFkZXJDZWxsLT5lbGVt
ZW50KCkgfHwgIWhlYWRlckNlbGwtPmVsZW1lbnQoKS0+aGFzVGFnTmFtZSh0aFRhZykpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4g
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShoZWFkZXJDZWxsKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAppbmRleCA3Y2VlM2RhNjZjMTQ0ZWEzNzY1NDFjYjU3Y2I4M2QxMWNmY2FhNDY0Li43OGI2
ZDVmYzdiNWI5YTcxMzY5M2JlYjM2MjliOGFlNGUwODRkNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
CkBAIC03MCwxNCArNzAsMTQgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46
OmVsZW1lbnRSZWN0KCkgY29uc3QKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBpZiAoIW1fcGFyZW50KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG1fcGFyZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBp
ZiAoIW1fcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlKiBw
YXJlbnRUYWJsZSA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fcGFyZW50KTsKICAgICBpZiAocGFy
ZW50VGFibGUtPmlzQXJpYVRhYmxlKCkpIHsKQEAgLTg2LDE1ICs4NiwxNSBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNlbGwuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAo
IXJlbmRlcmVyLT5pc1RhYmxlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAKICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRhYmxlKHJl
bmRlcmVyKTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3QgPSAw
OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCA9IG51bGxwdHI7CiAgICAg
CiAgICAgLy8gdHJ5IHRoZSA8dGhlYWQ+IHNlY3Rpb24gZmlyc3QuIHRoaXMgZG9lc24ndCByZXF1
aXJlIHRoIHRhZ3MKICAgICBoZWFkZXJPYmplY3QgPSBoZWFkZXJPYmplY3RGb3JTZWN0aW9uKHRh
YmxlLT5oZWFkZXIoKSwgZmFsc2UpOwpAQCAtMTExLDE2ICsxMTEsMTYgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3QoKQogQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3RGb3JT
ZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiwgYm9vbCB0aFRhZ1JlcXVpcmVkKQog
ewogICAgIGlmICghc2VjdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAogICAgIHVuc2lnbmVkIG51bUNvbHMgPSBzZWN0aW9uLT5udW1Db2x1bW5z
KCk7CiAgICAgaWYgKG1fY29sdW1uSW5kZXggPj0gbnVtQ29scykKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGlmICghc2VjdGlvbi0+bnVtUm93
cygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0g
ICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKKyAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwg
PSBudWxscHRyOwogICAgIC8vIGFsc28gYWNjb3VudCBmb3IgY2VsbHMgdGhhdCBoYXZlIGEgc3Bh
bgogICAgIGZvciAoaW50IHRlc3RDb2wgPSBtX2NvbHVtbkluZGV4OyB0ZXN0Q29sID49IDA7IC0t
dGVzdENvbCkgewogICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIHRlc3RDZWxsID0gc2VjdGlvbi0+
cHJpbWFyeUNlbGxBdCgwLCB0ZXN0Q29sKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdEZvclNlY3Rp
b24oUmVuZGVyVGFibAogICAgIH0KICAgICAKICAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBheE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKGNlbGwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IDcxZjVhZjY0NzZjYWFk
ZmJlNDNmMTU1ZWYzYmM4MGQxMmEzMWUxZmUuLjYzNGQxNDRlNTZjNDVkMDY5MGQxNDgwNGQ1ZTIz
Zjc5N2I0OWMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTExMCwzMCArMTEwLDMwIEBAIEFjY2Vzc2li
aWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpID8gdG9BY2Nl
c3NpYmlsaXR5VGFibGUocGFyZW50KSA6IDA7CiAgICAgfQogICAgIAotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogewogICAgIGlmICghbV9yZW5kZXJlciB8
fCAhbV9yZW5kZXJlci0+aXNUYWJsZVJvdygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgY29uc3QgYXV0byYgcm93Q2hpbGRyZW4gPSBjaGls
ZHJlbigpOwogICAgIGlmICghcm93Q2hpbGRyZW4uc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gY2hlY2sgdGhlIGZpcnN0IGVs
ZW1lbnQgaW4gdGhlIHJvdyB0byBzZWUgaWYgaXQgaXMgYSBUSCBlbGVtZW50CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY2VsbCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOwogICAgIGlmICghY2Vs
bC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIFJlbmRlck9iamVjdCogY2VsbFJlbmRlcmVyID0gdG9BY2Nlc3NpYmls
aXR5VGFibGVDZWxsKGNlbGwpLT5yZW5kZXJlcigpOwogICAgIGlmICghY2VsbFJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgTm9k
ZSogY2VsbE5vZGUgPSBjZWxsUmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIWNlbGxOb2RlIHx8
ICFjZWxsTm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gY2VsbDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4
IGI0OGI1MWViYzk2NDM2ZGEwYTE3MzJlNDdkZTQ2OTg1OWU4ZDI3YTcuLjUwMGIxNzdjYTZhNWZl
MTlmMWVlNjU4MDQ3Y2MzYmVhM2FlNWVjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDAsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpCiB7CiAg
ICAgW29iai0+d3JhcHBlcigpIGRldGFjaF07Ci0gICAgb2JqLT5zZXRXcmFwcGVyKDApOworICAg
IG9iai0+c2V0V3JhcHBlcihudWxscHRyKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjphdHRh
Y2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KaW5kZXggNmI3YmEwNzU3NzVmMmRhOGI2OTNlYjllMzUwOTI1ZjFm
YjEyMTcxNC4uMjNhNTUzNjJjZDJmMWVmNTY2Y2Q4MWU4NmM2OGQ0YzM2NzcxYjNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIxNCw3ICsyMTQsNyBAQCAt
ICh2b2lkKWRldGFjaAogewogICAgIC8vIHJkYXI6Ly84Nzk4OTYwIE1ha2Ugc3VyZSB0aGUgb2Jq
ZWN0IGlzIGdvbmUgZWFybHksIHNvIHRoYXQgYW55dGhpbmcgX2FjY2Vzc2liaWxpdHlVbnJlZ2lz
dGVyIAogICAgIC8vIGRvZXMgY2FuJ3QgY2FsbCBiYWNrIGludG8gdGhlIHJlbmRlciB0cmVlLgot
ICAgIG1fb2JqZWN0ID0gMDsKKyAgICBtX29iamVjdCA9IG51bGxwdHI7CiAKICAgICBpZiAoW3Nl
bGYgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfYWNjZXNzaWJpbGl0eVVucmVnaXN0ZXIp
XSkKICAgICAgICAgW3NlbGYgX2FjY2Vzc2liaWxpdHlVbnJlZ2lzdGVyXTsKQEAgLTc5NCwxMiAr
Nzk0LDEyIEBAIC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eUxhYmVsCiAtIChBY2Nlc3NpYmls
aXR5VGFibGVDZWxsKil0YWJsZUNlbGxQYXJlbnQKIHsKICAgICAvLyBGaW5kIGlmIHRoaXMgZWxl
bWVudCBpcyBpbiBhIHRhYmxlIGNlbGwuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2VsbCA9
IDA7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2VsbCA9IG51bGxwdHI7CiAgICAgZm9yIChj
ZWxsID0gbV9vYmplY3Q7IGNlbGwgJiYgIWNlbGwtPmlzVGFibGVDZWxsKCk7IGNlbGwgPSBjZWxs
LT5wYXJlbnRPYmplY3QoKSkgCiAgICAgeyB9CiAgICAgCiAgICAgaWYgKCFjZWxsKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2VsbCk7CiB9CkBAIC04MDcsMTIgKzgwNywxMiBA
QCAtIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKil0YWJsZUNlbGxQYXJlbnQKIC0gKEFjY2Vzc2li
aWxpdHlUYWJsZSopdGFibGVQYXJlbnQKIHsKICAgICAvLyBGaW5kIGlmIHRoZSBwYXJlbnQgdGFi
bGUgZm9yIHRoZSB0YWJsZSBjZWxsLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRh
YmxlID0gMDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSA9IG51bGxwdHI7
CiAgICAgZm9yIChwYXJlbnRUYWJsZSA9IG1fb2JqZWN0OyBwYXJlbnRUYWJsZSAmJiAhcGFyZW50
VGFibGUtPmlzRGF0YVRhYmxlKCk7IHBhcmVudFRhYmxlID0gcGFyZW50VGFibGUtPnBhcmVudE9i
amVjdCgpKSAKICAgICB7IH0KICAgICAKICAgICBpZiAoIXBhcmVudFRhYmxlKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4ocGFyZW50VGFibGUpOwogfQpAQCAtMTExMCw4ICsxMTEw
LDggQEAgLSAoQ0dQb2ludCljb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOihGbG9hdFBvaW50ICYp
cG9pbnQKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRl
IHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93
LgotICAgICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gMDsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50ID0gMDsKKyAgICAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9
IG51bGxwdHI7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG51bGxwdHI7
CiAgICAgICAgIGZvciAocGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmIChwYXJl
bnQtPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkgewogICAgICAgICAgICAgICAgIHNjcm9s
bFZpZXcgPSB0b0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KHBhcmVudCktPnNjcm9sbFZpZXcoKTsK
QEAgLTExNjQsOCArMTE2NCw4IEBAIC0gKENHUmVjdCljb252ZXJ0UmVjdFRvU2NyZWVuU3BhY2U6
KEludFJlY3QgJilyZWN0CiAgICAgICAgIAogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZpbmQg
dGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50
cyB0byB0aGUgd2luZG93LgotICAgICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gMDsKLSAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gMDsKKyAgICAgICAgU2Nyb2xsVmll
dyogc2Nyb2xsVmlldyA9IG51bGxwdHI7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IG51bGxwdHI7CiAgICAgICAgIGZvciAocGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9i
amVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAg
ICAgICAgIGlmIChwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkgewogICAgICAg
ICAgICAgICAgIHNjcm9sbFZpZXcgPSB0b0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KHBhcmVudCkt
PnNjcm9sbFZpZXcoKTsKQEAgLTE0MTcsMTYgKzE0MTcsMTYgQEAgLSAoaWQpYXR0YWNobWVudFZp
ZXcKIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQog
ewogICAgIGlmICghW3ZpZXcgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChXZWJDb3JlRnJh
bWVWaWV3KV0pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbmlsOwogICAgIAog
ICAgIFdBS1ZpZXc8V2ViQ29yZUZyYW1lVmlldz4qIGZyYW1lVmlldyA9IChXQUtWaWV3PFdlYkNv
cmVGcmFtZVZpZXc+Kil2aWV3OwogICAgIEZyYW1lKiBmcmFtZSA9IFtmcmFtZVZpZXcgX3dlYl9m
cmFtZV07CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBuaWw7CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5vd25lckVs
ZW1lbnQoKTsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbmlsOwogICAgIAogICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwogfQpAQCAtMTg4Nyw3
ICsxODg3LDcgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UgKilyYW5nZQog
LSAoUGFzc1JlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UK
IHsKICAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRf
TUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCiAgICAg
ICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247CiAgICAgICAg
IApAQCAtMjQ3NCw4ICsyNDc0LDggQEAgLSAoQ0dQb2ludClhY2Nlc3NpYmlsaXR5Q2xpY2tQb2lu
dAogLy8gVGhlc2UgYXJlIHVzZWQgYnkgRFJUIHNvIHRoYXQgaXQgY2FuIGtub3cgd2hlbiBub3Rp
ZmljYXRpb25zIGFyZSBzZW50LgogLy8gU2luY2UgdGhleSBhcmUgc3RhdGljLCBvbmx5IG9uZSBj
YWxsYmFjayBjYW4gYmUgaW5zdGFsbGVkIGF0IGEgdGltZSAodGhhdCdzIGFsbCBEUlQgc2hvdWxk
IG5lZWQpLgogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQg
ZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7Ci1zdGF0aWMg
QVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjayBBWE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gMDsK
LXN0YXRpYyB2b2lkKiBBWFBvc3RlZE5vdGlmaWNhdGlvbkNvbnRleHQgPSAwOworc3RhdGljIEFY
UG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2sgQVhOb3RpZmljYXRpb25DYWxsYmFjayA9IG51bGxw
dHI7CitzdGF0aWMgdm9pZCogQVhQb3N0ZWROb3RpZmljYXRpb25Db250ZXh0ID0gbnVsbHB0cjsK
IAogLSAodm9pZClhY2Nlc3NpYmlsaXR5U2V0UG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2s6KEFY
UG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spZnVuY3Rpb24gd2l0aENvbnRleHQ6KHZvaWQqKWNv
bnRleHQKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tCmluZGV4IGZmOGRlYzRlMmRiZjg2MmVhMzY0NTFmZGIzZTc3YjlhODk1
NzFkM2MuLjcwMTIwMmEzZGZkZWJiOTc1Y2Y4NTRmZDI4ZTEyZThiZTk3YWE4ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bQpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmRldGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBY2Nlc3NpYmlsaXR5
RGV0YWNobWVudFR5cGUpCiB7CiAgICAgW29iai0+d3JhcHBlcigpIGRldGFjaF07Ci0gICAgb2Jq
LT5zZXRXcmFwcGVyKDApOworICAgIG9iai0+c2V0V3JhcHBlcihudWxscHRyKTsKIH0KIAogdm9p
ZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0TWFjLm1tCmluZGV4IDM5NjU3NzYwNGE0NzZlNmRiYzBmOTkxN2QwZjZjZGI0
MWVmNjU3MTAuLjFjYzA4Y2ZjYzMwOGZkZjM1NDk0NTc3MzMwYWYzNDI4MmZlOTA5OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQoKQogewogICAgIGlmIChp
c0F0dGFjaG1lbnQoKSkKLSAgICAgICAgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KDApOworICAg
ICAgICBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCkKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAgLy8gRnJhbWVWaWV3
IGF0dGFjaG1lbnRzIGFyZSBub3cgaGFuZGxlZCBieSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldywg
CiAgICAgLy8gc28gaWYgdGhpcyBpcyB0aGUgYXR0YWNobWVudCwgaXQgc2hvdWxkIGJlIGlnbm9y
ZWQuCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSAwOworICAgIFdpZGdldCogd2lkZ2V0ID0gbnVsbHB0
cjsKICAgICBpZiAoaXNBdHRhY2htZW50KCkgJiYgKHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1l
bnRWaWV3KCkpICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA5YmMxZTIw
NTU2ODVmMDljZTZhNThmYTBlYzJmOGI3OTU5NGJkM2MwLi4xMTM4YjMzMzhmZjc5YTQyODY3NjZh
YzYxMWZmM2U5M2RlMDcwZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgLSAoaWQpaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0KilheE9iamVjdAogCiAtICh2b2lkKWRldGFjaAogewot
ICAgIG1fb2JqZWN0ID0gMDsKKyAgICBtX29iamVjdCA9IG51bGxwdHI7CiB9CiAKIC0gKEJPT0wp
dXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDViMjJjYzE4MGQwZTFmMzhjYTFhNGVkYTRlMWY2ZDg4NTRjYWFiNWQuLjc0
NDNiNDVjYjAyZDJkNzVlNGI5YmMxOWU3ZjBkMGQ2MmEwYWYxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIENHQ29s
b3JSZWYgQ3JlYXRlQ0dDb2xvcklmRGlmZmVyZW50KE5TQ29sb3IqIG5zQ29sb3IsIENHQ29sb3JS
ZWYgZXhpc3RpbmcKICAgICAvLyBjaGVjayBmb3IgbWF0Y2ggd2l0aCBleGlzdGluZyBjb2xvcgog
ICAgIGlmIChleGlzdGluZ0NvbG9yICYmIENHQ29sb3JFcXVhbFRvQ29sb3IoY2dDb2xvciwgZXhp
c3RpbmdDb2xvcikpIHsKICAgICAgICAgQ0dDb2xvclJlbGVhc2UoY2dDb2xvcik7Ci0gICAgICAg
IGNnQ29sb3IgPSAwOworICAgICAgICBjZ0NvbG9yID0gbnVsbHB0cjsKICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuIGNnQ29sb3I7CkBAIC0xNzQ5LDggKzE3NDksOCBAQCAtIChDR1BvaW50KWNvbnZl
cnRQb2ludFRvU2NyZWVuU3BhY2U6KEZsb2F0UG9pbnQgJilwb2ludAogICAgIH0gZWxzZSB7CiAg
ICAgICAgIAogICAgICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBzY3JvbGwgdmlldyB0byB1
c2UgdG8gY29udmVydCB0aGUgY29udGVudHMgdG8gdGhlIHdpbmRvdy4KLSAgICAgICAgU2Nyb2xs
Vmlldyogc2Nyb2xsVmlldyA9IDA7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IDA7CisgICAgICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcgPSBudWxscHRyOworICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwogICAgICAgICBmb3IgKHBh
cmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3KCkpIHsKICAgICAgICAgICAgICAgICBzY3JvbGxWaWV3ID0gdG9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldyhwYXJlbnQpLT5zY3JvbGxWaWV3KCk7CkBAIC0zMzIyLDE2ICszMzIy
LDE2IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1
dGU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCiBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ckZvclZpZXcoTlNWaWV3KiB2aWV3KQogewogICAgIGlmICghW3ZpZXcgY29uZm9ybXNUb1Byb3Rv
Y29sOkBwcm90b2NvbChXZWJDb3JlRnJhbWVWaWV3KV0pCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBOU1ZpZXc8V2ViQ29yZUZyYW1lVmlldz4q
IGZyYW1lVmlldyA9IChOU1ZpZXc8V2ViQ29yZUZyYW1lVmlldz4qKXZpZXc7CiAgICAgRnJhbWUq
IGZyYW1lID0gW2ZyYW1lVmlldyBfd2ViX2ZyYW1lXTsKICAgICBpZiAoIWZyYW1lKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgTm9kZSogbm9k
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKTsKICAgICBpZiAoIW5vZGUpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1
cm4gbm9kZS0+cmVuZGVyZXIoKTsKIH0KQEAgLTM0MjAsNyArMzQyMCw3IEBAIC0gKGlkKWFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6
KGlkKXBhcmFtZXRlCiAgICAgTlNOdW1iZXIqIG51bWJlciA9IG5pbDsKICAgICBOU0FycmF5KiBh
cnJheSA9IG5pbDsKICAgICBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBuaWw7Ci0gICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHVpRWxlbWVudCA9IDA7CisgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IHVpRWxlbWVudCA9IG51bGxwdHI7CiAgICAgTlNQb2ludCBwb2ludCA9
IE5TWmVyb1BvaW50OwogICAgIGJvb2wgcG9pbnRTZXQgPSBmYWxzZTsKICAgICBOU1JhbmdlIHJh
bmdlID0gezAsIDB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93
aW4vQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvd2luL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyV2luLmgKaW5kZXggYzA3NmJh
M2Y2MDlmZDAzZmY4OWNlNzY3YTViOWMwNDc2MWM0NjU2Yy4uM2IwOWU0YmY0ODg3N2UyYjA5MjBi
OWVlMTI5N2ZhYmY1ZmZjZmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS93aW4vQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oCkBA
IC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
KSA6IG1fb2JqZWN0KG9iaikgeyB9Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KCkgOiBtX29iamVjdCgwKSB7IH0KKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIo
KSA6IG1fb2JqZWN0KG51bGxwdHIpIHsgfQogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1fb2JqZWN0OwogICAgIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>