<?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>153240</bug_id>
          
          <creation_ts>2016-01-19 10:42:51 -0800</creation_ts>
          <short_desc>Use references in SelectorChecker</short_desc>
          <delta_ts>2016-01-19 13:27:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156640</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-01-19 10:42:51 -0800</bug_when>
    <thetext>Element and selector can&apos;t be null in most places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156643</commentid>
    <comment_count>1</comment_count>
      <attachid>269271</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-01-19 10:44:49 -0800</bug_when>
    <thetext>Created attachment 269271
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156646</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 10:47:40 -0800</bug_when>
    <thetext>Attachment 269271 did not pass style-queue:


ERROR: Source/WebCore/css/SelectorChecker.cpp:623:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 5 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>1156711</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-01-19 13:27:25 -0800</bug_when>
    <thetext>https://trac.webkit.org/r195311</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269271</attachid>
            <date>2016-01-19 10:44:49 -0800</date>
            <delta_ts>2016-01-19 10:53:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>selectorchecker-reference.patch</filename>
            <type>text/plain</type>
            <size>40875</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTI5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAxLTE5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgcmVmZXJlbmNlcyBpbiBT
ZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzI0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVsZW1lbnQgYW5kIHNlbGVjdG9yIGNhbid0IGJlIG51bGwgaW4gbW9zdCBwbGFjZXMu
CisKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0
ZVZhbHVlTWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjphbnlBdHRyaWJ1dGVNYXRjaGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzRnJhbWVGb2N1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MpOgorICAgICAgICAqIGNzcy9T
ZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6aXND
b21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1NlbGVj
dG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQXV0b2ZpbGxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjppc0RlZmF1bHRCdXR0b25Gb3JGb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTWVkaWFEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjppc0No
ZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6aXNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzT3V0T2ZSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ludmFsaWQpOgorICAgICAgICAo
V2ViQ29yZTo6aXNPcHRpb25hbEZvcm1Db250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVx
dWlyZWRGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzV2luZG93SW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNs
YW5ndWFnZVN1YnRhZ01hdGNoaW5nUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc0xh
bmdQc2V1ZG9DbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjptYXRjaGVzUmVhZE9ubHlQc2V1ZG9D
bGFzcyk6CisgICAgICAgIChXZWJDb3JlOjptYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzY3JvbGxiYXJNYXRjaGVzRW5hYmxlZFBzZXVkb0NsYXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcm9sbGJhck1hdGNoZXNDb3JuZXJQcmVzZW50UHNldWRvQ2xhc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6bWF0Y2hlc0Z1bGxTY3JlZW5Qc2V1ZG9DbGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjptYXRjaGVzRnVsbFNjcmVlbkFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uUHNldWRv
Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc0Z1bGxTY3JlZW5BbmNlc3RvclBzZXVk
b0NsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNGdWxsU2NyZWVuRG9jdW1lbnRQc2V1
ZG9DbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjptYXRjaGVzRnV0dXJlQ3VlUHNldWRvQ2xhc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc1Bhc3RDdWVQc2V1ZG9DbGFzcyk6CisKIDIwMTYt
MDEtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBmaXggdHlwbyBpbiBjb21tZW50IGFkZGVkIGluIHIxOTUxNTcuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDE5NTI5MykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xs
ZWN0TWF0Y2hpCiAKICAgICBpZiAobV9lbGVtZW50LmlzTGluaygpKQogICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmxpbmtQc2V1ZG9DbGFz
c1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICBpZiAoU2VsZWN0b3JDaGVj
a2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcygmbV9lbGVtZW50KSkKKyAgICBpZiAoU2VsZWN0
b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpKQogICAgICAgICBj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmZvY3VzUHNl
dWRvQ2xhc3NSdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT50YWdSdWxlcyhtX2VsZW1l
bnQubG9jYWxOYW1lKCkuaW1wbCgpLCBtX2VsZW1lbnQuaXNIVE1MRWxlbWVudCgpICYmIG1fZWxl
bWVudC5kb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5n
ZSk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0
LT51bml2ZXJzYWxSdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTk1MjkzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
NCwxNCArNTA0LDE0IEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hlcyhjb25zdCAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhj
b25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlKQorc3RhdGlj
IGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBD
U1NTZWxlY3RvciYgc2VsZWN0b3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0ciwg
Ym9vbCBjYXNlU2Vuc2l0aXZlKQogewotICAgIEFTU0VSVChlbGVtZW50LT5oYXNBdHRyaWJ1dGVz
V2l0aG91dFVwZGF0ZSgpKTsKLSAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDog
ZWxlbWVudC0+YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGUu
bWF0Y2hlcyhzZWxlY3RvckF0dHIucHJlZml4KCksIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSA/
IHNlbGVjdG9yLT5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKSA6IHNlbGVjdG9yQXR0ci5s
b2NhbE5hbWUoKSwgc2VsZWN0b3JBdHRyLm5hbWVzcGFjZVVSSSgpKSkKKyAgICBBU1NFUlQoZWxl
bWVudC5oYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpKTsKKyAgICBmb3IgKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlIDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAg
ICBpZiAoIWF0dHJpYnV0ZS5tYXRjaGVzKHNlbGVjdG9yQXR0ci5wcmVmaXgoKSwgZWxlbWVudC5p
c0hUTUxFbGVtZW50KCkgPyBzZWxlY3Rvci5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKSA6
IHNlbGVjdG9yQXR0ci5sb2NhbE5hbWUoKSwgc2VsZWN0b3JBdHRyLm5hbWVzcGFjZVVSSSgpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZU1hdGNo
ZXMoYXR0cmlidXRlLCBzZWxlY3Rvci0+bWF0Y2goKSwgc2VsZWN0b3ItPnZhbHVlKCksIGNhc2VT
ZW5zaXRpdmUpKQorICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWVNYXRjaGVzKGF0dHJpYnV0ZSwg
c2VsZWN0b3IubWF0Y2goKSwgc2VsZWN0b3IudmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTU5MCw0MCArNTkwLDM4IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCB0YWdNYXRjaGVzKGNvbnN0IEVsZW0KIAogYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lKENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zdCBMb2Nh
bENvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkU2V0JiBkeW5hbWljUHNldWRvSWRTZXQsIE1hdGNo
VHlwZSYgbWF0Y2hUeXBlLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpIGNvbnN0CiB7Ci0gICAgY29u
c3QgRWxlbWVudCogZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudDsKLSAgICBjb25zdCBDU1NTZWxl
Y3RvciogY29uc3QgJiBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7Ci0gICAgQVNTRVJUKGVs
ZW1lbnQpOwotICAgIEFTU0VSVChzZWxlY3Rvcik7CisgICAgY29uc3QgRWxlbWVudCYgZWxlbWVu
dCA9ICpjb250ZXh0LmVsZW1lbnQ7CisgICAgY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yID0g
KmNvbnRleHQuc2VsZWN0b3I7CiAKLSAgICBzcGVjaWZpY2l0eSA9IENTU1NlbGVjdG9yOjphZGRT
cGVjaWZpY2l0aWVzKHNwZWNpZmljaXR5LCBzZWxlY3Rvci0+c2ltcGxlU2VsZWN0b3JTcGVjaWZp
Y2l0eSgpKTsKKyAgICBzcGVjaWZpY2l0eSA9IENTU1NlbGVjdG9yOjphZGRTcGVjaWZpY2l0aWVz
KHNwZWNpZmljaXR5LCBzZWxlY3Rvci5zaW1wbGVTZWxlY3RvclNwZWNpZmljaXR5KCkpOwogCi0g
ICAgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpUYWcpCi0gICAgICAgIHJl
dHVybiB0YWdNYXRjaGVzKCplbGVtZW50LCAqc2VsZWN0b3IpOworICAgIGlmIChzZWxlY3Rvci5t
YXRjaCgpID09IENTU1NlbGVjdG9yOjpUYWcpCisgICAgICAgIHJldHVybiB0YWdNYXRjaGVzKGVs
ZW1lbnQsIHNlbGVjdG9yKTsKIAotICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxl
Y3Rvcjo6Q2xhc3MpCi0gICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNDbGFzcygpICYmIGVsZW1l
bnQtPmNsYXNzTmFtZXMoKS5jb250YWlucyhzZWxlY3Rvci0+dmFsdWUoKSk7CisgICAgaWYgKHNl
bGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQorICAgICAgICByZXR1cm4gZWxl
bWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKHNlbGVjdG9y
LnZhbHVlKCkpOwogCi0gICAgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpJ
ZCkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHls
ZVJlc29sdXRpb24oKSA9PSBzZWxlY3Rvci0+dmFsdWUoKTsKKyAgICBpZiAoc2VsZWN0b3IubWF0
Y2goKSA9PSBDU1NTZWxlY3Rvcjo6SWQpCisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0lEKCkg
JiYgZWxlbWVudC5pZEZvclN0eWxlUmVzb2x1dGlvbigpID09IHNlbGVjdG9yLnZhbHVlKCk7CiAK
LSAgICBpZiAoc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSkgewotICAgICAgICBpZiAo
IWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICBpZiAoc2VsZWN0b3IuaXNBdHRyaWJ1dGVT
ZWxlY3RvcigpKSB7CisgICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ciA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ciA9IHNlbGVjdG9yLmF0dHJpYnV0ZSgpOwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlOwotICAgICAgICBpZiAoc2VsZWN0b3ItPmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nh
c2VJbnNlbnNpdGl2ZSgpKQorICAgICAgICBpZiAoc2VsZWN0b3IuYXR0cmlidXRlVmFsdWVNYXRj
aGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCkpCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlID0gZmFs
c2U7Ci0gICAgICAgIGVsc2UgaWYgKG1fZG9jdW1lbnRJc0hUTUwgJiYgZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmICFIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShhdHRy
KSkKKyAgICAgICAgZWxzZSBpZiAobV9kb2N1bWVudElzSFRNTCAmJiBlbGVtZW50LmlzSFRNTEVs
ZW1lbnQoKSAmJiAhSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoYXR0cikp
CiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIGFu
eUF0dHJpYnV0ZU1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IsIGF0dHIsIGNhc2VTZW5zaXRpdmUp
OwogICAgIH0KIAotICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MpIHsKKyAgICBpZiAoc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MpIHsKICAgICAgICAgLy8gSGFuZGxlIDpub3QgdXAgZnJvbnQuCi0gICAgICAgIGlm
IChzZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
Tm90KSB7Ci0gICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9
IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKTsKKyAgICAgICAgaWYgKHNlbGVjdG9yLnBzZXVkb0Ns
YXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc05vdCkgeworICAgICAgICAgICAg
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxlY3Rvckxp
c3QoKTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc3Vic2VsZWN0b3Ig
PSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YnNlbGVjdG9yOyBzdWJzZWxlY3RvciA9IENTU1Nl
bGVjdG9yTGlzdDo6bmV4dChzdWJzZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICBMb2NhbENv
bnRleHQgc3ViY29udGV4dChjb250ZXh0KTsKQEAgLTY0MywxOCArNjQxLDE4IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgfSBlbHNlIGlmIChjb250
ZXh0Lmhhc1Njcm9sbGJhclBzZXVkbykgewogICAgICAgICAgICAgLy8gQ1NTIHNjcm9sbGJhcnMg
bWF0Y2ggYSBzcGVjaWZpYyBzdWJzZXQgb2YgcHNldWRvIGNsYXNzZXMsIGFuZCB0aGV5IGhhdmUg
c3BlY2lhbGl6ZWQgcnVsZXMgZm9yIGVhY2gKICAgICAgICAgICAgIC8vIChzaW5jZSB0aGVyZSBh
cmUgbm8gZWxlbWVudHMgaW52b2x2ZWQgZXhjZXB0IHdpdGggd2luZG93LWluYWN0aXZlKS4KLSAg
ICAgICAgICAgIHJldHVybiBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKGNoZWNraW5nQ29udGV4
dCwgKmNvbnRleHQuZWxlbWVudCwgc2VsZWN0b3IpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNr
U2Nyb2xsYmFyUHNldWRvQ2xhc3MoY2hlY2tpbmdDb250ZXh0LCBlbGVtZW50LCBzZWxlY3Rvcik7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3JtYWwgZWxlbWVudCBwc2V1ZG8gY2xhc3MgY2hl
Y2tpbmcuCi0gICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpKSB7Cisg
ICAgICAgIHN3aXRjaCAoc2VsZWN0b3IucHNldWRvQ2xhc3NUeXBlKCkpIHsKICAgICAgICAgICAg
IC8vIFBzZXVkbyBjbGFzc2VzOgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c05vdDoKICAgICAgICAgICAgIGJyZWFrOyAvLyBBbHJlYWR5IGhhbmRsZWQgdXAgYWJvdmUuCiAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW1wdHk6CiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGZv
ciAoTm9kZSogbm9kZSA9IGVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBlbGVt
ZW50LmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTY3Myw2MSArNjcxLDYxIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShD
aGVja2luZ0MKICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NGaXJzdENoaWxkOgogICAgICAgICAgICAgLy8gZmlyc3QtY2hpbGQgbWF0Y2hlcyB0aGUg
Zmlyc3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50Ci0gICAgICAgICAgICBpZiAoY29uc3QgRWxl
bWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAg
ICAgICAgICAgIGJvb2wgaXNGaXJzdENoaWxkID0gaXNGaXJzdENoaWxkRWxlbWVudCgqZWxlbWVu
dCk7CisgICAgICAgICAgICBpZiAoY29uc3QgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQucGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0ZpcnN0Q2hpbGQg
PSBpc0ZpcnN0Q2hpbGRFbGVtZW50KGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChpc0Zp
cnN0Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdD
b250ZXh0LCAqZWxlbWVudCwgU3R5bGVSZWxhdGlvbjo6Rmlyc3RDaGlsZCk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCBlbGVtZW50LCBTdHls
ZVJlbGF0aW9uOjpGaXJzdENoaWxkKTsKICAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9u
KGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlUmVsYXRpb246OkNoaWxkcmVu
QWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzRmly
c3RDaGlsZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZpcnN0T2ZUeXBlOgogICAgICAgICAgICAgLy8gZmly
c3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGl0cyB0eXBlCi0gICAgICAg
ICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRk
U3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICplbGVtZW50LCBTdHlsZVJlbGF0aW9uOjpB
ZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gaXNGaXJz
dE9mVHlwZShjaGVja2luZ0NvbnRleHQsICplbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsK
KyAgICAgICAgICAgIGlmIChlbGVtZW50LnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAg
ICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCBlbGVtZW50LCBTdHlsZVJlbGF0
aW9uOjpBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
aXNGaXJzdE9mVHlwZShjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQudGFnUU5hbWUo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYXN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBsYXN0LWNoaWxk
IG1hdGNoZXMgdGhlIGxhc3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50Ci0gICAgICAgICAgICBp
ZiAoY29uc3QgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkgewotICAgICAgICAgICAgICAgIGJvb2wgaXNMYXN0Q2hpbGQgPSBwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgaXNMYXN0Q2hpbGRFbGVtZW50KCplbGVtZW50
KTsKKyAgICAgICAgICAgIGlmIChjb25zdCBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzTGFzdENoaWxkID0g
cGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIGlzTGFzdENoaWxk
RWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Q2hpbGQpCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqZWxlbWVu
dCwgU3R5bGVSZWxhdGlvbjo6TGFzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkU3R5
bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQsIFN0eWxlUmVsYXRpb246Okxhc3RD
aGlsZCk7CiAgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQs
ICpwYXJlbnRFbGVtZW50LCBTdHlsZVJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hp
bGRSdWxlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTGFzdENoaWxkOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzTGFzdE9mVHlwZToKICAgICAgICAgICAgIC8vIGxhc3Qtb2YtdHlwZSBtYXRjaGVzIHRo
ZSBsYXN0IGVsZW1lbnQgb2YgaXRzIHR5cGUKLSAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJl
bnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAo
RWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpKSB7CiAgICAg
ICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICpwYXJlbnRFbGVt
ZW50LCBTdHlsZVJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFy
c2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaXNMYXN0T2ZUeXBlKCplbGVtZW50LCBlbGVtZW50LT50YWdRTmFt
ZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMYXN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1l
bnQudGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NPbmx5Q2hpbGQ6Ci0gICAgICAgICAgICBp
ZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewot
ICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9IGlzRmlyc3RDaGlsZEVsZW1lbnQoKmVs
ZW1lbnQpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBw
YXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgaXNMYXN0Q2hpbGRF
bGVtZW50KCplbGVtZW50KTsKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGZpcnN0
Q2hpbGQgPSBpc0ZpcnN0Q2hpbGRFbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJv
b2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFy
c2luZ0NoaWxkcmVuKCkgJiYgaXNMYXN0Q2hpbGRFbGVtZW50KGVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwg
U3R5bGVSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKTsKICAgICAg
ICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBhcmVudEVsZW1l
bnQsIFN0eWxlUmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKTsKICAg
ICAgICAgICAgICAgICBpZiAoZmlyc3RDaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgYWRkU3R5
bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICplbGVtZW50LCBTdHlsZVJlbGF0aW9uOjpGaXJz
dENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0Nv
bnRleHQsIGVsZW1lbnQsIFN0eWxlUmVsYXRpb246OkZpcnN0Q2hpbGQpOwogICAgICAgICAgICAg
ICAgIGlmIChvbmx5Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24o
Y2hlY2tpbmdDb250ZXh0LCAqZWxlbWVudCwgU3R5bGVSZWxhdGlvbjo6TGFzdENoaWxkKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1l
bnQsIFN0eWxlUmVsYXRpb246Okxhc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG9u
bHlDaGlsZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc09ubHlPZlR5cGU6CiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5IHNsb3cuCi0gICAgICAgICAgICBpZiAoRWxlbWVudCog
cGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAg
ICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqZWxlbWVudCwgU3R5bGVSZWxh
dGlvbjo6QWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyk7CisgICAgICAgICAgICBpZiAoRWxlbWVu
dCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAg
ICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQsIFN0eWxlUmVs
YXRpb246OkFmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOwogICAgICAgICAgICAgICAgIGFkZFN0
eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqcGFyZW50RWxlbWVudCwgU3R5bGVSZWxhdGlv
bjo6Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOwogICAgICAgICAg
ICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGlzRmlyc3RPZlR5cGUoY2hlY2tpbmdDb250ZXh0LCAqZWxlbWVudCwgZWxlbWVudC0+dGFnUU5h
bWUoKSkgJiYgaXNMYXN0T2ZUeXBlKCplbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaXNGaXJzdE9mVHlwZShjaGVja2luZ0NvbnRleHQsIGVsZW1l
bnQsIGVsZW1lbnQudGFnUU5hbWUoKSkgJiYgaXNMYXN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQu
dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NNYXRjaGVzOgpAQCAtNzM2LDcgKzczNCw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBtYXhTcGVjaWZpY2l0eSA9IDA7CiAKICAgICAgICAgICAgICAgICBNYXRjaFR5
cGUgbG9jYWxNYXRjaFR5cGUgPSBNYXRjaFR5cGU6OlZpcnR1YWxQc2V1ZG9FbGVtZW50T25seTsK
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzdWJzZWxlY3RvciA9IHNl
bGVjdG9yLT5zZWxlY3Rvckxpc3QoKS0+Zmlyc3QoKTsgc3Vic2VsZWN0b3I7IHN1YnNlbGVjdG9y
ID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YnNlbGVjdG9yKSkgeworICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHN1YnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3JM
aXN0KCktPmZpcnN0KCk7IHN1YnNlbGVjdG9yOyBzdWJzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzdWJzZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAgTG9jYWxDb250ZXh0
IHN1YmNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIHN1YmNvbnRleHQuaW5G
dW5jdGlvbmFsUHNldWRvQ2xhc3MgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzdWJjb250
ZXh0LnBzZXVkb0VsZW1lbnRFZmZlY3RpdmUgPSBjb250ZXh0LnBzZXVkb0VsZW1lbnRFZmZlY3Rp
dmU7CkBAIC03NjIsMjggKzc2MCwyOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUo
Q2hlY2tpbmdDCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc01hdGNoZWRBbnl0aGluZzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NQbGFjZWhv
bGRlclNob3duOgotICAgICAgICAgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
PigqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5n
Q29udGV4dCwgKmVsZW1lbnQsIFN0eWxlUmVsYXRpb246OlVuaXF1ZSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqZWxlbWVudCku
aXNQbGFjZWhvbGRlclZpc2libGUoKTsKKyAgICAgICAgICAgIGlmIChpczxIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0
aW9uKGNoZWNraW5nQ29udGV4dCwgZWxlbWVudCwgU3R5bGVSZWxhdGlvbjo6VW5pcXVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+
KGVsZW1lbnQpLmlzUGxhY2Vob2xkZXJWaXNpYmxlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
TnRoQ2hpbGQ6Ci0gICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQorICAgICAg
ICAgICAgaWYgKCFzZWxlY3Rvci5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5z
ZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAgaWYgKGVsZW1lbnQucGFyZW50RWxlbWVudCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JM
aXN0ID0gc2VsZWN0b3Iuc2VsZWN0b3JMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgc2VsZWN0b3JMaXN0U3BlY2lmaWNpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
YXRjaFNlbGVjdG9yTGlzdChjaGVja2luZ0NvbnRleHQsIGNvbnRleHQsICplbGVtZW50LCAqc2Vs
ZWN0b3JMaXN0LCBzZWxlY3Rvckxpc3RTcGVjaWZpY2l0eSkpCisgICAgICAgICAgICAgICAgICAg
IGlmIChtYXRjaFNlbGVjdG9yTGlzdChjaGVja2luZ0NvbnRleHQsIGNvbnRleHQsIGVsZW1lbnQs
ICpzZWxlY3Rvckxpc3QsIHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNwZWNpZmljaXR5ID0gQ1NTU2VsZWN0b3I6OmFkZFNwZWNpZmljaXRpZXMoc3Bl
Y2lmaWNpdHksIHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KTsKICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0
LCAqZWxlbWVudCwgU3R5bGVSZWxhdGlvbjo6QWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyk7Cisg
ICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQs
IFN0eWxlUmVsYXRpb246OkFmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOwogCiAgICAgICAgICAg
ICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3QgQ1NTU2VsZWN0
b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChFbGVtZW50KiBzaWJsaW5nID0gRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKCplbGVtZW50KTsgc2libGluZzsgc2libGluZyA9IEVsZW1lbnRUcmF2
ZXJzYWw6OnByZXZpb3VzU2libGluZygqc2libGluZykpIHsKKyAgICAgICAgICAgICAgICBpZiAo
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxlY3Rvckxp
c3QoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIHNpYmxpbmcgPSBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoZWxlbWVudCk7IHNpYmxpbmc7IHNpYmxpbmcg
PSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKnNpYmxpbmcpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnNpYmxp
bmcsIFN0eWxlUmVsYXRpb246OkFmZmVjdHNOZXh0U2libGluZyk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRTcGVjaWZpY2l0eTsKQEAgLTc5MSwzMyArNzg5LDMz
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArK2NvdW50OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gY291bnRFbGVt
ZW50c0JlZm9yZShjaGVja2luZ0NvbnRleHQsICplbGVtZW50KTsKLSAgICAgICAgICAgICAgICAg
ICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsICplbGVtZW50LCBTdHlsZVJlbGF0
aW9uOjpOdGhDaGlsZEluZGV4LCBjb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9
IGNvdW50RWxlbWVudHNCZWZvcmUoY2hlY2tpbmdDb250ZXh0LCBlbGVtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQsIFN0
eWxlUmVsYXRpb246Ok50aENoaWxkSW5kZXgsIGNvdW50KTsKICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKKyAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0b3IubWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc050aE9mVHlwZToKLSAgICAgICAgICAgIGlm
ICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCisgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLnBhcnNl
TnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChlbGVtZW50
LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNo
ZWNraW5nQ29udGV4dCwgKmVsZW1lbnQsIFN0eWxlUmVsYXRpb246OkFmZmVjdGVkQnlQcmV2aW91
c1NpYmxpbmcpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQucGFyZW50RWxlbWVudCgpKSB7Cisg
ICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQs
IFN0eWxlUmVsYXRpb246OkFmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOwogCi0gICAgICAgICAg
ICAgICAgaW50IGNvdW50ID0gMSArIGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY2hlY2tpbmdD
b250ZXh0LCAqZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCisgICAgICAgICAgICAgICAgaW50IGNvdW50
ID0gMSArIGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY2hlY2tpbmdDb250ZXh0LCBlbGVtZW50
LCBlbGVtZW50LnRhZ1FOYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5tYXRj
aE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzTnRoTGFzdENoaWxkOgotICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgo
KSkKKyAgICAgICAgICAgIGlmICghc2VsZWN0b3IucGFyc2VOdGgoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVj
dG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpKSB7CisgICAg
ICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0
b3JMaXN0ID0gc2VsZWN0b3Iuc2VsZWN0b3JMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgc2VsZWN0b3JMaXN0U3BlY2lmaWNpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChtYXRjaFNlbGVjdG9yTGlzdChjaGVja2luZ0NvbnRleHQsIGNvbnRleHQsICplbGVtZW50LCAq
c2VsZWN0b3JMaXN0LCBzZWxlY3Rvckxpc3RTcGVjaWZpY2l0eSkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChtYXRjaFNlbGVjdG9yTGlzdChjaGVja2luZ0NvbnRleHQsIGNvbnRleHQsIGVsZW1l
bnQsICpzZWxlY3Rvckxpc3QsIHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHNwZWNpZmljaXR5ID0gQ1NTU2VsZWN0b3I6OmFkZFNwZWNpZmljaXRpZXMo
c3BlY2lmaWNpdHksIHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KTsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODMwLDM1
ICs4MjgsMzUgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKENoZWNraW5nQwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgICAgICBpbnQgY291
bnQgPSAxOwotICAgICAgICAgICAgICAgIGlmIChjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVj
dG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkgewotICAgICAgICAgICAgICAgICAg
ICBmb3IgKEVsZW1lbnQqIHNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygq
ZWxlbWVudCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGlu
Zygqc2libGluZykpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3QgQ1NTU2VsZWN0b3JMaXN0
KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICBmb3IgKEVsZW1lbnQqIHNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2li
bGluZyhlbGVtZW50KTsgc2libGluZzsgc2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRT
aWJsaW5nKCpzaWJsaW5nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWdu
b3JlZFNwZWNpZmljaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoU2VsZWN0
b3JMaXN0KGNoZWNraW5nQ29udGV4dCwgY29udGV4dCwgKnNpYmxpbmcsICpzZWxlY3Rvckxpc3Qs
IGlnbm9yZWRTcGVjaWZpY2l0eSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjb3Vu
dDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBjb3VudCArPSBjb3VudEVsZW1lbnRzQWZ0ZXIoKmVsZW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICBjb3VudCArPSBjb3VudEVsZW1lbnRzQWZ0ZXIoZWxlbWVudCk7CiAK
LSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKKyAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0b3IubWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc050aExhc3RPZlR5cGU6Ci0gICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQorICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci5w
YXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKEVsZW1l
bnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAg
ICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkp
IHsKICAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBh
cmVudEVsZW1lbnQsIFN0eWxlUmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKTsKIAogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNG
aW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgY291bnRFbGVtZW50c09mVHlw
ZUFmdGVyKCplbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKKyAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxICsgY291bnRFbGVtZW50c09mVHlwZUFmdGVyKGVsZW1lbnQsIGVsZW1lbnQudGFnUU5hbWUo
KSk7CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLm1hdGNoTnRoKGNvdW50KSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUYXJnZXQ6Ci0gICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBlbGVtZW50LT5kb2N1bWVudCgpLmNzc1RhcmdldCgpKQor
ICAgICAgICAgICAgaWYgKCZlbGVtZW50ID09IGVsZW1lbnQuZG9jdW1lbnQoKS5jc3NUYXJnZXQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FueToKQEAgLTg2Niw3ICs4NjQsNyBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgICAgICAg
ICAgTG9jYWxDb250ZXh0IHN1YmNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgc3Vi
Y29udGV4dC5pbkZ1bmN0aW9uYWxQc2V1ZG9DbGFzcyA9IHRydWU7CiAgICAgICAgICAgICAgICAg
c3ViY29udGV4dC5wc2V1ZG9FbGVtZW50RWZmZWN0aXZlID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgZm9yIChzdWJjb250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpLT5m
aXJzdCgpOyBzdWJjb250ZXh0LnNlbGVjdG9yOyBzdWJjb250ZXh0LnNlbGVjdG9yID0gQ1NTU2Vs
ZWN0b3JMaXN0OjpuZXh0KHN1YmNvbnRleHQuc2VsZWN0b3IpKSB7CisgICAgICAgICAgICAgICAg
Zm9yIChzdWJjb250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3JMaXN0KCktPmZpcnN0
KCk7IHN1YmNvbnRleHQuc2VsZWN0b3I7IHN1YmNvbnRleHQuc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc3ViY29udGV4dC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAg
c3ViY29udGV4dC5maXJzdFNlbGVjdG9yT2ZUaGVGcmFnbWVudCA9IHN1YmNvbnRleHQuc2VsZWN0
b3I7CiAgICAgICAgICAgICAgICAgICAgIFBzZXVkb0lkU2V0IGlnbm9yZUR5bmFtaWNQc2V1ZG87
CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZ29yZWRTcGVjaWZpY2l0eSA9IDA7CkBA
IC04NzYsMzkgKzg3NCwzOSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tp
bmdDCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NBdXRvZmlsbDoKLSAgICAgICAgICAgIHJldHVybiBpc0F1dG9m
aWxsZWQoKmVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGlzQXV0b2ZpbGxlZChlbGVtZW50
KTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBbnlMaW5rOgogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FueUxpbmtEZXByZWNhdGVkOgogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xpbms6CiAgICAgICAgICAgICAvLyA6dmlz
aXRlZCBhbmQgOmxpbmsgbWF0Y2hlcyBhcmUgc2VwYXJhdGVkIGxhdGVyIHdoZW4gYXBwbHlpbmcg
dGhlIHN0eWxlLiBIZXJlIGJvdGggY2xhc3NlcyBtYXRjaCBhbGwgbGlua3MuLi4KLSAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50LT5pc0xpbmsoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50
LmlzTGluaygpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Zpc2l0ZWQ6
CiAgICAgICAgICAgICAvLyAuLi5leGNlcHQgaWYgOnZpc2l0ZWQgbWF0Y2hpbmcgaXMgZGlzYWJs
ZWQgZm9yIGFuY2VzdG9yL3NpYmxpbmcgbWF0Y2hpbmcuCiAgICAgICAgICAgICAvLyBJbnNpZGUg
ZnVuY3Rpb25hbCBwc2V1ZG8gY2xhc3MgZXhjZXB0IGZvciA6bm90LCA6dmlzaXRlZCBuZXZlciBt
YXRjaGVzLgogICAgICAgICAgICAgaWYgKGNvbnRleHQuaW5GdW5jdGlvbmFsUHNldWRvQ2xhc3Mp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQtPmlzTGluaygpICYmIGNvbnRleHQudmlzaXRlZE1hdGNoVHlwZSA9PSBWaXNpdGVkTWF0Y2hU
eXBlOjpFbmFibGVkOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaXNMaW5rKCkgJiYgY29u
dGV4dC52aXNpdGVkTWF0Y2hUeXBlID09IFZpc2l0ZWRNYXRjaFR5cGU6OkVuYWJsZWQ7CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRHJhZzoKLSAgICAgICAgICAgIGFkZFN0
eWxlUmVsYXRpb24oY2hlY2tpbmdDb250ZXh0LCAqZWxlbWVudCwgU3R5bGVSZWxhdGlvbjo6QWZm
ZWN0ZWRCeURyYWcpOworICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRl
eHQsIGVsZW1lbnQsIFN0eWxlUmVsYXRpb246OkFmZmVjdGVkQnlEcmFnKTsKIAotICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNEcmFn
Z2luZygpKQorICAgICAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSAmJiBlbGVtZW50LnJl
bmRlcmVyKCktPmlzRHJhZ2dpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Zv
Y3VzOgogICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQp
OwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyOgotICAgICAgICAg
ICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBlbGVtZW50LT5pc0xpbmsoKSB8fCBjYW5NYXRjaEhv
dmVyT3JBY3RpdmVJblF1aXJrc01vZGUoY29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICBhZGRT
dHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKmVsZW1lbnQsIFN0eWxlUmVsYXRpb246OkFm
ZmVjdGVkQnlIb3Zlcik7CisgICAgICAgICAgICBpZiAobV9zdHJpY3RQYXJzaW5nIHx8IGVsZW1l
bnQuaXNMaW5rKCkgfHwgY2FuTWF0Y2hIb3Zlck9yQWN0aXZlSW5RdWlya3NNb2RlKGNvbnRleHQp
KSB7CisgICAgICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVs
ZW1lbnQsIFN0eWxlUmVsYXRpb246OkFmZmVjdGVkQnlIb3Zlcik7CiAKLSAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9y
Y2VQc2V1ZG9TdGF0ZShjb25zdF9jYXN0PEVsZW1lbnQmPigqZWxlbWVudCksIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0hvdmVyKSkKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ob3ZlcmVk
KCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGNvbnN0X2Nh
c3Q8RWxlbWVudCY+KGVsZW1lbnQpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlcikpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlOgot
ICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBlbGVtZW50LT5pc0xpbmsoKSB8fCBj
YW5NYXRjaEhvdmVyT3JBY3RpdmVJblF1aXJrc01vZGUoY29udGV4dCkpIHsKLSAgICAgICAgICAg
ICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKmVsZW1lbnQsIFN0eWxlUmVs
YXRpb246OkFmZmVjdGVkQnlBY3RpdmUpOworICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2lu
ZyB8fCBlbGVtZW50LmlzTGluaygpIHx8IGNhbk1hdGNoSG92ZXJPckFjdGl2ZUluUXVpcmtzTW9k
ZShjb250ZXh0KSkgeworICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tpbmdD
b250ZXh0LCBlbGVtZW50LCBTdHlsZVJlbGF0aW9uOjpBZmZlY3RlZEJ5QWN0aXZlKTsKIAotICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50LT5hY3RpdmUoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmZvcmNlUHNldWRvU3RhdGUoY29uc3RfY2FzdDxFbGVtZW50Jj4oKmVsZW1lbnQpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpKQorICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50LmFjdGl2ZSgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0
ZShjb25zdF9jYXN0PEVsZW1lbnQmPihlbGVtZW50KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
QWN0aXZlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKQEAgLTkzMywxNyArOTMxLDE3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NJbnZhbGlkOgogICAgICAgICAgICAgcmV0dXJuIGlzSW52YWxpZChlbGVtZW50KTsK
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkOgotICAgICAgICAg
ICAgcmV0dXJuIGlzQ2hlY2tlZCgqZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gaXNDaGVj
a2VkKGVsZW1lbnQpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0luZGV0
ZXJtaW5hdGU6CiAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZShl
bGVtZW50KTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NSb290OgotICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZWxlbWVudC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1l
bnQoKSkKKyAgICAgICAgICAgIGlmICgmZWxlbWVudCA9PSBlbGVtZW50LmRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nOgogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rvci0+bGFuZ0FyZ3VtZW50
TGlzdCgpICYmICFzZWxlY3Rvci0+bGFuZ0FyZ3VtZW50TGlzdCgpLT5pc0VtcHR5KCkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBtYXRjaGVzTGFuZ1BzZXVkb0NsYXNzKGVsZW1lbnQsICpzZWxl
Y3Rvci0+bGFuZ0FyZ3VtZW50TGlzdCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0
b3IubGFuZ0FyZ3VtZW50TGlzdCgpICYmICFzZWxlY3Rvci5sYW5nQXJndW1lbnRMaXN0KCktPmlz
RW1wdHkoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNMYW5nUHNldWRvQ2xhc3Mo
ZWxlbWVudCwgKnNlbGVjdG9yLmxhbmdBcmd1bWVudExpc3QoKSk7CiAgICAgICAgICAgICB9CiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0Z1bGxTY3JlZW46CkBAIC05NjgsOCArOTY2LDggQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lKENoZWNraW5nQwogCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzU2NvcGU6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgTm9kZSog
Y29udGV4dHVhbFJlZmVyZW5jZU5vZGUgPSAhY2hlY2tpbmdDb250ZXh0LnNjb3BlID8gZWxlbWVu
dC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA6IGNoZWNraW5nQ29udGV4dC5zY29wZTsK
LSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBjb250ZXh0dWFsUmVmZXJlbmNlTm9kZSkK
KyAgICAgICAgICAgICAgICBjb25zdCBOb2RlKiBjb250ZXh0dWFsUmVmZXJlbmNlTm9kZSA9ICFj
aGVja2luZ0NvbnRleHQuc2NvcGUgPyBlbGVtZW50LmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50
KCkgOiBjaGVja2luZ0NvbnRleHQuc2NvcGU7CisgICAgICAgICAgICAgICAgaWYgKCZlbGVtZW50
ID09IGNvbnRleHR1YWxSZWZlcmVuY2VOb2RlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTEwMTAsNyAr
MTAwOCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYg
KHNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVj
dG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3Vl
KSB7CisgICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1l
bnQgJiYgc2VsZWN0b3IucHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudEN1ZSkgewogICAgICAgICBMb2NhbENvbnRleHQgc3ViY29udGV4dChjb250ZXh0KTsK
IAogICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogY29uc3QgJiBzZWxlY3RvciA9IGNvbnRleHQu
c2VsZWN0b3I7CkBAIC0xMDU0LDEzICsxMDUyLDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpt
YXRjaFNlbGVjdG9yTGlzdCgKICAgICByZXR1cm4gaGFzTWF0Y2hlZEFueXRoaW5nOwogfQogCi1i
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhjb25zdCBDaGVj
a2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKSBjb25zdAorYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0Nv
bnRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3Rv
cikgY29uc3QKIHsKLSAgICBBU1NFUlQoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzKTsKKyAgICBBU1NFUlQoc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3MpOwogCi0gICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKHNlbGVjdG9yLnBzZXVkb0NsYXNzVHlwZSgpKSB7CiAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NXaW5kb3dJbmFjdGl2ZToKLSAgICAgICAgcmV0dXJu
IGlzV2luZG93SW5hY3RpdmUoJmVsZW1lbnQpOworICAgICAgICByZXR1cm4gaXNXaW5kb3dJbmFj
dGl2ZShlbGVtZW50KTsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQ6
CiAgICAgICAgIHJldHVybiBzY3JvbGxiYXJNYXRjaGVzRW5hYmxlZFBzZXVkb0NsYXNzKGNoZWNr
aW5nQ29udGV4dCk7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZDoK
QEAgLTExMjQsMTYgKzExMjIsMTYgQEAgdW5zaWduZWQgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1p
bmVMaW5rTQogICAgIHJldHVybiBsaW5rTWF0Y2hUeXBlOwogfQogCi1zdGF0aWMgYm9vbCBpc0Zy
YW1lRm9jdXNlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIGJvb2wgaXNGcmFtZUZv
Y3VzZWQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZWxlbWVudC0+ZG9j
dW1lbnQoKS5mcmFtZSgpICYmIGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpICYmIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3Vz
ZWRBbmRBY3RpdmUoKTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1Bz
ZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitib29sIFNlbGVjdG9yQ2hlY2tlcjo6
bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGNvbnN0X2Nhc3Q8
RWxlbWVudCY+KCplbGVtZW50KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXMpKQorICAg
IGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoY29uc3RfY2Fz
dDxFbGVtZW50Jj4oZWxlbWVudCksIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmZvY3VzZWQoKSAmJiBpc0Zy
YW1lRm9jdXNlZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudC5mb2N1c2VkKCkgJiYgaXNG
cmFtZUZvY3VzZWQoZWxlbWVudCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgJKHJldmlzaW9uIDE5NTI5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIG1hdGNoKGNvbnN0IENTU1NlbGVjdG9yJiwgY29uc3QgRWxlbWVudCYsIENoZWNr
aW5nQ29udGV4dCYsIHVuc2lnbmVkJiBzcGVjaWZpY2l0eSkgY29uc3Q7CiAKICAgICBzdGF0aWMg
Ym9vbCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAg
ICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7Ci0g
ICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50KiwgY29uc3Qg
Q1NTU2VsZWN0b3IqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBtYXRjaGVz
Rm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Jik7CiAKICAgICBlbnVtIExpbmtNYXRjaE1h
c2sgeyBNYXRjaERlZmF1bHQgPSAwLCBNYXRjaExpbmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAyLCBN
YXRjaEFsbCA9IE1hdGNoTGluayB8IE1hdGNoVmlzaXRlZCB9OwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKGNvbnN0IENTU1NlbGVjdG9yKik7CkBAIC0xMzEsNyAr
MTMwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrT25lKENoZWNraW5nQ29udGV4dCYsIGNv
bnN0IExvY2FsQ29udGV4dCYsIFBzZXVkb0lkU2V0JiwgTWF0Y2hUeXBlJiwgdW5zaWduZWQmIHNw
ZWNpZmljaXR5KSBjb25zdDsKICAgICBib29sIG1hdGNoU2VsZWN0b3JMaXN0KENoZWNraW5nQ29u
dGV4dCYsIGNvbnN0IExvY2FsQ29udGV4dCYsIGNvbnN0IEVsZW1lbnQmLCBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVj
a1Njcm9sbGJhclBzZXVkb0NsYXNzKGNvbnN0IENoZWNraW5nQ29udGV4dCYsIGNvbnN0IEVsZW1l
bnQmLCBjb25zdCBDU1NTZWxlY3RvciopIGNvbnN0OworICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQ
c2V1ZG9DbGFzcyhjb25zdCBDaGVja2luZ0NvbnRleHQmLCBjb25zdCBFbGVtZW50JiwgY29uc3Qg
Q1NTU2VsZWN0b3ImKSBjb25zdDsKIAogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwogICAgIGJv
b2wgbV9kb2N1bWVudElzSFRNTDsKQEAgLTE0OSwxOCArMTQ4LDYgQEAgaW5saW5lIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZQogICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzOwogfQogCi1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKQotewotICAgIGlmICghZWxlbWVu
dC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gZWxlbWVudC0+aXNIVE1MRWxlbWVu
dCgpID8gc2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIDogc2VsZWN0b3JB
dHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpOwotICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUgOiBlbGVtZW50LT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICBpZiAoYXR0
cmlidXRlLm1hdGNoZXMoc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLnByZWZpeCgpLCBsb2NhbE5hbWUs
IHNlbGVjdG9yQXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkgJiYgKCF2YWx1ZSB8fCBhdHRy
aWJ1dGUudmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaAkocmV2
aXNpb24gMTk1MjkzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RG
dW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMjYgKzQ2LDI2IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0F1dG9maWxsZWQoY29uc3QgRWwKICAgICByZXR1cm4gaXM8SFRNTElucHV0RWxl
bWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuaXNB
dXRvRmlsbGVkKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JG
b3JtKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZhdWx0
QnV0dG9uRm9yRm9ybShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBlbGVt
ZW50LT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCk7CisgICAgcmV0dXJuIGVsZW1lbnQuaXNEZWZh
dWx0QnV0dG9uRm9yRm9ybSgpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNEaXNhYmxlZChj
b25zdCBFbGVtZW50KiBlbGVtZW50KQorQUxXQVlTX0lOTElORSBib29sIGlzRGlzYWJsZWQoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gKGlzPEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ+KCplbGVtZW50KSB8fCBpczxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpIHx8IGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAgJiYgZWxlbWVudC0+aXNE
aXNhYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuIChpczxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50PihlbGVtZW50KSB8fCBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRN
TE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICYmIGVsZW1lbnQuaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc0VuYWJsZWQoY29uc3Qg
RWxlbWVudCogZWxlbWVudCkKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0VuYWJsZWQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+
KCplbGVtZW50KSB8fCBpczxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpIHx8IGlzPEhUTUxP
cHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAgJiYgIWVsZW1lbnQtPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpOworICAgIHJldHVybiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4o
ZWxlbWVudCkgfHwgaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPcHRH
cm91cEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAmJiAhZWxlbWVudC5pc0Rpc2FibGVkRm9y
bUNvbnRyb2woKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIGlzTWVkaWFEb2N1bWVudChjb25z
dCBFbGVtZW50KiBlbGVtZW50KQorQUxXQVlTX0lOTElORSBib29sIGlzTWVkaWFEb2N1bWVudChj
b25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgp
LmlzTWVkaWFEb2N1bWVudCgpOworICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuaXNNZWRp
YURvY3VtZW50KCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NoZWNrZWQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKQEAgLTgzLDM5ICs4MywzOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXND
aGVja2VkKGNvbnN0IEVsZW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5MSU5F
IGJvb2wgaXNJblJhbmdlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJv
b2wgaXNJblJhbmdlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1l
bnQtPmlzSW5SYW5nZSgpOworICAgIHJldHVybiBlbGVtZW50LmlzSW5SYW5nZSgpOwogfQogCi1B
TFdBWVNfSU5MSU5FIGJvb2wgaXNPdXRPZlJhbmdlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitB
TFdBWVNfSU5MSU5FIGJvb2wgaXNPdXRPZlJhbmdlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7
Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmlzT3V0T2ZSYW5nZSgpOworICAgIHJldHVybiBlbGVtZW50
LmlzT3V0T2ZSYW5nZSgpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNJbnZhbGlkKGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbnZhbGlkKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPm1hdGNoZXNJbnZhbGlkUHNl
dWRvQ2xhc3MoKTsKKyAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzSW52YWxpZFBzZXVkb0NsYXNz
KCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woY29uc3Qg
RWxlbWVudCogZWxlbWVudCkKK0FMV0FZU19JTkxJTkUgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRy
b2woY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZWxlbWVudC0+aXNPcHRp
b25hbEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuIGVsZW1lbnQuaXNPcHRpb25hbEZvcm1Db250
cm9sKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woY29u
c3QgRWxlbWVudCogZWxlbWVudCkKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1JlcXVpcmVkRm9ybUNv
bnRyb2woY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZWxlbWVudC0+aXNS
ZXF1aXJlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuIGVsZW1lbnQuaXNSZXF1aXJlZEZvcm1D
b250cm9sKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIHJldHVybiBlbGVtZW50LT5tYXRjaGVzVmFsaWRQc2V1ZG9DbGFzcygpOwor
ICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXNWYWxpZFBzZXVkb0NsYXNzKCk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgYm9vbCBpc1dpbmRvd0luYWN0aXZlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitB
TFdBWVNfSU5MSU5FIGJvb2wgaXNXaW5kb3dJbmFjdGl2ZShjb25zdCBFbGVtZW50JiBlbGVtZW50
KQogewotICAgIGF1dG8qIHBhZ2UgPSBlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBh
dXRvKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmlzQWN0aXZlKCk7CkBAIC0xNTEsMTcgKzE1MSwxNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgY29u
dGFpbnNsYW5ndWFnZVN1YnRhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5MSU5F
IGJvb2wgbWF0Y2hlc0xhbmdQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgYXJndW1lbnRMaXN0KQorQUxXQVlTX0lOTElORSBib29s
IG1hdGNoZXNMYW5nUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVj
dG9yPEF0b21pY1N0cmluZz4mIGFyZ3VtZW50TGlzdCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7
Ci0KICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2U7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIGlmIChpczxXZWJWVFRFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIGxhbmd1YWdlID0g
ZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmVsZW1lbnQpLmxhbmd1YWdlKCk7CisgICAgaWYgKGlz
PFdlYlZUVEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBsYW5ndWFnZSA9IGRvd25jYXN0PFdl
YlZUVEVsZW1lbnQ+KGVsZW1lbnQpLmxhbmd1YWdlKCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAg
ICAgIGxhbmd1YWdlID0gZWxlbWVudC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CisgICAg
ICAgIGxhbmd1YWdlID0gZWxlbWVudC5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKIAogICAg
IGlmIChsYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwNiwx
OSArMjA0LDE5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzTGFuZ1BzZXVkb0NsYXMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzUmVhZE9ubHlQ
c2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KQorQUxXQVlTX0lOTElORSBib29sIG1h
dGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAg
cmV0dXJuICFlbGVtZW50LT5tYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoKTsKKyAgICByZXR1
cm4gIWVsZW1lbnQubWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCogZWxl
bWVudCkKK0FMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZWxlbWVudC0+bWF0Y2hlc1JlYWRX
cml0ZVBzZXVkb0NsYXNzKCk7CisgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlc1JlYWRXcml0ZVBz
ZXVkb0NsYXNzKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRBcHBlYXJJbmRldGVy
bWluYXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxk
QXBwZWFySW5kZXRlcm1pbmF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVy
biBlbGVtZW50LT5zaG91bGRBcHBlYXJJbmRldGVybWluYXRlKCk7CisgICAgcmV0dXJuIGVsZW1l
bnQuc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
c2Nyb2xsYmFyTWF0Y2hlc0VuYWJsZWRQc2V1ZG9DbGFzcyhjb25zdCBTZWxlY3RvckNoZWNrZXI6
OkNoZWNraW5nQ29udGV4dCYgY29udGV4dCkKQEAgLTMyNSw1MCArMzIzLDUwIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBzY3JvbGxiYXJNYXRjaGVzQ29ybmUKIH0KIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzRnVsbFNjcmVlblBzZXVkb0NsYXNz
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hlc0Z1bGxT
Y3JlZW5Qc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIFdoaWxl
IGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIGFuZCB0aGUgZG9jdW1lbnQn
cyBjdXJyZW50IGZ1bGxzY3JlZW4KICAgICAvLyBlbGVtZW50IGlzIGFuIGVsZW1lbnQgaW4gdGhl
IGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIHRvCiAgICAg
Ly8gdGhhdCBlbGVtZW50LiBBbHNvLCBhbiA8aWZyYW1lPiwgPG9iamVjdD4gb3IgPGVtYmVkPiBl
bGVtZW50IHdob3NlIGNoaWxkIGJyb3dzaW5nCiAgICAgLy8gY29udGV4dCdzIERvY3VtZW50IGlz
IGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGhhcyB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFz
cyBhcHBsaWVkLgotICAgIGlmIChlbGVtZW50LT5pc0ZyYW1lRWxlbWVudEJhc2UoKSAmJiBlbGVt
ZW50LT5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkpCisgICAgaWYgKGVsZW1lbnQuaXNGcmFt
ZUVsZW1lbnRCYXNlKCkgJiYgZWxlbWVudC5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghZWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXRJ
c0Z1bGxTY3JlZW4oKSkKKyAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS53ZWJraXRJc0Z1bGxT
Y3JlZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlbGVtZW50ID09IGVs
ZW1lbnQtPmRvY3VtZW50KCkud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCk7CisgICAg
cmV0dXJuICZlbGVtZW50ID09IGVsZW1lbnQuZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50RnVsbFNj
cmVlbkVsZW1lbnQoKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIG1hdGNoZXNGdWxsU2NyZWVu
QW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb25Qc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBl
bGVtZW50KQorQUxXQVlTX0lOTElORSBib29sIG1hdGNoZXNGdWxsU2NyZWVuQW5pbWF0aW5nRnVs
bFNjcmVlblRyYW5zaXRpb25Qc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewot
ICAgIGlmIChlbGVtZW50ICE9IGVsZW1lbnQtPmRvY3VtZW50KCkud2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50KCkpCisgICAgaWYgKCZlbGVtZW50ICE9IGVsZW1lbnQuZG9jdW1lbnQoKS53
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgpLmlzQW5pbWF0aW5nRnVsbFNjcmVlbigpOwor
ICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuaXNBbmltYXRpbmdGdWxsU2NyZWVuKCk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzRnVsbFNjcmVlbkFuY2VzdG9yUHNldWRvQ2xh
c3MoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK0FMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzRnVs
bFNjcmVlbkFuY2VzdG9yUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAg
ICByZXR1cm4gZWxlbWVudC0+Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpOworICAgIHJldHVy
biBlbGVtZW50LmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKTsKIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIG1hdGNoZXNGdWxsU2NyZWVuRG9jdW1lbnRQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50
KiBlbGVtZW50KQorQUxXQVlTX0lOTElORSBib29sIG1hdGNoZXNGdWxsU2NyZWVuRG9jdW1lbnRQ
c2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIFdoaWxlIGEgRG9j
dW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIHRoZSAnZnVsbC1zY3JlZW4tZG9jdW1l
bnQnIHBzZXVkb2NsYXNzIGFwcGxpZXMKICAgICAvLyB0byBhbGwgZWxlbWVudHMgb2YgdGhhdCBE
b2N1bWVudC4KLSAgICBpZiAoIWVsZW1lbnQtPmRvY3VtZW50KCkud2Via2l0SXNGdWxsU2NyZWVu
KCkpCisgICAgaWYgKCFlbGVtZW50LmRvY3VtZW50KCkud2Via2l0SXNGdWxsU2NyZWVuKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotQUxXQVlTX0lOTElORSBib29sIG1hdGNoZXNGdXR1cmVDdWVQ
c2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KQorQUxXQVlTX0lOTElORSBib29sIG1h
dGNoZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAg
IHJldHVybiBpczxXZWJWVFRFbGVtZW50PigqZWxlbWVudCkgJiYgIWRvd25jYXN0PFdlYlZUVEVs
ZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3ROb2RlKCk7CisgICAgcmV0dXJuIGlzPFdlYlZUVEVsZW1l
bnQ+KGVsZW1lbnQpICYmICFkb3duY2FzdDxXZWJWVFRFbGVtZW50PihlbGVtZW50KS5pc1Bhc3RO
b2RlKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzUGFzdEN1ZVBzZXVkb0NsYXNz
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hlc1Bhc3RD
dWVQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpczxX
ZWJWVFRFbGVtZW50PigqZWxlbWVudCkgJiYgZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmVsZW1l
bnQpLmlzUGFzdE5vZGUoKTsKKyAgICByZXR1cm4gaXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkg
JiYgZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oZWxlbWVudCkuaXNQYXN0Tm9kZSgpOwogfQogI2Vu
ZGlmCiAK
</data>
<flag name="review"
          id="294214"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>