<?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>133014</bug_id>
          
          <creation_ts>2014-05-16 15:54:47 -0700</creation_ts>
          <short_desc>[ftlopt] A StructureSet with one element should only require one word and no allocation</short_desc>
          <delta_ts>2014-05-20 22:17:46 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>128073</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009878</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-16 15:54:47 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009879</commentid>
    <comment_count>1</comment_count>
      <attachid>231600</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-16 15:55:22 -0700</bug_when>
    <thetext>Created attachment 231600
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009886</commentid>
    <comment_count>2</comment_count>
      <attachid>231600</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-05-16 16:19:48 -0700</bug_when>
    <thetext>Comment on attachment 231600
it begins

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

&gt; Source/JavaScriptCore/bytecode/StructureSet.h:423
&gt; +    void set(uintptr_t pointer, bool singleStructure)

Where do we need this version? can we call it something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009925</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-16 19:57:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 231600 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231600&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/StructureSet.h:423
&gt; &gt; +    void set(uintptr_t pointer, bool singleStructure)
&gt; 
&gt; Where do we need this version? can we call it something else?

It&apos;s used by the other set() methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009926</commentid>
    <comment_count>4</comment_count>
      <attachid>231618</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-16 20:39:05 -0700</bug_when>
    <thetext>Created attachment 231618
it compiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009937</commentid>
    <comment_count>5</comment_count>
      <attachid>231622</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-16 22:00:54 -0700</bug_when>
    <thetext>Created attachment 231622
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009939</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-16 22:02:33 -0700</bug_when>
    <thetext>Attachment 231622 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:73:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:74:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:75:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:123:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:134:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:135:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:141:  The parameter name &quot;list&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 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>1009943</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-16 22:39:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 231622 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:73:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:74:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:75:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:123:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:134:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:135:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureSet.h:141:  The parameter name &quot;list&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 7 in 11 files

Fixed!

&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010702</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-05-20 22:17:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/169148</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231600</attachid>
            <date>2014-05-16 15:55:22 -0700</date>
            <delta_ts>2014-05-16 20:39:05 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11839</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJ
KHJldmlzaW9uIDE2ODk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksMzk1IEBAIG5h
bWVzcGFjZSBERkcgewogY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTsKIH0KIAorY2xhc3Mg
Qm9ycm93ZWRTdHJ1Y3R1cmVTZXQgeworcHVibGljOgorICAgIHN0YXRpYyB1bnNpZ25lZCB0aGlu
RmxhZyA9IDE7CisgICAgc3RhdGljIHVuc2lnbmVkIHJlc2VydmVkRmxhZyA9IDI7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGZsYWdzID0gMzsKKyAgICBzdGF0aWMgdW5zaWduZWQgcmVzZXJ2ZWRWYWx1
ZSA9IDQ7CisgICAgCisgICAgQm9ycm93ZWRTdHJ1Y3R1cmVTZXQoZXhwbGljaXQgdWludHB0cl90
IHBvaW50ZXIpCisgICAgICAgIDogbV9wb2ludGVyKHBvaW50ZXIpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZVN0cnVjdHVyZUxpc3RJ
Zk5lY2Vzc2FyeSgpOworICAgICAgICBzZXQoMCwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNUaGluKCkgJiYgIXNp
bmdsZVN0cnVjdHVyZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGFkZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgICAgICBpZiAo
aXNUaGluKCkpIHsKKyAgICAgICAgICAgIGlmIChzaW5nbGVTdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1
cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFzaW5n
bGVTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIHNldChzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgT3V0T2ZM
aW5lTGlzdCogbGlzdCA9IE91dE9mTGluZUxpc3Q6OmNyZWF0ZShkZWZhdWx0U3RhcnRpbmdTaXpl
KTsKKyAgICAgICAgICAgIGxpc3QtPm1fbGVuZ3RoID0gMjsKKyAgICAgICAgICAgIGxpc3QtPmxp
c3QoKVswXSA9IHNpbmdsZVN0cnVjdHVyZSgpOworICAgICAgICAgICAgbGlzdC0+bGlzdCgpWzFd
ID0gc3RydWN0dXJlOworICAgICAgICAgICAgc2V0KGxpc3QpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRkVG9PdXRPZkxpbmUoc3RydWN0
dXJlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCByZW1vdmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBpZiAoaXNUaGluKCkpIHsKKyAgICAgICAgICAgIGlmIChzaW5nbGVT
dHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBzZXQoMCwgdHJ1ZSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIE91dE9mTGluZUxp
c3QqIGxpc3QgPSBzdHJ1Y3R1cmVMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAobGlzdC0+bGlzdCgp
W2ldICE9IHN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGxpc3QtPmxpc3QoKVtpXSA9IGxpc3QtPmxpc3QoKVstLWxpc3QtPm1fbGVuZ3RoXTsKKyAgICAg
ICAgICAgIGlmICghbGlzdC0+bV9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBPdXRPZkxpbmVM
aXN0OjpkZXN0cm95KGxpc3QpOworICAgICAgICAgICAgICAgIHNldCgwLCB0cnVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICAgICAgaWYg
KHNpbmdsZVN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIGNvbnRhaW5zT3V0T2ZMaW5lKHN0cnVjdHVyZSk7CisgICAgfQorICAgIAor
ICAgIGJvb2wgbWVyZ2UoY29uc3QgQm9ycm93ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAgIHsK
KyAgICAgICAgaWYgKG90aGVyLmlzVGhpbigpKSB7CisgICAgICAgICAgICBpZiAob3RoZXIuc2lu
Z2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZChvdGhlci5zaW5nbGVT
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSBvdGhlci5zdHJ1Y3R1cmVMaXN0KCk7
CisgICAgICAgIGlmIChsaXN0LT5tX2xlbmd0aCA+PSAyKSB7CisgICAgICAgICAgICBpZiAoaXNU
aGluKCkpIHsKKyAgICAgICAgICAgICAgICBPdXRPZkxpbmVMaXN0IG15TmV3TGlzdCA9IE91dE9m
TGluZUxpc3Q6OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+bV9sZW5ndGggKyAh
IXNpbmdsZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoc2luZ2xlU3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbXlOZXdMaXN0LT5tX2xlbmd0aCA9IDE7CisgICAg
ICAgICAgICAgICAgICAgIG15TmV3TGlzdC0+bGlzdCgpWzBdID0gc2luZ2xlU3RydWN0dXJlKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBjaGFu
Z2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+
bV9sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IGFkZFRvT3V0T2ZMaW5l
KGxpc3QtPmxpc3QoKVtpXSk7CisgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgQVNTRVJUKGxpc3QtPm1fbGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIGFkZChsaXN0LT5saXN0KClbMF0pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbHRlcihj
b25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAob3Ro
ZXIuaXNUaGluKCkpIHsKKyAgICAgICAgICAgIGlmICghb3RoZXIuc2luZ2xlU3RydWN0dXJlKCkg
fHwgIWNvbnRhaW5zKG90aGVyLnNpbmdsZVN0cnVjdHVyZSgpKSkKKyAgICAgICAgICAgICAgICBj
bGVhcigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY2xlYXIoKTsKKyAg
ICAgICAgICAgICAgICBzZXQob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
aXNUaGluKCkpIHsKKyAgICAgICAgICAgIGlmICghc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKG90aGVyLmNvbnRhaW5zT3V0T2ZMaW5l
KHNpbmdsZVN0cnVjdHVyZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBjbGVhcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlzdCgpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
aWYgKG90aGVyLmNvbnRhaW5zT3V0T2ZMaW5lKGxpc3QtPmxpc3QoKVtpXSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBsaXN0LT5saXN0KClbaS0tXSA9IGxpc3QtPmxp
c3QoKVstLWxpc3QtPm1fbGVuZ3RoXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWxpc3QtPm1f
bGVuZ3RoKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBleGNs
dWRlKGNvbnN0IEJvcnJvd2VkU3RydWN0dXJlU2V0JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlm
IChvdGhlci5pc1RoaW4oKSkgeworICAgICAgICAgICAgaWYgKG90aGVyLnNpbmdsZVN0cnVjdHVy
ZSgpKQorICAgICAgICAgICAgICAgIHJlbW92ZShvdGhlci5zaW5nbGVTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1Ro
aW4oKSkgeworICAgICAgICAgICAgaWYgKCFzaW5nbGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAob3RoZXIuY29udGFpbnMoc2luZ2xlU3RydWN0
dXJlKCkpKQorICAgICAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSBzdHJ1Y3R1
cmVMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIW90aGVyLmNvbnRhaW5zT3V0T2ZMaW5lKGxpc3Qt
Pmxpc3QoKVtpXSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsaXN0
LT5saXN0KClbaS0tXSA9IGxpc3QtPmxpc3QoKVstLWxpc3QtPm1fbGVuZ3RoXTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIWxpc3QtPm1fbGVuZ3RoKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBpc1N1YnNldE9mKGNvbnN0IEJvcnJvd2VkU3RydWN0dXJlU2V0
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICAg
ICAgaWYgKCFzaW5nbGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiBvdGhlci5jb250YWlucyhzaW5nbGVTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvdGhlci5pc1RoaW4oKSkgeworICAgICAg
ICAgICAgaWYgKCFvdGhlci5zaW5nbGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlz
dCgpOworICAgICAgICAgICAgaWYgKGxpc3QtPm1fbGVuZ3RoID49IDIpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGxpc3QtPmxpc3QoKVswXSA9PSBvdGhl
ci5zaW5nbGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgT3V0T2ZM
aW5lTGlzdCogbGlzdCA9IHN0cnVjdHVyZUxpc3QoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghb3RoZXIu
Y29udGFpbnNPdXRPZkxpbmUobGlzdC0+bGlzdCgpW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IEJvcnJvd2VkU3RydWN0dXJlU2V0JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5pc1N1YnNldE9mKCp0aGlzKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNUaGluKCkpIHsKKyAgICAgICAgICAg
IGlmICghc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIG90aGVyLmNvbnRhaW5zKHNpbmdsZVN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG90aGVyLmlzVGhpbigpKSB7CisgICAgICAg
ICAgICBpZiAoIW90aGVyLnNpbmdsZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBjb250YWluc091dE9mTGluZShvdGhlci5zaW5n
bGVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIE91dE9mTGluZUxp
c3QqIGxpc3QgPSBzdHJ1Y3R1cmVMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAob3RoZXIuY29udGFp
bnNPdXRPZkxpbmUobGlzdC0+bGlzdCgpW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHNp
emVfdCBzaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1RoaW4oKSkKKyAgICAgICAg
ICAgIHJldHVybiAhIXNpbmdsZVN0cnVjdHVyZSgpOworICAgICAgICByZXR1cm4gc3RydWN0dXJl
TGlzdCgpLT5tX2xlbmd0aDsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJlKiBhdChzaXplX3Qg
aSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICAgICAgQVNT
RVJUKCFpKTsKKyAgICAgICAgICAgIEFTU0VSVChzaW5nbGVTdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gc2luZ2xlU3RydWN0dXJlKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KGkgPCBzdHJ1Y3R1cmVMaXN0KCktPm1fbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVy
ZUxpc3QoKS0+bGlzdCgpW2ldOworICAgIH0KKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9y
W10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisgICAgCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJvcnJvd2VkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gaXNTdWJzZXRPZihvdGhlcik7CisgICAgfQorICAgIAorICAg
IFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgICAgICBpZiAoIXNpbmdsZVN0cnVjdHVy
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKKyAgICAgICAgICAgIHJldHVy
biBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc2luZ2xlU3RydWN0dXJlKCkpOworICAgICAgICB9
CisKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gU3BlY05vbmU7CisgICAgICAgIE91
dE9mTGluZUxpc3QqIGxpc3QgPSBzdHJ1Y3R1cmVMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKQorICAgICAgICAgICAgbWVyZ2VTcGVj
dWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShsaXN0LT5saXN0KClbaV0p
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgQXJyYXlNb2RlcyBh
cnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzVGhp
bigpKSB7CisgICAgICAgICAgICBpZiAoIXNpbmdsZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGFzQXJyYXlNb2RlcyhzaW5nbGVTdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBB
cnJheU1vZGVzIHJlc3VsdCA9IDA7CisgICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSBzdHJ1
Y3R1cmVMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xl
bmd0aDsgKytpKQorICAgICAgICAgICAgbWVyZ2VBcnJheU1vZGVzKHJlc3VsdCwgYXNBcnJheU1v
ZGVzKGxpc3QtPmxpc3QoKVtpXS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBv
dXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAorICAgIHsKKyAgICAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOworICAgICAgICBvdXQucHJpbnQoIlsiKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5D
b250ZXh0KCphdChpKSwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQoIl0iKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAg
ICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBi
b29sIGFkZFRvT3V0T2ZMaW5lKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
T3V0T2ZMaW5lTGlzdCogbGlzdCA9IHN0cnVjdHVyZUxpc3QoKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChs
aXN0LT5saXN0KClbaV0gPT0gc3RydWN0dXJlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGxpc3QtPm1fbGVuZ3RoIDwgbGlz
dC0+bV9jYXBhY2l0eSkgeworICAgICAgICAgICAgbGlzdC0+bGlzdCgpW2xpc3QtPm1fbGVuZ3Ro
KytdID0gc3RydWN0dXJlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIE91dE9mTGluZUxpc3QqIG5ld0xpc3QgPSBPdXRPZkxpbmVMaXN0Ojpj
cmVhdGUobGlzdC0+bV9jYXBhY2l0eSAqIDIpOworICAgICAgICBuZXdMaXN0LT5tX2xlbmd0aCA9
IGxpc3QtPm1fbGVuZ3RoICsgMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC0+bV9s
ZW5ndGg7IGktLTspCisgICAgICAgICAgICBuZXdMaXN0LT5saXN0KClbaV0gPSBsaXN0LT5saXN0
KClbaV07CisgICAgICAgIG5ld0xpc3QtPmxpc3QoKVtsaXN0LT5tX2xlbmd0aF0gPSBzdHJ1Y3R1
cmU7CisgICAgICAgIHNldChuZXdMaXN0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIGJvb2wgY29udGFpbnNPdXRPZkxpbmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNv
bnN0CisgICAgeworICAgICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlzdCgp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgaWYgKGxpc3QtPmxpc3QoKVtpXSA9PSBzdHJ1Y3R1cmUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdW5zaWduZWQgZGVmYXVsdFN0YXJ0aW5nU2l6ZSA9IDQ7
CisgICAgCisgICAgY2xhc3MgT3V0T2ZMaW5lTGlzdCB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgT3V0T2ZMaW5lTGlzdCogY3JlYXRlKHVuc2lnbmVkIGNhcGFjaXR5KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKHNpemVvZihPdXRP
ZkxpbmVMaXN0KSArIGNhcGFjaXR5ICogc2l6ZW9mKFN0cnVjdHVyZSopKSkgT3V0T2ZMaW5lTGlz
dCgwLCBjYXBhY2l0eSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koT3V0T2ZMaW5lTGlzdCogbGlzdCkKKyAgICAgICAgeworICAgICAgICAgICAgZmFz
dEZyZWUobGlzdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cnVjdHVyZSoqIGxp
c3QoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U3RydWN0dXJlKio+KHRoaXMgKyAxKTsgfQorICAg
ICAgICAKKyAgICAgICAgT3V0T2ZMaW5lTGlzdCh1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGNh
cGFjaXR5KQorICAgICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCisgICAgICAgICAgICAsIG1f
Y2FwYWNpdHkoY2FwYWNpdHkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2ln
bmVkIG1fbGVuZ3RoOworICAgICAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OworICAgIH07CisgICAg
CisgICAgdm9pZCBkZWxldGVTdHJ1Y3R1cmVMaXN0SWZOZWNlc3NhcnkoKQorICAgIHsKKyAgICAg
ICAgaWYgKCFpc1RoaW4oKSkKKyAgICAgICAgICAgIE91dE9mTGluZUxpc3Q6OmRlc3Ryb3koc3Ry
dWN0dXJlTGlzdCgpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1RoaW4oKSBjb25zdCB7IHJl
dHVybiBtX3BvaW50ZXIgJiB0aGluRmxhZzsgfQorICAgIAorICAgIHZvaWQqIHBvaW50ZXIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4obV9wb2ludGVy
ICYgfmZsYWdzKTsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJlKiBzaW5nbGVTdHJ1Y3R1cmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVGhpbigpKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHBvaW50ZXIoKSk7CisgICAgfQorICAgIAorICAgIE91
dE9mTGluZUxpc3QqIHN0cnVjdHVyZUxpc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFpc1RoaW4oKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPdXRPZkxpbmVMaXN0Kj4o
cG9pbnRlcigpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXQoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBzZXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJl
KSwgdHJ1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0KE91dE9mTGluZUxpc3QqIHN0cnVjdHVyZXMp
CisgICAgeworICAgICAgICBzZXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlcyks
IGZhbHNlKTsKKyAgICB9CisgICAgdm9pZCBzZXQodWludHB0cl90IHBvaW50ZXIsIGJvb2wgc2lu
Z2xlU3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgbV9wb2ludGVyID0gcG9pbnRlciB8IChzaW5n
bGVTdHJ1Y3R1cmUgPyB0aGluRmxhZyA6IDApIHwgKG1fcG9pbnRlciAmIHJlc2VydmVkRmxhZyk7
CisgICAgfQorCisgICAgdWludHB0cl90IG1fcG9pbnRlcjsKK307CisKIGNsYXNzIFN0cnVjdHVy
ZVNldCB7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU2V0KCkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231618</attachid>
            <date>2014-05-16 20:39:05 -0700</date>
            <delta_ts>2014-05-16 22:00:54 -0700</delta_ts>
            <desc>it compiles</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30091</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2ODk3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtODksNiArODksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2Rl
L1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKICAgICBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKyAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3Bw
CiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKICAgICBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKICAgICBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2
aXNpb24gMTY4OTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0
Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxTYW1wbGluZ1Rvb2wu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3BlY2lhbFBvaW50
ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3BlY3VsYXRl
ZFR5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3RydWN0
dXJlU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFN0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcU3RydWN0dXJlU3R1YkluZm8uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcVW5saW5rZWRDb2RlQmxvY2suY3BwIiAvPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODk3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTYsNiArNDE2LDcgQEAKIAkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjRE
IC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkIxNEUxRDE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkIxNEUyMTE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFw
cGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkIx
NEUyMDE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCMTRFMjMxODEzMDk1
NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE0RTIyMTgxMzA5NTUwMDlCNkI0
RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCNDM4QTMxOTI3MEIxRDAwRTFGQkM5IC8q
IFN0cnVjdHVyZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCAqLzsg
fTsKIAkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3
NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkI1NDY3OTE0RjVDNDZC
MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZCNTQ2N0IxNEY1QzdFMTAw
MkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAv
KiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMjAsNiArMjIyMSw3IEBACiAJCTBGQjE0RTFE
MTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkIxNEUyMDE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5s
aW5lQ2FjaGVXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0lu
bGluZUNhY2hlV3JhcHBlci5oOyBwYXRoID0gZGZnL0RGR0lubGluZUNhY2hlV3JhcHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkIxNEUyMjE4MTMwOTU1MDA5QjZCNEQgLyog
REZHSW5saW5lQ2FjaGVXcmFwcGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmg7IHBhdGggPSBkZmcvREZHSW5s
aW5lQ2FjaGVXcmFwcGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQjRCNTEwMTZCM0E5NjQwMDNGNjk2QiAvKiBERkdNaW5pZmllZElE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01pbmlmaWVkSUQuaDsgcGF0
aCA9IGRmZy9ERkdNaW5pZmllZElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQWxsb2NhdG9yLmg7IHBhdGggPSBkZmcvREZHQWxsb2NhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdDb21tb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHQ29tbW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTAxOCw2ICs1MDIwLDcgQEAKIAkJCQkwRjU1NDFCMDE2MTNDMUZCMDBD
RTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLywKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlD
OTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5
NCAvKiBTcGVjdWxhdGVkVHlwZS5oICovLAorCQkJCTBGQjQzOEEyMTkyNzBCMUQwMEUxRkJDOSAv
KiBTdHJ1Y3R1cmVTZXQuY3BwICovLAogCQkJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBT
dHJ1Y3R1cmVTZXQuaCAqLywKIAkJCQkwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEY3NjZEMzcxNUFFNEExQTAw
OEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLywKQEAgLTcxNzgs
NiArNzE4MSw3IEBACiAJCQkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNF
N0IyIC8qIEpTU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAw
NDI3QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjQzOEEzMTkyNzBC
MUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjYwMEI1
QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgorCisjaW5jbHVkZSA8d3Rm
L0NvbW1hUHJpbnRlci5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBCb3Jyb3dlZFN0cnVj
dHVyZVNldDo6Y2xlYXIoKQoreworICAgIGRlbGV0ZVN0cnVjdHVyZUxpc3RJZk5lY2Vzc2FyeSgp
OworICAgIHNldCgwLCB0cnVlKTsKK30KKworYm9vbCBCb3Jyb3dlZFN0cnVjdHVyZVNldDo6YWRk
KFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgIGlm
IChpc1RoaW4oKSkgeworICAgICAgICBpZiAoc2luZ2xlU3RydWN0dXJlKCkgPT0gc3RydWN0dXJl
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXNpbmdsZVN0cnVjdHVy
ZSgpKSB7CisgICAgICAgICAgICBzZXQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSBPdXRPZkxpbmVM
aXN0OjpjcmVhdGUoZGVmYXVsdFN0YXJ0aW5nU2l6ZSk7CisgICAgICAgIGxpc3QtPm1fbGVuZ3Ro
ID0gMjsKKyAgICAgICAgbGlzdC0+bGlzdCgpWzBdID0gc2luZ2xlU3RydWN0dXJlKCk7CisgICAg
ICAgIGxpc3QtPmxpc3QoKVsxXSA9IHN0cnVjdHVyZTsKKyAgICAgICAgc2V0KGxpc3QpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGFkZE91dE9mTGluZShz
dHJ1Y3R1cmUpOworfQorCitib29sIEJvcnJvd2VkU3RydWN0dXJlU2V0OjpyZW1vdmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgIGlmIChzaW5n
bGVTdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHNldCgwLCB0cnVlKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHN0cnVjdHVyZUxpc3Qo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAobGlzdC0+bGlzdCgpW2ldICE9IHN0cnVjdHVyZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBsaXN0LT5saXN0KClbaV0gPSBsaXN0LT5saXN0KClbLS1saXN0LT5t
X2xlbmd0aF07CisgICAgICAgIGlmICghbGlzdC0+bV9sZW5ndGgpIHsKKyAgICAgICAgICAgIE91
dE9mTGluZUxpc3Q6OmRlc3Ryb3kobGlzdCk7CisgICAgICAgICAgICBzZXQoMCwgdHJ1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBCb3Jyb3dlZFN0cnVjdHVyZVNldDo6Y29udGFpbnMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIGNvbnN0Cit7CisgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgIGlmIChzaW5nbGVT
dHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY29udGFpbnNPdXRPZkxp
bmUoc3RydWN0dXJlKTsKK30KKworYm9vbCBCb3Jyb3dlZFN0cnVjdHVyZVNldDo6bWVyZ2UoY29u
c3QgQm9ycm93ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQoreworICAgIGlmIChvdGhlci5pc1RoaW4o
KSkgeworICAgICAgICBpZiAob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gYWRkKG90aGVyLnNpbmdsZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gb3RoZXIuc3RydWN0dXJl
TGlzdCgpOworICAgIGlmIChsaXN0LT5tX2xlbmd0aCA+PSAyKSB7CisgICAgICAgIGlmIChpc1Ro
aW4oKSkgeworICAgICAgICAgICAgT3V0T2ZMaW5lTGlzdCogbXlOZXdMaXN0ID0gT3V0T2ZMaW5l
TGlzdDo6Y3JlYXRlKAorICAgICAgICAgICAgICAgIGxpc3QtPm1fbGVuZ3RoICsgISFzaW5nbGVT
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBpZiAoc2luZ2xlU3RydWN0dXJlKCkpIHsKKyAgICAg
ICAgICAgICAgICBteU5ld0xpc3QtPm1fbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICBteU5l
d0xpc3QtPmxpc3QoKVswXSA9IHNpbmdsZVN0cnVjdHVyZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGNoYW5nZWQg
fD0gYWRkT3V0T2ZMaW5lKGxpc3QtPmxpc3QoKVtpXSk7CisgICAgICAgIHJldHVybiBjaGFuZ2Vk
OworICAgIH0KKyAgICAKKyAgICBBU1NFUlQobGlzdC0+bV9sZW5ndGgpOworICAgIHJldHVybiBh
ZGQobGlzdC0+bGlzdCgpWzBdKTsKK30KKwordm9pZCBCb3Jyb3dlZFN0cnVjdHVyZVNldDo6Zmls
dGVyKGNvbnN0IEJvcnJvd2VkU3RydWN0dXJlU2V0JiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIu
aXNUaGluKCkpIHsKKyAgICAgICAgaWYgKCFvdGhlci5zaW5nbGVTdHJ1Y3R1cmUoKSB8fCAhY29u
dGFpbnMob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAgICAgc2V0KG90aGVy
LnNpbmdsZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICBpZiAoIXNpbmdsZVN0cnVjdHVyZSgp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAob3RoZXIuY29udGFpbnNPdXRPZkxp
bmUoc2luZ2xlU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjbGVh
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIE91dE9mTGluZUxpc3QqIGxp
c3QgPSBzdHJ1Y3R1cmVMaXN0KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3Qt
Pm1fbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKG90aGVyLmNvbnRhaW5zT3V0T2ZMaW5lKGxp
c3QtPmxpc3QoKVtpXSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbGlzdC0+bGlz
dCgpW2ktLV0gPSBsaXN0LT5saXN0KClbLS1saXN0LT5tX2xlbmd0aF07CisgICAgfQorICAgIGlm
ICghbGlzdC0+bV9sZW5ndGgpCisgICAgICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgQm9ycm93ZWRT
dHJ1Y3R1cmVTZXQ6OmV4Y2x1ZGUoY29uc3QgQm9ycm93ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQor
eworICAgIGlmIChvdGhlci5pc1RoaW4oKSkgeworICAgICAgICBpZiAob3RoZXIuc2luZ2xlU3Ry
dWN0dXJlKCkpCisgICAgICAgICAgICByZW1vdmUob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChpc1RoaW4oKSkgeworICAgICAg
ICBpZiAoIXNpbmdsZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAob3RoZXIuY29udGFpbnMoc2luZ2xlU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgY2xlYXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0
ID0gc3RydWN0dXJlTGlzdCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5t
X2xlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghb3RoZXIuY29udGFpbnNPdXRPZkxpbmUobGlz
dC0+bGlzdCgpW2ldKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0LT5saXN0
KClbaS0tXSA9IGxpc3QtPmxpc3QoKVstLWxpc3QtPm1fbGVuZ3RoXTsKKyAgICB9CisgICAgaWYg
KCFsaXN0LT5tX2xlbmd0aCkKKyAgICAgICAgY2xlYXIoKTsKK30KKworYm9vbCBCb3Jyb3dlZFN0
cnVjdHVyZVNldDo6aXNTdWJzZXRPZihjb25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIp
IGNvbnN0Cit7CisgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgIGlmICghc2luZ2xlU3RydWN0
dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG90aGVyLmNv
bnRhaW5zKHNpbmdsZVN0cnVjdHVyZSgpKTsKKyAgICB9CisgICAgCisgICAgaWYgKG90aGVyLmlz
VGhpbigpKSB7CisgICAgICAgIGlmICghb3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSBzdHJ1Y3R1
cmVMaXN0KCk7CisgICAgICAgIGlmIChsaXN0LT5tX2xlbmd0aCA+PSAyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobGlzdC0+bGlzdCgpWzBdID09IG90aGVyLnNpbmds
ZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHN0cnVjdHVyZUxp
c3QoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkg
eworICAgICAgICBpZiAoIW90aGVyLmNvbnRhaW5zT3V0T2ZMaW5lKGxpc3QtPmxpc3QoKVtpXSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEJvcnJvd2VkU3RydWN0dXJlU2V0OjpvdmVybGFwcyhjb25zdCBCb3Jyb3dlZFN0cnVj
dHVyZVNldCYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgIGlm
ICghc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBvdGhlci5jb250YWlucyhzaW5nbGVTdHJ1Y3R1cmUoKSk7CisgICAgfQorICAgIAor
ICAgIGlmIChvdGhlci5pc1RoaW4oKSkgeworICAgICAgICBpZiAoIW90aGVyLnNpbmdsZVN0cnVj
dHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gY29udGFp
bnNPdXRPZkxpbmUob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpOworICAgIH0KKyAgICAKKyAgICBP
dXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlzdCgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChvdGhlci5jb250
YWluc091dE9mTGluZShsaXN0LT5saXN0KClbaV0pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCb3Jyb3dlZFN0cnVjdHVyZVNl
dDo6b3BlcmF0b3I9PShjb25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Cit7
CisgICAgaWYgKHNpemUoKSAhPSBvdGhlci5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gaXNTdWJzZXRPZihvdGhlcik7Cit9CisKK1NwZWN1bGF0ZWRUeXBlIEJvcnJv
d2VkU3RydWN0dXJlU2V0OjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNUaGluKCkpIHsKKyAgICAgICAgaWYgKCFzaW5nbGVTdHJ1Y3R1cmUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBTcGVjTm9uZTsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbVN0
cnVjdHVyZShzaW5nbGVTdHJ1Y3R1cmUoKSk7CisgICAgfQorICAgIAorICAgIFNwZWN1bGF0ZWRU
eXBlIHJlc3VsdCA9IFNwZWNOb25lOworICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSBzdHJ1Y3R1
cmVMaXN0KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyAr
K2kpCisgICAgICAgIG1lcmdlU3BlY3VsYXRpb24ocmVzdWx0LCBzcGVjdWxhdGlvbkZyb21TdHJ1
Y3R1cmUobGlzdC0+bGlzdCgpW2ldKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQXJyYXlN
b2RlcyBCb3Jyb3dlZFN0cnVjdHVyZVNldDo6YXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCkgY29u
c3QKK3sKKyAgICBpZiAoaXNUaGluKCkpIHsKKyAgICAgICAgaWYgKCFzaW5nbGVTdHJ1Y3R1cmUo
KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gYXNBcnJheU1vZGVzKHNp
bmdsZVN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgfQorICAgIAorICAgIEFycmF5
TW9kZXMgcmVzdWx0ID0gMDsKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlz
dCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKQor
ICAgICAgICBtZXJnZUFycmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMobGlzdC0+bGlzdCgp
W2ldLT5pbmRleGluZ1R5cGUoKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgQm9y
cm93ZWRTdHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENv
bnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgIG91
dC5wcmludCgiWyIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisg
ICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KCphdChpKSwgY29udGV4dCkpOworICAg
IG91dC5wcmludCgiXSIpOworfQorCit2b2lkIEJvcnJvd2VkU3RydWN0dXJlU2V0OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIp
OworfQorCitib29sIEJvcnJvd2VkU3RydWN0dXJlU2V0OjphZGRPdXRPZkxpbmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCit7CisgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHN0cnVjdHVyZUxpc3Qo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAobGlzdC0+bGlzdCgpW2ldID09IHN0cnVjdHVyZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKGxpc3QtPm1fbGVuZ3RoIDwgbGlzdC0+
bV9jYXBhY2l0eSkgeworICAgICAgICBsaXN0LT5saXN0KClbbGlzdC0+bV9sZW5ndGgrK10gPSBz
dHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBPdXRPZkxp
bmVMaXN0KiBuZXdMaXN0ID0gT3V0T2ZMaW5lTGlzdDo6Y3JlYXRlKGxpc3QtPm1fY2FwYWNpdHkg
KiAyKTsKKyAgICBuZXdMaXN0LT5tX2xlbmd0aCA9IGxpc3QtPm1fbGVuZ3RoICsgMTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsaXN0LT5tX2xlbmd0aDsgaS0tOykKKyAgICAgICAgbmV3TGlzdC0+
bGlzdCgpW2ldID0gbGlzdC0+bGlzdCgpW2ldOworICAgIG5ld0xpc3QtPmxpc3QoKVtsaXN0LT5t
X2xlbmd0aF0gPSBzdHJ1Y3R1cmU7CisgICAgc2V0KG5ld0xpc3QpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEJvcnJvd2VkU3RydWN0dXJlU2V0Ojpjb250YWluc091dE9mTGluZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKK3sKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3Ry
dWN0dXJlTGlzdCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmIChsaXN0LT5saXN0KClbaV0gPT0gc3RydWN0dXJlKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworQm9y
cm93ZWRTdHJ1Y3R1cmVTZXQ6Ok91dE9mTGluZUxpc3QqIEJvcnJvd2VkU3RydWN0dXJlU2V0OjpP
dXRPZkxpbmVMaXN0OjpjcmVhdGUodW5zaWduZWQgY2FwYWNpdHkpCit7CisgICAgcmV0dXJuIG5l
dyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXplb2YoT3V0T2ZMaW5lTGlzdCkgKyBjYXBhY2l0eSAq
IHNpemVvZihTdHJ1Y3R1cmUqKSkpIE91dE9mTGluZUxpc3QoMCwgY2FwYWNpdHkpOworfQorCit2
b2lkIEJvcnJvd2VkU3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0OjpkZXN0cm95KE91dE9mTGlu
ZUxpc3QqIGxpc3QpCit7CisgICAgZmFzdEZyZWUobGlzdCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oCShyZXZpc2lvbiAxNjg5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE2NyArMzAs
MTc4IEBACiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1uYW1lc3Bh
Y2UgREZHIHsKLWNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7Ci19Ci0KLWNsYXNzIFN0cnVj
dHVyZVNldCB7CisvLyBUaGlzIGlzIGEgc3RydWN0dXJlIHNldCB0aGF0IGRvZXNuJ3Qgb3duIGFu
eSBtZW1vcnkuIFlvdSBjYW4gdXNlIGl0IHRvIHdyYXAgYQorLy8gdWludHB0cl90LCB3aGljaCBp
dCB3aWxsIHRoZW4gaW50ZXJwcmV0IGFzIGEgc3RydWN0dXJlIHNldC4gVGhpcyBjYW4gYmUgZWl0
aGVyCisvLyBzdWJ0eXBlZCB0byBwcm92aWRlIFN0cnVjdHVyZVNldCBmdW5jdGlvbmFsaXR5IG9y
IGl0IGNhbiBiZSB1c2VkIGFzIHBhcnQgb2YgYQorLy8gbW9yZSBzb3BoaXN0aWNhdGVkIGRhdGEg
c3RydWN0dXJlIHRoYXQgcmV2b2x2ZXMgYXJvdW5kIGEgdWludHB0cl90LgorY2xhc3MgQm9ycm93
ZWRTdHJ1Y3R1cmVTZXQgewogcHVibGljOgotICAgIFN0cnVjdHVyZVNldCgpIHsgfQorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCB0aGluRmxhZyA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHJlc2VydmVkRmxhZyA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsYWdzID0g
MzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcmVzZXJ2ZWRWYWx1ZSA9IDQ7CiAgICAgCi0g
ICAgU3RydWN0dXJlU2V0KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIGV4cGxpY2l0IEJvcnJv
d2VkU3RydWN0dXJlU2V0KHVpbnRwdHJfdCBwb2ludGVyKQorICAgICAgICA6IG1fcG9pbnRlcihw
b2ludGVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAgICAgIG1fc3Ry
dWN0dXJlcy5hcHBlbmQoc3RydWN0dXJlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigp
Ci0gICAgewotICAgICAgICBtX3N0cnVjdHVyZXMuY2xlYXIoKTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBhZGQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKTsKLSAgICAgICAgQVNTRVJUKCFjb250YWlucyhzdHJ1Y3R1cmUpKTsKLSAgICAgICAg
bV9zdHJ1Y3R1cmVzLmFwcGVuZChzdHJ1Y3R1cmUpOwotICAgIH0KKyAgICB2b2lkIGNsZWFyKCk7
CiAgICAgCi0gICAgYm9vbCBhZGRBbGwoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKKyAgICBT
dHJ1Y3R1cmUqIG9ubHlTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgYm9vbCBjaGFu
Z2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChjb250YWlucyhvdGhlcltpXSkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhZGQob3RoZXJbaV0pOwotICAgICAgICAgICAg
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICAgICAgQVNT
RVJUKHNpbmdsZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBzaW5nbGVTdHJ1Y3R1
cmUoKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZUxpc3QoKS0+bV9sZW5ndGggPT0gMSk7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1
cmVMaXN0KCktPmxpc3QoKVswXTsKICAgICB9CiAgICAgCi0gICAgdm9pZCByZW1vdmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmVzW2ldICE9IHN0cnVjdHVyZSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9zdHJ1Y3R1cmVzW2ldID0g
bV9zdHJ1Y3R1cmVzLmxhc3QoKTsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlcy5yZW1vdmVMYXN0
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlzVGhp
bigpICYmICFzaW5nbGVTdHJ1Y3R1cmUoKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBjb250YWlu
cyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKKyAgICBib29sIGFkZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSk7CisgICAgYm9vbCByZW1vdmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpOworICAgIGJv
b2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0OworICAgIAorICAgIGJvb2wg
bWVyZ2UoY29uc3QgQm9ycm93ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKKyAgICB2b2lkIGZpbHRl
cihjb25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIHZvaWQgZXhjbHVkZShj
b25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIAorICAgIGJvb2wgaXNTdWJz
ZXRPZihjb25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wg
aXNTdXBlcnNldE9mKGNvbnN0IEJvcnJvd2VkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAobV9zdHJ1Y3R1cmVzW2ldID09IHN0cnVjdHVyZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBvdGhlci5pc1N1YnNldE9mKCp0aGlzKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBjb250YWluc09ubHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CisgICAg
Ym9vbCBvdmVybGFwcyhjb25zdCBCb3Jyb3dlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Owor
ICAgIAorICAgIHNpemVfdCBzaXplKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChzaXplKCkg
IT0gMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHNpbmdsZXRv
blN0cnVjdHVyZSgpID09IHN0cnVjdHVyZTsKKyAgICAgICAgaWYgKGlzVGhpbigpKQorICAgICAg
ICAgICAgcmV0dXJuICEhc2luZ2xlU3RydWN0dXJlKCk7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1
cmVMaXN0KCktPm1fbGVuZ3RoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3Vic2V0T2YoY29u
c3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKKyAgICBTdHJ1Y3R1cmUqIGF0KHNpemVfdCBp
KSBjb25zdAogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVy
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghb3RoZXIuY29udGFpbnMobV9zdHJ1
Y3R1cmVzW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChp
c1RoaW4oKSkgeworICAgICAgICAgICAgQVNTRVJUKCFpKTsKKyAgICAgICAgICAgIEFTU0VSVChz
aW5nbGVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICByZXR1cm4gc2luZ2xlU3RydWN0dXJlKCk7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIEFTU0VSVChpIDwgc3Ry
dWN0dXJlTGlzdCgpLT5tX2xlbmd0aCk7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVMaXN0KCkt
Pmxpc3QoKVtpXTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgU3Ry
dWN0dXJlU2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5pc1N1
YnNldE9mKCp0aGlzKTsKLSAgICB9CisgICAgU3RydWN0dXJlKiBvcGVyYXRvcltdKHNpemVfdCBp
KSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIAotICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
U3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKKyAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChvdGhlci5jb250YWlucyhtX3N0cnVjdHVyZXNbaV0p
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoaXNUaGluKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChzaW5nbGVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICByZXR1
cm4gc2luZ2xlU3RydWN0dXJlKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gc3RydWN0dXJlTGlzdCgpLT5saXN0KClbc3RydWN0dXJlTGlzdCgpLT5t
X2xlbmd0aCAtIDFdOwogICAgIH0KICAgICAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RydWN0dXJlcy5zaXplKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9y
cm93ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICAKLSAgICAvLyBDYWxsIHRoaXMg
aWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNldCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3Rs
eQotICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCi0gICAgU3RydWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1
cmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlcy5zaXplKCkgPT0g
MSk7Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZXNbMF07Ci0gICAgfQorICAgIFNwZWN1bGF0
ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdDsKKyAgICBBcnJheU1vZGVz
IGFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNvbnN0OwogICAgIAotICAgIFN0cnVjdHVyZSog
YXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5hdChpKTsgfQorICAgIHZv
aWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29uc3Q7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAotICAg
IFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0K
KyAgICB1aW50cHRyX3QgZW5jb2RlZFBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXI7
IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVy
ZXMubGFzdCgpOyB9Ci0KLSAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1
cmVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCA9IFNwZWNO
b25lOworcHJvdGVjdGVkOgorICAgIGJvb2wgYWRkT3V0T2ZMaW5lKFN0cnVjdHVyZSogc3RydWN0
dXJlKTsKKyAgICBib29sIGNvbnRhaW5zT3V0T2ZMaW5lKFN0cnVjdHVyZSogc3RydWN0dXJlKSBj
b25zdDsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdFN0YXJ0aW5nU2l6
ZSA9IDQ7CisgICAgCisgICAgY2xhc3MgT3V0T2ZMaW5lTGlzdCB7CisgICAgcHVibGljOgorICAg
ICAgICBzdGF0aWMgT3V0T2ZMaW5lTGlzdCogY3JlYXRlKHVuc2lnbmVkIGNhcGFjaXR5KTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShPdXRPZkxpbmVMaXN0KiBsaXN0KTsKICAgICAgICAg
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0aW9uRnJvbVN0
cnVjdHVyZShtX3N0cnVjdHVyZXNbaV0pKTsKKyAgICAgICAgU3RydWN0dXJlKiogbGlzdCgpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxTdHJ1Y3R1cmUqKj4odGhpcyArIDEpOyB9CiAgICAgICAgIAot
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBPdXRPZkxpbmVMaXN0KHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgY2FwYWNpdHkpCisgICAgICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkK
KyAgICAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIG1fY2FwYWNp
dHk7CisgICAgfTsKKyAgICAKKyAgICB2b2lkIGRlbGV0ZVN0cnVjdHVyZUxpc3RJZk5lY2Vzc2Fy
eSgpCisgICAgeworICAgICAgICBpZiAoIWlzVGhpbigpKQorICAgICAgICAgICAgT3V0T2ZMaW5l
TGlzdDo6ZGVzdHJveShzdHJ1Y3R1cmVMaXN0KCkpOwogICAgIH0KICAgICAKLSAgICBBcnJheU1v
ZGVzIGFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNvbnN0CisgICAgYm9vbCBpc1RoaW4oKSBj
b25zdCB7IHJldHVybiBtX3BvaW50ZXIgJiB0aGluRmxhZzsgfQorICAgIAorICAgIHZvaWQqIHBv
aW50ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXlNb2RlcyByZXN1bHQgPSAwOwotICAg
ICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICBtZXJnZUFycmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMo
bV9zdHJ1Y3R1cmVzW2ldLT5pbmRleGluZ1R5cGUoKSkpOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4obV9wb2ludGVy
ICYgfmZsYWdzKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cnVj
dHVyZVNldCYgb3RoZXIpIGNvbnN0CisgICAgU3RydWN0dXJlKiBzaW5nbGVTdHJ1Y3R1cmUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fc3RydWN0dXJlcy5zaXplKCkgIT0gb3RoZXIubV9z
dHJ1Y3R1cmVzLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIW90aGVyLmNvbnRhaW5zKG1fc3RydWN0dXJlc1tpXSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgQVNTRVJUKGlzVGhpbigpKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFN0cnVjdHVyZSo+KHBvaW50ZXIoKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29u
c3QKKyAgICBPdXRPZkxpbmVMaXN0KiBzdHJ1Y3R1cmVMaXN0KCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKLSAgICAgICAgb3V0LnByaW50KCJbIik7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKQotICAgICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoKm1fc3RydWN0dXJlc1tpXSwgY29udGV4
dCkpOwotICAgICAgICBvdXQucHJpbnQoIl0iKTsKKyAgICAgICAgQVNTRVJUKCFpc1RoaW4oKSk7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPdXRPZkxpbmVMaXN0Kj4ocG9pbnRlcigpKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAg
dm9pZCBzZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBzZXQoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSwgdHJ1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0
KE91dE9mTGluZUxpc3QqIHN0cnVjdHVyZXMpCisgICAgeworICAgICAgICBzZXQoYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlcyksIGZhbHNlKTsKKyAgICB9CisgICAgdm9pZCBzZXQo
dWludHB0cl90IHBvaW50ZXIsIGJvb2wgc2luZ2xlU3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
bV9wb2ludGVyID0gcG9pbnRlciB8IChzaW5nbGVTdHJ1Y3R1cmUgPyB0aGluRmxhZyA6IDApIHwg
KG1fcG9pbnRlciAmIHJlc2VydmVkRmxhZyk7CisgICAgfQorCisgICAgdWludHB0cl90IG1fcG9p
bnRlcjsKK307CisKK2NsYXNzIFN0cnVjdHVyZVNldCA6IHB1YmxpYyBCb3Jyb3dlZFN0cnVjdHVy
ZVNldCB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlU2V0KCkKKyAgICAgICAgOiBCb3Jyb3dlZFN0
cnVjdHVyZVNldCgwKQogICAgIHsKLSAgICAgICAgZHVtcEluQ29udGV4dChvdXQsIDApOwogICAg
IH0KICAgICAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZTsKKyAgICBTdHJ1Y3R1cmVTZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogQm9ycm93ZWRTdHJ1Y3R1cmVTZXQoMCkKKyAgICB7CisgICAgICAgIHNldChzdHJ1Y3R1cmUp
OworICAgIH0KICAgICAKLSAgICBWZWN0b3I8U3RydWN0dXJlKiwgMj4gbV9zdHJ1Y3R1cmVzOwor
ICAgIH5TdHJ1Y3R1cmVTZXQoKQorICAgIHsKKyAgICAgICAgZGVsZXRlU3RydWN0dXJlTGlzdElm
TmVjZXNzYXJ5KCk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjg5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
NjYsNyArMTY2Niw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZVNldCBzZXQ7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07
KQotICAgICAgICAgICAgc2V0LmFkZEFsbChub2RlLT5tdWx0aUdldEJ5T2Zmc2V0RGF0YSgpLnZh
cmlhbnRzW2ldLnN0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgICAgIHNldC5tZXJnZShub2RlLT5t
dWx0aUdldEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldLnN0cnVjdHVyZVNldCgpKTsKICAgICAg
ICAgCiAgICAgICAgIGZpbHRlcihub2RlLT5jaGlsZDEoKSwgc2V0KTsKICAgICAgICAgZm9yTm9k
ZShub2RlKS5tYWtlSGVhcFRvcCgpOwpAQCAtMTcxNSwxMiArMTcxNSwxMiBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBjb25zdCBQdXRCeUlk
VmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHNb
aV07CiAgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJl
cGxhY2UpIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1
cmUuY29udGFpbnModmFyaWFudC5zdHJ1Y3R1cmUoKSkpCi0gICAgICAgICAgICAgICAgICAgIG5l
d1NldC5hZGRBbGwodmFyaWFudC5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5hZGQodmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0
QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pOwogICAgICAgICAgICAgaWYgKHZhbHVlLm1fY3VycmVu
dEtub3duU3RydWN0dXJlLmNvbnRhaW5zKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKQotICAgICAg
ICAgICAgICAgIG5ld1NldC5hZGRBbGwodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICAgICAgbmV3U2V0LmFkZCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgLy8gVXNlIGZpbHRlcih2YWx1ZSwgc2V0KSBhcyBhIHdheSBvZiBz
ZXR0aW5nIHRoZSBzdHJ1Y3R1cmUgc2V0LiBUaGlzIHdvcmtzIGJlY2F1c2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxNjg5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5NCw2ICsxODk0LDcgQEAgTm9kZSogQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5T2Zmc2V0KAogTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmVtaXRQcm90
b3R5cGVDaGVja3MoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGVuZGVkU3RydWN0dXJl
Q2hhaW4qIGNoYWluKQogeworICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwogICAgIE5vZGUqIGJhc2Ug
PSAwOwogICAgIG1fZ3JhcGguY2hhaW5zKCkuYWRkTGF6aWx5KGNoYWluKTsKICAgICBTdHJ1Y3R1
cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CkBAIC0xOTM0LDcgKzE5MzUsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBmb3IgKHVuc2lnbmVk
IHZhcmlhbnRJbmRleCA9IGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKTsgdmFyaWFudEluZGV4
LS07KSB7CiAgICAgICAgICAgICBpZiAoZ2V0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLmNoYWlu
KCkpIHsKICAgICAgICAgICAgICAgICBlbWl0UHJvdG90eXBlQ2hlY2tzKAotICAgICAgICAgICAg
ICAgICAgICBnZXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uc3RydWN0dXJlU2V0KCkuc2luZ2xl
dG9uU3RydWN0dXJlKCksCisgICAgICAgICAgICAgICAgICAgIGdldEJ5SWRTdGF0dXNbdmFyaWFu
dEluZGV4XS5zdHJ1Y3R1cmVTZXQoKS5vbmx5U3RydWN0dXJlKCksCiAgICAgICAgICAgICAgICAg
ICAgIGdldEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jaGFpbigpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTk2MCw3ICsxOTYxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKICAgICAKICAgICBpZiAodmFyaWFudC5jaGFpbigpKSB7CiAgICAgICAgIGJh
c2UgPSBlbWl0UHJvdG90eXBlQ2hlY2tzKAotICAgICAgICAgICAgdmFyaWFudC5zdHJ1Y3R1cmVT
ZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKSwgdmFyaWFudC5jaGFpbigpKTsKKyAgICAgICAgICAg
IHZhcmlhbnQuc3RydWN0dXJlU2V0KCkub25seVN0cnVjdHVyZSgpLCB2YXJpYW50LmNoYWluKCkp
OwogICAgIH0KICAgICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBidWdzIGxpa2UgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3ZSBuZWVkIHRvCkBAIC0zMDYy
LDcgKzMwNjMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChH
ZXRCeUlkRmx1c2gsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24p
LCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBjZWxs
Q29uc3RhbnRXaXRoU3RydWN0dXJlQ2hlY2soZ2xvYmFsT2JqZWN0LCBzdGF0dXNbMF0uc3RydWN0
dXJlU2V0KCkuc2luZ2xldG9uU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBjZWxsQ29uc3RhbnRXaXRoU3RydWN0dXJlQ2hlY2soZ2xvYmFsT2JqZWN0LCBzdGF0dXNb
MF0uc3RydWN0dXJlU2V0KCkub25seVN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IHN0YXR1c1swXS5zcGVjaWZpY1ZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgY2VsbENv
bnN0YW50KHNwZWNpZmljVmFsdWUuYXNDZWxsKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNjg5NzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcg
KzUxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpID09IGNoaWxkMQotICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5zdHJ1Y3R1
cmVTZXQoKS5jb250YWluc09ubHkoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgJiYg
bm9kZS0+c3RydWN0dXJlU2V0KCkuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDE2ODk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OTAsMTMgKzQ5MCwxNCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIEFTU0VSVChtX29wID09IENoZWNrU3RydWN0dXJlIHx8IG1fb3AgPT0gQXJyYXlpZnlUb1N0
cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCghY2hpbGQyKCkpOwogICAgICAgICBBU1NFUlQoIWNo
aWxkMygpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CiAgICAgICAgIG1fb3BJbmZvID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKTsKICAgICAgICAgbV9vcCA9IFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRU
b1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KCkKICAgICB7Ci0gICAgICAgIGNvbnZlcnRU
b1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0
cnVjdHVyZSgpKTsKKyAgICAgICAgY29udmVydFRvU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnQoc3RydWN0dXJlU2V0KCkub25seVN0cnVjdHVyZSgpKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb252ZXJ0VG9HZXRCeU9mZnNldCh1bnNpZ25lZCBzdG9yYWdlQWNjZXNzRGF0YUluZGV4LCBF
ZGdlIHN0b3JhZ2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2ODk3OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwMyw3ICs1MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbm90
aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBzZXQuc2luZ2xl
dG9uU3RydWN0dXJlKCkpOworICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwg
c2V0Lm9ubHlTdHJ1Y3R1cmUoKSk7CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VDaGVja0FycmF5
KFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231622</attachid>
            <date>2014-05-16 22:00:54 -0700</date>
            <delta_ts>2014-05-20 18:31:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>34337</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4OTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDE0LTA1LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzAxNAorICAgICAgICBb
ZnRsb3B0XSBBIFN0cnVjdHVyZVNldCB3aXRoIG9uZSBlbGVtZW50IHNob3VsZCBvbmx5IHJlcXVp
cmUgb25lIHdvcmQgYW5kIG5vIGFsbG9jYXRpb24KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgbWFrZXMgaXQgbW9yZSBlZmZpY2ll
bnQgdG8gdXNlIFN0cnVjdHVyZVNldCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBjb21tb24gY2Fz
ZSBpcworICAgICAgICBqdXN0IG9uZSBzdHJ1Y3R1cmUuCisgICAgICAgIAorICAgICAgICBJIGFs
c28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gdXNlIHRoZSBzYW1lIHNldCB0ZXJtaW5vbG9neSB3
ZSB1c2UgaW4gQml0VmVjdG9yOiBtZXJnZSwKKyAgICAgICAgZmlsdGVyLCBleGNsdWRlLCBjb250
YWlucywgZXRjLgorICAgICAgICAKKyAgICAgICAgRXZlbnR1YWxseSwgdGhpcyB3aWxsIGJlIHVz
ZWQgdG8gaW1wbGVtZW50IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgYXMgd2VsbC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OlN0cnVjdHVyZVNldCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVNldDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U2V0OjpjbGVhcik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6YWRkKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6
OmNvbnRhaW5zKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjptZXJnZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVNldDo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0
OjpleGNsdWRlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0Ojppc1N1YnNldE9mKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpvdmVybGFwcyk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNldDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6c3BlY3Vs
YXRpb25Gcm9tU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6YXJyYXlN
b2Rlc0Zyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpkdW1wSW5D
b250ZXh0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2V0OjphZGRPdXRPZkxpbmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
ZXQ6OmNvbnRhaW5zT3V0T2ZMaW5lKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0Ojpjb3B5
RnJvbSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6T3V0T2ZMaW5lTGlzdDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0OjpkZXN0cm95KToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU2V0OjpTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6On5TdHJ1
Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6Om9ubHlTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTZXQ6OnNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmF0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlU2V0OjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU2V0OjpsYXN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0
OjpsaXN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0OjpPdXRP
ZkxpbmVMaXN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpkZWxldGVTdHJ1Y3R1cmVM
aXN0SWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmlzVGhpbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6cG9pbnRlcik6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNldDo6c2luZ2xlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0Ojpz
dHJ1Y3R1cmVMaXN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpzZXQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU2V0OjphZGQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmFk
ZEFsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6cmVtb3ZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0Ojpjb250YWlucyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6Y29udGFpbnNPbmx5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlU2V0Ojppc1N1YnNldE9mKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2V0OjpvdmVybGFwcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNldDo6c2luZ2xldG9uU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU2V0OjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTZXQ6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6ZW1pdFByb3RvdHlwZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkNTRVBoYXNlOjpzdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEVsaW1pbmF0
aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmNvbnZlcnRUb1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBkZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZTo6bm90aWNlU3RydWN0dXJlQ2hlY2spOgorCiAyMDE0LTA1LTEzICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2Z0bG9wdF0gREZHIHNo
b3VsZCBub3QgZXhpdCBkdWUgdG8gaW5hZGVxdWF0ZSBwcm9maWxpbmcgY292ZXJhZ2Ugd2hlbiBp
dCBjYW4gdHJpdmlhbGx5IGZpbGwgaW4gdGhlIHByb2ZpbGluZyBjb3ZlcmFnZSBkdWUgdG8gdmFy
aWFibGUgY29uc3RhbnQgaW5mZXJlbmNlIGFuZCB0aGUgYmV0dGVyIHByZWRpY3Rpb24gbW9kZWxp
bmcgb2YgdHlwZWQgYXJyYXkgR2V0QnlWYWxzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxNjg5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCiAgICAgYnl0ZWNv
ZGUvU3BlY2lhbFBvaW50ZXIuY3BwCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisg
ICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
CiAgICAgYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2ODk3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcU2FtcGxpbmdUb29sLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXFNwZWNpYWxQb2ludGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXFNwZWN1bGF0ZWRUeXBlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFN0cnVjdHVyZVNldC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFN0cnVjdHVyZVN0dWJJ
bmZvLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFVubGlua2Vk
Q29kZUJsb2NrLmNwcCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNjg5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE2LDYgKzQxNiw3IEBA
CiAJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTRFMUQx
ODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCMTRFMjExODEyNTcwQjAw
OUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTRFMjAxODEyNTcwQjAwOUI2QjREIC8qIERGR0lu
bGluZUNhY2hlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGQjE0RTIzMTgxMzA5NTUwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdy
YXBwZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkIxNEUyMjE4MTMwOTU1MDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVySW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGQjQzOEEzMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNDM4QTIxOTI3MEIxRDAwRTFG
QkM5IC8qIFN0cnVjdHVyZVNldC5jcHAgKi87IH07CiAJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4
OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAg
Ki87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
MjIwLDYgKzIyMjEsNyBAQAogCQkwRkIxNEUxRDE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCMTRF
MjAxODEyNTcwQjAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdJbmxpbmVDYWNoZVdyYXBwZXIuaDsgcGF0aCA9IGRm
Zy9ERkdJbmxpbmVDYWNoZVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCMTRFMjIxODEzMDk1NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5saW5lQ2FjaGVXcmFwcGVy
SW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0
cnVjdHVyZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1
Y3R1cmVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxMDE2QjNB
OTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdNaW5pZmllZElELmg7IHBhdGggPSBkZmcvREZHTWluaWZpZWRJRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZH
QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FsbG9jYXRv
ci5oOyBwYXRoID0gZGZnL0RGR0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkI0QjUxQTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZH
Q29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMTgsNiArNTAyMCw3
IEBACiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8s
CiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywK
IAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCAqLywKKwkJ
CQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCAqLywKIAkJCQkw
RjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCiAJCQkJMEY3NjZE
MzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3Bw
ICovLAogCQkJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmggKi8sCkBAIC03MTc4LDYgKzcxODEsNyBAQAogCQkJCTJBODM2Mzg5MThE
N0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTI2MDBCNUE2MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmlu
Z0pvaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDgyQjc0RTBBNDMwMzI4MDA1MTdDRkMg
LyogSlNTdHJpbmdSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ2QUFCMzgwQjY2QTk0NDAw
RTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVTZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK1N0cnVjdHVyZVNldDo6U3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCit7CisgICAgY29weUZyb20ob3RoZXIpOworfQorCitTdHJ1Y3R1cmVTZXQmIFN0cnVj
dHVyZVNldDo6b3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCit7CisgICAgaWYg
KHRoaXMgPT0gJm90aGVyKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgZGVsZXRlU3RydWN0
dXJlTGlzdElmTmVjZXNzYXJ5KCk7CisgICAgY29weUZyb20ob3RoZXIpOworICAgIHJldHVybiAq
dGhpczsKK30KKwordm9pZCBTdHJ1Y3R1cmVTZXQ6OmNsZWFyKCkKK3sKKyAgICBkZWxldGVTdHJ1
Y3R1cmVMaXN0SWZOZWNlc3NhcnkoKTsKKyAgICBzZXQoMCwgdHJ1ZSk7Cit9CisKK2Jvb2wgU3Ry
dWN0dXJlU2V0OjphZGQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgQVNTRVJUKHN0cnVj
dHVyZSk7CisgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgIGlmIChzaW5nbGVTdHJ1Y3R1cmUo
KSA9PSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgh
c2luZ2xlU3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgIHNldChzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlz
dCA9IE91dE9mTGluZUxpc3Q6OmNyZWF0ZShkZWZhdWx0U3RhcnRpbmdTaXplKTsKKyAgICAgICAg
bGlzdC0+bV9sZW5ndGggPSAyOworICAgICAgICBsaXN0LT5saXN0KClbMF0gPSBzaW5nbGVTdHJ1
Y3R1cmUoKTsKKyAgICAgICAgbGlzdC0+bGlzdCgpWzFdID0gc3RydWN0dXJlOworICAgICAgICBz
ZXQobGlzdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
YWRkT3V0T2ZMaW5lKHN0cnVjdHVyZSk7Cit9CisKK2Jvb2wgU3RydWN0dXJlU2V0OjpyZW1vdmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKGlzVGhpbigpKSB7CisgICAgICAgIGlm
IChzaW5nbGVTdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHNldCgwLCB0
cnVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHN0cnVjdHVy
ZUxpc3QoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsr
aSkgeworICAgICAgICBpZiAobGlzdC0+bGlzdCgpW2ldICE9IHN0cnVjdHVyZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0LT5saXN0KClbaV0gPSBsaXN0LT5saXN0KClbLS1s
aXN0LT5tX2xlbmd0aF07CisgICAgICAgIGlmICghbGlzdC0+bV9sZW5ndGgpIHsKKyAgICAgICAg
ICAgIE91dE9mTGluZUxpc3Q6OmRlc3Ryb3kobGlzdCk7CisgICAgICAgICAgICBzZXQoMCwgdHJ1
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0
dXJlKSBjb25zdAoreworICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICBpZiAoc2luZ2xlU3Ry
dWN0dXJlKCkgPT0gc3RydWN0dXJlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnRhaW5zT3V0T2ZMaW5l
KHN0cnVjdHVyZSk7Cit9CisKK2Jvb2wgU3RydWN0dXJlU2V0OjptZXJnZShjb25zdCBTdHJ1Y3R1
cmVTZXQmIG90aGVyKQoreworICAgIGlmIChvdGhlci5pc1RoaW4oKSkgeworICAgICAgICBpZiAo
b3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gYWRkKG90aGVyLnNp
bmdsZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gb3RoZXIuc3RydWN0dXJlTGlzdCgpOworICAgIGlmIChs
aXN0LT5tX2xlbmd0aCA+PSAyKSB7CisgICAgICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICAg
ICAgT3V0T2ZMaW5lTGlzdCogbXlOZXdMaXN0ID0gT3V0T2ZMaW5lTGlzdDo6Y3JlYXRlKAorICAg
ICAgICAgICAgICAgIGxpc3QtPm1fbGVuZ3RoICsgISFzaW5nbGVTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBpZiAoc2luZ2xlU3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBteU5ld0xp
c3QtPm1fbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICBteU5ld0xpc3QtPmxpc3QoKVswXSA9
IHNpbmdsZVN0cnVjdHVyZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0KG15TmV3
TGlzdCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKQorICAgICAgICAg
ICAgY2hhbmdlZCB8PSBhZGRPdXRPZkxpbmUobGlzdC0+bGlzdCgpW2ldKTsKKyAgICAgICAgcmV0
dXJuIGNoYW5nZWQ7CisgICAgfQorICAgIAorICAgIEFTU0VSVChsaXN0LT5tX2xlbmd0aCk7Cisg
ICAgcmV0dXJuIGFkZChsaXN0LT5saXN0KClbMF0pOworfQorCit2b2lkIFN0cnVjdHVyZVNldDo6
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCit7CisgICAgaWYgKG90aGVyLmlzVGhp
bigpKSB7CisgICAgICAgIGlmICghb3RoZXIuc2luZ2xlU3RydWN0dXJlKCkgfHwgIWNvbnRhaW5z
KG90aGVyLnNpbmdsZVN0cnVjdHVyZSgpKSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIHNldChvdGhlci5zaW5n
bGVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBpZiAoaXNUaGluKCkpIHsKKyAgICAgICAgaWYgKCFzaW5nbGVTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG90aGVyLmNvbnRhaW5zT3V0T2ZMaW5lKHNp
bmdsZVN0cnVjdHVyZSgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2xlYXIoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0g
c3RydWN0dXJlTGlzdCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xl
bmd0aDsgKytpKSB7CisgICAgICAgIGlmIChvdGhlci5jb250YWluc091dE9mTGluZShsaXN0LT5s
aXN0KClbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxpc3QtPmxpc3QoKVtp
LS1dID0gbGlzdC0+bGlzdCgpWy0tbGlzdC0+bV9sZW5ndGhdOworICAgIH0KKyAgICBpZiAoIWxp
c3QtPm1fbGVuZ3RoKQorICAgICAgICBjbGVhcigpOworfQorCit2b2lkIFN0cnVjdHVyZVNldDo6
ZXhjbHVkZShjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQoreworICAgIGlmIChvdGhlci5pc1Ro
aW4oKSkgeworICAgICAgICBpZiAob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAg
ICByZW1vdmUob3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGlmIChpc1RoaW4oKSkgeworICAgICAgICBpZiAoIXNpbmdsZVN0cnVjdHVy
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAob3RoZXIuY29udGFpbnMoc2lu
Z2xlU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlzdCgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmICghb3RoZXIuY29udGFpbnNPdXRPZkxpbmUobGlzdC0+bGlzdCgpW2ldKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0LT5saXN0KClbaS0tXSA9IGxpc3QtPmxpc3Qo
KVstLWxpc3QtPm1fbGVuZ3RoXTsKKyAgICB9CisgICAgaWYgKCFsaXN0LT5tX2xlbmd0aCkKKyAg
ICAgICAgY2xlYXIoKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3Vic2V0T2YoY29uc3Qg
U3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoaXNUaGluKCkpIHsKKyAgICAg
ICAgaWYgKCFzaW5nbGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICByZXR1cm4gb3RoZXIuY29udGFpbnMoc2luZ2xlU3RydWN0dXJlKCkpOworICAgIH0KKyAg
ICAKKyAgICBpZiAob3RoZXIuaXNUaGluKCkpIHsKKyAgICAgICAgaWYgKCFvdGhlci5zaW5nbGVT
dHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgT3V0T2ZMaW5l
TGlzdCogbGlzdCA9IHN0cnVjdHVyZUxpc3QoKTsKKyAgICAgICAgaWYgKGxpc3QtPm1fbGVuZ3Ro
ID49IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChsaXN0LT5saXN0
KClbMF0gPT0gb3RoZXIuc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBPdXRPZkxpbmVMaXN0
KiBsaXN0ID0gc3RydWN0dXJlTGlzdCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
aXN0LT5tX2xlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghb3RoZXIuY29udGFpbnNPdXRPZkxp
bmUobGlzdC0+bGlzdCgpW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3RydWN0dXJlU2V0OjpvdmVybGFwcyhjb25zdCBT
dHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAoreworICAgIGlmIChpc1RoaW4oKSkgeworICAgICAg
ICBpZiAoIXNpbmdsZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gb3RoZXIuY29udGFpbnMoc2luZ2xlU3RydWN0dXJlKCkpOworICAgIH0KKyAg
ICAKKyAgICBpZiAob3RoZXIuaXNUaGluKCkpIHsKKyAgICAgICAgaWYgKCFvdGhlci5zaW5nbGVT
dHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5zT3V0T2ZMaW5lKG90aGVyLnNpbmdsZVN0cnVjdHVyZSgpKTsKKyAgICB9CisgICAgCisg
ICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHN0cnVjdHVyZUxpc3QoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAob3RoZXIu
Y29udGFpbnNPdXRPZkxpbmUobGlzdC0+bGlzdCgpW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU3RydWN0dXJlU2V0Ojpv
cGVyYXRvcj09KGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHNp
emUoKSAhPSBvdGhlci5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
aXNTdWJzZXRPZihvdGhlcik7Cit9CisKK1NwZWN1bGF0ZWRUeXBlIFN0cnVjdHVyZVNldDo6c3Bl
Y3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAgaWYgKGlzVGhpbigpKSB7Cisg
ICAgICAgIGlmICghc2luZ2xlU3RydWN0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gU3BlY05v
bmU7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc2luZ2xlU3RydWN0
dXJlKCkpOworICAgIH0KKyAgICAKKyAgICBTcGVjdWxhdGVkVHlwZSByZXN1bHQgPSBTcGVjTm9u
ZTsKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJlTGlzdCgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKQorICAgICAgICBtZXJnZVNw
ZWN1bGF0aW9uKHJlc3VsdCwgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKGxpc3QtPmxpc3QoKVtp
XSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0FycmF5TW9kZXMgU3RydWN0dXJlU2V0Ojph
cnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIGlmIChpc1RoaW4oKSkgewor
ICAgICAgICBpZiAoIXNpbmdsZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBhc0FycmF5TW9kZXMoc2luZ2xlU3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKTsKKyAgICB9CisgICAgCisgICAgQXJyYXlNb2RlcyByZXN1bHQgPSAwOworICAgIE91dE9m
TGluZUxpc3QqIGxpc3QgPSBzdHJ1Y3R1cmVMaXN0KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpCisgICAgICAgIG1lcmdlQXJyYXlNb2RlcyhyZXN1
bHQsIGFzQXJyYXlNb2RlcyhsaXN0LT5saXN0KClbaV0tPmluZGV4aW5nVHlwZSgpKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBTdHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQoUHJp
bnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQ29tbWFQ
cmludGVyIGNvbW1hOworICAgIG91dC5wcmludCgiWyIpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KCph
dChpKSwgY29udGV4dCkpOworICAgIG91dC5wcmludCgiXSIpOworfQorCit2b2lkIFN0cnVjdHVy
ZVNldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQo
b3V0LCBudWxscHRyKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmFkZE91dE9mTGluZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0dXJl
TGlzdCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytp
KSB7CisgICAgICAgIGlmIChsaXN0LT5saXN0KClbaV0gPT0gc3RydWN0dXJlKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAobGlzdC0+bV9sZW5ndGggPCBs
aXN0LT5tX2NhcGFjaXR5KSB7CisgICAgICAgIGxpc3QtPmxpc3QoKVtsaXN0LT5tX2xlbmd0aCsr
XSA9IHN0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIE91
dE9mTGluZUxpc3QqIG5ld0xpc3QgPSBPdXRPZkxpbmVMaXN0OjpjcmVhdGUobGlzdC0+bV9jYXBh
Y2l0eSAqIDIpOworICAgIG5ld0xpc3QtPm1fbGVuZ3RoID0gbGlzdC0+bV9sZW5ndGggKyAxOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3QtPm1fbGVuZ3RoOyBpLS07KQorICAgICAgICBuZXdM
aXN0LT5saXN0KClbaV0gPSBsaXN0LT5saXN0KClbaV07CisgICAgbmV3TGlzdC0+bGlzdCgpW2xp
c3QtPm1fbGVuZ3RoXSA9IHN0cnVjdHVyZTsKKyAgICBzZXQobmV3TGlzdCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgU3RydWN0dXJlU2V0Ojpjb250YWluc091dE9mTGluZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgY29uc3QKK3sKKyAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gc3RydWN0
dXJlTGlzdCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmIChsaXN0LT5saXN0KClbaV0gPT0gc3RydWN0dXJlKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBT
dHJ1Y3R1cmVTZXQ6OmNvcHlGcm9tKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCit7CisgICAg
aWYgKG90aGVyLmlzVGhpbigpKSB7CisgICAgICAgIG1fcG9pbnRlciA9IG90aGVyLm1fcG9pbnRl
cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBPdXRPZkxpbmVMaXN0KiBvdGhl
ckxpc3QgPSBvdGhlci5zdHJ1Y3R1cmVMaXN0KCk7CisgICAgT3V0T2ZMaW5lTGlzdCogbXlMaXN0
ID0gT3V0T2ZMaW5lTGlzdDo6Y3JlYXRlKG90aGVyTGlzdC0+bV9sZW5ndGgpOworICAgIG15TGlz
dC0+bV9sZW5ndGggPSBvdGhlckxpc3QtPm1fbGVuZ3RoOworICAgIGZvciAodW5zaWduZWQgaSA9
IG90aGVyTGlzdC0+bV9sZW5ndGg7IGktLTspCisgICAgICAgIG15TGlzdC0+bGlzdCgpW2ldID0g
b3RoZXJMaXN0LT5saXN0KClbaV07CisgICAgc2V0KG15TGlzdCk7Cit9CisKK1N0cnVjdHVyZVNl
dDo6T3V0T2ZMaW5lTGlzdCogU3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0OjpjcmVhdGUodW5z
aWduZWQgY2FwYWNpdHkpCit7CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhz
aXplb2YoT3V0T2ZMaW5lTGlzdCkgKyBjYXBhY2l0eSAqIHNpemVvZihTdHJ1Y3R1cmUqKSkpIE91
dE9mTGluZUxpc3QoMCwgY2FwYWNpdHkpOworfQorCit2b2lkIFN0cnVjdHVyZVNldDo6T3V0T2ZM
aW5lTGlzdDo6ZGVzdHJveShPdXRPZkxpbmVMaXN0KiBsaXN0KQoreworICAgIGZhc3RGcmVlKGxp
c3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTY4OTc4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMCwxNjcgKzMwLDE2NyBAQAogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBl
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKLSNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotbmFtZXNwYWNlIERGRyB7Ci1jbGFzcyBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOwotfQotCiBjbGFzcyBTdHJ1Y3R1cmVTZXQgewogcHVibGljOgotICAgIFN0cnVjdHVy
ZVNldCgpIHsgfQotICAgIAotICAgIFN0cnVjdHVyZVNldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICBTdHJ1Y3R1cmVTZXQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0g
ICAgICAgIG1fc3RydWN0dXJlcy5hcHBlbmQoc3RydWN0dXJlKTsKKyAgICAgICAgc2V0KDAsIHRy
dWUpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNsZWFyKCkKKyAgICBTdHJ1Y3R1cmVTZXQoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBtX3N0cnVjdHVyZXMuY2xlYXIoKTsK
KyAgICAgICAgc2V0KHN0cnVjdHVyZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYWRkKFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAg
ICAgIEFTU0VSVCghY29udGFpbnMoc3RydWN0dXJlKSk7Ci0gICAgICAgIG1fc3RydWN0dXJlcy5h
cHBlbmQoc3RydWN0dXJlKTsKLSAgICB9CisgICAgU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVy
ZVNldCYgb3RoZXIpOworICAgIFN0cnVjdHVyZVNldCYgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVy
ZVNldCYgb3RoZXIpOwogICAgIAotICAgIGJvb2wgYWRkQWxsKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCisgICAgflN0cnVjdHVyZVNldCgpCiAgICAgewotICAgICAgICBib29sIGNoYW5nZWQg
PSBmYWxzZTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5zKG90aGVyW2ldKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGFkZChvdGhlcltpXSk7Ci0gICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICAgICAg
ZGVsZXRlU3RydWN0dXJlTGlzdElmTmVjZXNzYXJ5KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
cmVtb3ZlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICht
X3N0cnVjdHVyZXNbaV0gIT0gc3RydWN0dXJlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBtX3N0cnVjdHVyZXNbaV0gPSBtX3N0cnVjdHVyZXMu
bGFzdCgpOwotICAgICAgICAgICAgbV9zdHJ1Y3R1cmVzLnJlbW92ZUxhc3QoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGNsZWFyKCk7CiAgICAgCi0g
ICAgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKKyAgICBTdHJ1Y3R1
cmUqIG9ubHlTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX3N0
cnVjdHVyZXNbaV0gPT0gc3RydWN0dXJlKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBpZiAoaXNUaGluKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzaW5nbGVTdHJ1Y3R1
cmUoKSk7CisgICAgICAgICAgICByZXR1cm4gc2luZ2xlU3RydWN0dXJlKCk7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlTGlzdCgpLT5t
X2xlbmd0aCA9PSAxKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZUxpc3QoKS0+bGlzdCgpWzBd
OwogICAgIH0KICAgICAKLSAgICBib29sIGNvbnRhaW5zT25seShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgY29uc3QKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKHNp
emUoKSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gc2lu
Z2xldG9uU3RydWN0dXJlKCkgPT0gc3RydWN0dXJlOworICAgICAgICByZXR1cm4gaXNUaGluKCkg
JiYgIXNpbmdsZVN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3Vic2V0T2Yo
Y29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoIW90aGVyLmNvbnRhaW5zKG1fc3RydWN0dXJlc1tpXSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBi
b29sIGFkZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisgICAgYm9vbCByZW1vdmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpOworICAgIGJvb2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNv
bnN0OworICAgIAorICAgIGJvb2wgbWVyZ2UoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcik7Cisg
ICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcik7CisgICAgdm9pZCBleGNs
dWRlKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpOwogICAgIAorICAgIGJvb2wgaXNTdWJzZXRP
Zihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzU3VwZXJzZXRP
Zihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG90aGVyLmlzU3Vic2V0T2YoKnRoaXMpOwogICAgIH0KICAgICAKLSAgICBib29sIG92ZXJsYXBz
KGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CisgICAgYm9vbCBvdmVybGFwcyhjb25z
dCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKKyAgICAKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0CiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG90aGVyLmNvbnRhaW5zKG1fc3RydWN0dXJl
c1tpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChpc1RoaW4o
KSkKKyAgICAgICAgICAgIHJldHVybiAhIXNpbmdsZVN0cnVjdHVyZSgpOworICAgICAgICByZXR1
cm4gc3RydWN0dXJlTGlzdCgpLT5tX2xlbmd0aDsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJl
KiBhdChzaXplX3QgaSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1RoaW4oKSkgeworICAg
ICAgICAgICAgQVNTRVJUKCFpKTsKKyAgICAgICAgICAgIEFTU0VSVChzaW5nbGVTdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICByZXR1cm4gc2luZ2xlU3RydWN0dXJlKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQoaSA8IHN0cnVjdHVyZUxpc3QoKS0+
bV9sZW5ndGgpOworICAgICAgICByZXR1cm4gc3RydWN0dXJlTGlzdCgpLT5saXN0KClbaV07CiAg
ICAgfQogICAgIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVz
LnNpemUoKTsgfQorICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyBy
ZXR1cm4gYXQoaSk7IH0KICAgICAKLSAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0
aGUgc3RydWN0dXJlIHNldCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQotICAgIC8vIG9uZSBzdHJ1
Y3R1cmUuCi0gICAgU3RydWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdAorICAgIFN0
cnVjdHVyZSogbGFzdCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmVz
LnNpemUoKSA9PSAxKTsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlc1swXTsKKyAgICAgICAg
aWYgKGlzVGhpbigpKSB7CisgICAgICAgICAgICBBU1NFUlQoc2luZ2xlU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHNpbmdsZVN0cnVjdHVyZSgpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBzdHJ1Y3R1cmVMaXN0KCktPmxpc3QoKVtzdHJ1Y3R1cmVMaXN0KCktPm1fbGVuZ3Ro
IC0gMV07CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogYXQoc2l6ZV90IGkpIGNvbnN0IHsg
cmV0dXJuIG1fc3RydWN0dXJlcy5hdChpKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9y
W10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisgICAgU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0OworICAgIEFycmF5TW9kZXMgYXJyYXlN
b2Rlc0Zyb21TdHJ1Y3R1cmVzKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wSW5Db250ZXh0
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdDsKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAgICAgCi0gICAgU3RydWN0dXJlKiBsYXN0
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzLmxhc3QoKTsgfQorcHJpdmF0ZToKKyAgICBz
dGF0aWMgY29uc3QgdWludHB0cl90IHRoaW5GbGFnID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdWlu
dHB0cl90IHJlc2VydmVkRmxhZyA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBmbGFn
cyA9IDM7CisgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCByZXNlcnZlZFZhbHVlID0gNDsKIAot
ICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gU3BlY05vbmU7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRTdGFydGluZ1NpemUgPSA0OworICAgIAorICAgIGJvb2wg
YWRkT3V0T2ZMaW5lKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBib29sIGNvbnRhaW5zT3V0
T2ZMaW5lKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdDsKKyAgICB2b2lkIGNvcHlGcm9tKGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIAorICAgIGNsYXNzIE91dE9mTGluZUxpc3QgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIE91dE9mTGluZUxpc3QqIGNyZWF0ZSh1bnNpZ25lZCBj
YXBhY2l0eSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koT3V0T2ZMaW5lTGlzdCogbGlz
dCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJl
cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24ocmVzdWx0LCBzcGVj
dWxhdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmVzW2ldKSk7CisgICAgICAgIFN0cnVjdHVy
ZSoqIGxpc3QoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U3RydWN0dXJlKio+KHRoaXMgKyAxKTsg
fQogICAgICAgICAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgICAgIE91dE9m
TGluZUxpc3QodW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBjYXBhY2l0eSkKKyAgICAgICAgICAg
IDogbV9sZW5ndGgobGVuZ3RoKQorICAgICAgICAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKKyAgICAg
ICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKKyAgICB9OwogICAgIAotICAgIEFycmF5TW9kZXMgYXJy
YXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCkgY29uc3QKKyAgICB2b2lkIGRlbGV0ZVN0cnVjdHVyZUxp
c3RJZk5lY2Vzc2FyeSgpCiAgICAgewotICAgICAgICBBcnJheU1vZGVzIHJlc3VsdCA9IDA7Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIG1lcmdlQXJyYXlNb2RlcyhyZXN1bHQsIGFzQXJyYXlNb2Rl
cyhtX3N0cnVjdHVyZXNbaV0tPmluZGV4aW5nVHlwZSgpKSk7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoIWlzVGhpbigpKQorICAgICAgICAgICAgT3V0T2ZM
aW5lTGlzdDo6ZGVzdHJveShzdHJ1Y3R1cmVMaXN0KCkpOwogICAgIH0KICAgICAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKKyAgICBib29sIGlz
VGhpbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlciAmIHRoaW5GbGFnOyB9CisgICAgCisgICAg
dm9pZCogcG9pbnRlcigpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9zdHJ1Y3R1cmVzLnNp
emUoKSAhPSBvdGhlci5tX3N0cnVjdHVyZXMuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVy
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghb3RoZXIuY29udGFpbnMobV9zdHJ1
Y3R1cmVzW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PHZvaWQqPihtX3BvaW50ZXIgJiB+ZmxhZ3MpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0Cisg
ICAgU3RydWN0dXJlKiBzaW5nbGVTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ29t
bWFQcmludGVyIGNvbW1hOwotICAgICAgICBvdXQucHJpbnQoIlsiKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbV9zdHJ1Y3R1cmVzW2ldLCBjb250ZXh0KSk7Ci0g
ICAgICAgIG91dC5wcmludCgiXSIpOworICAgICAgICBBU1NFUlQoaXNUaGluKCkpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4ocG9pbnRlcigpKTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgT3V0T2ZMaW5lTGlz
dCogc3RydWN0dXJlTGlzdCgpIGNvbnN0CiAgICAgewotICAgICAgICBkdW1wSW5Db250ZXh0KG91
dCwgMCk7CisgICAgICAgIEFTU0VSVCghaXNUaGluKCkpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8T3V0T2ZMaW5lTGlzdCo+KHBvaW50ZXIoKSk7CiAgICAgfQogICAgIAotcHJpdmF0ZToK
LSAgICBmcmllbmQgY2xhc3MgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOwotICAgIAotICAg
IFZlY3RvcjxTdHJ1Y3R1cmUqLCAyPiBtX3N0cnVjdHVyZXM7CisgICAgdm9pZCBzZXQoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBzZXQoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oc3RydWN0dXJlKSwgdHJ1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0KE91dE9mTGluZUxpc3Qq
IHN0cnVjdHVyZXMpCisgICAgeworICAgICAgICBzZXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
c3RydWN0dXJlcyksIGZhbHNlKTsKKyAgICB9CisgICAgdm9pZCBzZXQodWludHB0cl90IHBvaW50
ZXIsIGJvb2wgc2luZ2xlU3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgbV9wb2ludGVyID0gcG9p
bnRlciB8IChzaW5nbGVTdHJ1Y3R1cmUgPyB0aGluRmxhZyA6IDApIHwgKG1fcG9pbnRlciAmIHJl
c2VydmVkRmxhZyk7CisgICAgfQorCisgICAgdWludHB0cl90IG1fcG9pbnRlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTY4OTc4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVT
ZXQgc2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aUdldEJ5T2Zmc2V0
RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIHNldC5hZGRBbGwobm9k
ZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXS5zdHJ1Y3R1cmVTZXQoKSk7Cisg
ICAgICAgICAgICBzZXQubWVyZ2Uobm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS52YXJpYW50
c1tpXS5zdHJ1Y3R1cmVTZXQoKSk7CiAgICAgICAgIAogICAgICAgICBmaWx0ZXIobm9kZS0+Y2hp
bGQxKCksIHNldCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKQEAgLTE3
MTUsMTIgKzE3MTUsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0
aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwogICAgICAgICAgICAgaWYgKHZhcmlhbnQu
a2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmNvbnRhaW5zKHZhcmlhbnQuc3RydWN0dXJl
KCkpKQotICAgICAgICAgICAgICAgICAgICBuZXdTZXQuYWRkQWxsKHZhcmlhbnQuc3RydWN0dXJl
KCkpOworICAgICAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKHZhcmlhbnQuc3RydWN0dXJlKCkp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
QVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKTsKICAg
ICAgICAgICAgIGlmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5jb250YWlucyh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpKSkKLSAgICAgICAgICAgICAgICBuZXdTZXQuYWRkQWxsKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFVzZSBmaWx0
ZXIodmFsdWUsIHNldCkgYXMgYSB3YXkgb2Ygc2V0dGluZyB0aGUgc3RydWN0dXJlIHNldC4gVGhp
cyB3b3JrcyBiZWNhdXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTY4OTc4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OTQs
NiArMTg5NCw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeU9mZnNldCgKIE5v
ZGUqIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHJvdG90eXBlQ2hlY2tzKAogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKiBjaGFpbikKIHsKKyAgICBBU1NFUlQo
c3RydWN0dXJlKTsKICAgICBOb2RlKiBiYXNlID0gMDsKICAgICBtX2dyYXBoLmNoYWlucygpLmFk
ZExhemlseShjaGFpbik7CiAgICAgU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gc3RydWN0
dXJlOwpAQCAtMTkzNCw3ICsxOTM1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKICAgICAgICAgZm9yICh1bnNpZ25lZCB2YXJpYW50SW5kZXggPSBnZXRCeUlkU3RhdHVz
Lm51bVZhcmlhbnRzKCk7IHZhcmlhbnRJbmRleC0tOykgewogICAgICAgICAgICAgaWYgKGdldEJ5
SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBy
b3RvdHlwZUNoZWNrcygKLSAgICAgICAgICAgICAgICAgICAgZ2V0QnlJZFN0YXR1c1t2YXJpYW50
SW5kZXhdLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpLAorICAgICAgICAgICAg
ICAgICAgICBnZXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uc3RydWN0dXJlU2V0KCkub25seVN0
cnVjdHVyZSgpLAogICAgICAgICAgICAgICAgICAgICBnZXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRl
eF0uY2hhaW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5NjAsNyArMTk2MSw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgCiAgICAgaWYgKHZh
cmlhbnQuY2hhaW4oKSkgewogICAgICAgICBiYXNlID0gZW1pdFByb3RvdHlwZUNoZWNrcygKLSAg
ICAgICAgICAgIHZhcmlhbnQuc3RydWN0dXJlU2V0KCkuc2luZ2xldG9uU3RydWN0dXJlKCksIHZh
cmlhbnQuY2hhaW4oKSk7CisgICAgICAgICAgICB2YXJpYW50LnN0cnVjdHVyZVNldCgpLm9ubHlT
dHJ1Y3R1cmUoKSwgdmFyaWFudC5jaGFpbigpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVW5sZXNz
IHdlIHdhbnQgYnVncyBsaWtlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODc4Mywgd2UgbmVlZCB0bwpAQCAtMzA2Miw3ICszMDYzLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGRzdCksIGFkZFRvR3JhcGgoR2V0QnlJZEZsdXNoLCBPcEluZm8oaWRlbnRpZmll
ck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkp
KSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gY2VsbENvbnN0YW50V2l0aFN0cnVjdHVyZUNoZWNrKGds
b2JhbE9iamVjdCwgc3RhdHVzWzBdLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gY2VsbENvbnN0YW50V2l0aFN0cnVjdHVy
ZUNoZWNrKGdsb2JhbE9iamVjdCwgc3RhdHVzWzBdLnN0cnVjdHVyZVNldCgpLm9ubHlTdHJ1Y3R1
cmUoKSk7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJl
Z2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHNwZWNpZmljVmFs
dWUgPSBzdGF0dXNbMF0uc3BlY2lmaWNWYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGRzdCksIGNlbGxDb25zdGFudChzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgp
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2
aXNpb24gMTY4OTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw3ICs1MTksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEKLSAgICAgICAg
ICAgICAgICAgICAgJiYgbm9kZS0+c3RydWN0dXJlU2V0KCkuY29udGFpbnNPbmx5KHN0cnVjdHVy
ZSkpCisgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPnN0cnVjdHVyZVNldCgpLmlzU3Vic2V0
T2YoU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNjg5NzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDkwLDEzICs0
OTAsMTQgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBBU1NFUlQobV9vcCA9PSBDaGVja1N0cnVj
dHVyZSB8fCBtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoIWNo
aWxkMigpKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZDMoKSk7CisgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUpOwogICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVj
dHVyZSk7CiAgICAgICAgIG1fb3AgPSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dCgpCiAgICAgewotICAgICAgICBjb252ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dChzdHJ1Y3R1cmVTZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKSk7CisgICAgICAgIGNvbnZlcnRU
b1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZVNldCgpLm9ubHlTdHJ1Y3R1
cmUoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29udmVydFRvR2V0QnlPZmZzZXQodW5zaWdu
ZWQgc3RvcmFnZUFjY2Vzc0RhdGFJbmRleCwgRWRnZSBzdG9yYWdlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNjg5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDMsNyArNTAzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCAw
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBub3RpY2VTdHJ1Y3R1
cmVDaGVjayh2YXJpYWJsZSwgc2V0LnNpbmdsZXRvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgbm90
aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNldC5vbmx5U3RydWN0dXJlKCkpOwogICAgIH0K
IAogICAgIHZvaWQgbm90aWNlQ2hlY2tBcnJheShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
LCBBcnJheU1vZGUgYXJyYXlNb2RlKQo=
</data>
<flag name="review"
          id="256067"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>