<?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>155960</bug_id>
          
          <creation_ts>2016-03-28 18:11:01 -0700</creation_ts>
          <short_desc>Allow builtin JS functions to be intrinsics</short_desc>
          <delta_ts>2016-03-29 14:04:48 -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>JavaScriptCore</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178598</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-28 18:11:01 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178599</commentid>
    <comment_count>1</comment_count>
      <attachid>275073</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-28 18:11:38 -0700</bug_when>
    <thetext>Created attachment 275073
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178600</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-28 18:13:45 -0700</bug_when>
    <thetext>This patch modifies the JS builtins code generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-builtins-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178601</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-28 18:14:00 -0700</bug_when>
    <thetext>Attachment 275073 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1586:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:133:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 11 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>1178603</commentid>
    <comment_count>4</comment_count>
      <attachid>275074</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-28 18:43:17 -0700</bug_when>
    <thetext>Created attachment 275074
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178604</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-28 18:44:53 -0700</bug_when>
    <thetext>Attachment 275074 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1586:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:133:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 12 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>1178721</commentid>
    <comment_count>6</comment_count>
      <attachid>275108</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-29 10:59:00 -0700</bug_when>
    <thetext>Created attachment 275108
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178722</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-29 10:59:54 -0700</bug_when>
    <thetext>Attachment 275108 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1586:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:133:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 12 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>1178729</commentid>
    <comment_count>8</comment_count>
      <attachid>275112</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-29 11:20:36 -0700</bug_when>
    <thetext>Created attachment 275112
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178730</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-29 11:21:52 -0700</bug_when>
    <thetext>Attachment 275112 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1586:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:133:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 12 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>1178773</commentid>
    <comment_count>10</comment_count>
      <attachid>275123</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-29 13:16:09 -0700</bug_when>
    <thetext>Created attachment 275123
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178775</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-29 13:17:38 -0700</bug_when>
    <thetext>Attachment 275123 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1586:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:133:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 5 in 14 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>1178786</commentid>
    <comment_count>12</comment_count>
      <attachid>275123</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-29 13:37:18 -0700</bug_when>
    <thetext>Comment on attachment 275123
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +		

Please delete blank space here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178794</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-29 14:04:48 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/198798</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275073</attachid>
            <date>2016-03-28 18:11:38 -0700</date>
            <delta_ts>2016-03-28 18:43:17 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>22266</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5CShyZXZpc2lvbiAxOTg3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1l
bnRhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOSBAQCBjbGFzcyBCdWlsdGlu
c0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL1ZNLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBdCiAKICAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkJKHJldmlzaW9uIDE5ODc2NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkg
QEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJydW50aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBd
CiAKICAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21f
ZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQko
cmV2aXNpb24gMTk4NzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTIgKzEyOSwx
NCBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1
aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUn
LAogICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCiAgICAgICAg
ICAgICAnZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKLSAgICAg
ICAgICAgICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICAnY2Fu
Q29uc3RydWN0JzogY29uc3RydWN0QWJpbGl0eSwKKyAgICAgICAgICAgICdpbnRyaW5zaWMnOiBm
dW5jdGlvbi5pbnRyaW5zaWMKICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1l
KXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVj
dClzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVO
YW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAg
ICBsaW5lcy5hcHBlbmQoInN0YXRpYyBjb25zdCBJbnRyaW5zaWMgc18lKGNvZGVOYW1lKXNJbnRy
aW5zaWMgPSAlKGludHJpbnNpYylzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJj
b25zdCBjaGFyKiBzXyUoY29kZU5hbWUpcyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJn
cyk7CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5CShyZXZpc2lvbiAxOTg3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19tb2RlbC5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsOCBA
QCBfRlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CiAgICAgfSwKIH0KIAotZnVuY3Rpb25IZWFkUmVn
RXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/
XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGls
ZShyIihAaW50cmluc2ljPVx3K1xzKyk/KD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcrXHMq
XCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbkludHJpbnNpY1JlZ0V4cCA9
IHJlLmNvbXBpbGUociJeQGludHJpbnNpYz0oXHcrKVxzKyIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0
b3IpXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCiBmdW5jdGlvbklzQ29uc3Ry
dWN0b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlv
bnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcr
KSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKQEAgLTkzLDE2ICs5NCwyNCBAQCBjbGFz
cyBCdWlsdGluT2JqZWN0OgogCiAKIGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3Rv
ciwgcGFyYW1ldGVycyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uX25hbWUsIGZ1
bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMsIGludHJpbnNpYyk6CiAg
ICAgICAgIHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUKICAgICAgICAgc2VsZi5m
dW5jdGlvbl9zb3VyY2UgPSBmdW5jdGlvbl9zb3VyY2UKICAgICAgICAgc2VsZi5pc19jb25zdHJ1
Y3RvciA9IGlzX2NvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRl
cnMKKyAgICAgICAgc2VsZi5pbnRyaW5zaWMgPSBpbnRyaW5zaWMKICAgICAgICAgc2VsZi5vYmpl
Y3QgPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0aW5PYmplY3QKIAogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlvbl9zdHJpbmcpOgogICAgICAgICBm
dW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25f
c3RyaW5nKQorCisgICAgICAgIGludHJpbnNpYyA9ICJOb0ludHJpbnNpYyIKKyAgICAgICAgaW50
cmluc2ljTWF0Y2ggPSBmdW5jdGlvbkludHJpbnNpY1JlZ0V4cC5zZWFyY2goZnVuY3Rpb25fc291
cmNlKQorICAgICAgICBpZiBpbnRyaW5zaWNNYXRjaDoKKyAgICAgICAgICAgIGludHJpbnNpYyA9
IGludHJpbnNpY01hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBm
dW5jdGlvbkludHJpbnNpY1JlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3NvdXJjZSkKKwogICAgICAg
ICBpZiBvcy5nZXRlbnYoIkNPTkZJR1VSQVRJT04iLCAiRGVidWciKS5zdGFydHN3aXRoKCJEZWJ1
ZyIpOgogICAgICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbGluZVdpdGhPbmx5U2luZ2xlTGlu
ZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zb3VyY2UpCiAgICAgICAgICAgICBmdW5j
dGlvbl9zb3VyY2UgPSBsaW5lV2l0aFRyYWlsaW5nU2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCJcbiIsIGZ1bmN0aW9uX3NvdXJjZSkKQEAgLTExNCw3ICsxMjMsNyBAQCBjbGFzcyBCdWlsdGlu
RnVuY3Rpb246CiAgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgogICAgICAgICAg
ICAgcGFyYW1ldGVycyA9IFtdCiAKLSAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5j
dGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKQor
ICAgICAgICByZXR1cm4gQnVpbHRpbkZ1bmN0aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3Nv
dXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMsIGludHJpbnNpYykKIAogICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgogICAgICAgICBpbnRlcmZhY2UgPSAiJXMoJXMpIiAlIChzZWxmLmZ1bmN0
aW9uX25hbWUsICcsICcuam9pbihzZWxmLnBhcmFtZXRlcnMpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQkocmV2aXNpb24gMTk4NzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04
OSw3ICs4OSw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlUKICNk
ZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJs
ZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAt
MTAwLDcgKzEwMCw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRkkK
ICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTEyLDcgKzExMiw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlUKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERh
dGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAg
IHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNl
KCkpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmpl
Y3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2Rl
TmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0K
ICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEyNCw3ICsxMjQsNyBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAg
IEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1
aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2Jq
ZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0
TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJl
dmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogfQog
Ci1GdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UsIGludCBvdmVycmlkZUxpbmVOdW1i
ZXIpCitGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5r
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UsIE9wdGlvbmFsPGludD4gb3Zl
cnJpZGVMaW5lTnVtYmVyLCBJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbV9zb3VyY2VPdmVycmlkZSA/IFNvdXJjZUNvZGUobV9zb3VyY2VPdmVycmlkZSkg
OiBvd25lclNvdXJjZTsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKQEAgLTE1NSw5ICsxNTUsOSBAQCBGdW5jdGlvbkV4ZWN1
dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIHJlc3VsdCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBj
b2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbik7Ci0gICAgaWYgKG92ZXJyaWRlTGluZU51bWJlciAhPSAtMSkKLSAgICAgICAg
cmVzdWx0LT5zZXRPdmVycmlkZUxpbmVOdW1iZXIob3ZlcnJpZGVMaW5lTnVtYmVyKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIHJlc3VsdCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZt
LCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgaW50cmluc2ljKTsKKyAgICBpZiAob3ZlcnJpZGVMaW5lTnVtYmVyKQor
ICAgICAgICByZXN1bHQtPnNldE92ZXJyaWRlTGluZU51bWJlcigqb3ZlcnJpZGVMaW5lTnVtYmVy
KTsKIAogICAgIGlmIChVTkxJS0VMWShoYXNGdW5jdGlvbk92ZXJyaWRlKSkgewogICAgICAgICBy
ZXN1bHQtPm92ZXJyaWRlUGFyYW1ldGVyQW5kVHlwZVByb2ZpbGluZ1N0YXJ0RW5kT2Zmc2V0cygK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxOTg3NjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVJbmZvLmgi
CiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZv
LmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMDcsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKICAgICAgICAgaW50IG92ZXJyaWRl
TGluZU51bWJlcik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUq
IGxpbmsoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0x
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBOdWxs
b3B0LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYyk7CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcwLDEyICsxNTcwLDYg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbAogICAgIGlmICghaW5s
aW5pbmdCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgYm9vbCBkaWRJ
bnNlcnRDaGVja3MgPSBmYWxzZTsKLSAgICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5n
ID0gWyZdICgpIHsKLSAgICAgICAgaW5zZXJ0Q2hlY2tzKG51bGxwdHIpOwotICAgICAgICBkaWRJ
bnNlcnRDaGVja3MgPSB0cnVlOwotICAgIH07Ci0gICAgCiAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKICAg
ICAKQEAgLTE1ODcsNiArMTU4MSwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9J
bmxpbmVDYWxsCiAgICAgLy8gZXhpdCB0bzogTG9hZFZhcmFyZ3MgaXMgZWZmZWN0ZnVsIGFuZCBp
dCdzIHBhcnQgb2YgdGhlIG9wX2NhbGxfdmFyYXJncywgc28gd2UgY2FuJ3QgZXhpdCB3aXRob3V0
CiAgICAgLy8gY2FsbGluZyBMb2FkVmFyYXJncyB0d2ljZS4KICAgICBpZiAoIUlubGluZUNhbGxG
cmFtZTo6aXNWYXJhcmdzKGtpbmQpKSB7CisKKyAgICAgICAgYm9vbCBkaWRJbnNlcnRDaGVja3Mg
PSBmYWxzZTsKKyAgICAgICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9IFsmXSAo
KSB7CisgICAgICAgICAgICBpbnNlcnRDaGVja3MobnVsbHB0cik7CisgICAgICAgICAgICBkaWRJ
bnNlcnRDaGVja3MgPSB0cnVlOworICAgICAgICB9OworICAgIAogICAgICAgICBpZiAoSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CiAgICAg
ICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQsIGluc2VydENoZWNrc1dpdGhBY2NvdW50
aW5nKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7
CkBAIC0xNjA4LDggKzE2MDksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsCiAgICAgICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFkaWRJbnNlcnRDaGVja3MpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1
c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CiAgICAgfQog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMjAgKzEwMSw2IEBAIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAgICAgQVNTRVJUKGNsYXNzSW5mbygpID09IE5hdGl2
ZUV4ZWN1dGFibGU6OmluZm8oKSk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLUludHJpbnNp
YyBFeGVjdXRhYmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKLXsKLSAgICBpZiAoY29uc3QgTmF0
aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8Y29uc3QgTmF0
aXZlRXhlY3V0YWJsZSo+KHRoaXMpKQotICAgICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZS0+
aW50cmluc2ljKCk7Ci0gICAgcmV0dXJuIE5vSW50cmluc2ljOwotfQotI2Vsc2UKLUludHJpbnNp
YyBFeGVjdXRhYmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTm9JbnRy
aW5zaWM7Ci19Ci0jZW5kaWYKLQogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNf
aW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCiB2b2lkIE5hdGl2ZUV4
ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpAQCAtMTIyLDE3ICsxMDgsMTAgQEAgdm9p
ZCBOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogYwogICAgIHN0YXRpY19jYXN0PE5h
dGl2ZUV4ZWN1dGFibGUqPihjZWxsKS0+TmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFi
bGUoKTsKIH0KIAotI2lmIEVOQUJMRShERkdfSklUKQotSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFi
bGU6OmludHJpbnNpYygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50cmluc2ljOwotfQotI2Vu
ZGlmCi0KIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3Jp
cHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhl
Y3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQotICAgIDogRXhlY3V0
YWJsZUJhc2Uodm0sIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQorU2Ny
aXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rp
b25Db250ZXh0LCBJbnRyaW5zaWMgaW50cmluc2ljKQorICAgIDogRXhlY3V0YWJsZUJhc2Uodm0s
IHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVELCBpbnRyaW5zaWMpCiAgICAg
LCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQog
ICAgICwgbV9kaWRUcnlUb0VudGVySW5Mb29wKGZhbHNlKQogICAgICwgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyhmYWxzZSkKQEAgLTQzNiw3ICs0MTUsNyBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShFCiB9CiAKIEV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENv
bnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFs
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENv
bnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICA6
IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgTm9JbnRyaW5zaWMpCiB7CiB9CiAKQEAgLTQ0OCw3
ICs0MjcsNyBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsCiBjb25z
dCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlByb2dyYW1FeGVjdXRh
YmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQ
cm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogUHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRh
YmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2Ny
aXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZh
bHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIGZhbHNlLCBOb0ludHJpbnNpYykKIHsKICAgICBtX3R5cGVQcm9maWxpbmdT
dGFydE9mZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxl
bmd0aCgpIC0gMTsKQEAgLTQ2NCw3ICs0NDMsNyBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpk
ZXN0cm95KEpTQ2VsbCogCiBjb25zdCBDbGFzc0luZm8gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkg
fTsKIAogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZh
bHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBOb0ludHJpbnNpYykKIHsKICAgICBtX3R5cGVQcm9m
aWxpbmdTdGFydE9mZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291
cmNlLmxlbmd0aCgpIC0gMTsKQEAgLTQ5NSw4ICs0NzQsOCBAQCB2b2lkIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpkZXN0cm95KEpTCiAKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4ZWN1dGFi
bGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCi1G
dW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0
YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbikKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0u
ZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4
ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZl
ZENvbnRleHRUeXBlKCksIGZhbHNlKQorRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1
dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWdu
ZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIElu
dHJpbnNpYyBpbnRyaW5zaWMpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5p
c0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBmYWxzZSwgaW50cmluc2ljKQogICAgICwgbV91bmxpbmtlZEV4ZWN1dGFibGUodm0sIHRo
aXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc291cmNlLmlz
TnVsbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTAgKzc1LDExIEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QgPSAwOwogICAgIHN0
YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEID0gLTE7CiAKLSAgICBF
eGVjdXRhYmxlQmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbnVtUGFyYW1l
dGVycykKKyAgICBFeGVjdXRhYmxlQmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQgbnVtUGFyYW1ldGVycywgSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgOiBKU0NlbGwo
dm0sIHN0cnVjdHVyZSkKICAgICAgICAgLCBtX251bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBhcmFt
ZXRlcnMpCiAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0KG51bVBhcmFtZXRl
cnMpCisgICAgICAgICwgbV9pbnRyaW5zaWMoaW50cmluc2ljKQogICAgIHsKICAgICB9CiAKQEAg
LTIzMSw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSW50cmluc2ljcyBhcmUg
b25seSBmb3IgY2FsbHMsIGN1cnJlbnRseS4KLSAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkgY29u
c3Q7CisgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgcmV0dXJuIG1faW50cmluc2lj
OyB9CiAgICAgICAgIAogICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAogICAgIHsKQEAgLTI0Myw2ICsyNDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgICAgIAogcHJvdGVjdGVkOgor
ICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2Rl
Rm9yQ2FsbDsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7CkBA
IC0yNTksOCArMjYxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBj
cmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgewogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwotICAgICAg
ICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJs
ZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7
Ci0gICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1bmssIGNvbnN0
cnVjdFRodW5rLCBpbnRyaW5zaWMsIG5hbWUpOworICAgICAgICBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICAgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxUaHVuaywgY29uc3RydWN0VGh1bmss
IG5hbWUpOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9CiAKQEAgLTI5NiwyMCAr
Mjk4LDE5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25z
dHJ1Y3RUaHVuaywgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVu
aywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBtX2pp
dENvZGVGb3JDYWxsID0gY2FsbFRodW5rOwogICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3Qg
PSBjb25zdHJ1Y3RUaHVuazsKLSAgICAgICAgbV9pbnRyaW5zaWMgPSBpbnRyaW5zaWM7CiAgICAg
ICAgIG1fbmFtZSA9IG5hbWU7CiAgICAgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBF
eGVjdXRhYmxlQmFzZTsKIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgIDogRXhl
Y3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9Q
QVJBTUVURVJTX0lTX0hPU1QpCisgICAgTmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGlu
dHJpbnNpYykKKyAgICAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgdm0ubmF0aXZlRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCwgaW50cmluc2ljKQogICAg
ICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rvcihjb25z
dHJ1Y3RvcikKICAgICB7CkBAIC0zOTksNyArNDAwLDcgQEAgcHJpdmF0ZToKICAgICBKU09iamVj
dCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoRXhlY1N0YXRlKiwgSlNGdW5jdGlvbiosIEpTU2Nv
cGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKIAogcHJvdGVjdGVkOgotICAgIFNjcmlwdEV4
ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29u
dGV4dCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBJbnRyaW5zaWMpOwogCiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiAgICAgewpAQCAtNTgwLDkgKzU4MSw5IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZSgKICAgICAgICAgVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtl
ZEV4ZWN1dGFibGUsIAotICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RM
aW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKQorICAgICAgICB1
bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHsKLSAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZt
LCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbik7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVh
cCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZp
cnN0TGluZSwgbGFzdExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGludHJpbnNpYyk7CiAg
ICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGU7CiAgICAgfQpAQCAtNjk3LDcgKzY5OCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSgKICAgICAgICAg
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNp
Z25lZCBmaXJzdExpbmUsIAotICAgICAgICB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbik7CisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5l
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBJbnRyaW5zaWMpOwog
ICAgIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEludHJpbnNpYyB7CitlbnVt
IEpTX0VYUE9SVF9QUklWQVRFIEludHJpbnNpYyB7CiAgICAgLy8gQ2FsbCBpbnRyaW5zaWNzLgog
ICAgIE5vSW50cmluc2ljLAogICAgIEFic0ludHJpbnNpYywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275074</attachid>
            <date>2016-03-28 18:43:17 -0700</date>
            <delta_ts>2016-03-29 10:59:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>22665</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5CShyZXZpc2lvbiAxOTg3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1l
bnRhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOSBAQCBjbGFzcyBCdWlsdGlu
c0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL1ZNLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBdCiAKICAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkJKHJldmlzaW9uIDE5ODc2NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkg
QEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJydW50aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBd
CiAKICAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21f
ZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQko
cmV2aXNpb24gMTk4NzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTIgKzEyOSwx
NCBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1
aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUn
LAogICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCiAgICAgICAg
ICAgICAnZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKLSAgICAg
ICAgICAgICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICAnY2Fu
Q29uc3RydWN0JzogY29uc3RydWN0QWJpbGl0eSwKKyAgICAgICAgICAgICdpbnRyaW5zaWMnOiBm
dW5jdGlvbi5pbnRyaW5zaWMKICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1l
KXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVj
dClzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVO
YW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAg
ICBsaW5lcy5hcHBlbmQoInN0YXRpYyBjb25zdCBJbnRyaW5zaWMgc18lKGNvZGVOYW1lKXNJbnRy
aW5zaWMgPSAlKGludHJpbnNpYylzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJj
b25zdCBjaGFyKiBzXyUoY29kZU5hbWUpcyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJn
cyk7CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5CShyZXZpc2lvbiAxOTg3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19tb2RlbC5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsOCBA
QCBfRlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CiAgICAgfSwKIH0KIAotZnVuY3Rpb25IZWFkUmVn
RXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/
XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGls
ZShyIihAaW50cmluc2ljPVx3K1xzKyk/KD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcrXHMq
XCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbkludHJpbnNpY1JlZ0V4cCA9
IHJlLmNvbXBpbGUociJeQGludHJpbnNpYz0oXHcrKVxzKyIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0
b3IpXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCiBmdW5jdGlvbklzQ29uc3Ry
dWN0b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlv
bnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcr
KSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKQEAgLTkzLDE2ICs5NCwyNCBAQCBjbGFz
cyBCdWlsdGluT2JqZWN0OgogCiAKIGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3Rv
ciwgcGFyYW1ldGVycyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uX25hbWUsIGZ1
bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMsIGludHJpbnNpYyk6CiAg
ICAgICAgIHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUKICAgICAgICAgc2VsZi5m
dW5jdGlvbl9zb3VyY2UgPSBmdW5jdGlvbl9zb3VyY2UKICAgICAgICAgc2VsZi5pc19jb25zdHJ1
Y3RvciA9IGlzX2NvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRl
cnMKKyAgICAgICAgc2VsZi5pbnRyaW5zaWMgPSBpbnRyaW5zaWMKICAgICAgICAgc2VsZi5vYmpl
Y3QgPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0aW5PYmplY3QKIAogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlvbl9zdHJpbmcpOgogICAgICAgICBm
dW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25f
c3RyaW5nKQorCisgICAgICAgIGludHJpbnNpYyA9ICJOb0ludHJpbnNpYyIKKyAgICAgICAgaW50
cmluc2ljTWF0Y2ggPSBmdW5jdGlvbkludHJpbnNpY1JlZ0V4cC5zZWFyY2goZnVuY3Rpb25fc291
cmNlKQorICAgICAgICBpZiBpbnRyaW5zaWNNYXRjaDoKKyAgICAgICAgICAgIGludHJpbnNpYyA9
IGludHJpbnNpY01hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBm
dW5jdGlvbkludHJpbnNpY1JlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3NvdXJjZSkKKwogICAgICAg
ICBpZiBvcy5nZXRlbnYoIkNPTkZJR1VSQVRJT04iLCAiRGVidWciKS5zdGFydHN3aXRoKCJEZWJ1
ZyIpOgogICAgICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbGluZVdpdGhPbmx5U2luZ2xlTGlu
ZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zb3VyY2UpCiAgICAgICAgICAgICBmdW5j
dGlvbl9zb3VyY2UgPSBsaW5lV2l0aFRyYWlsaW5nU2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCJcbiIsIGZ1bmN0aW9uX3NvdXJjZSkKQEAgLTExNCw3ICsxMjMsNyBAQCBjbGFzcyBCdWlsdGlu
RnVuY3Rpb246CiAgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgogICAgICAgICAg
ICAgcGFyYW1ldGVycyA9IFtdCiAKLSAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5j
dGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKQor
ICAgICAgICByZXR1cm4gQnVpbHRpbkZ1bmN0aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3Nv
dXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMsIGludHJpbnNpYykKIAogICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgogICAgICAgICBpbnRlcmZhY2UgPSAiJXMoJXMpIiAlIChzZWxmLmZ1bmN0
aW9uX25hbWUsICcsICcuam9pbihzZWxmLnBhcmFtZXRlcnMpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQkocmV2aXNpb24gMTk4NzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04
OSw3ICs4OSw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlUKICNk
ZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJs
ZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAt
MTAwLDcgKzEwMCw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRkkK
ICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTEyLDcgKzExMiw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlUKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERh
dGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAg
IHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNl
KCkpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmpl
Y3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2Rl
TmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0K
ICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEyNCw3ICsxMjQsNyBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAg
IEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1
aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2Jq
ZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0
TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJl
dmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogfQog
Ci1GdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UsIGludCBvdmVycmlkZUxpbmVOdW1i
ZXIpCitGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5r
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UsIE9wdGlvbmFsPGludD4gb3Zl
cnJpZGVMaW5lTnVtYmVyLCBJbnRyaW5zaWMgaW50cmluc2ljKQogewogICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbV9zb3VyY2VPdmVycmlkZSA/IFNvdXJjZUNvZGUobV9zb3VyY2VPdmVycmlkZSkg
OiBvd25lclNvdXJjZTsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKQEAgLTE1NSw5ICsxNTUsOSBAQCBGdW5jdGlvbkV4ZWN1
dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIHJlc3VsdCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBj
b2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbik7Ci0gICAgaWYgKG92ZXJyaWRlTGluZU51bWJlciAhPSAtMSkKLSAgICAgICAg
cmVzdWx0LT5zZXRPdmVycmlkZUxpbmVOdW1iZXIob3ZlcnJpZGVMaW5lTnVtYmVyKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIHJlc3VsdCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZt
LCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgaW50cmluc2ljKTsKKyAgICBpZiAob3ZlcnJpZGVMaW5lTnVtYmVyKQor
ICAgICAgICByZXN1bHQtPnNldE92ZXJyaWRlTGluZU51bWJlcigqb3ZlcnJpZGVMaW5lTnVtYmVy
KTsKIAogICAgIGlmIChVTkxJS0VMWShoYXNGdW5jdGlvbk92ZXJyaWRlKSkgewogICAgICAgICBy
ZXN1bHQtPm92ZXJyaWRlUGFyYW1ldGVyQW5kVHlwZVByb2ZpbGluZ1N0YXJ0RW5kT2Zmc2V0cygK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxOTg3NjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVJbmZvLmgi
CiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZv
LmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMDcsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKICAgICAgICAgaW50IG92ZXJyaWRl
TGluZU51bWJlcik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUq
IGxpbmsoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0x
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBOdWxs
b3B0LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYyk7CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcwLDEyICsxNTcwLDYg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbAogICAgIGlmICghaW5s
aW5pbmdCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgYm9vbCBkaWRJ
bnNlcnRDaGVja3MgPSBmYWxzZTsKLSAgICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5n
ID0gWyZdICgpIHsKLSAgICAgICAgaW5zZXJ0Q2hlY2tzKG51bGxwdHIpOwotICAgICAgICBkaWRJ
bnNlcnRDaGVja3MgPSB0cnVlOwotICAgIH07Ci0gICAgCiAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKICAg
ICAKQEAgLTE1ODcsNiArMTU4MSwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9J
bmxpbmVDYWxsCiAgICAgLy8gZXhpdCB0bzogTG9hZFZhcmFyZ3MgaXMgZWZmZWN0ZnVsIGFuZCBp
dCdzIHBhcnQgb2YgdGhlIG9wX2NhbGxfdmFyYXJncywgc28gd2UgY2FuJ3QgZXhpdCB3aXRob3V0
CiAgICAgLy8gY2FsbGluZyBMb2FkVmFyYXJncyB0d2ljZS4KICAgICBpZiAoIUlubGluZUNhbGxG
cmFtZTo6aXNWYXJhcmdzKGtpbmQpKSB7CisKKyAgICAgICAgYm9vbCBkaWRJbnNlcnRDaGVja3Mg
PSBmYWxzZTsKKyAgICAgICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9IFsmXSAo
KSB7CisgICAgICAgICAgICBpbnNlcnRDaGVja3MobnVsbHB0cik7CisgICAgICAgICAgICBkaWRJ
bnNlcnRDaGVja3MgPSB0cnVlOworICAgICAgICB9OworICAgIAogICAgICAgICBpZiAoSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CiAgICAg
ICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQsIGluc2VydENoZWNrc1dpdGhBY2NvdW50
aW5nKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7
CkBAIC0xNjA4LDggKzE2MDksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsCiAgICAgICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFkaWRJbnNlcnRDaGVja3MpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1
c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CiAgICAgfQog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMjAgKzEwMSw2IEBAIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiAgICAgQVNTRVJUKGNsYXNzSW5mbygpID09IE5hdGl2
ZUV4ZWN1dGFibGU6OmluZm8oKSk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLUludHJpbnNp
YyBFeGVjdXRhYmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKLXsKLSAgICBpZiAoY29uc3QgTmF0
aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8Y29uc3QgTmF0
aXZlRXhlY3V0YWJsZSo+KHRoaXMpKQotICAgICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZS0+
aW50cmluc2ljKCk7Ci0gICAgcmV0dXJuIE5vSW50cmluc2ljOwotfQotI2Vsc2UKLUludHJpbnNp
YyBFeGVjdXRhYmxlQmFzZTo6aW50cmluc2ljKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTm9JbnRy
aW5zaWM7Ci19Ci0jZW5kaWYKLQogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNf
aW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCiB2b2lkIE5hdGl2ZUV4
ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpAQCAtMTIyLDE3ICsxMDgsMTAgQEAgdm9p
ZCBOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogYwogICAgIHN0YXRpY19jYXN0PE5h
dGl2ZUV4ZWN1dGFibGUqPihjZWxsKS0+TmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFi
bGUoKTsKIH0KIAotI2lmIEVOQUJMRShERkdfSklUKQotSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFi
bGU6OmludHJpbnNpYygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50cmluc2ljOwotfQotI2Vu
ZGlmCi0KIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3Jp
cHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhl
Y3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQotICAgIDogRXhlY3V0
YWJsZUJhc2Uodm0sIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQorU2Ny
aXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rp
b25Db250ZXh0LCBJbnRyaW5zaWMgaW50cmluc2ljKQorICAgIDogRXhlY3V0YWJsZUJhc2Uodm0s
IHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVELCBpbnRyaW5zaWMpCiAgICAg
LCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQog
ICAgICwgbV9kaWRUcnlUb0VudGVySW5Mb29wKGZhbHNlKQogICAgICwgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyhmYWxzZSkKQEAgLTQzNiw3ICs0MTUsNyBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShFCiB9CiAKIEV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENv
bnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFs
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENv
bnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICA6
IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgTm9JbnRyaW5zaWMpCiB7CiB9CiAKQEAgLTQ0OCw3
ICs0MjcsNyBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsCiBjb25z
dCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlByb2dyYW1FeGVjdXRh
YmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQ
cm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogUHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRh
YmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2Ny
aXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZh
bHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIGZhbHNlLCBOb0ludHJpbnNpYykKIHsKICAgICBtX3R5cGVQcm9maWxpbmdT
dGFydE9mZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxl
bmd0aCgpIC0gMTsKQEAgLTQ2NCw3ICs0NDMsNyBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpk
ZXN0cm95KEpTQ2VsbCogCiBjb25zdCBDbGFzc0luZm8gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkg
fTsKIAogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZh
bHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBOb0ludHJpbnNpYykKIHsKICAgICBtX3R5cGVQcm9m
aWxpbmdTdGFydE9mZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291
cmNlLmxlbmd0aCgpIC0gMTsKQEAgLTQ5NSw4ICs0NzQsOCBAQCB2b2lkIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpkZXN0cm95KEpTCiAKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4ZWN1dGFi
bGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCi1G
dW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0
YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbikKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0u
ZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4
ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZl
ZENvbnRleHRUeXBlKCksIGZhbHNlKQorRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1
dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWdu
ZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIElu
dHJpbnNpYyBpbnRyaW5zaWMpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5p
c0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBmYWxzZSwgaW50cmluc2ljKQogICAgICwgbV91bmxpbmtlZEV4ZWN1dGFibGUodm0sIHRo
aXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc291cmNlLmlz
TnVsbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTAgKzc1LDExIEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QgPSAwOwogICAgIHN0
YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEID0gLTE7CiAKLSAgICBF
eGVjdXRhYmxlQmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbnVtUGFyYW1l
dGVycykKKyAgICBFeGVjdXRhYmxlQmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQgbnVtUGFyYW1ldGVycywgSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgOiBKU0NlbGwo
dm0sIHN0cnVjdHVyZSkKICAgICAgICAgLCBtX251bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBhcmFt
ZXRlcnMpCiAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0KG51bVBhcmFtZXRl
cnMpCisgICAgICAgICwgbV9pbnRyaW5zaWMoaW50cmluc2ljKQogICAgIHsKICAgICB9CiAKQEAg
LTIzMSw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSW50cmluc2ljcyBhcmUg
b25seSBmb3IgY2FsbHMsIGN1cnJlbnRseS4KLSAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkgY29u
c3Q7CisgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgcmV0dXJuIG1faW50cmluc2lj
OyB9CiAgICAgICAgIAogICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAogICAgIHsKQEAgLTI0Myw2ICsyNDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgICAgIAogcHJvdGVjdGVkOgor
ICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2Rl
Rm9yQ2FsbDsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2s7CkBA
IC0yNTksOCArMjYxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBj
cmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgewogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwotICAgICAg
ICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJs
ZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7
Ci0gICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1bmssIGNvbnN0
cnVjdFRodW5rLCBpbnRyaW5zaWMsIG5hbWUpOworICAgICAgICBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICAgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxUaHVuaywgY29uc3RydWN0VGh1bmss
IG5hbWUpOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9CiAKQEAgLTI5NiwyMCAr
Mjk4LDE5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25z
dHJ1Y3RUaHVuaywgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVu
aywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBtX2pp
dENvZGVGb3JDYWxsID0gY2FsbFRodW5rOwogICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3Qg
PSBjb25zdHJ1Y3RUaHVuazsKLSAgICAgICAgbV9pbnRyaW5zaWMgPSBpbnRyaW5zaWM7CiAgICAg
ICAgIG1fbmFtZSA9IG5hbWU7CiAgICAgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBF
eGVjdXRhYmxlQmFzZTsKIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgIDogRXhl
Y3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9Q
QVJBTUVURVJTX0lTX0hPU1QpCisgICAgTmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGlu
dHJpbnNpYykKKyAgICAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgdm0ubmF0aXZlRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCwgaW50cmluc2ljKQogICAg
ICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rvcihjb25z
dHJ1Y3RvcikKICAgICB7CkBAIC0zOTksNyArNDAwLDcgQEAgcHJpdmF0ZToKICAgICBKU09iamVj
dCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoRXhlY1N0YXRlKiwgSlNGdW5jdGlvbiosIEpTU2Nv
cGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKIAogcHJvdGVjdGVkOgotICAgIFNjcmlwdEV4
ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29u
dGV4dCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBJbnRyaW5zaWMpOwogCiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiAgICAgewpAQCAtNTgwLDkgKzU4MSw5IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZSgKICAgICAgICAgVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtl
ZEV4ZWN1dGFibGUsIAotICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RM
aW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKQorICAgICAgICB1
bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIHsKLSAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZt
LCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbik7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVh
cCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZp
cnN0TGluZSwgbGFzdExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGludHJpbnNpYyk7CiAg
ICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGU7CiAgICAgfQpAQCAtNjk3LDcgKzY5OCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSgKICAgICAgICAg
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNp
Z25lZCBmaXJzdExpbmUsIAotICAgICAgICB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbik7CisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5l
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBJbnRyaW5zaWMpOwog
ICAgIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlzaW9uIDE5ODc2NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEludHJpbnNpYyB7CitlbnVt
IEpTX0VYUE9SVF9QUklWQVRFIEludHJpbnNpYyB7CiAgICAgLy8gQ2FsbCBpbnRyaW5zaWNzLgog
ICAgIE5vSW50cmluc2ljLAogICAgIEFic0ludHJpbnNpYywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRyaW5zaWMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50cmlu
c2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldE
X0ludHJpbnNpY19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ludHJpbnNpY19oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW50cmluc2ljLmg+CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275108</attachid>
            <date>2016-03-29 10:59:00 -0700</date>
            <delta_ts>2016-03-29 11:20:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>22712</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5CShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1l
bnRhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOSBAQCBjbGFzcyBCdWlsdGlu
c0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL1ZNLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBdCiAKICAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkJKHJldmlzaW9uIDE5ODc4NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkg
QEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJydW50aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBd
CiAKICAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21f
ZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQko
cmV2aXNpb24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTIgKzEyOSwx
NCBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1
aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUn
LAogICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCiAgICAgICAg
ICAgICAnZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKLSAgICAg
ICAgICAgICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICAnY2Fu
Q29uc3RydWN0JzogY29uc3RydWN0QWJpbGl0eSwKKyAgICAgICAgICAgICdpbnRyaW5zaWMnOiBm
dW5jdGlvbi5pbnRyaW5zaWMKICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1l
KXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVj
dClzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVO
YW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAg
ICBsaW5lcy5hcHBlbmQoInN0YXRpYyBjb25zdCBJbnRyaW5zaWMgc18lKGNvZGVOYW1lKXNJbnRy
aW5zaWMgPSAlKGludHJpbnNpYylzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJj
b25zdCBjaGFyKiBzXyUoY29kZU5hbWUpcyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJn
cyk7CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5CShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19tb2RlbC5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsOCBA
QCBfRlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CiAgICAgfSwKIH0KIAotZnVuY3Rpb25IZWFkUmVn
RXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/
XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGls
ZShyIihcW2ludHJpbnNpYz1cdytcXVxzKyk/KD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcr
XHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbkludHJpbnNpY1JlZ0V4
cCA9IHJlLmNvbXBpbGUociJeXFtpbnRyaW5zaWM9KFx3KylcXVxzKyIsIHJlLk1VTFRJTElORSB8
IHJlLlMpCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29u
c3RydWN0b3IpXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCiBmdW5jdGlvbklz
Q29uc3RydWN0b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElM
SU5FIHwgcmUuUykKIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpm
dW5jdGlvbnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyos
XHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKQEAgLTkzLDE2ICs5NCwyNSBA
QCBjbGFzcyBCdWlsdGluT2JqZWN0OgogCiAKIGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25z
dHJ1Y3RvciwgcGFyYW1ldGVycyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uX25h
bWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMsIGludHJpbnNp
Yyk6CiAgICAgICAgIHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUKICAgICAgICAg
c2VsZi5mdW5jdGlvbl9zb3VyY2UgPSBmdW5jdGlvbl9zb3VyY2UKICAgICAgICAgc2VsZi5pc19j
b25zdHJ1Y3RvciA9IGlzX2NvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBh
cmFtZXRlcnMKKyAgICAgICAgc2VsZi5pbnRyaW5zaWMgPSBpbnRyaW5zaWMKICAgICAgICAgc2Vs
Zi5vYmplY3QgPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0aW5PYmplY3QKIAogICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlvbl9zdHJpbmcpOgogICAg
ICAgICBmdW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVu
Y3Rpb25fc3RyaW5nKQorCisgICAgICAgIGludHJpbnNpYyA9ICJOb0ludHJpbnNpYyIKKyAgICAg
ICAgaW50cmluc2ljTWF0Y2ggPSBmdW5jdGlvbkludHJpbnNpY1JlZ0V4cC5zZWFyY2goZnVuY3Rp
b25fc291cmNlKQorICAgICAgICBpZiBpbnRyaW5zaWNNYXRjaDoKKyAgICAgICAgICAgIGludHJp
bnNpYyA9IGludHJpbnNpY01hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBmdW5jdGlvbl9zb3Vy
Y2UgPSBmdW5jdGlvbkludHJpbnNpY1JlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3NvdXJjZSkKKyAg
ICAgICAgaW50cmluc2ljID0gIkpTQzo6IiArIGludHJpbnNpYworCiAgICAgICAgIGlmIG9zLmdl
dGVudigiQ09ORklHVVJBVElPTiIsICJEZWJ1ZyIpLnN0YXJ0c3dpdGgoIkRlYnVnIik6CiAgICAg
ICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBsaW5lV2l0aE9ubHlTaW5nbGVMaW5lQ29tbWVudFJl
Z0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3NvdXJjZSkKICAgICAgICAgICAgIGZ1bmN0aW9uX3NvdXJj
ZSA9IGxpbmVXaXRoVHJhaWxpbmdTaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIlxuIiwgZnVu
Y3Rpb25fc291cmNlKQpAQCAtMTE0LDcgKzEyNCw3IEBAIGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoK
ICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAgICAgICAgICBwYXJhbWV0
ZXJzID0gW10KIAotICAgICAgICByZXR1cm4gQnVpbHRpbkZ1bmN0aW9uKGZ1bmN0aW9uX25hbWUs
IGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMpCisgICAgICAgIHJl
dHVybiBCdWlsdGluRnVuY3Rpb24oZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19j
b25zdHJ1Y3RvciwgcGFyYW1ldGVycywgaW50cmluc2ljKQogCiAgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CiAgICAgICAgIGludGVyZmFjZSA9ICIlcyglcykiICUgKHNlbGYuZnVuY3Rpb25fbmFtZSwg
JywgJy5qb2luKHNlbGYucGFyYW1ldGVycykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5
CShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcg
QEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVQogI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6
Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI1NvdXJjZSgpKTsgXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBc
CiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMDAsNyArMTAw
LDcgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSQogI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI1NvdXJjZSgpKTsgXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMp
OyBcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09E
RShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SCkBAIC0xMTIsNyArMTEyLDcgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1h
Y3JvfV9CVQogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNs
aWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCisg
ICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31C
dWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1
aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3Vy
Y2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTI0LDcgKzEyNCw3IEBAICR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRkkKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVu
dERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5j
b2RlTmFtZSMjU291cmNlKCkpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9
QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTk4
Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2gKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiB9CiAKLUZ1bmN0aW9u
RXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBvd25lclNvdXJjZSwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKK0Z1bmN0
aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBvd25lclNvdXJjZSwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVO
dW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBt
X3NvdXJjZU92ZXJyaWRlID8gU291cmNlQ29kZShtX3NvdXJjZU92ZXJyaWRlKSA6IG93bmVyU291
cmNlOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUoKSArIG1fZmly
c3RMaW5lT2Zmc2V0OwpAQCAtMTU1LDkgKzE1NSw5IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogcmVzdWx0ID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGNvZGUsIHRoaXMs
IGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
KTsKLSAgICBpZiAob3ZlcnJpZGVMaW5lTnVtYmVyICE9IC0xKQotICAgICAgICByZXN1bHQtPnNl
dE92ZXJyaWRlTGluZU51bWJlcihvdmVycmlkZUxpbmVOdW1iZXIpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogcmVzdWx0ID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGNvZGUsIHRo
aXMsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCBpbnRyaW5zaWMpOworICAgIGlmIChvdmVycmlkZUxpbmVOdW1iZXIpCisgICAgICAgIHJl
c3VsdC0+c2V0T3ZlcnJpZGVMaW5lTnVtYmVyKCpvdmVycmlkZUxpbmVOdW1iZXIpOwogCiAgICAg
aWYgKFVOTElLRUxZKGhhc0Z1bmN0aW9uT3ZlcnJpZGUpKSB7CiAgICAgICAgIHJlc3VsdC0+b3Zl
cnJpZGVQYXJhbWV0ZXJBbmRUeXBlUHJvZmlsaW5nU3RhcnRFbmRPZmZzZXRzKApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE5ODc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZUluZm8uaCIKICNpbmNsdWRl
ICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNs
dWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlND
ZWxsLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTEwNyw3ICsxMDgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNPYmplY3QqJiBleGNlcHRpb24sIAogICAgICAgICBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVy
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGluayhWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IE51bGxvcHQsIEludHJp
bnNpYyA9IE5vSW50cmluc2ljKTsKIAogICAgIHZvaWQgY2xlYXJDb2RlKCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NzAsMTIgKzE1NzAsNiBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsCiAgICAgaWYgKCFpbmxpbmluZ0JhbGFu
Y2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBib29sIGRpZEluc2VydENoZWNr
cyA9IGZhbHNlOwotICAgIGF1dG8gaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcgPSBbJl0gKCkg
ewotICAgICAgICBpbnNlcnRDaGVja3MobnVsbHB0cik7Ci0gICAgICAgIGRpZEluc2VydENoZWNr
cyA9IHRydWU7Ci0gICAgfTsKLSAgICAKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogICAgIApAQCAtMTU4
Nyw2ICsxNTgxLDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwK
ICAgICAvLyBleGl0IHRvOiBMb2FkVmFyYXJncyBpcyBlZmZlY3RmdWwgYW5kIGl0J3MgcGFydCBv
ZiB0aGUgb3BfY2FsbF92YXJhcmdzLCBzbyB3ZSBjYW4ndCBleGl0IHdpdGhvdXQKICAgICAvLyBj
YWxsaW5nIExvYWRWYXJhcmdzIHR3aWNlLgogICAgIGlmICghSW5saW5lQ2FsbEZyYW1lOjppc1Zh
cmFyZ3Moa2luZCkpIHsKKworICAgICAgICBib29sIGRpZEluc2VydENoZWNrcyA9IGZhbHNlOwor
ICAgICAgICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nID0gWyZdICgpIHsKKyAgICAg
ICAgICAgIGluc2VydENoZWNrcyhudWxscHRyKTsKKyAgICAgICAgICAgIGRpZEluc2VydENoZWNr
cyA9IHRydWU7CisgICAgICAgIH07CisgICAgCiAgICAgICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGlm
IChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHNwZWNpYWxpemF0aW9uS2luZCwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKQEAgLTE2MDgs
OCArMTYwOSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwKICAg
ICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZElu
c2VydENoZWNrcyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBX
ZSBtaWdodCBzdGlsbCB0cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdo
dCBiZSBhIGJ1aWx0aW4gSlMgZnVuY3Rpb24uCiAgICAgICAgIH0KICAgICB9CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwyMCArMTAxLDYgQEAgdm9pZCBFeGVjdXRhYmxlQmFz
ZTo6Y2xlYXJDb2RlKCkKICAgICBBU1NFUlQoY2xhc3NJbmZvKCkgPT0gTmF0aXZlRXhlY3V0YWJs
ZTo6aW5mbygpKTsKIH0KIAotI2lmIEVOQUJMRShERkdfSklUKQotSW50cmluc2ljIEV4ZWN1dGFi
bGVCYXNlOjppbnRyaW5zaWMoKSBjb25zdAotewotICAgIGlmIChjb25zdCBOYXRpdmVFeGVjdXRh
YmxlKiBuYXRpdmVFeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxjb25zdCBOYXRpdmVFeGVjdXRh
YmxlKj4odGhpcykpCi0gICAgICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlLT5pbnRyaW5zaWMo
KTsKLSAgICByZXR1cm4gTm9JbnRyaW5zaWM7Ci19Ci0jZWxzZQotSW50cmluc2ljIEV4ZWN1dGFi
bGVCYXNlOjppbnRyaW5zaWMoKSBjb25zdAotewotICAgIHJldHVybiBOb0ludHJpbnNpYzsKLX0K
LSNlbmRpZgotCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAi
TmF0aXZlRXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE5hdGl2ZUV4ZWN1dGFibGUpIH07CiAKIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC0xMjIsMTcgKzEwOCwxMCBAQCB2b2lkIE5hdGl2ZUV4
ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjCiAgICAgc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0
YWJsZSo+KGNlbGwpLT5OYXRpdmVFeGVjdXRhYmxlOjp+TmF0aXZlRXhlY3V0YWJsZSgpOwogfQog
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi1JbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmlu
c2ljKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnRyaW5zaWM7Ci19Ci0jZW5kaWYKLQogY29u
c3QgQ2xhc3NJbmZvIFNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlwdEV4ZWN1dGFi
bGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTY3Jp
cHRFeGVjdXRhYmxlKSB9OwogCi1TY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCi0gICAgOiBFeGVjdXRhYmxlQmFzZSh2
bSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCitTY3JpcHRFeGVjdXRh
YmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEludHJpbnNpYyBpbnRyaW5zaWMpCisgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJl
LCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQsIGludHJpbnNpYykKICAgICAsIG1fZmVhdHVy
ZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgLCBtX2Rp
ZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2UpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZh
bHNlKQpAQCAtNDM2LDcgKzQxNSw3IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKEUKIH0KIAogRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQorICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52
bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBOb0ludHJpbnNpYykKIHsKIH0KIApAQCAtNDQ4LDcgKzQyNyw3IEBA
IHZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWwKIGNvbnN0IENsYXNzSW5m
byBQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2Ny
aXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb2dyYW1FeGVj
dXRhYmxlKSB9OwogCiBQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgOiBTY3JpcHRFeGVjdXRh
YmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZt
KCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UpCisgICAg
OiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9u
ZSwgZmFsc2UsIE5vSW50cmluc2ljKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAx
OwpAQCAtNDY0LDcgKzQ0Myw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlND
ZWxsKiAKIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OwogCiBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4
ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZt
KCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UpCisgICAg
OiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZSwgZmFsc2UsIE5vSW50cmluc2ljKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3Ro
KCkgLSAxOwpAQCAtNDk1LDggKzQ3NCw4IEBAIHZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmRlc3Ryb3koSlMKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKLUZ1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZS0+
aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSwgZmFsc2UpCitGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGlu
ZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgSW50cmluc2ljIGlu
dHJpbnNpYykKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3Ry
dWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RD
b250ZXh0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGZhbHNl
LCBpbnRyaW5zaWMpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhpcywgdW5saW5r
ZWRFeGVjdXRhYmxlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFzb3VyY2UuaXNOdWxsKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNp
b24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMCArNzUsMTEgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCA9IDA7CiAgICAgc3RhdGljIGNvbnN0
IGludCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQgPSAtMTsKIAotICAgIEV4ZWN1dGFibGVC
YXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQorICAg
IEV4ZWN1dGFibGVCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBudW1QYXJh
bWV0ZXJzLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICA6IEpTQ2VsbCh2bSwgc3RydWN0
dXJlKQogICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwobnVtUGFyYW1ldGVycykKICAg
ICAgICAgLCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QobnVtUGFyYW1ldGVycykKKyAgICAg
ICAgLCBtX2ludHJpbnNpYyhpbnRyaW5zaWMpCiAgICAgewogICAgIH0KIApAQCAtMjMxLDcgKzIz
Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJbnRyaW5zaWNzIGFyZSBvbmx5IGZvciBj
YWxscywgY3VycmVudGx5LgotICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdDsKKyAgICBJ
bnRyaW5zaWMgaW50cmluc2ljKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWM7IH0KICAgICAg
ICAgCiAgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpIGNvbnN0CiAgICAgewpAQCAtMjQzLDYgKzI0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAgICAgCiBwcm90ZWN0ZWQ6CisgICAgSW50cmlu
c2ljIG1faW50cmluc2ljOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDYWxsOwog
ICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjazsKQEAgLTI1OSw4ICsy
NjEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYg
dm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7
CiAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7Ci0gICAgICAgIGV4ZWN1dGFi
bGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5oZWFw
KSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKLSAgICAgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxUaHVuaywgY29uc3RydWN0VGh1bmss
IGludHJpbnNpYywgbmFtZSk7CisgICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2
bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMpOworICAgICAgICBleGVjdXRhYmxl
LT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbFRodW5rLCBjb25zdHJ1Y3RUaHVuaywgbmFtZSk7CiAg
ICAgICAgIHJldHVybiBleGVjdXRhYmxlOwogICAgIH0KIApAQCAtMjk2LDIwICsyOTgsMTkgQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5r
LCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewog
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIG1faml0Q29kZUZvckNh
bGwgPSBjYWxsVGh1bms7CiAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IGNvbnN0cnVj
dFRodW5rOwotICAgICAgICBtX2ludHJpbnNpYyA9IGludHJpbnNpYzsKICAgICAgICAgbV9uYW1l
ID0gbmFtZTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVC
YXNlOwogCi0gICAgTmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKLSAgICAgICAgOiBFeGVjdXRhYmxlQmFz
ZSh2bSwgdm0ubmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNf
SVNfSE9TVCkKKyAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQor
ICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCB2bS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NULCBpbnRyaW5zaWMpCiAgICAgICAgICwgbV9m
dW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQog
ICAgIHsKQEAgLTM5OSw3ICs0MDAsNyBAQCBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVwYXJl
Rm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVT
cGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJsZShT
dHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KTsKKyAg
ICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEludHJpbnNpYyk7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICAgICB7CkBAIC01ODAsOSArNTgxLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZ1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKAogICAgICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJs
ZSwgCi0gICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCisgICAgICAgIHVuc2lnbmVkIGZp
cnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgewotICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwg
dW5saW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBzdGFydENvbHVtbiwgZW5k
Q29sdW1uKTsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkgRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBs
YXN0TGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgaW50cmluc2ljKTsKICAgICAgICAgZXhl
Y3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsK
ICAgICB9CkBAIC02OTcsNyArNjk4LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhl
Y3V0YWJsZUJhc2U7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKAogICAgICAgICBWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGZpcnN0
TGluZSwgCi0gICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uKTsKKyAgICAgICAgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIEludHJpbnNpYyk7CiAgICAgCiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaAkocmV2aXNpb24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSW50cmluc2ljIHsKK2VudW0gSlNfRVhQT1JU
X1BSSVZBVEUgSW50cmluc2ljIHsKICAgICAvLyBDYWxsIGludHJpbnNpY3MuCiAgICAgTm9JbnRy
aW5zaWMsCiAgICAgQWJzSW50cmluc2ljLApJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9JbnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludHJpbnNpYy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JbnRyaW5zaWMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW50cmluc2lj
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW50cmluc2ljX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnRyaW5zaWMuaD4KKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275112</attachid>
            <date>2016-03-29 11:20:36 -0700</date>
            <delta_ts>2016-03-29 13:16:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>22681</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5CShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1l
bnRhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOSBAQCBjbGFzcyBCdWlsdGlu
c0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL1ZNLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBdCiAKICAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkJKHJldmlzaW9uIDE5ODc4NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkg
QEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAogICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJydW50aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBd
CiAKICAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21f
ZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQko
cmV2aXNpb24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTIgKzEyOSwx
NCBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1
aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUn
LAogICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCiAgICAgICAg
ICAgICAnZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKLSAgICAg
ICAgICAgICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICAnY2Fu
Q29uc3RydWN0JzogY29uc3RydWN0QWJpbGl0eSwKKyAgICAgICAgICAgICdpbnRyaW5zaWMnOiBm
dW5jdGlvbi5pbnRyaW5zaWMKICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1l
KXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVj
dClzOyIgJSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVO
YW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAg
ICBsaW5lcy5hcHBlbmQoInN0YXRpYyBjb25zdCBKU0M6OkludHJpbnNpYyBzXyUoY29kZU5hbWUp
c0ludHJpbnNpYyA9IEpTQzo6JShpbnRyaW5zaWMpczsiICUgYXJncyk7CiAgICAgICAgIGxpbmVz
LmFwcGVuZCgiY29uc3QgY2hhciogc18lKGNvZGVOYW1lKXMgPVxuJShlbWJlZGRlZFNvdXJjZSlz
XG47IiAlIGFyZ3MpOwogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19tb2RlbC5weQkocmV2aXNpb24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDggQEAgX0ZSQU1FV09SS19DT05GSUdfTUFQID0gewogICAgIH0sCiB9CiAKLWZ1bmN0
aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilccytc
dytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9
IHJlLmNvbXBpbGUociIoXFtpbnRyaW5zaWM9XHcrXF1ccyspPyg/OmZ1bmN0aW9ufGNvbnN0cnVj
dG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25JbnRy
aW5zaWNSZWdFeHAgPSByZS5jb21waWxlKHIiXlxbaW50cmluc2ljPShcdyspXF1ccysiLCByZS5N
VUxUSUxJTkUgfCByZS5TKQogZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1
bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQog
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIs
IHJlLk1VTFRJTElORSB8IHJlLlMpCiBmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBp
bGUociJeKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/
XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCkBAIC05Mywx
NiArOTQsMjQgQEAgY2xhc3MgQnVpbHRpbk9iamVjdDoKIAogCiBjbGFzcyBCdWlsdGluRnVuY3Rp
b246Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJj
ZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
dW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJz
LCBpbnRyaW5zaWMpOgogICAgICAgICBzZWxmLmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1l
CiAgICAgICAgIHNlbGYuZnVuY3Rpb25fc291cmNlID0gZnVuY3Rpb25fc291cmNlCiAgICAgICAg
IHNlbGYuaXNfY29uc3RydWN0b3IgPSBpc19jb25zdHJ1Y3RvcgogICAgICAgICBzZWxmLnBhcmFt
ZXRlcnMgPSBwYXJhbWV0ZXJzCisgICAgICAgIHNlbGYuaW50cmluc2ljID0gaW50cmluc2ljCiAg
ICAgICAgIHNlbGYub2JqZWN0ID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluT2Jq
ZWN0CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGZyb21TdHJpbmcoZnVuY3Rpb25fc3Ry
aW5nKToKICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIiIsIGZ1bmN0aW9uX3N0cmluZykKKworICAgICAgICBpbnRyaW5zaWMgPSAiTm9JbnRyaW5z
aWMiCisgICAgICAgIGludHJpbnNpY01hdGNoID0gZnVuY3Rpb25JbnRyaW5zaWNSZWdFeHAuc2Vh
cmNoKGZ1bmN0aW9uX3NvdXJjZSkKKyAgICAgICAgaWYgaW50cmluc2ljTWF0Y2g6CisgICAgICAg
ICAgICBpbnRyaW5zaWMgPSBpbnRyaW5zaWNNYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgZnVu
Y3Rpb25fc291cmNlID0gZnVuY3Rpb25JbnRyaW5zaWNSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9z
b3VyY2UpCisKICAgICAgICAgaWYgb3MuZ2V0ZW52KCJDT05GSUdVUkFUSU9OIiwgIkRlYnVnIiku
c3RhcnRzd2l0aCgiRGVidWciKToKICAgICAgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IGxpbmVX
aXRoT25seVNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25fc291cmNlKQog
ICAgICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbGluZVdpdGhUcmFpbGluZ1NpbmdsZUxpbmVD
b21tZW50UmVnRXhwLnN1YigiXG4iLCBmdW5jdGlvbl9zb3VyY2UpCkBAIC0xMTQsNyArMTIzLDcg
QEAgY2xhc3MgQnVpbHRpbkZ1bmN0aW9uOgogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkg
PT0gMDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCi0gICAgICAgIHJldHVybiBCdWls
dGluRnVuY3Rpb24oZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3Rv
ciwgcGFyYW1ldGVycykKKyAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5jdGlvbl9u
YW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzLCBpbnRyaW5z
aWMpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgaW50ZXJmYWNlID0gIiVzKCVz
KSIgJSAoc2VsZi5mdW5jdGlvbl9uYW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJzKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBs
YXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkJKHJldmlzaW9uIDE5ODc4NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQkod29y
a2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2Jq
ZWN0TWFjcm99X0JVCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCisgICAgcmV0dXJu
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZt
LCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKQEAgLTEwMCw3ICsxMDAsNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JV
SUxUSU5fQ09ERShERUZJCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4g
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCisgICAgcmV0
dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1
bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTExMiw3ICsxMTIsNyBAQCAke21hY3Jv
UHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGll
bnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
Y2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCku
Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxD
fUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0lu
dHJpbnNpYyk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBA
IC0xMjQsNyArMTI0LDcgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SQogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4k
e29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCisgICAgcmV0
dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlu
cygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5G
dW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwg
TnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjcsNyArMTI3LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRD
aAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9y
Q29uc3RydWN0KTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291cmNlLCBpbnQg
b3ZlcnJpZGVMaW5lTnVtYmVyKQorRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291cmNlLCBP
cHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJpbnNpYykKIHsK
ICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlT3ZlcnJpZGUgPyBTb3VyY2VDb2RlKG1f
c291cmNlT3ZlcnJpZGUpIDogb3duZXJTb3VyY2U7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0g
c291cmNlLmZpcnN0TGluZSgpICsgbV9maXJzdExpbmVPZmZzZXQ7CkBAIC0xNTUsOSArMTU1LDkg
QEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlYwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiByZXN1bHQgPSBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291
bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOwotICAgIGlmIChvdmVycmlkZUxpbmVOdW1iZXIg
IT0gLTEpCi0gICAgICAgIHJlc3VsdC0+c2V0T3ZlcnJpZGVMaW5lTnVtYmVyKG92ZXJyaWRlTGlu
ZU51bWJlcik7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiByZXN1bHQgPSBGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5l
Q291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGludHJpbnNpYyk7CisgICAgaWYgKG92ZXJy
aWRlTGluZU51bWJlcikKKyAgICAgICAgcmVzdWx0LT5zZXRPdmVycmlkZUxpbmVOdW1iZXIoKm92
ZXJyaWRlTGluZU51bWJlcik7CiAKICAgICBpZiAoVU5MSUtFTFkoaGFzRnVuY3Rpb25PdmVycmlk
ZSkpIHsKICAgICAgICAgcmVzdWx0LT5vdmVycmlkZVBhcmFtZXRlckFuZFR5cGVQcm9maWxpbmdT
dGFydEVuZE9mZnNldHMoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMTk4
Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJF
eGVjdXRhYmxlSW5mby5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKICNpbmNs
dWRlICJIYW5kbGVySW5mby5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpA
QCAtMTA3LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4
ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCiAgICAg
ICAgIGludCBvdmVycmlkZUxpbmVOdW1iZXIpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGludCBvdmVycmlk
ZUxpbmVOdW1iZXIgPSAtMSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRh
YmxlKiBsaW5rKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVM
aW5lTnVtYmVyID0gTnVsbG9wdCwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMpOwogCiAgICAgdm9p
ZCBjbGVhckNvZGUoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU3MCwxMiArMTU3MCw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNh
bGwKICAgICBpZiAoIWlubGluaW5nQmFsYW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAotICAgIGJvb2wgZGlkSW5zZXJ0Q2hlY2tzID0gZmFsc2U7Ci0gICAgYXV0byBpbnNlcnRDaGVj
a3NXaXRoQWNjb3VudGluZyA9IFsmXSAoKSB7Ci0gICAgICAgIGluc2VydENoZWNrcyhudWxscHRy
KTsKLSAgICAgICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKLSAgICB9OwotICAgIAogICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNh
bGxlZSwgIlxuIik7CiAgICAgCkBAIC0xNTg3LDYgKzE1ODEsMTMgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbAogICAgIC8vIGV4aXQgdG86IExvYWRWYXJhcmdzIGlz
IGVmZmVjdGZ1bCBhbmQgaXQncyBwYXJ0IG9mIHRoZSBvcF9jYWxsX3ZhcmFyZ3MsIHNvIHdlIGNh
bid0IGV4aXQgd2l0aG91dAogICAgIC8vIGNhbGxpbmcgTG9hZFZhcmFyZ3MgdHdpY2UuCiAgICAg
aWYgKCFJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKSkgeworCisgICAgICAgIGJvb2wg
ZGlkSW5zZXJ0Q2hlY2tzID0gZmFsc2U7CisgICAgICAgIGF1dG8gaW5zZXJ0Q2hlY2tzV2l0aEFj
Y291bnRpbmcgPSBbJl0gKCkgeworICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKG51bGxwdHIpOwor
ICAgICAgICAgICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICAKICAg
ICAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVu
Y3Rpb24oKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlv
bihjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kLCBpbnNlcnRD
aGVja3NXaXRoQWNjb3VudGluZykpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChk
aWRJbnNlcnRDaGVja3MpOwpAQCAtMTYwOCw4ICsxNjA5LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6YXR0ZW1wdFRvSW5saW5lQ2FsbAogICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0t
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIC8vIFdlIG1pZ2h0IHN0aWxsIHRyeSB0byBpbmxpbmUgdGhl
IEludHJpbnNpYyBiZWNhdXNlIGl0IG1pZ2h0IGJlIGEgYnVpbHRpbiBKUyBmdW5jdGlvbi4KICAg
ICAgICAgfQogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDIwICsx
MDEsNiBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUoKQogICAgIEFTU0VSVChjbGFz
c0luZm8oKSA9PSBOYXRpdmVFeGVjdXRhYmxlOjppbmZvKCkpOwogfQogCi0jaWYgRU5BQkxFKERG
R19KSVQpCi1JbnRyaW5zaWMgRXhlY3V0YWJsZUJhc2U6OmludHJpbnNpYygpIGNvbnN0Ci17Ci0g
ICAgaWYgKGNvbnN0IE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBqc0R5bmFt
aWNDYXN0PGNvbnN0IE5hdGl2ZUV4ZWN1dGFibGUqPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIG5h
dGl2ZUV4ZWN1dGFibGUtPmludHJpbnNpYygpOwotICAgIHJldHVybiBOb0ludHJpbnNpYzsKLX0K
LSNlbHNlCi1JbnRyaW5zaWMgRXhlY3V0YWJsZUJhc2U6OmludHJpbnNpYygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIE5vSW50cmluc2ljOwotfQotI2VuZGlmCi0KIGNvbnN0IENsYXNzSW5mbyBOYXRp
dmVFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJOYXRpdmVFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0YWJsZSkgfTsK
IAogdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTEyMiwx
NyArMTA4LDEwIEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGMKICAg
ICBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oY2VsbCktPk5hdGl2ZUV4ZWN1dGFibGU6
On5OYXRpdmVFeGVjdXRhYmxlKCk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLUludHJpbnNp
YyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSBjb25zdAotewotICAgIHJldHVybiBtX2lu
dHJpbnNpYzsKLX0KLSNlbmRpZgotCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0YWJsZTo6
c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKLVNjcmlwdEV4ZWN1
dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4
dCkKLSAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05P
VF9DT01QSUxFRCkKK1NjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgSW50cmluc2ljIGludHJpbnNpYykKKyAgICA6IEV4
ZWN1dGFibGVCYXNlKHZtLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCwg
aW50cmluc2ljKQogICAgICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1v
ZGVGZWF0dXJlIDogMCkKICAgICAsIG1fZGlkVHJ5VG9FbnRlckluTG9vcChmYWxzZSkKICAgICAs
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCkBAIC00MzYsNyArNDE1LDcgQEAgRXZhbEV4
ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRQogfQogCiBFdmFsRXhlY3V0YWJsZTo6
RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxl
KGV4ZWMtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNv
dXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIE5vSW50cmluc2ljKQog
ewogfQogCkBAIC00NDgsNyArNDI3LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6ZGVzdHJveShK
U0NlbGwqIGNlbAogY29uc3QgQ2xhc3NJbmZvIFByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIFByb2dyYW1FeGVjdXRhYmxl
OjpQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRl
eHRUeXBlOjpOb25lLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5w
cm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxz
ZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgTm9JbnRyaW5zaWMpCiB7CiAgICAg
bV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00NjQsNyArNDQzLDcgQEAgdm9pZCBQcm9n
cmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIAogY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZT
Y3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpIH07CiAKIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkK
LSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRl
eHRUeXBlOjpOb25lLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNl
LCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgTm9JbnRyaW5zaWMpCiB7
CiAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00OTUsOCArNDc0LDggQEAgdm9p
ZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKUwogCiBjb25zdCBDbGFzc0luZm8g
RnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1dGFibGUiLCAmU2Ny
aXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uRXhl
Y3V0YWJsZSkgfTsKIAotRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExp
bmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCi0gICAgOiBTY3Jp
cHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNv
dXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4
ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSkKK0Z1bmN0aW9uRXhlY3V0YWJs
ZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBm
aXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBJbnRyaW5zaWMgaW50cmluc2ljKQorICAgIDogU2NyaXB0RXhlY3V0YWJs
ZSh2bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlu
a2VkRXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5k
ZXJpdmVkQ29udGV4dFR5cGUoKSwgZmFsc2UsIGludHJpbnNpYykKICAgICAsIG1fdW5saW5rZWRF
eGVjdXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIXNvdXJjZS5pc051bGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEwICs3NSwx
MSBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGludCBOVU1fUEFSQU1FVEVSU19JU19I
T1NUID0gMDsKICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxF
RCA9IC0xOwogCi0gICAgRXhlY3V0YWJsZUJhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50IG51bVBhcmFtZXRlcnMpCisgICAgRXhlY3V0YWJsZUJhc2UoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50IG51bVBhcmFtZXRlcnMsIEludHJpbnNpYyBpbnRyaW5zaWMpCiAg
ICAgICAgIDogSlNDZWxsKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJz
Rm9yQ2FsbChudW1QYXJhbWV0ZXJzKQogICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0
cnVjdChudW1QYXJhbWV0ZXJzKQorICAgICAgICAsIG1faW50cmluc2ljKGludHJpbnNpYykKICAg
ICB7CiAgICAgfQogCkBAIC0yMzEsNyArMjMyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IEludHJpbnNpY3MgYXJlIG9ubHkgZm9yIGNhbGxzLCBjdXJyZW50bHkuCi0gICAgSW50cmluc2lj
IGludHJpbnNpYygpIGNvbnN0OworICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdCB7IHJl
dHVybiBtX2ludHJpbnNpYzsgfQogICAgICAgICAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKICAgICB7CkBAIC0yNDMsNiArMjQ0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgICAg
ICAKIHByb3RlY3RlZDoKKyAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWM7CiAgICAgUmVmUHRyPEpJ
VENvZGU+IG1faml0Q29kZUZvckNhbGw7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZv
ckNvbnN0cnVjdDsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrOwpAQCAtMjU5LDggKzI2MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTmF0
aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVj
dFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywg
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZTsKLSAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlv
biwgY29uc3RydWN0b3IpOwotICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwg
Y2FsbFRodW5rLCBjb25zdHJ1Y3RUaHVuaywgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgZXhl
Y3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KHZt
LmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIGludHJp
bnNpYyk7CisgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1bmss
IGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAg
fQogCkBAIC0yOTYsMjAgKzI5OCwxOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxK
SVRDb2RlPiBjYWxsVGh1bmssIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGNhbGxUaHVuazsKICAgICAgICAgbV9qaXRD
b2RlRm9yQ29uc3RydWN0ID0gY29uc3RydWN0VGh1bms7Ci0gICAgICAgIG1faW50cmluc2ljID0g
aW50cmluc2ljOwogICAgICAgICBtX25hbWUgPSBuYW1lOwogICAgIH0KIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZN
JiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
KQotICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCB2bS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0
dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NUKQorICAgIE5hdGl2ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCisgICAgICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZt
Lm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1Qs
IGludHJpbnNpYykKICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1f
Y29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgewpAQCAtMzk5LDcgKzQwMCw3IEBAIHByaXZh
dGU6CiAgICAgSlNPYmplY3QqIHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKEV4ZWNTdGF0ZSosIEpT
RnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29k
ZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0lu
QXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwg
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgSW50cmluc2ljKTsKIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTU4MCw5ICs1ODEsOSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoCiAgICAg
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCAKLSAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5l
LCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbikKKyAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgSW50cmluc2ljIGludHJpbnNp
YykKICAgICB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpIEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwg
bGFzdExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOworICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5r
ZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBpbnRyaW5zaWMpOwogICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBleGVjdXRhYmxlOwogICAgIH0KQEAgLTY5Nyw3ICs2OTgsNyBAQCBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgdW5zaWduZWQgZmlyc3RMaW5lLCAKLSAgICAgICAgdW5zaWduZWQgbGFzdExp
bmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pOworICAgICAgICB1
bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgSW50cmluc2ljKTsKICAgICAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCShyZXZpc2lvbiAx
OTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBJ
bnRyaW5zaWMgeworZW51bSBKU19FWFBPUlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAgIC8vIENh
bGwgaW50cmluc2ljcy4KICAgICBOb0ludHJpbnNpYywKICAgICBBYnNJbnRyaW5zaWMsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0ludHJpbnNpYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50
cmluc2ljLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorI2lm
bmRlZiBXZWJDb3JlX0ZXRF9JbnRyaW5zaWNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnRyaW5z
aWNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludHJpbnNpYy5oPgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275123</attachid>
            <date>2016-03-29 13:16:09 -0700</date>
            <delta_ts>2016-03-29 13:37:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>26562</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDE2LTAzLTI5ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IGJ1aWx0aW4gSlMgZnVuY3Rpb25zIHRvIGJlIGludHJpbnNpY3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTk2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWx0aW4gZnVuY3Rpb25zIGNh
biBub3cgYmUgcmVjb2duaXplZCBhcyBpbnRyaW5zaWNzIGluc2lkZQorICAgICAgICB0aGUgREZH
LiBUaGlzIGdpdmVzIHVzIHRoZSBmbGV4aWJpbGl0eSB0byBlaXRoZXIgbG93ZXIgYSBidWlsdGlu
CisgICAgICAgIGFzIGFuIGludHJpbnNpYyBpbiB0aGUgREZHIG9yIGFzIGEgbm9ybWFsIGZ1bmN0
aW9uIGNhbGwuCisgICAgICAgIEJlY2F1c2Ugd2UgbWF5IGRlY2lkZSB0byBub3QgbG93ZXIgaXQg
YXMgYW4gaW50cmluc2ljLCB0aGUgREZHCisgICAgICAgIGlubGluZXIgY291bGQgc3RpbGwgaW5s
aW5lIHRoZSBmdW5jdGlvbiBjYWxsLgorCQkKKyAgICAgICAgWW91IGNhbiBhbm5vdGF0ZSBhIGJ1
aWx0aW4gZnVuY3Rpb24gbGlrZSBzbyB0byBtYWtlCisgICAgICAgIGl0IGJlIHJlY29nbml6ZWQg
YXMgYW4gaW50cmluc2ljLgorICAgICAgICBgYGAKKyAgICAgICAgW2ludHJpbnNpYz1Gb29JbnRy
aW5zaWNdIGZ1bmN0aW9uIGZvbygpIHsgLi4uIH0KKyAgICAgICAgYGBgCisgICAgICAgIHdoZXJl
IEZvb0ludHJpbnNpYyBpcyBhbiBlbnVtIHZhbHVlIG9mIHRoZSBJbnRyaW5zaWMgZW51bS4KKwor
ICAgICAgICBTbyBpbiB0aGUgZnV0dXJlIGlmIHdlIHdyaXRlIFJlZ0V4cC5wcm90b3R5cGUudGVz
dCBhcyBhIGJ1aWx0aW4sIHdlIHdvdWxkIGRvOgorICAgICAgICBgYGAgUmVnRXhwUHJvdG90eXBl
LmpzCisgICAgICAgIFtpbnRyaW5zaWM9UmVnRXhwVGVzdEludHJpbnNpY10gZnVuY3Rpb24gdGVz
dCgpIHsgLi4uIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQnVp
bHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX3NlY29uZGFyeV9o
ZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChCdWlsdGluc1NlcGFy
YXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNs
dWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHk6
CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmlu
Z19zZWN0aW9uX2Zvcl9mdW5jdGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5PYmplY3QuX19pbml0X18pOgorICAgICAg
ICAoQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5fX2luaXRfXyk6
CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24uZnJvbVN0cmluZyk6CisgICAgICAgIChCdWlsdGlu
RnVuY3Rpb24uX19zdHJfXyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190
ZW1wbGF0ZXMucHk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5r
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppbnRyaW5zaWMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlQmFzZTo6RXhlY3V0YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QmFzZTo6aGFzSklUQ29kZUZvcik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppbnRy
aW5zaWMpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aW50cmluc2ljRm9yKToKKyAg
ICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSW50cmluc2ljLmg6CisKIDIwMTYtMDMtMjkgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBXZSBzaG91bGQgaGF2
ZSBhIHdheSB0byBjYXB0dXJlIGhlYXAgc25hcHNob3RzIHByb2dyYW1hdGljYWxseS4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5CShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlv
bi5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOSBAQCBjbGFzcyBCdWlsdGluc0NvbWJp
bmVkSW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJX
ZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZN
LmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJX
ZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0lu
dHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBdCiAKICAgICAgICAgcmV0dXJu
ICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5j
bHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkJKHJldmlzaW9uIDE5ODc4NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgY2xh
c3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICAgICAgKFsiV2Vi
Q29yZSJdLAogICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9XZWJDb3Jl
SlNDbGllbnREYXRhLmgiKSwKICAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2Ny
aXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIs
ICJydW50aW1lL0ludHJpbnNpYy5oIiksCisgICAgICAgICAgICApLAogICAgICAgICBdCiAKICAg
ICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmll
cyhoZWFkZXJfaW5jbHVkZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQkocmV2aXNp
b24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTIgKzEyOSwxNCBAQCBj
bGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5z
R2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAogICAg
ICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCiAgICAgICAgICAgICAn
ZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKLSAgICAgICAgICAg
ICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICAnY2FuQ29uc3Ry
dWN0JzogY29uc3RydWN0QWJpbGl0eSwKKyAgICAgICAgICAgICdpbnRyaW5zaWMnOiBmdW5jdGlv
bi5pbnRyaW5zaWMKICAgICAgICAgfQogCiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGlu
ZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVjdClzOyIg
JSBhcmdzKTsKICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVOYW1lKXNM
ZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAgICBsaW5l
cy5hcHBlbmQoInN0YXRpYyBjb25zdCBKU0M6OkludHJpbnNpYyBzXyUoY29kZU5hbWUpc0ludHJp
bnNpYyA9IEpTQzo6JShpbnRyaW5zaWMpczsiICUgYXJncyk7CiAgICAgICAgIGxpbmVzLmFwcGVu
ZCgiY29uc3QgY2hhciogc18lKGNvZGVOYW1lKXMgPVxuJShlbWJlZGRlZFNvdXJjZSlzXG47IiAl
IGFyZ3MpOwogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19t
b2RlbC5weQkocmV2aXNpb24gMTk4Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDggQEAgX0ZSQU1FV09SS19DT05GSUdfTUFQID0gewogICAgIH0sCiB9CiAKLWZ1bmN0aW9uSGVh
ZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilccytcdytccypc
KC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNv
bXBpbGUociIoXFtpbnRyaW5zaWM9XHcrXF1ccyspPyg/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxz
K1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25JbnRyaW5zaWNS
ZWdFeHAgPSByZS5jb21waWxlKHIiXlxbaW50cmluc2ljPShcdyspXF1ccysiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQogZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9u
fGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQogZnVuY3Rp
b25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCiBmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJe
KD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86
XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCkBAIC05MywxNiArOTQs
MjQgQEAgY2xhc3MgQnVpbHRpbk9iamVjdDoKIAogCiBjbGFzcyBCdWlsdGluRnVuY3Rpb246Ci0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNf
Y29uc3RydWN0b3IsIHBhcmFtZXRlcnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jdGlv
bl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzLCBpbnRy
aW5zaWMpOgogICAgICAgICBzZWxmLmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lCiAgICAg
ICAgIHNlbGYuZnVuY3Rpb25fc291cmNlID0gZnVuY3Rpb25fc291cmNlCiAgICAgICAgIHNlbGYu
aXNfY29uc3RydWN0b3IgPSBpc19jb25zdHJ1Y3RvcgogICAgICAgICBzZWxmLnBhcmFtZXRlcnMg
PSBwYXJhbWV0ZXJzCisgICAgICAgIHNlbGYuaW50cmluc2ljID0gaW50cmluc2ljCiAgICAgICAg
IHNlbGYub2JqZWN0ID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluT2JqZWN0CiAK
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGZyb21TdHJpbmcoZnVuY3Rpb25fc3RyaW5nKToK
ICAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIs
IGZ1bmN0aW9uX3N0cmluZykKKworICAgICAgICBpbnRyaW5zaWMgPSAiTm9JbnRyaW5zaWMiCisg
ICAgICAgIGludHJpbnNpY01hdGNoID0gZnVuY3Rpb25JbnRyaW5zaWNSZWdFeHAuc2VhcmNoKGZ1
bmN0aW9uX3NvdXJjZSkKKyAgICAgICAgaWYgaW50cmluc2ljTWF0Y2g6CisgICAgICAgICAgICBp
bnRyaW5zaWMgPSBpbnRyaW5zaWNNYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgZnVuY3Rpb25f
c291cmNlID0gZnVuY3Rpb25JbnRyaW5zaWNSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zb3VyY2Up
CisKICAgICAgICAgaWYgb3MuZ2V0ZW52KCJDT05GSUdVUkFUSU9OIiwgIkRlYnVnIikuc3RhcnRz
d2l0aCgiRGVidWciKToKICAgICAgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IGxpbmVXaXRoT25s
eVNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25fc291cmNlKQogICAgICAg
ICAgICAgZnVuY3Rpb25fc291cmNlID0gbGluZVdpdGhUcmFpbGluZ1NpbmdsZUxpbmVDb21tZW50
UmVnRXhwLnN1YigiXG4iLCBmdW5jdGlvbl9zb3VyY2UpCkBAIC0xMTQsNyArMTIzLDcgQEAgY2xh
c3MgQnVpbHRpbkZ1bmN0aW9uOgogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0gMDoK
ICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCi0gICAgICAgIHJldHVybiBCdWlsdGluRnVu
Y3Rpb24oZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3RvciwgcGFy
YW1ldGVycykKKyAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5jdGlvbl9uYW1lLCBm
dW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzLCBpbnRyaW5zaWMpCiAK
ICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgaW50ZXJmYWNlID0gIiVzKCVzKSIgJSAo
c2VsZi5mdW5jdGlvbl9uYW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJzKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc190ZW1wbGF0ZXMucHkJKHJldmlzaW9uIDE5ODc4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtODksNyArODksNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCisgICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKQEAgLTEwMCw3ICsxMDAsNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5f
Q09ERShERUZJCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCisgICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMj
Y29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTExMiw3ICsxMTIsNyBAQCAke21hY3JvUHJlZml4
fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRh
KiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0
TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5h
bWUjI1NvdXJjZSgpKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0
aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7IFxcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC0xMjQs
NyArMTI0LDcgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSQogSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxc
CiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1
aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVj
dE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCisgICAgcmV0dXJuIGNs
aWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9w
dCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQog
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
NyArMTI3LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaAogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3Ry
dWN0KTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291cmNlLCBpbnQgb3ZlcnJp
ZGVMaW5lTnVtYmVyKQorRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291cmNlLCBPcHRpb25h
bDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJpbnNpYykKIHsKICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlT3ZlcnJpZGUgPyBTb3VyY2VDb2RlKG1fc291cmNl
T3ZlcnJpZGUpIDogb3duZXJTb3VyY2U7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNl
LmZpcnN0TGluZSgpICsgbV9maXJzdExpbmVPZmZzZXQ7CkBAIC0xNTUsOSArMTU1LDkgQEAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlYwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiByZXN1bHQgPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSh2bSwgY29kZSwgdGhpcywgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQsIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOwotICAgIGlmIChvdmVycmlkZUxpbmVOdW1iZXIgIT0gLTEp
Ci0gICAgICAgIHJlc3VsdC0+c2V0T3ZlcnJpZGVMaW5lTnVtYmVyKG92ZXJyaWRlTGluZU51bWJl
cik7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiByZXN1bHQgPSBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSh2bSwgY29kZSwgdGhpcywgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQs
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGludHJpbnNpYyk7CisgICAgaWYgKG92ZXJyaWRlTGlu
ZU51bWJlcikKKyAgICAgICAgcmVzdWx0LT5zZXRPdmVycmlkZUxpbmVOdW1iZXIoKm92ZXJyaWRl
TGluZU51bWJlcik7CiAKICAgICBpZiAoVU5MSUtFTFkoaGFzRnVuY3Rpb25PdmVycmlkZSkpIHsK
ICAgICAgICAgcmVzdWx0LT5vdmVycmlkZVBhcmFtZXRlckFuZFR5cGVQcm9maWxpbmdTdGFydEVu
ZE9mZnNldHMoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMTk4Nzg0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeHByZXNz
aW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgpAQCAtMTA3LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCiAgICAgICAgIGludCBv
dmVycmlkZUxpbmVOdW1iZXIpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVj
dXRhYmxlKiBsaW5rKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGludCBvdmVycmlkZUxpbmVOdW1i
ZXIgPSAtMSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5r
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVy
ID0gTnVsbG9wdCwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMpOwogCiAgICAgdm9pZCBjbGVhckNv
ZGUoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3MCwxMiAr
MTU3MCw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwKICAgICBp
ZiAoIWlubGluaW5nQmFsYW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGJv
b2wgZGlkSW5zZXJ0Q2hlY2tzID0gZmFsc2U7Ci0gICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNj
b3VudGluZyA9IFsmXSAoKSB7Ci0gICAgICAgIGluc2VydENoZWNrcyhudWxscHRyKTsKLSAgICAg
ICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKLSAgICB9OwotICAgIAogICAgIGlmICh2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxu
Iik7CiAgICAgCkBAIC0xNTg3LDYgKzE1ODEsMTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0
ZW1wdFRvSW5saW5lQ2FsbAogICAgIC8vIGV4aXQgdG86IExvYWRWYXJhcmdzIGlzIGVmZmVjdGZ1
bCBhbmQgaXQncyBwYXJ0IG9mIHRoZSBvcF9jYWxsX3ZhcmFyZ3MsIHNvIHdlIGNhbid0IGV4aXQg
d2l0aG91dAogICAgIC8vIGNhbGxpbmcgTG9hZFZhcmFyZ3MgdHdpY2UuCiAgICAgaWYgKCFJbmxp
bmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKSkgeworCisgICAgICAgIGJvb2wgZGlkSW5zZXJ0
Q2hlY2tzID0gZmFsc2U7CisgICAgICAgIGF1dG8gaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcg
PSBbJl0gKCkgeworICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKG51bGxwdHIpOworICAgICAgICAg
ICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICAKICAgICAgICAgaWYg
KEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkg
ewogICAgICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihjYWxsVGFy
Z2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kLCBpbnNlcnRDaGVja3NXaXRo
QWNjb3VudGluZykpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRD
aGVja3MpOwpAQCAtMTYwOCw4ICsxNjA5LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1w
dFRvSW5saW5lQ2FsbAogICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIC8vIFdlIG1pZ2h0IHN0aWxsIHRyeSB0byBpbmxpbmUgdGhlIEludHJpbnNp
YyBiZWNhdXNlIGl0IG1pZ2h0IGJlIGEgYnVpbHRpbiBKUyBmdW5jdGlvbi4KICAgICAgICAgfQog
ICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDIwICsxMDEsNiBAQCB2
b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGUoKQogICAgIEFTU0VSVChjbGFzc0luZm8oKSA9
PSBOYXRpdmVFeGVjdXRhYmxlOjppbmZvKCkpOwogfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi1J
bnRyaW5zaWMgRXhlY3V0YWJsZUJhc2U6OmludHJpbnNpYygpIGNvbnN0Ci17Ci0gICAgaWYgKGNv
bnN0IE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PGNv
bnN0IE5hdGl2ZUV4ZWN1dGFibGUqPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1
dGFibGUtPmludHJpbnNpYygpOwotICAgIHJldHVybiBOb0ludHJpbnNpYzsKLX0KLSNlbHNlCi1J
bnRyaW5zaWMgRXhlY3V0YWJsZUJhc2U6OmludHJpbnNpYygpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IE5vSW50cmluc2ljOwotfQotI2VuZGlmCi0KIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFeGVjdXRh
YmxlOjpzX2luZm8gPSB7ICJOYXRpdmVFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0YWJsZSkgfTsKIAogdm9pZCBO
YXRpdmVFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTEyMiwxNyArMTA4LDEw
IEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGMKICAgICBzdGF0aWNf
Y2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oY2VsbCktPk5hdGl2ZUV4ZWN1dGFibGU6On5OYXRpdmVF
eGVjdXRhYmxlKCk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLUludHJpbnNpYyBOYXRpdmVF
eGVjdXRhYmxlOjppbnRyaW5zaWMoKSBjb25zdAotewotICAgIHJldHVybiBtX2ludHJpbnNpYzsK
LX0KLSNlbmRpZgotCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKLVNjcmlwdEV4ZWN1dGFibGU6OlNj
cmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6
IEV4ZWN1dGFibGVCYXNlKHZtLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxF
RCkKK1NjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJv
d0Z1bmN0aW9uQ29udGV4dCwgSW50cmluc2ljIGludHJpbnNpYykKKyAgICA6IEV4ZWN1dGFibGVC
YXNlKHZtLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCwgaW50cmluc2lj
KQogICAgICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJl
IDogMCkKICAgICAsIG1fZGlkVHJ5VG9FbnRlckluTG9vcChmYWxzZSkKICAgICAsIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoZmFsc2UpCkBAIC00MzYsNyArNDE1LDcgQEAgRXZhbEV4ZWN1dGFibGUq
IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRQogfQogCiBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZt
KCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5T
dHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQp
CisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29u
dGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIE5vSW50cmluc2ljKQogewogfQogCkBA
IC00NDgsNyArNDI3LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNl
bAogY29uc3QgQ2xhc3NJbmZvIFByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJQcm9ncmFt
RXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFt
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAg
ICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpO
b25lLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgTm9JbnRyaW5zaWMpCiB7CiAgICAgbV90eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNv
dXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00NjQsNyArNDQzLDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0
YWJsZTo6ZGVzdHJveShKU0NlbGwqIAogY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVj
dXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUpIH07CiAKIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNj
cmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpO
b25lLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwg
RGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgTm9JbnRyaW5zaWMpCiB7CiAgICAgbV90
eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNl
dCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00OTUsOCArNDc0LDggQEAgdm9pZCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKUwogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25F
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0
YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uRXhlY3V0YWJsZSkg
fTsKIAotRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtl
ZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCi0gICAgOiBTY3JpcHRFeGVjdXRh
YmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUt
PmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSkKK0Z1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rp
b25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUs
IHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBJbnRyaW5zaWMgaW50cmluc2ljKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5j
dGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSwgZmFsc2UsIGludHJpbnNpYykKICAgICAsIG1fdW5saW5rZWRFeGVjdXRhYmxl
KHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNv
dXJjZS5pc051bGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEwICs3NSwxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGludCBOVU1fUEFSQU1FVEVSU19JU19IT1NUID0gMDsK
ICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCA9IC0xOwog
Ci0gICAgRXhlY3V0YWJsZUJhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IG51
bVBhcmFtZXRlcnMpCisgICAgRXhlY3V0YWJsZUJhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IG51bVBhcmFtZXRlcnMsIEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIDog
SlNDZWxsKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbChu
dW1QYXJhbWV0ZXJzKQogICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdChudW1Q
YXJhbWV0ZXJzKQorICAgICAgICAsIG1faW50cmluc2ljKGludHJpbnNpYykKICAgICB7CiAgICAg
fQogCkBAIC0yMzEsNyArMjMyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEludHJpbnNp
Y3MgYXJlIG9ubHkgZm9yIGNhbGxzLCBjdXJyZW50bHkuCi0gICAgSW50cmluc2ljIGludHJpbnNp
YygpIGNvbnN0OworICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdCB7IHJldHVybiBtX2lu
dHJpbnNpYzsgfQogICAgICAgICAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKICAgICB7CkBAIC0yNDMsNiArMjQ0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgICAgICAKIHByb3Rl
Y3RlZDoKKyAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWM7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1f
aml0Q29kZUZvckNhbGw7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZvckNvbnN0cnVj
dDsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrOwpAQCAtMjU5LDggKzI2MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2
ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsK
LSAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4
ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3Ry
dWN0b3IpOwotICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbFRodW5r
LCBjb25zdHJ1Y3RUaHVuaywgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgZXhlY3V0YWJsZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBO
YXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIGludHJpbnNpYyk7Cisg
ICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1bmssIGNvbnN0cnVj
dFRodW5rLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAgfQogCkBAIC0y
OTYsMjAgKzI5OCwxOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY29uc3RydWN0VGh1bmssIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBj
YWxsVGh1bmssIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGNhbGxUaHVuazsKICAgICAgICAgbV9qaXRDb2RlRm9yQ29u
c3RydWN0ID0gY29uc3RydWN0VGh1bms7Ci0gICAgICAgIG1faW50cmluc2ljID0gaW50cmluc2lj
OwogICAgICAgICBtX25hbWUgPSBuYW1lOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQotICAgICAg
ICA6IEV4ZWN1dGFibGVCYXNlKHZtLCB2bS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBOVU1fUEFSQU1FVEVSU19JU19IT1NUKQorICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYyBpbnRyaW5zaWMpCisgICAgICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNp
YykKICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fY29uc3RydWN0
b3IoY29uc3RydWN0b3IpCiAgICAgewpAQCAtMzk5LDcgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAg
SlNPYmplY3QqIHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKEV4ZWNTdGF0ZSosIEpTRnVuY3Rpb24q
LCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAKIHByb3RlY3RlZDoKLSAgICBT
Y3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5j
dGlvbkNvbnRleHQpOworICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgSW50cmluc2ljKTsKIAogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTU4MCw5ICs1ODEsOSBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoCiAgICAgICAgIFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
dW5saW5rZWRFeGVjdXRhYmxlLCAKLSAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25l
ZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbikKKyAg
ICAgICAgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgSW50cmluc2ljIGludHJpbnNpYykKICAgICB7
Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpIEZ1bmN0aW9uRXhlY3V0
YWJsZSh2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgbGFzdExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRh
YmxlLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBpbnRyaW5z
aWMpOwogICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJl
dHVybiBleGVjdXRhYmxlOwogICAgIH0KQEAgLTY5Nyw3ICs2OTgsNyBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoCiAg
ICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiwgdW5zaWduZWQgZmlyc3RMaW5lLCAKLSAgICAgICAgdW5zaWduZWQgbGFzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pOworICAgICAgICB1bnNpZ25lZCBs
YXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgSW50cmlu
c2ljKTsKICAgICAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCShyZXZpc2lvbiAxOTg3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBJbnRyaW5zaWMg
eworZW51bSBKU19FWFBPUlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAgIC8vIENhbGwgaW50cmlu
c2ljcy4KICAgICBOb0ludHJpbnNpYywKICAgICBBYnNJbnRyaW5zaWMsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTg3ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMy0yOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBidWlsdGluIEpTIGZ1bmN0aW9ucyB0byBiZSBp
bnRyaW5zaWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU5NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSW50cmluc2ljLmg6IEFkZGVkLgorCiAyMDE2LTAzLTI5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW09TIFhdIFtSVEwgU2Nyb2xsYmFy
c10gT3ZlcmxheSBSVEwgc2Nyb2xsYmFycyBhbmltYXRlIGluIGZyb20gdGhlIHdyb25nIHNpZGUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSW50cmluc2lj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9JbnRyaW5zaWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBA
CisjaWZuZGVmIFdlYkNvcmVfRldEX0ludHJpbnNpY19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0lu
dHJpbnNpY19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50cmluc2ljLmg+CisjZW5kaWYK
</data>
<flag name="review"
          id="299497"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>