<?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>201703</bug_id>
          
          <creation_ts>2019-09-11 16:07:10 -0700</creation_ts>
          <short_desc>Elide unnecessary moves in Air O0</short_desc>
          <delta_ts>2020-01-25 04:42:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206797</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570038</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-11 16:07:10 -0700</bug_when>
    <thetext>Elide unnecessary moves in Air O0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570043</commentid>
    <comment_count>1</comment_count>
      <attachid>378593</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-11 16:18:08 -0700</bug_when>
    <thetext>Created attachment 378593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570047</commentid>
    <comment_count>2</comment_count>
      <attachid>378594</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-11 16:32:21 -0700</bug_when>
    <thetext>Created attachment 378594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570079</commentid>
    <comment_count>3</comment_count>
      <attachid>378607</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-11 18:12:56 -0700</bug_when>
    <thetext>Created attachment 378607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570081</commentid>
    <comment_count>4</comment_count>
      <attachid>378609</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-11 18:16:45 -0700</bug_when>
    <thetext>Created attachment 378609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570084</commentid>
    <comment_count>5</comment_count>
      <attachid>378609</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-11 18:38:54 -0700</bug_when>
    <thetext>Comment on attachment 378609
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Elide unnecessary moves in Air O0

can you explain how?

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        temp dies as it could be reused again later. Thus every temp,

no comma

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:451
&gt; +                if (source.isAddr() || dest.isAddr())
&gt; +                    return false;

why not just check that both are tmps? Seems easier to follow. Does your code not break for constants if you don&apos;t do this, since you unconditionally access reg() below

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:456
&gt; +                Reg reg = source.isTmp() ? m_map[source.tmp()].reg : source.reg();

this seems wrong. you access source.reg() if it&apos;s not a tmp. However, you can&apos;t be a reg if you&apos;re not a tmp

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:458
&gt; +                if (!reg)
&gt; +                    return false;

probably not super important, but we could just say dest is now spilled at this location instead of returning false

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:478
&gt; +            if (elideMove())
&gt; +                goto elided;

This is wrong. For example, you now get clobberedRegisters incorrectly now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570440</commentid>
    <comment_count>6</comment_count>
      <attachid>378609</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-12 17:35:28 -0700</bug_when>
    <thetext>Comment on attachment 378609
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:451
&gt;&gt; +                    return false;
&gt; 
&gt; why not just check that both are tmps? Seems easier to follow. Does your code not break for constants if you don&apos;t do this, since you unconditionally access reg() below

Yeah, I was thinking Regs were not temps. I think this code is cleaner in that world... unfortunately that&apos;s not reality though. I&apos;ll fix this.

&gt;&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:456
&gt;&gt; +                Reg reg = source.isTmp() ? m_map[source.tmp()].reg : source.reg();
&gt; 
&gt; this seems wrong. you access source.reg() if it&apos;s not a tmp. However, you can&apos;t be a reg if you&apos;re not a tmp

See above. Will fix.

&gt;&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:458
&gt;&gt; +                    return false;
&gt; 
&gt; probably not super important, but we could just say dest is now spilled at this location instead of returning false

I was thinking about that but it seems like we might want to materialize the value into a register though if register pressure is now low.

&gt;&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:478
&gt;&gt; +                goto elided;
&gt; 
&gt; This is wrong. For example, you now get clobberedRegisters incorrectly now

Hmm, yeah, maybe I should just mark move needsToGenerate up here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570450</commentid>
    <comment_count>7</comment_count>
      <attachid>378695</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-12 17:58:00 -0700</bug_when>
    <thetext>Created attachment 378695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570458</commentid>
    <comment_count>8</comment_count>
      <attachid>378697</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-12 18:20:11 -0700</bug_when>
    <thetext>Created attachment 378697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570464</commentid>
    <comment_count>9</comment_count>
      <attachid>378701</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-12 18:41:41 -0700</bug_when>
    <thetext>Created attachment 378701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570466</commentid>
    <comment_count>10</comment_count>
      <attachid>378701</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-12 19:03:34 -0700</bug_when>
    <thetext>Comment on attachment 378701
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        This appears to be a minor progression on the overall score of
&gt; +        wasm subtests in JS2 and a 10% wasm-JIT memory usage reduction.

these results still hold?

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:438
&gt; +                Reg reg = source.isReg() ? source.reg() : m_map[source.tmp()].reg;

nit: let&apos;s call this sourceReg

Also, this looks wrong. What if the value supposed to be in $rax is actually spilled? Don&apos;t you always want to consult m_map? An instruction may ask for a named register, but it doesn&apos;t mean the corresponding value is already in that register.

If you read allocNamed below, you&apos;ll see the problem. We might load, say, $rax, from where it is on the stack back into $rax. That is ignored here.

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:-619
&gt; -                bool needsToGenerate = true;

can you assert it&apos;s false here? Personally, I&apos;d just keep this variable, since they&apos;re kinda unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571158</commentid>
    <comment_count>11</comment_count>
      <attachid>378701</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-16 10:14:02 -0700</bug_when>
    <thetext>Comment on attachment 378701
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        wasm subtests in JS2 and a 10% wasm-JIT memory usage reduction.
&gt; 
&gt; these results still hold?

Yeah, seems like it.

&gt;&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:438
&gt;&gt; +                Reg reg = source.isReg() ? source.reg() : m_map[source.tmp()].reg;
&gt; 
&gt; nit: let&apos;s call this sourceReg
&gt; 
&gt; Also, this looks wrong. What if the value supposed to be in $rax is actually spilled? Don&apos;t you always want to consult m_map? An instruction may ask for a named register, but it doesn&apos;t mean the corresponding value is already in that register.
&gt; 
&gt; If you read allocNamed below, you&apos;ll see the problem. We might load, say, $rax, from where it is on the stack back into $rax. That is ignored here.

I see. Yeah, that&apos;s a good point. I think it might be worthwhile to skip named source registers for now. Let try retesting without them.

&gt;&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:-619
&gt;&gt; -                bool needsToGenerate = true;
&gt; 
&gt; can you assert it&apos;s false here? Personally, I&apos;d just keep this variable, since they&apos;re kinda unrelated

Yeah, I could imagine it changing over time though. I&apos;ll add the assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571399</commentid>
    <comment_count>12</comment_count>
      <attachid>378932</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-16 20:05:22 -0700</bug_when>
    <thetext>Created attachment 378932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571423</commentid>
    <comment_count>13</comment_count>
      <attachid>378936</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-16 21:30:59 -0700</bug_when>
    <thetext>Created attachment 378936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571615</commentid>
    <comment_count>14</comment_count>
      <attachid>378936</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-17 12:16:54 -0700</bug_when>
    <thetext>Comment on attachment 378936
Patch

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

I think you still have a bug

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        This patch also removes the code that would try to reuse
&gt; +        temps. That code makes it hard to accurately determine where a

&quot;reuse temps&quot; =&gt; &quot;reuse temps in WasmAirIRGenerator&quot;

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:435
&gt; +                // FIXME: We don&apos;t track where the last use of a reg is globally so we don&apos;t know where we can&apos;t elide them.

&quot;can&apos;t elide&quot; =&gt; &quot;can elide&quot;

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:448
&gt; +                if (dest.isReg())
&gt; +                    return dest.reg() != sourceReg;

don&apos;t you need to update the mapping here still? Seems wrong to not do that.

&gt; Source/JavaScriptCore/b3/air/AirHandleCalleeSaves.cpp:51
&gt; +                usedCalleeSaves.merge(inst.extraEarlyClobberedRegs());

👍🏼</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571749</commentid>
    <comment_count>15</comment_count>
      <attachid>379008</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-17 17:12:39 -0700</bug_when>
    <thetext>Created attachment 379008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571753</commentid>
    <comment_count>16</comment_count>
      <attachid>379011</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-17 17:31:49 -0700</bug_when>
    <thetext>Created attachment 379011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571756</commentid>
    <comment_count>17</comment_count>
      <attachid>379011</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-17 17:35:56 -0700</bug_when>
    <thetext>Comment on attachment 379011
Patch

r=me

Let me see if I can get a test to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571763</commentid>
    <comment_count>18</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-17 18:06:51 -0700</bug_when>
    <thetext>Committed r250009: &lt;https://trac.webkit.org/changeset/250009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571764</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-17 18:07:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55462115&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378593</attachid>
            <date>2019-09-11 16:18:08 -0700</date>
            <delta_ts>2019-09-11 16:32:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190911161805.patch</filename>
            <type>text/plain</type>
            <size>10132</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li5lMTU4YjJjMzczODVjMTEx
NzQwYWExYjU3OTc2N2Q1Y2I5NGExMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRl
UmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICog
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdl
bmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBE
ZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChK
U0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAo
SlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAg
ICAgICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlk
YXRlOjpkaWRLaWxsKTogRGVsZXRlZC4KKwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9u
IHdpdGggYWxsLW9uZSAoLTEpIGlzIHdyb25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0
ZUNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFi
ZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li4xYWUwMjdmNjRmNjhmNzJjMTRjYWY1NGQzN2VlNjM0MzZk
ZWY0MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRl
Q29kZS5jcHAKQEAgLTQyMSw2ICs0MjEsNjQgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRV
c2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBS
ZWdpc3RlclNldCgpOwogCisgICAgICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyZWRSZWdpc3Rl
cnM7CisKKyAgICAgICAgICAgIGF1dG8gYWxsb2NOYW1lZCA9IFsmXSAoY29uc3QgUmVnaXN0ZXJT
ZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7CisgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
bmFtZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFRtcCBvY2N1cHlpbmdUbXAgPSBjdXJy
ZW50QWxsb2NhdGlvbltyZWddKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2NjdXB5
aW5nVG1wID09IFRtcChyZWcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZnJlZURlYWRU
bXBzSWZOZWVkZWQoKTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGlsbCBhIGRlYWQgdG1wLgorICAg
ICAgICAgICAgICAgICAgICBhbGxvYyhUbXAocmVnKSwgcmVnLCBpc0RlZik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byBlbGlkZU1vdmUgPSBb
Jl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25z
aWRlciB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAg
ICAgICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5v
cGNvZGUgIT0gTW92ZURvdWJsZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGRvaW5nIGEgYWRkciAtPiBhZGRyIG1vdmUuCisg
ICAgICAgICAgICAgICAgaWYgKGluc3QuYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgQXJnIHNvdXJjZSA9IGluc3Qu
YXJnc1swXTsKKyAgICAgICAgICAgICAgICBBcmcgZGVzdCA9IGluc3QuYXJnc1sxXTsKKworICAg
ICAgICAgICAgICAgIGlmIChzb3VyY2UuaXNBZGRyKCkgfHwgZGVzdC5pc0FkZHIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgaWYgKHNvdXJj
ZS5pc1RtcCgpICYmIG1fbGl2ZVJhbmdlRW5kW3NvdXJjZS50bXAoKV0gIT0gaW5zdEluZGV4KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBSZWcg
cmVnID0gc291cmNlLmlzVG1wKCkgPyBtX21hcFtzb3VyY2UudG1wKCldLnJlZyA6IHNvdXJjZS5y
ZWcoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZykKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgQVNTRVJUKCFzb3VyY2UuaXNUbXAoKSB8fCBt
X2N1cnJlbnRBbGxvY2F0aW9uLT5hdChyZWcpID09IHNvdXJjZS50bXAoKSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoZGVzdC5pc1JlZygpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVz
dC5yZWcoKSA9PSByZWc7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRlc3QuaXNUbXAoKSk7CisK
KworICAgICAgICAgICAgICAgIGlmIChSZWcgb2xkUmVnID0gbV9tYXBbZGVzdC50bXAoKV0ucmVn
KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChv
bGRSZWcpID09IGRlc3QudG1wKCkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxv
Y2F0aW9uLT5hdChvbGRSZWcpID0gVG1wKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgcmVnaXN0ZXIuCisg
ICAgICAgICAgICAgICAgbV9jdXJyZW50QWxsb2NhdGlvbi0+YXQocmVnKSA9IGRlc3QudG1wKCk7
CisgICAgICAgICAgICAgICAgbV9tYXBbZGVzdC50bXAoKV0ucmVnID0gcmVnOworICAgICAgICAg
ICAgICAgIGlmIChzb3VyY2UuaXNUbXAoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9tYXBbc291
cmNlLnRtcCgpXS5yZWcgPSBSZWcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH07CisgICAgICAgICAgICBpZiAoZWxpZGVNb3ZlKCkpCisgICAgICAgICAgICAg
ICAgZ290byBlbGlkZWQ7CisKICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZyhbJl0gKEFyZyYg
YXJnLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAgICAgICAgICAgICAgICBpZiAo
IWFyZy5pc1RtcCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00NTEsNyArNTA5
LDYgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKIAotICAgICAg
ICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcmVkUmVnaXN0ZXJzOwogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIEluc3QqIG5leHRJbnN0ID0gYmxvY2stPmdldChpbnN0SW5kZXggKyAxKTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQYXRjaCB8fCAobmV4dElu
c3QgJiYgbmV4dEluc3QtPmtpbmQub3Bjb2RlID09IFBhdGNoKSkgewpAQCAtNDY3LDE4ICs1MjQs
NiBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVs
cGVycyYgaml0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgYXV0byBhbGxvY05hbWVkID0gWyZdIChjb25zdCBSZWdpc3RlclNldCYgbmFtZWQsIGJvb2wg
aXNEZWYpIHsKLSAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBuYW1lZCkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoVG1wIG9jY3VweWluZ1RtcCA9IGN1cnJlbnRBbGxvY2F0aW9uW3Jl
Z10pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvY2N1cHlpbmdUbXAgPT0gVG1wKHJl
ZykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBmcmVlRGVhZFRtcHNJZk5lZWRlZCgpOyAv
LyBXZSBkb24ndCB3YW50IHRvIHNwaWxsIGEgZGVhZCB0bXAuCi0gICAgICAgICAgICAgICAgICAg
IGFsbG9jKFRtcChyZWcpLCByZWcsIGlzRGVmKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9OwotCiAgICAgICAgICAgICBhbGxvY05hbWVkKG1fbmFtZWRVc2VkUmVncywgZmFsc2Up
OyAvLyBNdXN0IGNvbWUgYmVmb3JlIHRoZSBkZWZkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtYXkgdXNl
IGFuZCBkZWYgdGhlIHNhbWUgcmVnaXN0ZXIuCiAgICAgICAgICAgICBhbGxvY05hbWVkKG1fbmFt
ZWREZWZkUmVncywgdHJ1ZSk7CiAKQEAgLTY1Niw2ICs3MDEsNyBAQCB2b2lkIEdlbmVyYXRlQW5k
QWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICBlbGlkZWQ6CiAgICAgICAgICAgICBh
dXRvIGVuZExhYmVsID0gbV9qaXQtPmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwogICAgICAg
ICAgICAgaWYgKGRpc2Fzc2VtYmxlcikKICAgICAgICAgICAgICAgICBkaXNhc3NlbWJsZXItPmFk
ZEluc3QoJmluc3QsIHN0YXJ0TGFiZWwsIGVuZExhYmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDM3ZWVmZjRlNDQ1MzE1
ZTgwY2VmZGRjNTM4MDA4NmJmMzE0YWU5YmEuLmRjMWY5MDU5N2NkZDljNjBjODdmNmIyMzM4MDU3
YTY2MGYwMTBhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcApAQCAtMzAzLDE3ICszMDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRpZEtpbGwoY29u
c3QgRXhwcmVzc2lvblR5cGUmIHR5cGVkVG1wKQotICAgIHsKLSAgICAgICAgVG1wIHRtcCA9IHR5
cGVkVG1wLnRtcCgpOwotICAgICAgICBpZiAoIXRtcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgaWYgKHRtcC5pc0dQKCkpCi0gICAgICAgICAgICBtX2ZyZWVHUHMuYXBwZW5kKHRtcCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJlZUZQcy5hcHBlbmQodG1wKTsKLSAgICB9
Ci0KICAgICBjb25zdCBCYWc8QjM6OlBhdGNocG9pbnRWYWx1ZSo+JiBwYXRjaHBvaW50cygpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9wYXRjaHBvaW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZDhkZjhlNjg3
MTAyMTMxYjY0YzFhNmQ2NWU2ZmNjYzEwM2I1ZTc1Li44YzA4NGZiNGNlNGI0NjA2ZGUyYzkzYmI2
NzI2MDc3M2E5YTRiMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0yNDcsOCArMjQ3LDYgQEAgcHVibGljOgogICAgIFZhbHVl
KiBjb25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0cywgT3B0aW9uYWw8T3JpZ2luPiA9IFdU
Rjo6bnVsbG9wdCk7CiAgICAgdm9pZCBpbnNlcnRDb25zdGFudHMoKTsKIAotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBlKSB7IH0KLQogcHJpdmF0ZToKICAgICB2
b2lkIGVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnMmLCBFeGNlcHRpb25UeXBlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRl
eCA3MmZkYWZmZjk3MzkyMzZjZTVlMmQwYTY4ZGU4MThjN2QwMzhiODVmLi4xYTRlNGU0NmViMDJk
NDBkMGMxM2ExYzA4Njg5NmY1MTg2MGIyZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtNzMsNyArNzMsNiBAQCBwcml2YXRlOgog
I2RlZmluZSBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHJlc3VsdCwgd2hhdCkg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2suaXNFbXB0eSgpLCAiY2FuJ3QgcG9wIGVtcHR5IHN0
YWNrIGluICIgd2hhdCk7IFwKICAgICAgICAgcmVzdWx0ID0gbV9leHByZXNzaW9uU3RhY2sudGFr
ZUxhc3QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICBtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi5hcHBlbmQocmVzdWx0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAog
ICAgIHRlbXBsYXRlPE9wVHlwZT4KQEAgLTk1LDggKzk0LDYgQEAgcHJpdmF0ZToKICAgICBPcFR5
cGUgbV9jdXJyZW50T3Bjb2RlOwogICAgIHNpemVfdCBtX2N1cnJlbnRPcGNvZGVTdGFydGluZ09m
ZnNldCB7IDAgfTsKIAotICAgIFZlY3RvcjxFeHByZXNzaW9uVHlwZSwgOD4gbV90b0tpbGxBZnRl
ckV4cHJlc3Npb247Ci0KICAgICB1bnNpZ25lZCBtX3VucmVhY2hhYmxlQmxvY2tzIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fbG9vcEluZGV4IHsgMCB9OwogfTsKQEAgLTE0NSw4ICsxNDIsNiBAQCBh
dXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJvZHkoKSAtPiBQYXJ0aWFsUmVzdWx0
CiAgICAgbV9jb250cm9sU3RhY2suYXBwZW5kKHsgbV9jb250ZXh0LmNyZWF0ZVN0YWNrKCksIG1f
Y29udGV4dC5hZGRUb3BMZXZlbChtX3NpZ25hdHVyZS5yZXR1cm5UeXBlKCkpIH0pOwogICAgIHVp
bnQ4X3Qgb3A7CiAgICAgd2hpbGUgKG1fY29udHJvbFN0YWNrLnNpemUoKSkgewotICAgICAgICBB
U1NFUlQobV90b0tpbGxBZnRlckV4cHJlc3Npb24uaXNFbXB0eSgpKTsKLQogICAgICAgICBtX2N1
cnJlbnRPcGNvZGVTdGFydGluZ09mZnNldCA9IG1fb2Zmc2V0OwogICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVVJbnQ4KG9wKSwgImNhbid0IGRlY29kZSBvcGNvZGUiKTsKICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNWYWxpZE9wVHlwZShvcCksICJpbnZhbGlkIG9wY29k
ZSAiLCBvcCk7CkBAIC0xNjIsOCArMTU3LDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9GQUlMX0lG
X0hFTFBFUl9GQUlMUyhwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRXhwcmVzc2lv
bigpKTsKLSAgICAgICAgICAgIHdoaWxlIChtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi5zaXplKCkp
Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LmRpZEtpbGwobV90b0tpbGxBZnRlckV4cHJlc3Np
b24udGFrZUxhc3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU4Myw4ICs1NzYsNyBAQCBh
dXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFs
UmVzdWx0CiAKICAgICBjYXNlIERyb3A6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
bV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FuJ3QgZHJvcCBvbiBlbXB0eSBzdGFjayIpOwot
ICAgICAgICBhdXRvIGV4cHJlc3Npb24gPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwot
ICAgICAgICBtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi5hcHBlbmQoZXhwcmVzc2lvbik7CisgICAg
ICAgIG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRh
dGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAppbmRl
eCA2MmU4YzIxMDEzZjRiZjVjYjAxNmYwYTNlMzk3ZDBhOWM1ZTM3MTRjLi4yZGI3NGE0M2Y0ZDM0
MjA1NWE2NDg3YzBkOGU4ZTkzNDZhOGY3YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBjb25z
dCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBlKSB7IH0KLQogICAgIGJv
b2wgaGFzTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gISFtX21vZHVsZS5tZW1vcnk7IH0KIAogICAg
IFZhbGlkYXRlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378594</attachid>
            <date>2019-09-11 16:32:21 -0700</date>
            <delta_ts>2019-09-11 18:12:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190911163219.patch</filename>
            <type>text/plain</type>
            <size>10277</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li43ZTU0ZDRmZjc3NTcwODI2
MTQwNjkzNGRlYjFkZTczNjY0ZTQ5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5l
cmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpkaWRLaWxsKTogRGVsZXRlZC4K
KwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9uIHdpdGggYWxsLW9uZSAoLTEpIGlzIHdy
b25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFiZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li5i
ZTI1NGI2MDVlZTI0OWFiM2I5YmIxYjU2ZThkOWM3ZTI5ZjJjMTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQyMSw2ICs0MjEs
NjMgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRVc2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7
CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogCisgICAgICAg
ICAgICBSZWdpc3RlclNldCBjbG9iYmVyZWRSZWdpc3RlcnM7CisKKyAgICAgICAgICAgIGF1dG8g
YWxsb2NOYW1lZCA9IFsmXSAoY29uc3QgUmVnaXN0ZXJTZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7
CisgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogbmFtZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKFRtcCBvY2N1cHlpbmdUbXAgPSBjdXJyZW50QWxsb2NhdGlvbltyZWddKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob2NjdXB5aW5nVG1wID09IFRtcChyZWcpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgZnJlZURlYWRUbXBzSWZOZWVkZWQoKTsgLy8gV2UgZG9u
J3Qgd2FudCB0byBzcGlsbCBhIGRlYWQgdG1wLgorICAgICAgICAgICAgICAgICAgICBhbGxvYyhU
bXAocmVnKSwgcmVnLCBpc0RlZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgYXV0byBlbGlkZU1vdmUgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0cnlpbmcgdG8gZmlndXJlIG91
dCBpZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5r
aW5kLm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5vcGNvZGUgIT0gTW92ZURvdWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gV2Ug
YXJlIGRvaW5nIGEgYWRkciAtPiBhZGRyIG1vdmUuCisgICAgICAgICAgICAgICAgaWYgKGluc3Qu
YXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgICAgICAgICAgQXJnIHNvdXJjZSA9IGluc3QuYXJnc1swXTsKKyAgICAgICAgICAgICAg
ICBBcmcgZGVzdCA9IGluc3QuYXJnc1sxXTsKKworICAgICAgICAgICAgICAgIGlmIChzb3VyY2Uu
aXNBZGRyKCkgfHwgZGVzdC5pc0FkZHIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc1RtcCgpICYmIG1fbGl2ZVJhbmdl
RW5kW3NvdXJjZS50bXAoKV0gIT0gaW5zdEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBSZWcgcmVnID0gc291cmNlLmlzVG1wKCkgPyBt
X21hcFtzb3VyY2UudG1wKCldLnJlZyA6IHNvdXJjZS5yZWcoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzb3VyY2UuaXNUbXAoKSB8fCBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChy
ZWcpID09IHNvdXJjZS50bXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc1JlZygp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzdC5yZWcoKSA9PSByZWc7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGRlc3QuaXNUbXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoUmVn
IG9sZFJlZyA9IG1fbWFwW2Rlc3QudG1wKCldLnJlZykgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9jdXJyZW50QWxsb2NhdGlvbi0+YXQob2xkUmVnKSA9PSBkZXN0LnRtcCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QWxsb2NhdGlvbi0+YXQob2xkUmVnKSA9IFRtcCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFdlIGNhbiB0cmFuc2Zl
ciBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEFs
bG9jYXRpb24tPmF0KHJlZykgPSBkZXN0LnRtcCgpOworICAgICAgICAgICAgICAgIG1fbWFwW2Rl
c3QudG1wKCldLnJlZyA9IHJlZzsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzVG1wKCkp
CisgICAgICAgICAgICAgICAgICAgIG1fbWFwW3NvdXJjZS50bXAoKV0ucmVnID0gUmVnKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworICAgICAgICAgICAg
aWYgKGVsaWRlTW92ZSgpKQorICAgICAgICAgICAgICAgIGdvdG8gZWxpZGVkOworCiAgICAgICAg
ICAgICBpbnN0LmZvckVhY2hBcmcoWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEJhbmss
IFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNUbXAoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNDUxLDcgKzUwOCw2IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxv
Y2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJl
ZFJlZ2lzdGVyczsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnN0KiBuZXh0SW5z
dCA9IGJsb2NrLT5nZXQoaW5zdEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc3Qu
a2luZC5vcGNvZGUgPT0gUGF0Y2ggfHwgKG5leHRJbnN0ICYmIG5leHRJbnN0LT5raW5kLm9wY29k
ZSA9PSBQYXRjaCkpIHsKQEAgLTQ2NywxOCArNTIzLDYgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYWxsb2NOYW1lZCA9IFsmXSAo
Y29uc3QgUmVnaXN0ZXJTZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7Ci0gICAgICAgICAgICAgICAg
Zm9yIChSZWcgcmVnIDogbmFtZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFRtcCBvY2N1
cHlpbmdUbXAgPSBjdXJyZW50QWxsb2NhdGlvbltyZWddKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAob2NjdXB5aW5nVG1wID09IFRtcChyZWcpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgZnJlZURlYWRUbXBzSWZOZWVkZWQoKTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGlsbCBh
IGRlYWQgdG1wLgotICAgICAgICAgICAgICAgICAgICBhbGxvYyhUbXAocmVnKSwgcmVnLCBpc0Rl
Zik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQogICAgICAgICAgICAgYWxs
b2NOYW1lZChtX25hbWVkVXNlZFJlZ3MsIGZhbHNlKTsgLy8gTXVzdCBjb21lIGJlZm9yZSB0aGUg
ZGVmZCByZWdpc3RlcnMgc2luY2Ugd2UgbWF5IHVzZSBhbmQgZGVmIHRoZSBzYW1lIHJlZ2lzdGVy
LgogICAgICAgICAgICAgYWxsb2NOYW1lZChtX25hbWVkRGVmZFJlZ3MsIHRydWUpOwogCkBAIC02
NTYsNiArNzAwLDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0
ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
KyAgICAgICAgZWxpZGVkOgogICAgICAgICAgICAgYXV0byBlbmRMYWJlbCA9IG1faml0LT5sYWJl
bElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCiAg
ICAgICAgICAgICAgICAgZGlzYXNzZW1ibGVyLT5hZGRJbnN0KCZpbnN0LCBzdGFydExhYmVsLCBl
bmRMYWJlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcAppbmRleCAzN2VlZmY0ZTQ0NTMxNWU4MGNlZmRkYzUzODAwODZiZjMxNGFlOWJh
Li5kYzFmOTA1OTdjZGQ5YzYwYzg3ZjZiMjMzODA1N2E2NjBmMDEwYTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMwMywx
NyArMzAzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKGNvbnN0IEV4cHJlc3Npb25UeXBlJiB0eXBlZFRt
cCkKLSAgICB7Ci0gICAgICAgIFRtcCB0bXAgPSB0eXBlZFRtcC50bXAoKTsKLSAgICAgICAgaWYg
KCF0bXApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0bXAuaXNHUCgpKQotICAg
ICAgICAgICAgbV9mcmVlR1BzLmFwcGVuZCh0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2ZyZWVGUHMuYXBwZW5kKHRtcCk7Ci0gICAgfQotCiAgICAgY29uc3QgQmFnPEIzOjpQYXRj
aHBvaW50VmFsdWUqPiYgcGF0Y2hwb2ludHMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fcGF0Y2hwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKaW5kZXggM2Q4ZGY4ZTY4NzEwMjEzMWI2NGMxYTZkNjVlNmZjY2MxMDNi
NWU3NS4uOGMwODRmYjRjZTRiNDYwNmRlMmM5M2JiNjcyNjA3NzNhOWE0YjEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjQ3
LDggKzI0Nyw2IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2
NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgaW5z
ZXJ0Q29uc3RhbnRzKCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNz
aW9uVHlwZSkgeyB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0Nh
bGxIZWxwZXJzJiwgRXhjZXB0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNzJmZGFmZmY5NzM5MjM2Y2U1ZTJkMGE2
OGRlODE4YzdkMDM4Yjg1Zi4uMWE0ZTRlNDZlYjAyZDQwZDBjMTNhMWMwODY4OTZmNTE4NjBiMmQy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmgKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllfUE9QX0VYUFJF
U1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNr
LmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAgICAgICAg
IHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJl
c3Npb24uYXBwZW5kKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC05
NSw4ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgT3BUeXBlIG1fY3VycmVudE9wY29kZTsKICAgICBz
aXplX3QgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0b3I8
RXhwcmVzc2lvblR5cGUsIDg+IG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uOwotCiAgICAgdW5zaWdu
ZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xvb3BJbmRleCB7
IDAgfTsKIH07CkBAIC0xNDUsOCArMTQyLDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIG1fY29udHJvbFN0YWNrLmFwcGVu
ZCh7IG1fY29udGV4dC5jcmVhdGVTdGFjaygpLCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwobV9zaWdu
YXR1cmUucmV0dXJuVHlwZSgpKSB9KTsKICAgICB1aW50OF90IG9wOwogICAgIHdoaWxlIChtX2Nv
bnRyb2xTdGFjay5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHByZXNz
aW9uLmlzRW1wdHkoKSk7Ci0KICAgICAgICAgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQg
PSBtX29mZnNldDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChvcCks
ICJjYW4ndCBkZWNvZGUgb3Bjb2RlIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlz
VmFsaWRPcFR5cGUob3ApLCAiaW52YWxpZCBvcGNvZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1Nyw2
IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VVbnJlYWNo
YWJsZUV4cHJlc3Npb24oKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgV0FTTV9GQUlM
X0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICB3aGlsZSAo
bV90b0tpbGxBZnRlckV4cHJlc3Npb24uc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1fY29udGV4
dC5kaWRLaWxsKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLnRha2VMYXN0KCkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC01ODMsOCArNTc2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBEcm9wOiB7
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwg
ImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJl
c3Npb24uYXBwZW5kKGV4cHJlc3Npb24pOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtl
TGFzdCgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZmMGEz
ZTM5N2QwYTljNWUzNzE0Yy4uMmRiNzRhNDNmNGQzNDIwNTVhNjQ4N2MwZDhlOGU5MzQ2YThmN2Fi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0x
NTQsOCArMTU0LDYgQEAgcHVibGljOgogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2ls
bChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KICAgICBib29sIGhhc01lbW9yeSgpIGNvbnN0IHsgcmV0
dXJuICEhbV9tb2R1bGUubWVtb3J5OyB9CiAKICAgICBWYWxpZGF0ZShjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378607</attachid>
            <date>2019-09-11 18:12:56 -0700</date>
            <delta_ts>2019-09-11 18:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190911181254.patch</filename>
            <type>text/plain</type>
            <size>10256</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li43ZTU0ZDRmZjc3NTcwODI2
MTQwNjkzNGRlYjFkZTczNjY0ZTQ5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5l
cmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpkaWRLaWxsKTogRGVsZXRlZC4K
KwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9uIHdpdGggYWxsLW9uZSAoLTEpIGlzIHdy
b25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFiZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li4x
ZGFjNzQxNWJiNzFmZWE0NGZkOTk4ODQ2MWE0YjZmNTY1YWVjOTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQyMSw2ICs0MjEs
NjIgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRVc2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7
CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogCisgICAgICAg
ICAgICBSZWdpc3RlclNldCBjbG9iYmVyZWRSZWdpc3RlcnM7CisKKyAgICAgICAgICAgIGF1dG8g
YWxsb2NOYW1lZCA9IFsmXSAoY29uc3QgUmVnaXN0ZXJTZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7
CisgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogbmFtZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKFRtcCBvY2N1cHlpbmdUbXAgPSBjdXJyZW50QWxsb2NhdGlvbltyZWddKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob2NjdXB5aW5nVG1wID09IFRtcChyZWcpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgZnJlZURlYWRUbXBzSWZOZWVkZWQoKTsgLy8gV2UgZG9u
J3Qgd2FudCB0byBzcGlsbCBhIGRlYWQgdG1wLgorICAgICAgICAgICAgICAgICAgICBhbGxvYyhU
bXAocmVnKSwgcmVnLCBpc0RlZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgYXV0byBlbGlkZU1vdmUgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0cnlpbmcgdG8gZmlndXJlIG91
dCBpZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5r
aW5kLm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5vcGNvZGUgIT0gTW92ZURvdWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gV2Ug
YXJlIGRvaW5nIGEgYWRkciAtPiBhZGRyIG1vdmUuCisgICAgICAgICAgICAgICAgaWYgKGluc3Qu
YXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgICAgICAgICAgQXJnIHNvdXJjZSA9IGluc3QuYXJnc1swXTsKKyAgICAgICAgICAgICAg
ICBBcmcgZGVzdCA9IGluc3QuYXJnc1sxXTsKKworICAgICAgICAgICAgICAgIGlmIChzb3VyY2Uu
aXNBZGRyKCkgfHwgZGVzdC5pc0FkZHIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc1RtcCgpICYmIG1fbGl2ZVJhbmdl
RW5kW3NvdXJjZS50bXAoKV0gIT0gaW5zdEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBSZWcgcmVnID0gc291cmNlLmlzVG1wKCkgPyBt
X21hcFtzb3VyY2UudG1wKCldLnJlZyA6IHNvdXJjZS5yZWcoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzb3VyY2UuaXNUbXAoKSB8fCBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChy
ZWcpID09IHNvdXJjZS50bXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc1JlZygp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzdC5yZWcoKSA9PSByZWc7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGRlc3QuaXNUbXAoKSk7CisKKyAgICAgICAgICAgICAgICAvLyBEZXN0
IGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkIHNvIHdlIGNhbid0IGNoYW5nZSBpdHMgbG9jYXRp
b24uCisgICAgICAgICAgICAgICAgaWYgKG1fbWFwW2Rlc3QudG1wKCldLnJlZyB8fCBtX21hcFtk
ZXN0LnRtcCgpXS5zcGlsbFNsb3QpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAgICAgICAgIC8vIFdlIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIHJl
Z2lzdGVyLgorICAgICAgICAgICAgICAgIG1fY3VycmVudEFsbG9jYXRpb24tPmF0KHJlZykgPSBk
ZXN0LnRtcCgpOworICAgICAgICAgICAgICAgIG1fbWFwW2Rlc3QudG1wKCldLnJlZyA9IHJlZzsK
KyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzVG1wKCkpCisgICAgICAgICAgICAgICAgICAg
IG1fbWFwW3NvdXJjZS50bXAoKV0ucmVnID0gUmVnKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKGVsaWRlTW92ZSgpKQorICAg
ICAgICAgICAgICAgIGdvdG8gZWxpZGVkOworCiAgICAgICAgICAgICBpbnN0LmZvckVhY2hBcmco
WyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFhcmcuaXNUbXAoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDUxLDcgKzUwNyw2IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJh
dGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7
CiAKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJlZFJlZ2lzdGVyczsKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBJbnN0KiBuZXh0SW5zdCA9IGJsb2NrLT5nZXQoaW5zdElu
ZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gUGF0Y2gg
fHwgKG5leHRJbnN0ICYmIG5leHRJbnN0LT5raW5kLm9wY29kZSA9PSBQYXRjaCkpIHsKQEAgLTQ2
NywxOCArNTIyLDYgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0
ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGF1dG8gYWxsb2NOYW1lZCA9IFsmXSAoY29uc3QgUmVnaXN0ZXJTZXQmIG5h
bWVkLCBib29sIGlzRGVmKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogbmFtZWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFRtcCBvY2N1cHlpbmdUbXAgPSBjdXJyZW50QWxs
b2NhdGlvbltyZWddKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2NjdXB5aW5nVG1w
ID09IFRtcChyZWcpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgZnJlZURlYWRUbXBzSWZO
ZWVkZWQoKTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGlsbCBhIGRlYWQgdG1wLgotICAgICAgICAg
ICAgICAgICAgICBhbGxvYyhUbXAocmVnKSwgcmVnLCBpc0RlZik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfTsKLQogICAgICAgICAgICAgYWxsb2NOYW1lZChtX25hbWVkVXNlZFJl
Z3MsIGZhbHNlKTsgLy8gTXVzdCBjb21lIGJlZm9yZSB0aGUgZGVmZCByZWdpc3RlcnMgc2luY2Ug
d2UgbWF5IHVzZSBhbmQgZGVmIHRoZSBzYW1lIHJlZ2lzdGVyLgogICAgICAgICAgICAgYWxsb2NO
YW1lZChtX25hbWVkRGVmZFJlZ3MsIHRydWUpOwogCkBAIC02NTYsNiArNjk5LDcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgZWxpZGVkOgogICAg
ICAgICAgICAgYXV0byBlbmRMYWJlbCA9IG1faml0LT5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMo
KTsKICAgICAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICAgICAgZGlzYXNz
ZW1ibGVyLT5hZGRJbnN0KCZpbnN0LCBzdGFydExhYmVsLCBlbmRMYWJlbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAzN2Vl
ZmY0ZTQ0NTMxNWU4MGNlZmRkYzUzODAwODZiZjMxNGFlOWJhLi5kYzFmOTA1OTdjZGQ5YzYwYzg3
ZjZiMjMzODA1N2E2NjBmMDEwYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMwMywxNyArMzAzLDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBk
aWRLaWxsKGNvbnN0IEV4cHJlc3Npb25UeXBlJiB0eXBlZFRtcCkKLSAgICB7Ci0gICAgICAgIFRt
cCB0bXAgPSB0eXBlZFRtcC50bXAoKTsKLSAgICAgICAgaWYgKCF0bXApCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlmICh0bXAuaXNHUCgpKQotICAgICAgICAgICAgbV9mcmVlR1BzLmFw
cGVuZCh0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ZyZWVGUHMuYXBwZW5kKHRt
cCk7Ci0gICAgfQotCiAgICAgY29uc3QgQmFnPEIzOjpQYXRjaHBvaW50VmFsdWUqPiYgcGF0Y2hw
b2ludHMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcGF0Y2hwb2ludHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXgg
M2Q4ZGY4ZTY4NzEwMjEzMWI2NGMxYTZkNjVlNmZjY2MxMDNiNWU3NS4uOGMwODRmYjRjZTRiNDYw
NmRlMmM5M2JiNjcyNjA3NzNhOWE0YjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjQ3LDggKzI0Nyw2IEBAIHB1YmxpYzoK
ICAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9y
aWdpbj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgaW5zZXJ0Q29uc3RhbnRzKCk7CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KIHByaXZh
dGU6CiAgICAgdm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzJiwgRXhjZXB0aW9u
VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmgKaW5kZXggNzJmZGFmZmY5NzM5MjM2Y2U1ZTJkMGE2OGRlODE4YzdkMDM4Yjg1Zi4uMWE0
ZTRlNDZlYjAyZDQwZDBjMTNhMWMwODY4OTZmNTE4NjBiMmQyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTczLDcgKzczLDYgQEAg
cHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhyZXN1
bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLmlzRW1wdHkoKSwgImNhbid0IHBv
cCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAgICAgICAgIHJlc3VsdCA9IG1fZXhwcmVzc2lv
blN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24uYXBwZW5kKHJlc3VsdCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hp
bGUgKDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC05NSw4ICs5NCw2IEBAIHByaXZhdGU6
CiAgICAgT3BUeXBlIG1fY3VycmVudE9wY29kZTsKICAgICBzaXplX3QgbV9jdXJyZW50T3Bjb2Rl
U3RhcnRpbmdPZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDg+IG1f
dG9LaWxsQWZ0ZXJFeHByZXNzaW9uOwotCiAgICAgdW5zaWduZWQgbV91bnJlYWNoYWJsZUJsb2Nr
cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xvb3BJbmRleCB7IDAgfTsKIH07CkBAIC0xNDUsOCAr
MTQyLDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCb2R5KCkgLT4gUGFy
dGlhbFJlc3VsdAogICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZCh7IG1fY29udGV4dC5jcmVhdGVT
dGFjaygpLCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwobV9zaWduYXR1cmUucmV0dXJuVHlwZSgpKSB9
KTsKICAgICB1aW50OF90IG9wOwogICAgIHdoaWxlIChtX2NvbnRyb2xTdGFjay5zaXplKCkpIHsK
LSAgICAgICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLmlzRW1wdHkoKSk7Ci0KICAg
ICAgICAgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgPSBtX29mZnNldDsKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChvcCksICJjYW4ndCBkZWNvZGUgb3Bjb2Rl
Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzVmFsaWRPcFR5cGUob3ApLCAiaW52
YWxpZCBvcGNvZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1Nyw2IEBAIGF1dG8gRnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdB
U01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJz
ZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICB3aGlsZSAobV90b0tpbGxBZnRlckV4cHJlc3Np
b24uc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC5kaWRLaWxsKG1fdG9LaWxsQWZ0
ZXJFeHByZXNzaW9uLnRha2VMYXN0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01ODMsOCAr
NTc2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkg
LT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBEcm9wOiB7CiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbid0IGRyb3Agb24gZW1wdHkg
c3RhY2siKTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gbV9leHByZXNzaW9uU3RhY2sudGFr
ZUxhc3QoKTsKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24uYXBwZW5kKGV4cHJlc3Np
b24pOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0
ZS5jcHAKaW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZmMGEzZTM5N2QwYTljNWUzNzE0Yy4uMmRi
NzRhNDNmNGQzNDIwNTVhNjQ4N2MwZDhlOGU5MzQ2YThmN2FiZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0xNTQsOCArMTU0LDYgQEAgcHVibGlj
OgogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJ
bmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwg
Y29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9
Ci0KICAgICBib29sIGhhc01lbW9yeSgpIGNvbnN0IHsgcmV0dXJuICEhbV9tb2R1bGUubWVtb3J5
OyB9CiAKICAgICBWYWxpZGF0ZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378609</attachid>
            <date>2019-09-11 18:16:45 -0700</date>
            <delta_ts>2019-09-12 17:57:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190911181643.patch</filename>
            <type>text/plain</type>
            <size>10214</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li43ZTU0ZDRmZjc3NTcwODI2
MTQwNjkzNGRlYjFkZTczNjY0ZTQ5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5l
cmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpkaWRLaWxsKTogRGVsZXRlZC4K
KwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9uIHdpdGggYWxsLW9uZSAoLTEpIGlzIHdy
b25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFiZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li41
MGQ5NmMyYzVlN2NiYWE5Mzc3M2FmYWM1NTk1OWRhZmZmYTQ2ZmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQyMSw2ICs0MjEs
NjIgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRVc2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7
CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogCisgICAgICAg
ICAgICBSZWdpc3RlclNldCBjbG9iYmVyZWRSZWdpc3RlcnM7CisKKyAgICAgICAgICAgIGF1dG8g
YWxsb2NOYW1lZCA9IFsmXSAoY29uc3QgUmVnaXN0ZXJTZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7
CisgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogbmFtZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKFRtcCBvY2N1cHlpbmdUbXAgPSBjdXJyZW50QWxsb2NhdGlvbltyZWddKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob2NjdXB5aW5nVG1wID09IFRtcChyZWcpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgZnJlZURlYWRUbXBzSWZOZWVkZWQoKTsgLy8gV2UgZG9u
J3Qgd2FudCB0byBzcGlsbCBhIGRlYWQgdG1wLgorICAgICAgICAgICAgICAgICAgICBhbGxvYyhU
bXAocmVnKSwgcmVnLCBpc0RlZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgYXV0byBlbGlkZU1vdmUgPSBbJl0gKCkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0cnlpbmcgdG8gZmlndXJlIG91
dCBpZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5r
aW5kLm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5vcGNvZGUgIT0gTW92ZURvdWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gV2Ug
YXJlIGRvaW5nIGEgYWRkciAtPiBhZGRyIG1vdmUuCisgICAgICAgICAgICAgICAgaWYgKGluc3Qu
YXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgICAgICAgICAgQXJnIHNvdXJjZSA9IGluc3QuYXJnc1swXTsKKyAgICAgICAgICAgICAg
ICBBcmcgZGVzdCA9IGluc3QuYXJnc1sxXTsKKworICAgICAgICAgICAgICAgIGlmIChzb3VyY2Uu
aXNBZGRyKCkgfHwgZGVzdC5pc0FkZHIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc1RtcCgpICYmIG1fbGl2ZVJhbmdl
RW5kW3NvdXJjZS50bXAoKV0gIT0gaW5zdEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBSZWcgcmVnID0gc291cmNlLmlzVG1wKCkgPyBt
X21hcFtzb3VyY2UudG1wKCldLnJlZyA6IHNvdXJjZS5yZWcoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzb3VyY2UuaXNUbXAoKSB8fCBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChy
ZWcpID09IHNvdXJjZS50bXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc1JlZygp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzdC5yZWcoKSA9PSByZWc7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGRlc3QuaXNUbXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoUmVn
IG9sZFJlZyA9IG1fbWFwW2Rlc3QudG1wKCldLnJlZykgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9jdXJyZW50QWxsb2NhdGlvbi0+YXQob2xkUmVnKSA9PSBkZXN0LnRtcCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QWxsb2NhdGlvbi0+YXQob2xkUmVnKSA9IFRtcCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fY3VycmVudEFsbG9jYXRp
b24tPmF0KHJlZykgPSBkZXN0LnRtcCgpOworICAgICAgICAgICAgICAgIG1fbWFwW2Rlc3QudG1w
KCldLnJlZyA9IHJlZzsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzVG1wKCkpCisgICAg
ICAgICAgICAgICAgICAgIG1fbWFwW3NvdXJjZS50bXAoKV0ucmVnID0gUmVnKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKGVs
aWRlTW92ZSgpKQorICAgICAgICAgICAgICAgIGdvdG8gZWxpZGVkOworCiAgICAgICAgICAgICBp
bnN0LmZvckVhY2hBcmcoWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRo
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNUbXAoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUxLDcgKzUwNyw2IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJl
Z2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJlZFJlZ2lz
dGVyczsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnN0KiBuZXh0SW5zdCA9IGJs
b2NrLT5nZXQoaW5zdEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc3Qua2luZC5v
cGNvZGUgPT0gUGF0Y2ggfHwgKG5leHRJbnN0ICYmIG5leHRJbnN0LT5raW5kLm9wY29kZSA9PSBQ
YXRjaCkpIHsKQEAgLTQ2NywxOCArNTIyLDYgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYWxsb2NOYW1lZCA9IFsmXSAoY29uc3Qg
UmVnaXN0ZXJTZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChS
ZWcgcmVnIDogbmFtZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFRtcCBvY2N1cHlpbmdU
bXAgPSBjdXJyZW50QWxsb2NhdGlvbltyZWddKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAob2NjdXB5aW5nVG1wID09IFRtcChyZWcpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ZnJlZURlYWRUbXBzSWZOZWVkZWQoKTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGlsbCBhIGRlYWQg
dG1wLgotICAgICAgICAgICAgICAgICAgICBhbGxvYyhUbXAocmVnKSwgcmVnLCBpc0RlZik7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQogICAgICAgICAgICAgYWxsb2NOYW1l
ZChtX25hbWVkVXNlZFJlZ3MsIGZhbHNlKTsgLy8gTXVzdCBjb21lIGJlZm9yZSB0aGUgZGVmZCBy
ZWdpc3RlcnMgc2luY2Ugd2UgbWF5IHVzZSBhbmQgZGVmIHRoZSBzYW1lIHJlZ2lzdGVyLgogICAg
ICAgICAgICAgYWxsb2NOYW1lZChtX25hbWVkRGVmZFJlZ3MsIHRydWUpOwogCkBAIC02NTYsNiAr
Njk5LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2Fs
bEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAg
ICAgZWxpZGVkOgogICAgICAgICAgICAgYXV0byBlbmRMYWJlbCA9IG1faml0LT5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCiAgICAgICAg
ICAgICAgICAgZGlzYXNzZW1ibGVyLT5hZGRJbnN0KCZpbnN0LCBzdGFydExhYmVsLCBlbmRMYWJl
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAppbmRleCAzN2VlZmY0ZTQ0NTMxNWU4MGNlZmRkYzUzODAwODZiZjMxNGFlOWJhLi5kYzFm
OTA1OTdjZGQ5YzYwYzg3ZjZiMjMzODA1N2E2NjBmMDEwYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMwMywxNyArMzAz
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBkaWRLaWxsKGNvbnN0IEV4cHJlc3Npb25UeXBlJiB0eXBlZFRtcCkKLSAg
ICB7Ci0gICAgICAgIFRtcCB0bXAgPSB0eXBlZFRtcC50bXAoKTsKLSAgICAgICAgaWYgKCF0bXAp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0bXAuaXNHUCgpKQotICAgICAgICAg
ICAgbV9mcmVlR1BzLmFwcGVuZCh0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zy
ZWVGUHMuYXBwZW5kKHRtcCk7Ci0gICAgfQotCiAgICAgY29uc3QgQmFnPEIzOjpQYXRjaHBvaW50
VmFsdWUqPiYgcGF0Y2hwb2ludHMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcGF0
Y2hwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKaW5kZXggM2Q4ZGY4ZTY4NzEwMjEzMWI2NGMxYTZkNjVlNmZjY2MxMDNiNWU3NS4u
OGMwODRmYjRjZTRiNDYwNmRlMmM5M2JiNjcyNjA3NzNhOWE0YjEzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjQ3LDggKzI0
Nyw2IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJp
dHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgaW5zZXJ0Q29u
c3RhbnRzKCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlw
ZSkgeyB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxw
ZXJzJiwgRXhjZXB0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNzJmZGFmZmY5NzM5MjM2Y2U1ZTJkMGE2OGRlODE4
YzdkMDM4Yjg1Zi4uMWE0ZTRlNDZlYjAyZDQwZDBjMTNhMWMwODY4OTZmNTE4NjBiMmQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAg
LTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05f
U1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLmlzRW1w
dHkoKSwgImNhbid0IHBvcCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAgICAgICAgIHJlc3Vs
dCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24u
YXBwZW5kKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC05NSw4ICs5
NCw2IEBAIHByaXZhdGU6CiAgICAgT3BUeXBlIG1fY3VycmVudE9wY29kZTsKICAgICBzaXplX3Qg
bV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0b3I8RXhwcmVz
c2lvblR5cGUsIDg+IG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uOwotCiAgICAgdW5zaWduZWQgbV91
bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xvb3BJbmRleCB7IDAgfTsK
IH07CkBAIC0xNDUsOCArMTQyLDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZCh7IG1f
Y29udGV4dC5jcmVhdGVTdGFjaygpLCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwobV9zaWduYXR1cmUu
cmV0dXJuVHlwZSgpKSB9KTsKICAgICB1aW50OF90IG9wOwogICAgIHdoaWxlIChtX2NvbnRyb2xT
dGFjay5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLmlz
RW1wdHkoKSk7Ci0KICAgICAgICAgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgPSBtX29m
ZnNldDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChvcCksICJjYW4n
dCBkZWNvZGUgb3Bjb2RlIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzVmFsaWRP
cFR5cGUob3ApLCAiaW52YWxpZCBvcGNvZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1Nyw2IEBAIGF1
dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VVbnJlYWNoYWJsZUV4
cHJlc3Npb24oKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhwYXJzZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICB3aGlsZSAobV90b0tp
bGxBZnRlckV4cHJlc3Npb24uc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC5kaWRL
aWxsKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLnRha2VMYXN0KCkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC01ODMsOCArNTc2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBEcm9wOiB7CiAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbid0
IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gbV9leHBy
ZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24u
YXBwZW5kKGV4cHJlc3Npb24pOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZmMGEzZTM5N2Qw
YTljNWUzNzE0Yy4uMmRiNzRhNDNmNGQzNDIwNTVhNjQ4N2MwZDhlOGU5MzQ2YThmN2FiZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0xNTQsOCAr
MTU0LDYgQEAgcHVibGljOgogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1
bnNpZ25lZCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHBy
ZXNzaW9uVHlwZSkgeyB9Ci0KICAgICBib29sIGhhc01lbW9yeSgpIGNvbnN0IHsgcmV0dXJuICEh
bV9tb2R1bGUubWVtb3J5OyB9CiAKICAgICBWYWxpZGF0ZShjb25zdCBNb2R1bGVJbmZvcm1hdGlv
biYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378695</attachid>
            <date>2019-09-12 17:58:00 -0700</date>
            <delta_ts>2019-09-12 18:20:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190912175757.patch</filename>
            <type>text/plain</type>
            <size>9700</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li43ZTU0ZDRmZjc3NTcwODI2
MTQwNjkzNGRlYjFkZTczNjY0ZTQ5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5l
cmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpkaWRLaWxsKTogRGVsZXRlZC4K
KwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9uIHdpdGggYWxsLW9uZSAoLTEpIGlzIHdy
b25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFiZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li44
YWY2M2Y4NGE5ZDY0NGQxMzAwODU0Njg0NjA2MGZmODZhYmFhNGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQyMSw2ICs0MjEs
NDUgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRVc2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7
CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogCisgICAgICAg
ICAgICBib29sIG5lZWRzVG9HZW5lcmF0ZSA9IChbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0cnlpbmcgdG8gZmlndXJlIG91dCBp
ZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5raW5k
Lm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5vcGNvZGUgIT0gTW92ZURvdWJsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUg
ZG9pbmcgYSBhZGRyIC0+IGFkZHIgbW92ZS4KKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5hcmdz
LnNpemUoKSAhPSAyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgIEFyZyBzb3VyY2UgPSBpbnN0LmFyZ3NbMF07CisgICAgICAgICAgICAgICAgQXJn
IGRlc3QgPSBpbnN0LmFyZ3NbMV07CisKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5pc1Rt
cCgpIHx8ICFkZXN0LmlzVG1wKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgICAgICAgICAgaWYgKG1fbGl2ZVJhbmdlRW5kW3NvdXJjZS50bXAoKV0gIT0gaW5z
dEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIFJlZyByZWcgPSBzb3VyY2UuaXNSZWcoKSA/IHNvdXJjZS5yZWcoKSA6IG1fbWFwW3NvdXJj
ZS50bXAoKV0ucmVnOworICAgICAgICAgICAgICAgIGlmICghcmVnKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTU0VSVCghc291cmNlLmlzVG1w
KCkgfHwgbV9jdXJyZW50QWxsb2NhdGlvbi0+YXQocmVnKSA9PSBzb3VyY2UudG1wKCkpOworCisg
ICAgICAgICAgICAgICAgaWYgKGRlc3QuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGRlc3QucmVnKCkgIT0gcmVnOworCisgICAgICAgICAgICAgICAgaWYgKFJlZyBvbGRSZWcg
PSBtX21hcFtkZXN0LnRtcCgpXS5yZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1f
Y3VycmVudEFsbG9jYXRpb24tPmF0KG9sZFJlZykgPT0gZGVzdC50bXAoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEFsbG9jYXRpb24tPmF0KG9sZFJlZykgPSBUbXAoKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChy
ZWcpID0gZGVzdC50bXAoKTsKKyAgICAgICAgICAgICAgICBtX21hcFtkZXN0LnRtcCgpXS5yZWcg
PSByZWc7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc1RtcCgpKQorICAgICAgICAgICAg
ICAgICAgICBtX21hcFtzb3VyY2UudG1wKCldLnJlZyA9IFJlZygpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0pKCk7CisKICAgICAgICAgICAgIGluc3QuZm9y
RWFjaEFyZyhbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWFyZy5pc1RtcCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC00ODIsNyArNTIxLDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJz
OjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgIGFsbG9jTmFtZWQobV9u
YW1lZFVzZWRSZWdzLCBmYWxzZSk7IC8vIE11c3QgY29tZSBiZWZvcmUgdGhlIGRlZmQgcmVnaXN0
ZXJzIHNpbmNlIHdlIG1heSB1c2UgYW5kIGRlZiB0aGUgc2FtZSByZWdpc3Rlci4KICAgICAgICAg
ICAgIGFsbG9jTmFtZWQobV9uYW1lZERlZmRSZWdzLCB0cnVlKTsKIAotICAgICAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG5lZWRzVG9HZW5lcmF0ZSkgewogICAgICAgICAgICAgICAgIGF1dG8g
dHJ5QWxsb2NhdGUgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VG1wKiwgOD4g
dXNlc1RvQWxsb2M7CiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxUbXAqLCA4PiBkZWZzVG9B
bGxvYzsKQEAgLTYxNiw3ICs2NTUsNiBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAgICAgICAgICAgICBtX21h
cFt0bXBdLnJlZyA9IFJlZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBuZWVkc1RvR2VuZXJhdGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IEp1bXAgJiYgYmxvY2stPnN1Y2Nlc3Nv
ckJsb2NrKDApID09IG1fY29kZS5maW5kTmV4dEJsb2NrKGJsb2NrKSkKICAgICAgICAgICAgICAg
ICAgICAgbmVlZHNUb0dlbmVyYXRlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDM3ZWVmZjRlNDQ1MzE1ZTgw
Y2VmZGRjNTM4MDA4NmJmMzE0YWU5YmEuLmRjMWY5MDU5N2NkZDljNjBjODdmNmIyMzM4MDU3YTY2
MGYwMTBhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtMzAzLDE3ICszMDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRpZEtpbGwoY29uc3Qg
RXhwcmVzc2lvblR5cGUmIHR5cGVkVG1wKQotICAgIHsKLSAgICAgICAgVG1wIHRtcCA9IHR5cGVk
VG1wLnRtcCgpOwotICAgICAgICBpZiAoIXRtcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgaWYgKHRtcC5pc0dQKCkpCi0gICAgICAgICAgICBtX2ZyZWVHUHMuYXBwZW5kKHRtcCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJlZUZQcy5hcHBlbmQodG1wKTsKLSAgICB9Ci0K
ICAgICBjb25zdCBCYWc8QjM6OlBhdGNocG9pbnRWYWx1ZSo+JiBwYXRjaHBvaW50cygpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9wYXRjaHBvaW50czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZDhkZjhlNjg3MTAy
MTMxYjY0YzFhNmQ2NWU2ZmNjYzEwM2I1ZTc1Li44YzA4NGZiNGNlNGI0NjA2ZGUyYzkzYmI2NzI2
MDc3M2E5YTRiMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC0yNDcsOCArMjQ3LDYgQEAgcHVibGljOgogICAgIFZhbHVlKiBj
b25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0cywgT3B0aW9uYWw8T3JpZ2luPiA9IFdURjo6
bnVsbG9wdCk7CiAgICAgdm9pZCBpbnNlcnRDb25zdGFudHMoKTsKIAotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBlKSB7IH0KLQogcHJpdmF0ZToKICAgICB2b2lk
IGVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnMmLCBFeGNlcHRpb25UeXBlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCA3
MmZkYWZmZjk3MzkyMzZjZTVlMmQwYTY4ZGU4MThjN2QwMzhiODVmLi4xYTRlNGU0NmViMDJkNDBk
MGMxM2ExYzA4Njg5NmY1MTg2MGIyZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtNzMsNyArNzMsNiBAQCBwcml2YXRlOgogI2Rl
ZmluZSBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHJlc3VsdCwgd2hhdCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYobV9leHByZXNzaW9uU3RhY2suaXNFbXB0eSgpLCAiY2FuJ3QgcG9wIGVtcHR5IHN0YWNr
IGluICIgd2hhdCk7IFwKICAgICAgICAgcmVzdWx0ID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxh
c3QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi5hcHBlbmQocmVzdWx0KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAogICAg
IHRlbXBsYXRlPE9wVHlwZT4KQEAgLTk1LDggKzk0LDYgQEAgcHJpdmF0ZToKICAgICBPcFR5cGUg
bV9jdXJyZW50T3Bjb2RlOwogICAgIHNpemVfdCBtX2N1cnJlbnRPcGNvZGVTdGFydGluZ09mZnNl
dCB7IDAgfTsKIAotICAgIFZlY3RvcjxFeHByZXNzaW9uVHlwZSwgOD4gbV90b0tpbGxBZnRlckV4
cHJlc3Npb247Ci0KICAgICB1bnNpZ25lZCBtX3VucmVhY2hhYmxlQmxvY2tzIHsgMCB9OwogICAg
IHVuc2lnbmVkIG1fbG9vcEluZGV4IHsgMCB9OwogfTsKQEAgLTE0NSw4ICsxNDIsNiBAQCBhdXRv
IEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJvZHkoKSAtPiBQYXJ0aWFsUmVzdWx0CiAg
ICAgbV9jb250cm9sU3RhY2suYXBwZW5kKHsgbV9jb250ZXh0LmNyZWF0ZVN0YWNrKCksIG1fY29u
dGV4dC5hZGRUb3BMZXZlbChtX3NpZ25hdHVyZS5yZXR1cm5UeXBlKCkpIH0pOwogICAgIHVpbnQ4
X3Qgb3A7CiAgICAgd2hpbGUgKG1fY29udHJvbFN0YWNrLnNpemUoKSkgewotICAgICAgICBBU1NF
UlQobV90b0tpbGxBZnRlckV4cHJlc3Npb24uaXNFbXB0eSgpKTsKLQogICAgICAgICBtX2N1cnJl
bnRPcGNvZGVTdGFydGluZ09mZnNldCA9IG1fb2Zmc2V0OwogICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVVJbnQ4KG9wKSwgImNhbid0IGRlY29kZSBvcGNvZGUiKTsKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighaXNWYWxpZE9wVHlwZShvcCksICJpbnZhbGlkIG9wY29kZSAi
LCBvcCk7CkBAIC0xNjIsOCArMTU3LDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRXhwcmVzc2lvbigp
KTsKLSAgICAgICAgICAgIHdoaWxlIChtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgbV9jb250ZXh0LmRpZEtpbGwobV90b0tpbGxBZnRlckV4cHJlc3Npb24u
dGFrZUxhc3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU4Myw4ICs1NzYsNyBAQCBhdXRv
IEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVz
dWx0CiAKICAgICBjYXNlIERyb3A6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9l
eHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FuJ3QgZHJvcCBvbiBlbXB0eSBzdGFjayIpOwotICAg
ICAgICBhdXRvIGV4cHJlc3Npb24gPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwotICAg
ICAgICBtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi5hcHBlbmQoZXhwcmVzc2lvbik7CisgICAgICAg
IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAppbmRleCA2
MmU4YzIxMDEzZjRiZjVjYjAxNmYwYTNlMzk3ZDBhOWM1ZTM3MTRjLi4yZGI3NGE0M2Y0ZDM0MjA1
NWE2NDg3YzBkOGU4ZTkzNDZhOGY3YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWxpZGF0ZS5jcHAKQEAgLTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRp
cmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBlKSB7IH0KLQogICAgIGJvb2wg
aGFzTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gISFtX21vZHVsZS5tZW1vcnk7IH0KIAogICAgIFZh
bGlkYXRlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGUpCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvSmV0U3RyZWFtRHJpdmVyLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL0pldFN0cmVhbURyaXZlci5qcwppbmRleCAyMjFkMjAwZGJmNmI1M2Jk
NGFlZDdkODA4MzA4YWUzN2Y1Njg4YTQ5Li5iYzE1MTNhNWJkZGE0MWUxNjRlZGI0N2Y3YTU0ZDhl
NzU3MjViYWY1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvSmV0U3Ry
ZWFtRHJpdmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi9KZXRTdHJlYW1E
cml2ZXIuanMKQEAgLTE1ODgsNyArMTU4OCw3IEBAIGxldCBydW5TZWFNb25zdGVyID0gdHJ1ZTsK
IGxldCBydW5Db2RlTG9hZCA9IHRydWU7CiBsZXQgcnVuV2FzbSA9IHRydWU7CiAKLWlmIChmYWxz
ZSkgeworaWYgKHRydWUpIHsKICAgICBydW5PY3RhbmUgPSBmYWxzZTsKICAgICBydW5BUkVTID0g
ZmFsc2U7CiAgICAgcnVuV1NMID0gZmFsc2U7CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBpZiAoZmFs
c2UpIHsKICAgICBydW5Xb3JrZXJUZXN0cyA9IGZhbHNlOwogICAgIHJ1blNlYU1vbnN0ZXIgPSBm
YWxzZTsKICAgICBydW5Db2RlTG9hZCA9IGZhbHNlOwotICAgIHJ1bldhc20gPSBmYWxzZTsKKyAg
ICAvLyBydW5XYXNtID0gZmFsc2U7CiB9CiAKIGlmICh0eXBlb2YgdGVzdExpc3QgIT09ICJ1bmRl
ZmluZWQiKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378697</attachid>
            <date>2019-09-12 18:20:11 -0700</date>
            <delta_ts>2019-09-12 18:41:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190912182009.patch</filename>
            <type>text/plain</type>
            <size>9452</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li43ZTU0ZDRmZjc3NTcwODI2
MTQwNjkzNGRlYjFkZTczNjY0ZTQ5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5l
cmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpkaWRLaWxsKTogRGVsZXRlZC4K
KwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9uIHdpdGggYWxsLW9uZSAoLTEpIGlzIHdy
b25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFiZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li43
Nzg2NzQ1NGE2YWQzMjQyYTM5ZGZhYzQzMmMyNGJlOTA4Y2MzODU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQyMSw2ICs0MjEs
NDUgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRVc2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7
CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogCisgICAgICAg
ICAgICBib29sIG5lZWRzVG9HZW5lcmF0ZSA9IChbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0cnlpbmcgdG8gZmlndXJlIG91dCBp
ZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5raW5k
Lm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5vcGNvZGUgIT0gTW92ZURvdWJsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUg
ZG9pbmcgYSBhZGRyIC0+IGFkZHIgbW92ZS4KKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5hcmdz
LnNpemUoKSAhPSAyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgIEFyZyBzb3VyY2UgPSBpbnN0LmFyZ3NbMF07CisgICAgICAgICAgICAgICAgQXJn
IGRlc3QgPSBpbnN0LmFyZ3NbMV07CisKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5pc1Rt
cCgpIHx8ICFkZXN0LmlzVG1wKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgICAgICAgICAgaWYgKG1fbGl2ZVJhbmdlRW5kW3NvdXJjZS50bXAoKV0gIT0gaW5z
dEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIFJlZyByZWcgPSBzb3VyY2UuaXNSZWcoKSA/IHNvdXJjZS5yZWcoKSA6IG1fbWFwW3NvdXJj
ZS50bXAoKV0ucmVnOworICAgICAgICAgICAgICAgIGlmICghcmVnKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTU0VSVCghc291cmNlLmlzVG1w
KCkgfHwgbV9jdXJyZW50QWxsb2NhdGlvbi0+YXQocmVnKSA9PSBzb3VyY2UudG1wKCkpOworCisg
ICAgICAgICAgICAgICAgaWYgKGRlc3QuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGRlc3QucmVnKCkgIT0gcmVnOworCisgICAgICAgICAgICAgICAgaWYgKFJlZyBvbGRSZWcg
PSBtX21hcFtkZXN0LnRtcCgpXS5yZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1f
Y3VycmVudEFsbG9jYXRpb24tPmF0KG9sZFJlZykgPT0gZGVzdC50bXAoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEFsbG9jYXRpb24tPmF0KG9sZFJlZykgPSBUbXAoKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChy
ZWcpID0gZGVzdC50bXAoKTsKKyAgICAgICAgICAgICAgICBtX21hcFtkZXN0LnRtcCgpXS5yZWcg
PSByZWc7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc1RtcCgpKQorICAgICAgICAgICAg
ICAgICAgICBtX21hcFtzb3VyY2UudG1wKCldLnJlZyA9IFJlZygpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0pKCk7CisKICAgICAgICAgICAgIGluc3QuZm9y
RWFjaEFyZyhbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWFyZy5pc1RtcCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC00ODIsNyArNTIxLDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJz
OjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgIGFsbG9jTmFtZWQobV9u
YW1lZFVzZWRSZWdzLCBmYWxzZSk7IC8vIE11c3QgY29tZSBiZWZvcmUgdGhlIGRlZmQgcmVnaXN0
ZXJzIHNpbmNlIHdlIG1heSB1c2UgYW5kIGRlZiB0aGUgc2FtZSByZWdpc3Rlci4KICAgICAgICAg
ICAgIGFsbG9jTmFtZWQobV9uYW1lZERlZmRSZWdzLCB0cnVlKTsKIAotICAgICAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG5lZWRzVG9HZW5lcmF0ZSkgewogICAgICAgICAgICAgICAgIGF1dG8g
dHJ5QWxsb2NhdGUgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VG1wKiwgOD4g
dXNlc1RvQWxsb2M7CiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxUbXAqLCA4PiBkZWZzVG9B
bGxvYzsKQEAgLTYwNSw3ICs2NDQsOSBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoIWluc3QuaXNUZXJtaW5hbCgpKSB7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGp1bXAgPSBpbnN0LmdlbmVyYXRlKCptX2ppdCwgY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXA7CisgICAgICAgICAgICAgICAgaWYgKG5l
ZWRzVG9HZW5lcmF0ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcCA9IGluc3QuZ2VuZXJhdGUo
Km1faml0LCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGp1bXAsICFq
dW1wLmlzU2V0KCkpOwogCiAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY2xvYmJlcmVk
UmVnaXN0ZXJzKSB7CkBAIC02MTYsNyArNjU3LDYgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgICAgICAg
ICAgbV9tYXBbdG1wXS5yZWcgPSBSZWcoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJvb2wgbmVlZHNUb0dlbmVyYXRlID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBKdW1wICYmIGJsb2NrLT5z
dWNjZXNzb3JCbG9jaygwKSA9PSBtX2NvZGUuZmluZE5leHRCbG9jayhibG9jaykpCiAgICAgICAg
ICAgICAgICAgICAgIG5lZWRzVG9HZW5lcmF0ZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAzN2VlZmY0ZTQ0
NTMxNWU4MGNlZmRkYzUzODAwODZiZjMxNGFlOWJhLi5kYzFmOTA1OTdjZGQ5YzYwYzg3ZjZiMjMz
ODA1N2E2NjBmMDEwYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMwMywxNyArMzAzLDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxs
KGNvbnN0IEV4cHJlc3Npb25UeXBlJiB0eXBlZFRtcCkKLSAgICB7Ci0gICAgICAgIFRtcCB0bXAg
PSB0eXBlZFRtcC50bXAoKTsKLSAgICAgICAgaWYgKCF0bXApCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGlmICh0bXAuaXNHUCgpKQotICAgICAgICAgICAgbV9mcmVlR1BzLmFwcGVuZCh0
bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ZyZWVGUHMuYXBwZW5kKHRtcCk7Ci0g
ICAgfQotCiAgICAgY29uc3QgQmFnPEIzOjpQYXRjaHBvaW50VmFsdWUqPiYgcGF0Y2hwb2ludHMo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcGF0Y2hwb2ludHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2Q4ZGY4
ZTY4NzEwMjEzMWI2NGMxYTZkNjVlNmZjY2MxMDNiNWU3NS4uOGMwODRmYjRjZTRiNDYwNmRlMmM5
M2JiNjcyNjA3NzNhOWE0YjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjQ3LDggKzI0Nyw2IEBAIHB1YmxpYzoKICAgICBW
YWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4g
PSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgaW5zZXJ0Q29uc3RhbnRzKCk7CiAKLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KIHByaXZhdGU6CiAg
ICAgdm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzJiwgRXhjZXB0aW9uVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgK
aW5kZXggNzJmZGFmZmY5NzM5MjM2Y2U1ZTJkMGE2OGRlODE4YzdkMDM4Yjg1Zi4uMWE0ZTRlNDZl
YjAyZDQwZDBjMTNhMWMwODY4OTZmNTE4NjBiMmQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0
ZToKICNkZWZpbmUgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdo
YXQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0
eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAgICAgICAgIHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNr
LnRha2VMYXN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24uYXBwZW5kKHJlc3VsdCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDAp
CiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC05NSw4ICs5NCw2IEBAIHByaXZhdGU6CiAgICAg
T3BUeXBlIG1fY3VycmVudE9wY29kZTsKICAgICBzaXplX3QgbV9jdXJyZW50T3Bjb2RlU3RhcnRp
bmdPZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDg+IG1fdG9LaWxs
QWZ0ZXJFeHByZXNzaW9uOwotCiAgICAgdW5zaWduZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAg
fTsKICAgICB1bnNpZ25lZCBtX2xvb3BJbmRleCB7IDAgfTsKIH07CkBAIC0xNDUsOCArMTQyLDYg
QEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJl
c3VsdAogICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZCh7IG1fY29udGV4dC5jcmVhdGVTdGFjaygp
LCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwobV9zaWduYXR1cmUucmV0dXJuVHlwZSgpKSB9KTsKICAg
ICB1aW50OF90IG9wOwogICAgIHdoaWxlIChtX2NvbnRyb2xTdGFjay5zaXplKCkpIHsKLSAgICAg
ICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLmlzRW1wdHkoKSk7Ci0KICAgICAgICAg
bV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgPSBtX29mZnNldDsKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChvcCksICJjYW4ndCBkZWNvZGUgb3Bjb2RlIik7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzVmFsaWRPcFR5cGUob3ApLCAiaW52YWxpZCBv
cGNvZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1Nyw2IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4cHJl
c3Npb24oKSk7Ci0gICAgICAgICAgICB3aGlsZSAobV90b0tpbGxBZnRlckV4cHJlc3Npb24uc2l6
ZSgpKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC5kaWRLaWxsKG1fdG9LaWxsQWZ0ZXJFeHBy
ZXNzaW9uLnRha2VMYXN0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01ODMsOCArNTc2LDcg
QEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFy
dGlhbFJlc3VsdAogCiAgICAgY2FzZSBEcm9wOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2si
KTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3Qo
KTsKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24uYXBwZW5kKGV4cHJlc3Npb24pOwor
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZh
bGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAK
aW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZmMGEzZTM5N2QwYTljNWUzNzE0Yy4uMmRiNzRhNDNm
NGQzNDIwNTVhNjQ4N2MwZDhlOGU5MzQ2YThmN2FiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0xNTQsOCArMTU0LDYgQEAgcHVibGljOgogICAg
IFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRD
YWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3Qg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KICAg
ICBib29sIGhhc01lbW9yeSgpIGNvbnN0IHsgcmV0dXJuICEhbV9tb2R1bGUubWVtb3J5OyB9CiAK
ICAgICBWYWxpZGF0ZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378701</attachid>
            <date>2019-09-12 18:41:41 -0700</date>
            <delta_ts>2019-09-16 20:05:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190912184134.patch</filename>
            <type>text/plain</type>
            <size>9365</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li43ZTU0ZDRmZjc3NTcwODI2
MTQwNjkzNGRlYjFkZTczNjY0ZTQ5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wOS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5l
cmF0ZUNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUJvZHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjpkaWRLaWxsKTogRGVsZXRlZC4K
KwogMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIDMyYml0IGJpdHdpZGUgb3BlcmF0aW9uIHdpdGggYWxsLW9uZSAoLTEpIGlzIHdy
b25nIGluIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcAppbmRleCBiYjVjZjZkNGI4MGRhYTg5NGFiZTdjZDc4M2EwMGZkODI1MGM4MDQ1Li5k
ODQ3ZTI0NWUzNzZjZDc1OGJlYzUwM2Y1Yjc5YzcyMWYyZGU1YmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQyMSw2ICs0MjEs
NDEgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICAgICAgICAgIG1fbmFtZWRVc2VkUmVncyA9IFJlZ2lzdGVyU2V0KCk7
CiAgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogCisgICAgICAg
ICAgICBib29sIG5lZWRzVG9HZW5lcmF0ZSA9IChbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0cnlpbmcgdG8gZmlndXJlIG91dCBp
ZiB3ZSBjYW4gYWxzbyBlbGlkZSBNb3YzMnMKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5raW5k
Lm9wY29kZSAhPSBNb3ZlIHx8IGluc3Qua2luZC5vcGNvZGUgIT0gTW92ZURvdWJsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5z
dC5hcmdzLnNpemUoKSA+PSAyKTsKKyAgICAgICAgICAgICAgICBBcmcgc291cmNlID0gaW5zdC5h
cmdzWzBdOworICAgICAgICAgICAgICAgIEFyZyBkZXN0ID0gaW5zdC5hcmdzWzFdOworICAgICAg
ICAgICAgICAgIGlmICghc291cmNlLmlzVG1wKCkgfHwgIWRlc3QuaXNUbXAoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5p
c1JlZygpICYmIG1fbGl2ZVJhbmdlRW5kW3NvdXJjZS50bXAoKV0gIT0gaW5zdEluZGV4KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFJlZyByZWcg
PSBzb3VyY2UuaXNSZWcoKSA/IHNvdXJjZS5yZWcoKSA6IG1fbWFwW3NvdXJjZS50bXAoKV0ucmVn
OworICAgICAgICAgICAgICAgIGlmICghcmVnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChy
ZWcpID09IHNvdXJjZS50bXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc1JlZygp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzdC5yZWcoKSAhPSByZWc7CisKKyAgICAg
ICAgICAgICAgICBpZiAoUmVnIG9sZFJlZyA9IG1fbWFwW2Rlc3QudG1wKCldLnJlZykgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QWxsb2NhdGlvbi0+YXQob2xkUmVnKSA9
PSBkZXN0LnRtcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QWxsb2NhdGlvbi0+
YXQob2xkUmVnKSA9IFRtcCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IG1fY3VycmVudEFsbG9jYXRpb24tPmF0KHJlZykgPSBkZXN0LnRtcCgpOworICAgICAgICAgICAg
ICAgIG1fbWFwW2Rlc3QudG1wKCldLnJlZyA9IHJlZzsKKyAgICAgICAgICAgICAgICBpZiAoIXNv
dXJjZS5pc1JlZygpKQorICAgICAgICAgICAgICAgICAgICBtX21hcFtzb3VyY2UudG1wKCldLnJl
ZyA9IFJlZygpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0p
KCk7CisKICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZyhbJl0gKEFyZyYgYXJnLCBBcmc6OlJv
bGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAgICAgICAgICAgICAgICBpZiAoIWFyZy5pc1RtcCgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00ODIsNyArNTE3LDcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkK
ICAgICAgICAgICAgIGFsbG9jTmFtZWQobV9uYW1lZFVzZWRSZWdzLCBmYWxzZSk7IC8vIE11c3Qg
Y29tZSBiZWZvcmUgdGhlIGRlZmQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1heSB1c2UgYW5kIGRlZiB0
aGUgc2FtZSByZWdpc3Rlci4KICAgICAgICAgICAgIGFsbG9jTmFtZWQobV9uYW1lZERlZmRSZWdz
LCB0cnVlKTsKIAotICAgICAgICAgICAgeworICAgICAgICAgICAgaWYgKG5lZWRzVG9HZW5lcmF0
ZSkgewogICAgICAgICAgICAgICAgIGF1dG8gdHJ5QWxsb2NhdGUgPSBbJl0gewogICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8VG1wKiwgOD4gdXNlc1RvQWxsb2M7CiAgICAgICAgICAgICAgICAg
ICAgIFZlY3RvcjxUbXAqLCA4PiBkZWZzVG9BbGxvYzsKQEAgLTYwNSw3ICs2NDAsOSBAQCB2b2lk
IEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0
KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWluc3QuaXNUZXJtaW5hbCgpKSB7
Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXAgPSBpbnN0LmdlbmVyYXRl
KCptX2ppdCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1
bXA7CisgICAgICAgICAgICAgICAgaWYgKG5lZWRzVG9HZW5lcmF0ZSkKKyAgICAgICAgICAgICAg
ICAgICAganVtcCA9IGluc3QuZ2VuZXJhdGUoKm1faml0LCBjb250ZXh0KTsKICAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGp1bXAsICFqdW1wLmlzU2V0KCkpOwogCiAgICAgICAgICAgICAg
ICAgZm9yIChSZWcgcmVnIDogY2xvYmJlcmVkUmVnaXN0ZXJzKSB7CkBAIC02MTYsNyArNjUzLDYg
QEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBl
cnMmIGppdCkKICAgICAgICAgICAgICAgICAgICAgbV9tYXBbdG1wXS5yZWcgPSBSZWcoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJv
b2wgbmVlZHNUb0dlbmVyYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoaW5zdC5raW5k
Lm9wY29kZSA9PSBKdW1wICYmIGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSA9PSBtX2NvZGUuZmlu
ZE5leHRCbG9jayhibG9jaykpCiAgICAgICAgICAgICAgICAgICAgIG5lZWRzVG9HZW5lcmF0ZSA9
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcAppbmRleCAzN2VlZmY0ZTQ0NTMxNWU4MGNlZmRkYzUzODAwODZiZjMxNGFlOWJh
Li5kYzFmOTA1OTdjZGQ5YzYwYzg3ZjZiMjMzODA1N2E2NjBmMDEwYTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMwMywx
NyArMzAzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKGNvbnN0IEV4cHJlc3Npb25UeXBlJiB0eXBlZFRt
cCkKLSAgICB7Ci0gICAgICAgIFRtcCB0bXAgPSB0eXBlZFRtcC50bXAoKTsKLSAgICAgICAgaWYg
KCF0bXApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0bXAuaXNHUCgpKQotICAg
ICAgICAgICAgbV9mcmVlR1BzLmFwcGVuZCh0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2ZyZWVGUHMuYXBwZW5kKHRtcCk7Ci0gICAgfQotCiAgICAgY29uc3QgQmFnPEIzOjpQYXRj
aHBvaW50VmFsdWUqPiYgcGF0Y2hwb2ludHMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fcGF0Y2hwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKaW5kZXggM2Q4ZGY4ZTY4NzEwMjEzMWI2NGMxYTZkNjVlNmZjY2MxMDNi
NWU3NS4uOGMwODRmYjRjZTRiNDYwNmRlMmM5M2JiNjcyNjA3NzNhOWE0YjEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjQ3
LDggKzI0Nyw2IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2
NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgaW5z
ZXJ0Q29uc3RhbnRzKCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNz
aW9uVHlwZSkgeyB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0Nh
bGxIZWxwZXJzJiwgRXhjZXB0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNzJmZGFmZmY5NzM5MjM2Y2U1ZTJkMGE2
OGRlODE4YzdkMDM4Yjg1Zi4uMWE0ZTRlNDZlYjAyZDQwZDBjMTNhMWMwODY4OTZmNTE4NjBiMmQy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmgKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllfUE9QX0VYUFJF
U1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNr
LmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAgICAgICAg
IHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJl
c3Npb24uYXBwZW5kKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC05
NSw4ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgT3BUeXBlIG1fY3VycmVudE9wY29kZTsKICAgICBz
aXplX3QgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0b3I8
RXhwcmVzc2lvblR5cGUsIDg+IG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uOwotCiAgICAgdW5zaWdu
ZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xvb3BJbmRleCB7
IDAgfTsKIH07CkBAIC0xNDUsOCArMTQyLDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIG1fY29udHJvbFN0YWNrLmFwcGVu
ZCh7IG1fY29udGV4dC5jcmVhdGVTdGFjaygpLCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwobV9zaWdu
YXR1cmUucmV0dXJuVHlwZSgpKSB9KTsKICAgICB1aW50OF90IG9wOwogICAgIHdoaWxlIChtX2Nv
bnRyb2xTdGFjay5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHByZXNz
aW9uLmlzRW1wdHkoKSk7Ci0KICAgICAgICAgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQg
PSBtX29mZnNldDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChvcCks
ICJjYW4ndCBkZWNvZGUgb3Bjb2RlIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlz
VmFsaWRPcFR5cGUob3ApLCAiaW52YWxpZCBvcGNvZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1Nyw2
IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VVbnJlYWNo
YWJsZUV4cHJlc3Npb24oKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgV0FTTV9GQUlM
X0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICB3aGlsZSAo
bV90b0tpbGxBZnRlckV4cHJlc3Npb24uc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1fY29udGV4
dC5kaWRLaWxsKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLnRha2VMYXN0KCkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC01ODMsOCArNTc2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBEcm9wOiB7
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwg
ImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgYXV0byBleHByZXNzaW9uID0g
bV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJl
c3Npb24uYXBwZW5kKGV4cHJlc3Npb24pOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtl
TGFzdCgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZmMGEz
ZTM5N2QwYTljNWUzNzE0Yy4uMmRiNzRhNDNmNGQzNDIwNTVhNjQ4N2MwZDhlOGU5MzQ2YThmN2Fi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0x
NTQsOCArMTU0LDYgQEAgcHVibGljOgogICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2ls
bChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KICAgICBib29sIGhhc01lbW9yeSgpIGNvbnN0IHsgcmV0
dXJuICEhbV9tb2R1bGUubWVtb3J5OyB9CiAKICAgICBWYWxpZGF0ZShjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378932</attachid>
            <date>2019-09-16 20:05:22 -0700</date>
            <delta_ts>2019-09-16 21:30:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190916200520.patch</filename>
            <type>text/plain</type>
            <size>15947</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li4zODNkYmM4NDFmYzcwYTQ2
YjViZTBlZjJlZTllZTlhMjNkZWYyMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOS0wOS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB3ZSBkaWRu
J3QgYXNrIFBhdGNocG9pbnRzCisgICAgICAgIGZvciBlYXJseSBjbG9iYmVyIHJlZ2lzdGVycyB3
aGVuIGRldGVybWluaW5nIHdoYXQgY2FsbGVlIHNhdmVzCisgICAgICAgIHdlcmUgdXNlZCBieSB0
aGUgcHJvZ3JhbS4KKworICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0
YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2Rl
Lmg6CisgICAgICAgICogYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aGFuZGxlQ2FsbGVlU2F2ZXMpOgorICAgICAgICAqIGIzL2Fpci90ZXN0
YWlyLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpkaWRLaWxsKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlQm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmRpZEtpbGwpOiBEZWxldGVkLgorCiAyMDE5LTA5LTEw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gMzJi
aXQgYml0d2lkZSBvcGVyYXRpb24gd2l0aCBhbGwtb25lICgtMSkgaXMgd3JvbmcgaW4gQjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3Rl
cnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCmluZGV4
IGJiNWNmNmQ0YjgwZGFhODk0YWJlN2NkNzgzYTAwZmQ4MjUwYzgwNDUuLmFhNWFkYTM0YzVjMGQ0
NWY0ZTVmODM2OTdhODE3NGUwMjczM2RhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVy
c0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcApAQCAtNDIxLDYgKzQyMSw0MyBAQCB2b2lkIEdl
bmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQog
ICAgICAgICAgICAgbV9uYW1lZFVzZWRSZWdzID0gUmVnaXN0ZXJTZXQoKTsKICAgICAgICAgICAg
IG1fbmFtZWREZWZkUmVncyA9IFJlZ2lzdGVyU2V0KCk7CiAKKyAgICAgICAgICAgIGJvb2wgbmVl
ZHNUb0dlbmVyYXRlID0gKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGNvbnNpZGVyIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBhbHNv
IGVsaWRlIE1vdjMycworICAgICAgICAgICAgICAgIGlmICghKGluc3Qua2luZC5vcGNvZGUgPT0g
TW92ZSB8fCBpbnN0LmtpbmQub3Bjb2RlID09IE1vdmVEb3VibGUpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0LmFyZ3Muc2l6
ZSgpID49IDIpOworICAgICAgICAgICAgICAgIEFyZyBzb3VyY2UgPSBpbnN0LmFyZ3NbMF07Cisg
ICAgICAgICAgICAgICAgQXJnIGRlc3QgPSBpbnN0LmFyZ3NbMV07CisgICAgICAgICAgICAgICAg
aWYgKCFzb3VyY2UuaXNUbXAoKSB8fCAhZGVzdC5pc1RtcCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCB0cmFj
ayB3aGVyZSB0aGUgbGFzdCB1c2Ugb2YgYSByZWcgaXMgZ2xvYmFsbHkgc28gd2UgZG9uJ3Qga25v
dyB3aGVyZSB3ZSBjYW4ndCBlbGlkZSB0aGVtLgorICAgICAgICAgICAgICAgIEFTU0VSVChzb3Vy
Y2UuaXNSZWcoKSB8fCBtX2xpdmVSYW5nZUVuZFtzb3VyY2UudG1wKCldID49IG1fZ2xvYmFsSW5z
dEluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzUmVnKCkgfHwgbV9saXZlUmFu
Z2VFbmRbc291cmNlLnRtcCgpXSAhPSBtX2dsb2JhbEluc3RJbmRleCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBSZWcgc291cmNlUmVnID0gbV9t
YXBbc291cmNlLnRtcCgpXS5yZWc7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlz
IG5vdCBhbHJlYWR5IG1hdGVyaWFsaXplZCBpbnRvIGEgcmVnaXN0ZXIgd2UgbWF5IHN0aWxsIG1v
dmUgaXQgaW50byBvbmUgc28gbGV0IHRoZSBub3JtYWwgZ2VuZXJhdGlvbiBjb2RlIHJ1bi4KKyAg
ICAgICAgICAgICAgICBpZiAoIXNvdXJjZVJlZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QWxsb2NhdGlvbi0+YXQo
c291cmNlUmVnKSA9PSBzb3VyY2UudG1wKCkpOworCisgICAgICAgICAgICAgICAgaWYgKGRlc3Qu
aXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc3QucmVnKCkgIT0gc291cmNl
UmVnOworCisgICAgICAgICAgICAgICAgaWYgKFJlZyBvbGRSZWcgPSBtX21hcFtkZXN0LnRtcCgp
XS5yZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEFsbG9jYXRpb24t
PmF0KG9sZFJlZykgPT0gZGVzdC50bXAoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEFsbG9jYXRpb24tPmF0KG9sZFJlZykgPSBUbXAoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChzb3VyY2VSZWcpID0gZGVzdC50
bXAoKTsKKyAgICAgICAgICAgICAgICBtX21hcFtzb3VyY2UudG1wKCldLnJlZyA9IFJlZygpOwor
ICAgICAgICAgICAgICAgIG1fbWFwW2Rlc3QudG1wKCldLnJlZyA9IHNvdXJjZVJlZzsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9KSgpOworCiAgICAgICAgICAg
ICBpbnN0LmZvckVhY2hBcmcoWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNUbXAoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNDgyLDcgKzUxOSw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0
ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICBhbGxv
Y05hbWVkKG1fbmFtZWRVc2VkUmVncywgZmFsc2UpOyAvLyBNdXN0IGNvbWUgYmVmb3JlIHRoZSBk
ZWZkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtYXkgdXNlIGFuZCBkZWYgdGhlIHNhbWUgcmVnaXN0ZXIu
CiAgICAgICAgICAgICBhbGxvY05hbWVkKG1fbmFtZWREZWZkUmVncywgdHJ1ZSk7CiAKLSAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChuZWVkc1RvR2VuZXJhdGUpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFsbG9jYXRlID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PFRtcCosIDg+IHVzZXNUb0FsbG9jOwogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VG1wKiwg
OD4gZGVmc1RvQWxsb2M7CkBAIC02MDUsNyArNjQyLDkgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCFpbnN0LmlzVGVybWluYWwoKSkgewotICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBqdW1wID0gaW5zdC5nZW5lcmF0ZSgqbV9qaXQsIGNvbnRleHQp
OworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wOworICAgICAgICAgICAg
ICAgIGlmIChuZWVkc1RvR2VuZXJhdGUpCisgICAgICAgICAgICAgICAgICAgIGp1bXAgPSBpbnN0
LmdlbmVyYXRlKCptX2ppdCwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChqdW1wLCAhanVtcC5pc1NldCgpKTsKIAogICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6
IGNsb2JiZXJlZFJlZ2lzdGVycykgewpAQCAtNjE2LDcgKzY1NSw3IEBAIHZvaWQgR2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAg
ICAgICAgICAgICAgIG1fbWFwW3RtcF0ucmVnID0gUmVnKCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBib29sIG5lZWRzVG9HZW5lcmF0
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5lZWRzVG9HZW5lcmF0ZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gSnVtcCAmJiBibG9jay0+c3VjY2Vz
c29yQmxvY2soMCkgPT0gbV9jb2RlLmZpbmROZXh0QmxvY2soYmxvY2spKQogICAgICAgICAgICAg
ICAgICAgICBuZWVkc1RvR2VuZXJhdGUgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckNvZGUuaAppbmRleCA2MTQ5YzlhYTA4YzMxYmZmYTEwYWZiNmIwMzFkMDdjOTFiZjA3
Njg1Li42YjZmNjVjMDRhOWMyYjYzYzAzNDI3YjA2NjVmNGFhZTExYmQ4MTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkFpclRtcC5oIgogI2luY2x1ZGUgIkIzU3BhcnNl
Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBWYWx1ZS5oIgogI2luY2x1ZGUgIkND
YWxsSGVscGVycy5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVk
ZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTQzLDYgKzQ0LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCiBjbGFzcyBQcm9jZWR1cmU7CitjbGFzcyBQYXRjaHBvaW50VmFsdWU7
CiAKICNpZiBBU1NFUlRfRElTQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJ
TgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxs
ZWVTYXZlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxl
ZVNhdmVzLmNwcAppbmRleCA1NDdiYjZlZDUyNjU1YjA0ZTY3NWVhN2U5MTgxYTk2MGM3NGI3Y2Q4
Li5iZTE0M2MyNzEyZTBhOWU2MTc5YjNmNzQyYjk3YTY1YzA1YWIzZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcApA
QCAtNDYsOCArNDYsMTAgQEAgdm9pZCBoYW5kbGVDYWxsZWVTYXZlcyhDb2RlJiBjb2RlKQogICAg
ICAgICAgICAgICAgICAgICB1c2VkQ2FsbGVlU2F2ZXMuc2V0KHRtcC5yZWcoKSk7CiAgICAgICAg
ICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNo
KQorICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gUGF0Y2gpIHsKICAgICAgICAg
ICAgICAgICB1c2VkQ2FsbGVlU2F2ZXMubWVyZ2UoaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MoKSk7
CisgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLm1lcmdlKGluc3QuZXh0cmFFYXJseUNs
b2JiZXJlZFJlZ3MoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4IDNkY2EyOTY3ODhiMDAxMDY4
ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkuLmJiY2ViMmQ1NzM3M2U1MDUwYmEzZDFkODY3NDQyOGRi
NzQ3ZjUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFp
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAt
MzgsOCArMzgsMTAgQEAKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcm9i
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJQdXJlTmFOLmgiCiAjaW5jbHVkZSA8Y21hdGg+CisjaW5j
bHVkZSA8cmVnZXg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KQEAgLTIwNjMsNiArMjA2NSwxMDEgQEAgdm9p
ZCB0ZXN0TGVhMzIoKQogICAgIENIRUNLKHIgPT0gYSArIGIpOwogfQogCitpbmxpbmUgVmVjdG9y
PFN0cmluZz4gbWF0Y2hBbGwoY29uc3QgQ1N0cmluZyYgc291cmNlLCBzdGQ6OnJlZ2V4IHJlZ2V4
KQoreworICAgIFZlY3RvcjxTdHJpbmc+IG1hdGNoZXM7CisgICAgc3RkOjpzbWF0Y2ggbWF0Y2g7
CisgICAgZm9yIChzdGQ6OnN0cmluZyBzdHIgPSBzb3VyY2UuZGF0YSgpOyBzdGQ6OnJlZ2V4X3Nl
YXJjaChzdHIsIG1hdGNoLCByZWdleCk7KSB7CisgICAgICAgIEFTU0VSVChtYXRjaC5zaXplKCkg
PT0gMSk7CisgICAgICAgIHN0ciA9IG1hdGNoLnN1ZmZpeCgpOworICAgICAgICBtYXRjaGVzLmFw
cGVuZChtYXRjaFswXS5zdHIoKS5jX3N0cigpKTsKKyAgICB9CisgICAgcmV0dXJuIG1hdGNoZXM7
Cit9CisKK3ZvaWQgdGVzdEVsaWRlU2ltcGxlTW92ZSgpCit7CisgICAgZm9yICh1bnNpZ25lZCB0
bXBDb3VudCA9IDE7IHRtcENvdW50IDwgMTAwOyB0bXBDb3VudCsrKSB7CisgICAgICAgIEIzOjpQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQ29kZSYgY29kZSA9IHByb2MuY29kZSgpOworCisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVG1wIHRt
cCA9IGNvZGUubmV3VG1wKEIzOjpHUCk7CisgICAgICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxs
cHRyLCBUbXAoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdG1wKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRtcENvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFRtcCBuZXdUbXAg
PSBjb2RlLm5ld1RtcChCMzo6R1ApOworICAgICAgICAgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51
bGxwdHIsIHRtcCwgbmV3VG1wKTsKKyAgICAgICAgICAgIHRtcCA9IG5ld1RtcDsKKyAgICAgICAg
fQorICAgICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgdG1wLCBUbXAoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kKFJldDMyLCBudWxscHRyLCBU
bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKworICAgICAgICBhdXRvIGNvbXBpbGF0aW9u
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgQ1N0cmluZyBkaXNhc3NlbWJseSA9IGNvbXBpbGF0
aW9uLT5kaXNhc3NlbWJseSgpOworICAgICAgICBzdGQ6OnJlZ2V4IGZpbmRSUk1vdmUoaXNBUk02
NCgpID8gIm1vdiByXFxkKywgclxcZCtcXG4iIDogIm1vdiAlXFx3KywgJVxcdytcXG4iKTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtYXRjaEFsbChkaXNhc3NlbWJseSwgZmluZFJSTW92ZSk7Cisg
ICAgICAgIC8vIHNwIC0+IGZwOyBhcmcwIC0+IHJldDA7IGZwIC0+IHNwCisgICAgICAgIC8vIGZw
IC0+IHNwIG9ubHkgaGFwcGVucyBpbiBPMCBiZWNhdXNlIHdlIGRvbid0IGFjdHVhbGx5IG5lZWQg
dG8gbW92ZSB0aGUgc3RhY2sgaW4gZ2VuZXJhbC4KKyAgICAgICAgQ0hFQ0socmVzdWx0LnNpemUo
KSA9PSAyICsgIU9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpOworICAgIH0KK30KKwordm9p
ZCB0ZXN0RWxpZGVIYW5kbGVzRWFybHlDbG9iYmVyKCkKK3sKKyAgICBCMzo6UHJvY2VkdXJlIHBy
b2M7CisgICAgQ29kZSYgY29kZSA9IHByb2MuY29kZSgpOworCisgICAgQmFzaWNCbG9jayogcm9v
dCA9IGNvZGUuYWRkQmxvY2soKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIHRtcENvdW50ID0gUmVn
aXN0ZXJTZXQ6OmFsbEdQUnMoKS5udW1iZXJPZlNldFJlZ2lzdGVycygpICogMjsKKyAgICBWZWN0
b3I8VG1wPiB0bXBzKHRtcENvdW50KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG1w
Q291bnQ7ICsraSkgeworICAgICAgICB0bXBzW2ldID0gY29kZS5uZXdUbXAoQjM6OkdQKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6aW1tKGkpLCB0bXBzW2ldKTsK
KyAgICB9CisKKyAgICBSZWdpc3RlclNldCByZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsR1BS
cygpOworICAgIHJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJl
UmVnaXN0ZXJzKCkpOworICAgIHJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpKTsKKyAgICBSZWcgZmlyc3RDYWxsZWVTYXZlOworICAgIFJlZyBsYXN0Q2FsbGVl
U2F2ZTsKKyAgICBhdXRvKiBwYXRjaCA9IHByb2MuYWRkPEIzOjpQYXRjaHBvaW50VmFsdWU+KEIz
OjpJbnQzMiwgQjM6Ok9yaWdpbigpKTsKKyAgICBwYXRjaC0+Y2xvYmJlckVhcmx5KHJlZ2lzdGVy
cyk7CisgICAgZm9yIChSZWcgcmVnIDogcmVnaXN0ZXJzKSB7CisgICAgICAgIGlmICghZmlyc3RD
YWxsZWVTYXZlKQorICAgICAgICAgICAgZmlyc3RDYWxsZWVTYXZlID0gcmVnOworICAgICAgICBs
YXN0Q2FsbGVlU2F2ZSA9IHJlZzsKKyAgICB9CisgICAgQVNTRVJUKGZpcnN0Q2FsbGVlU2F2ZSAh
PSBsYXN0Q2FsbGVlU2F2ZSk7CisgICAgcGF0Y2gtPmVhcmx5Q2xvYmJlcmVkKCkuY2xlYXIoZmly
c3RDYWxsZWVTYXZlKTsKKyAgICBwYXRjaC0+cmVzdWx0Q29uc3RyYWludHMuYXBwZW5kKHsgQjM6
OlZhbHVlUmVwOjpyZWcoZmlyc3RDYWxsZWVTYXZlKSB9KTsKKyAgICBwYXRjaC0+ZWFybHlDbG9i
YmVyZWQoKS5jbGVhcihsYXN0Q2FsbGVlU2F2ZSk7CisgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQobGFzdENhbGxlZVNhdmUpKTsKKworICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVnaXN0ZXJzKQorICAgICAgICAgICAgICAgIGNv
bnRleHQuZ3ByKHJlZy5ncHIoKSkgPSAwOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIElu
c3QgaW5zdChQYXRjaCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChjb2RlLmFkZFNwZWNpYWwoV1RGOjpt
YWtlVW5pcXVlPEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKSkpOworICAgIGluc3QuYXJn
cy5hcHBlbmQoVG1wKGZpcnN0Q2FsbGVlU2F2ZSkpOworICAgIHJvb3QtPmFwcGVuZEluc3QoV1RG
TW92ZShpbnN0KSk7CisKKyAgICBUbXAgcmVzdWx0ID0gY29kZS5uZXdUbXAoQjM6OkdQKTsKKyAg
ICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgdG1wc1swXSwgcmVzdWx0KTsKKyAgICBmb3Ig
KFRtcCB0bXAgOiB0bXBzKQorICAgICAgICByb290LT5hcHBlbmQoQWRkMzIsIG51bGxwdHIsIHRt
cCwgcmVzdWx0KTsKKworICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCByZXN1bHQsIFRt
cChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgIHJvb3QtPmFwcGVuZChSZXQzMiwgbnVs
bHB0ciwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CisKKyAgICBhdXRvIHJ1blJlc3Vs
dCA9IGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MpOworICAgIENIRUNLKHJ1blJlc3VsdCA9
PSAodG1wQ291bnQgKiAodG1wQ291bnQgLSAxKSkgLyAyKTsKK30KKwogI2RlZmluZSBQUkVGSVgg
Ik8iLCBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpLCAiOiAiCiAKICNkZWZpbmUgUlVOKHRl
c3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMTUxLDYgKzIy
NDgsOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMZWEzMigp
KTsKICAgICBSVU4odGVzdExlYTY0KCkpOwogCisgICAgUlVOKHRlc3RFbGlkZVNpbXBsZU1vdmUo
KSk7CisgICAgUlVOKHRlc3RFbGlkZUhhbmRsZXNFYXJseUNsb2JiZXIoKSk7CisKICAgICBpZiAo
dGFza3MuaXNFbXB0eSgpKQogICAgICAgICB1c2FnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAzN2VlZmY0ZTQ0NTMx
NWU4MGNlZmRkYzUzODAwODZiZjMxNGFlOWJhLi5kYzFmOTA1OTdjZGQ5YzYwYzg3ZjZiMjMzODA1
N2E2NjBmMDEwYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAKQEAgLTMwMywxNyArMzAzLDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKGNv
bnN0IEV4cHJlc3Npb25UeXBlJiB0eXBlZFRtcCkKLSAgICB7Ci0gICAgICAgIFRtcCB0bXAgPSB0
eXBlZFRtcC50bXAoKTsKLSAgICAgICAgaWYgKCF0bXApCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGlmICh0bXAuaXNHUCgpKQotICAgICAgICAgICAgbV9mcmVlR1BzLmFwcGVuZCh0bXAp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ZyZWVGUHMuYXBwZW5kKHRtcCk7Ci0gICAg
fQotCiAgICAgY29uc3QgQmFnPEIzOjpQYXRjaHBvaW50VmFsdWUqPiYgcGF0Y2hwb2ludHMoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcGF0Y2hwb2ludHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2Q4ZGY4ZTY4
NzEwMjEzMWI2NGMxYTZkNjVlNmZjY2MxMDNiNWU3NS4uOGMwODRmYjRjZTRiNDYwNmRlMmM5M2Ji
NjcyNjA3NzNhOWE0YjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjQ3LDggKzI0Nyw2IEBAIHB1YmxpYzoKICAgICBWYWx1
ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBX
VEY6Om51bGxvcHQpOwogICAgIHZvaWQgaW5zZXJ0Q29uc3RhbnRzKCk7CiAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KIHByaXZhdGU6CiAgICAg
dm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzJiwgRXhjZXB0aW9uVHlwZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggNzJmZGFmZmY5NzM5MjM2Y2U1ZTJkMGE2OGRlODE4YzdkMDM4Yjg1Zi4uMWE0ZTRlNDZlYjAy
ZDQwZDBjMTNhMWMwODY4OTZmNTE4NjBiMmQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToK
ICNkZWZpbmUgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQp
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0eSBz
dGFjayBpbiAiIHdoYXQpOyBcCiAgICAgICAgIHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRh
a2VMYXN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24uYXBwZW5kKHJlc3VsdCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAK
ICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC05NSw4ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgT3BU
eXBlIG1fY3VycmVudE9wY29kZTsKICAgICBzaXplX3QgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdP
ZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDg+IG1fdG9LaWxsQWZ0
ZXJFeHByZXNzaW9uOwotCiAgICAgdW5zaWduZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX2xvb3BJbmRleCB7IDAgfTsKIH07CkBAIC0xNDUsOCArMTQyLDYgQEAg
YXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3Vs
dAogICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZCh7IG1fY29udGV4dC5jcmVhdGVTdGFjaygpLCBt
X2NvbnRleHQuYWRkVG9wTGV2ZWwobV9zaWduYXR1cmUucmV0dXJuVHlwZSgpKSB9KTsKICAgICB1
aW50OF90IG9wOwogICAgIHdoaWxlIChtX2NvbnRyb2xTdGFjay5zaXplKCkpIHsKLSAgICAgICAg
QVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLmlzRW1wdHkoKSk7Ci0KICAgICAgICAgbV9j
dXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgPSBtX29mZnNldDsKICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VVSW50OChvcCksICJjYW4ndCBkZWNvZGUgb3Bjb2RlIik7CiAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzVmFsaWRPcFR5cGUob3ApLCAiaW52YWxpZCBvcGNv
ZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1Nyw2IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMocGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4cHJlc3Np
b24oKSk7Ci0gICAgICAgICAgICB3aGlsZSAobV90b0tpbGxBZnRlckV4cHJlc3Npb24uc2l6ZSgp
KQotICAgICAgICAgICAgICAgIG1fY29udGV4dC5kaWRLaWxsKG1fdG9LaWxsQWZ0ZXJFeHByZXNz
aW9uLnRha2VMYXN0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01ODMsOCArNTc2LDcgQEAg
YXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlh
bFJlc3VsdAogCiAgICAgY2FzZSBEcm9wOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsK
LSAgICAgICAgYXV0byBleHByZXNzaW9uID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsK
LSAgICAgICAgbV90b0tpbGxBZnRlckV4cHJlc3Npb24uYXBwZW5kKGV4cHJlc3Npb24pOworICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlk
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5k
ZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZmMGEzZTM5N2QwYTljNWUzNzE0Yy4uMmRiNzRhNDNmNGQz
NDIwNTVhNjQ4N2MwZDhlOGU5MzQ2YThmN2FiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0xNTQsOCArMTU0LDYgQEAgcHVibGljOgogICAgIFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KICAgICBi
b29sIGhhc01lbW9yeSgpIGNvbnN0IHsgcmV0dXJuICEhbV9tb2R1bGUubWVtb3J5OyB9CiAKICAg
ICBWYWxpZGF0ZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378936</attachid>
            <date>2019-09-16 21:30:59 -0700</date>
            <delta_ts>2019-09-17 17:12:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190916213057.patch</filename>
            <type>text/plain</type>
            <size>16435</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li4zODNkYmM4NDFmYzcwYTQ2
YjViZTBlZjJlZTllZTlhMjNkZWYyMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOS0wOS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB3ZSBkaWRu
J3QgYXNrIFBhdGNocG9pbnRzCisgICAgICAgIGZvciBlYXJseSBjbG9iYmVyIHJlZ2lzdGVycyB3
aGVuIGRldGVybWluaW5nIHdoYXQgY2FsbGVlIHNhdmVzCisgICAgICAgIHdlcmUgdXNlZCBieSB0
aGUgcHJvZ3JhbS4KKworICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0
YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2Rl
Lmg6CisgICAgICAgICogYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aGFuZGxlQ2FsbGVlU2F2ZXMpOgorICAgICAgICAqIGIzL2Fpci90ZXN0
YWlyLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpkaWRLaWxsKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6ZGlkS2lsbCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlQm9keSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmRpZEtpbGwpOiBEZWxldGVkLgorCiAyMDE5LTA5LTEw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gMzJi
aXQgYml0d2lkZSBvcGVyYXRpb24gd2l0aCBhbGwtb25lICgtMSkgaXMgd3JvbmcgaW4gQjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3Rl
cnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCmluZGV4
IGJiNWNmNmQ0YjgwZGFhODk0YWJlN2NkNzgzYTAwZmQ4MjUwYzgwNDUuLmFhNWFkYTM0YzVjMGQ0
NWY0ZTVmODM2OTdhODE3NGUwMjczM2RhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVy
c0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcApAQCAtNDIxLDYgKzQyMSw0MyBAQCB2b2lkIEdl
bmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQog
ICAgICAgICAgICAgbV9uYW1lZFVzZWRSZWdzID0gUmVnaXN0ZXJTZXQoKTsKICAgICAgICAgICAg
IG1fbmFtZWREZWZkUmVncyA9IFJlZ2lzdGVyU2V0KCk7CiAKKyAgICAgICAgICAgIGJvb2wgbmVl
ZHNUb0dlbmVyYXRlID0gKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGNvbnNpZGVyIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBhbHNv
IGVsaWRlIE1vdjMycworICAgICAgICAgICAgICAgIGlmICghKGluc3Qua2luZC5vcGNvZGUgPT0g
TW92ZSB8fCBpbnN0LmtpbmQub3Bjb2RlID09IE1vdmVEb3VibGUpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0LmFyZ3Muc2l6
ZSgpID49IDIpOworICAgICAgICAgICAgICAgIEFyZyBzb3VyY2UgPSBpbnN0LmFyZ3NbMF07Cisg
ICAgICAgICAgICAgICAgQXJnIGRlc3QgPSBpbnN0LmFyZ3NbMV07CisgICAgICAgICAgICAgICAg
aWYgKCFzb3VyY2UuaXNUbXAoKSB8fCAhZGVzdC5pc1RtcCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCB0cmFj
ayB3aGVyZSB0aGUgbGFzdCB1c2Ugb2YgYSByZWcgaXMgZ2xvYmFsbHkgc28gd2UgZG9uJ3Qga25v
dyB3aGVyZSB3ZSBjYW4ndCBlbGlkZSB0aGVtLgorICAgICAgICAgICAgICAgIEFTU0VSVChzb3Vy
Y2UuaXNSZWcoKSB8fCBtX2xpdmVSYW5nZUVuZFtzb3VyY2UudG1wKCldID49IG1fZ2xvYmFsSW5z
dEluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzUmVnKCkgfHwgbV9saXZlUmFu
Z2VFbmRbc291cmNlLnRtcCgpXSAhPSBtX2dsb2JhbEluc3RJbmRleCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBSZWcgc291cmNlUmVnID0gbV9t
YXBbc291cmNlLnRtcCgpXS5yZWc7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlz
IG5vdCBhbHJlYWR5IG1hdGVyaWFsaXplZCBpbnRvIGEgcmVnaXN0ZXIgd2UgbWF5IHN0aWxsIG1v
dmUgaXQgaW50byBvbmUgc28gbGV0IHRoZSBub3JtYWwgZ2VuZXJhdGlvbiBjb2RlIHJ1bi4KKyAg
ICAgICAgICAgICAgICBpZiAoIXNvdXJjZVJlZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QWxsb2NhdGlvbi0+YXQo
c291cmNlUmVnKSA9PSBzb3VyY2UudG1wKCkpOworCisgICAgICAgICAgICAgICAgaWYgKGRlc3Qu
aXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc3QucmVnKCkgIT0gc291cmNl
UmVnOworCisgICAgICAgICAgICAgICAgaWYgKFJlZyBvbGRSZWcgPSBtX21hcFtkZXN0LnRtcCgp
XS5yZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEFsbG9jYXRpb24t
PmF0KG9sZFJlZykgPT0gZGVzdC50bXAoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEFsbG9jYXRpb24tPmF0KG9sZFJlZykgPSBUbXAoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChzb3VyY2VSZWcpID0gZGVzdC50
bXAoKTsKKyAgICAgICAgICAgICAgICBtX21hcFtzb3VyY2UudG1wKCldLnJlZyA9IFJlZygpOwor
ICAgICAgICAgICAgICAgIG1fbWFwW2Rlc3QudG1wKCldLnJlZyA9IHNvdXJjZVJlZzsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9KSgpOworCiAgICAgICAgICAg
ICBpbnN0LmZvckVhY2hBcmcoWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNUbXAoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNDgyLDcgKzUxOSw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0
ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICBhbGxv
Y05hbWVkKG1fbmFtZWRVc2VkUmVncywgZmFsc2UpOyAvLyBNdXN0IGNvbWUgYmVmb3JlIHRoZSBk
ZWZkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtYXkgdXNlIGFuZCBkZWYgdGhlIHNhbWUgcmVnaXN0ZXIu
CiAgICAgICAgICAgICBhbGxvY05hbWVkKG1fbmFtZWREZWZkUmVncywgdHJ1ZSk7CiAKLSAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChuZWVkc1RvR2VuZXJhdGUpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIHRyeUFsbG9jYXRlID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PFRtcCosIDg+IHVzZXNUb0FsbG9jOwogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VG1wKiwg
OD4gZGVmc1RvQWxsb2M7CkBAIC02MDUsNyArNjQyLDkgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCFpbnN0LmlzVGVybWluYWwoKSkgewotICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBqdW1wID0gaW5zdC5nZW5lcmF0ZSgqbV9qaXQsIGNvbnRleHQp
OworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wOworICAgICAgICAgICAg
ICAgIGlmIChuZWVkc1RvR2VuZXJhdGUpCisgICAgICAgICAgICAgICAgICAgIGp1bXAgPSBpbnN0
LmdlbmVyYXRlKCptX2ppdCwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChqdW1wLCAhanVtcC5pc1NldCgpKTsKIAogICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6
IGNsb2JiZXJlZFJlZ2lzdGVycykgewpAQCAtNjE2LDcgKzY1NSw3IEBAIHZvaWQgR2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAg
ICAgICAgICAgICAgIG1fbWFwW3RtcF0ucmVnID0gUmVnKCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBib29sIG5lZWRzVG9HZW5lcmF0
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5lZWRzVG9HZW5lcmF0ZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gSnVtcCAmJiBibG9jay0+c3VjY2Vz
c29yQmxvY2soMCkgPT0gbV9jb2RlLmZpbmROZXh0QmxvY2soYmxvY2spKQogICAgICAgICAgICAg
ICAgICAgICBuZWVkc1RvR2VuZXJhdGUgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcAppbmRleCA1NDdiYjZl
ZDUyNjU1YjA0ZTY3NWVhN2U5MTgxYTk2MGM3NGI3Y2Q4Li4xMWU4NGM0MGFmZjM0NTgzMzU1ODhk
YzE3NDkxNjNmNzQzMWVjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDggKzQ2LDEwIEBAIHZvaWQg
aGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgdXNlZENh
bGxlZVNhdmVzLnNldCh0bXAucmVnKCkpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAg
ICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQYXRjaCkKKyAgICAgICAgICAgIGlmIChpbnN0
LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7CiAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVz
Lm1lcmdlKGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCkpOworICAgICAgICAgICAgICAgIHVzZWRD
YWxsZWVTYXZlcy5tZXJnZShpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90
ZXN0YWlyLmNwcAppbmRleCAzZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5
Li5lNmYzMjMyMjZmNGI4ZDJiYjlmNjNhNjIyNjRjMDIxOTA5MGY3Mjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw4ICszOCwxMCBAQAogI2luY2x1
ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUg
IlB1cmVOYU4uaCIKICNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxyZWdleD4KICNpbmNsdWRl
IDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZD
b3Jlcy5oPgpAQCAtMjA2Myw2ICsyMDY1LDEwMSBAQCB2b2lkIHRlc3RMZWEzMigpCiAgICAgQ0hF
Q0sociA9PSBhICsgYik7CiB9CiAKK2lubGluZSBWZWN0b3I8U3RyaW5nPiBtYXRjaEFsbChjb25z
dCBDU3RyaW5nJiBzb3VyY2UsIHN0ZDo6cmVnZXggcmVnZXgpCit7CisgICAgVmVjdG9yPFN0cmlu
Zz4gbWF0Y2hlczsKKyAgICBzdGQ6OnNtYXRjaCBtYXRjaDsKKyAgICBmb3IgKHN0ZDo6c3RyaW5n
IHN0ciA9IHNvdXJjZS5kYXRhKCk7IHN0ZDo6cmVnZXhfc2VhcmNoKHN0ciwgbWF0Y2gsIHJlZ2V4
KTspIHsKKyAgICAgICAgQVNTRVJUKG1hdGNoLnNpemUoKSA9PSAxKTsKKyAgICAgICAgc3RyID0g
bWF0Y2guc3VmZml4KCk7CisgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoWzBdLnN0cigpLmNf
c3RyKCkpOworICAgIH0KKyAgICByZXR1cm4gbWF0Y2hlczsKK30KKwordm9pZCB0ZXN0RWxpZGVT
aW1wbGVNb3ZlKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIHRtcENvdW50ID0gMTsgdG1wQ291bnQg
PCAxMDA7IHRtcENvdW50KyspIHsKKyAgICAgICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgICAg
ICBDb2RlJiBjb2RlID0gcHJvYy5jb2RlKCk7CisKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IGNvZGUuYWRkQmxvY2soKTsKKworICAgICAgICBUbXAgdG1wID0gY29kZS5uZXdUbXAoQjM6OkdQ
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIsIFRtcChHUFJJbmZvOjphcmd1
bWVudEdQUjApLCB0bXApOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG1wQ291
bnQ7IGkrKykgeworICAgICAgICAgICAgVG1wIG5ld1RtcCA9IGNvZGUubmV3VG1wKEIzOjpHUCk7
CisgICAgICAgICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgdG1wLCBuZXdUbXApOwor
ICAgICAgICAgICAgdG1wID0gbmV3VG1wOworICAgICAgICB9CisgICAgICAgIHJvb3QtPmFwcGVu
ZChNb3ZlLCBudWxscHRyLCB0bXAsIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAg
ICAgICByb290LT5hcHBlbmQoUmV0MzIsIG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUikpOworCisgICAgICAgIGF1dG8gY29tcGlsYXRpb24gPSBjb21waWxlKHByb2MpOworICAg
ICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5ID0gY29tcGlsYXRpb24tPmRpc2Fzc2VtYmx5KCk7Cisg
ICAgICAgIHN0ZDo6cmVnZXggZmluZFJSTW92ZShpc0FSTTY0KCkgPyAibW92IHJcXGQrLCByXFxk
K1xcbiIgOiAibW92ICVcXHcrLCAlXFx3K1xcbiIpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1h
dGNoQWxsKGRpc2Fzc2VtYmx5LCBmaW5kUlJNb3ZlKTsKKyAgICAgICAgLy8gc3AgLT4gZnA7IGFy
ZzAgLT4gcmV0MDsgZnAgLT4gc3AKKyAgICAgICAgLy8gZnAgLT4gc3Agb25seSBoYXBwZW5zIGlu
IE8wIGJlY2F1c2Ugd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBtb3ZlIHRoZSBzdGFjayBpbiBn
ZW5lcmFsLgorICAgICAgICBDSEVDSyhyZXN1bHQuc2l6ZSgpID09IDIgKyAhT3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RFbGlkZUhhbmRsZXNFYXJs
eUNsb2JiZXIoKQoreworICAgIEIzOjpQcm9jZWR1cmUgcHJvYzsKKyAgICBDb2RlJiBjb2RlID0g
cHJvYy5jb2RlKCk7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwor
CisgICAgY29uc3QgdW5zaWduZWQgdG1wQ291bnQgPSBSZWdpc3RlclNldDo6YWxsR1BScygpLm51
bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiAyOworICAgIFZlY3RvcjxUbXA+IHRtcHModG1wQ291bnQp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0bXBDb3VudDsgKytpKSB7CisgICAgICAg
IHRtcHNbaV0gPSBjb2RlLm5ld1RtcChCMzo6R1ApOworICAgICAgICByb290LT5hcHBlbmQoTW92
ZSwgbnVsbHB0ciwgQXJnOjppbW0oaSksIHRtcHNbaV0pOworICAgIH0KKworICAgIFJlZ2lzdGVy
U2V0IHJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgcmVnaXN0ZXJzLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgcmVn
aXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIFJlZyBm
aXJzdENhbGxlZVNhdmU7CisgICAgUmVnIGxhc3RDYWxsZWVTYXZlOworICAgIGF1dG8qIHBhdGNo
ID0gcHJvYy5hZGQ8QjM6OlBhdGNocG9pbnRWYWx1ZT4oQjM6OkludDMyLCBCMzo6T3JpZ2luKCkp
OworICAgIHBhdGNoLT5jbG9iYmVyRWFybHkocmVnaXN0ZXJzKTsKKyAgICBmb3IgKFJlZyByZWcg
OiByZWdpc3RlcnMpIHsKKyAgICAgICAgaWYgKCFmaXJzdENhbGxlZVNhdmUpCisgICAgICAgICAg
ICBmaXJzdENhbGxlZVNhdmUgPSByZWc7CisgICAgICAgIGxhc3RDYWxsZWVTYXZlID0gcmVnOwor
ICAgIH0KKyAgICBBU1NFUlQoZmlyc3RDYWxsZWVTYXZlICE9IGxhc3RDYWxsZWVTYXZlKTsKKyAg
ICBwYXRjaC0+ZWFybHlDbG9iYmVyZWQoKS5jbGVhcihmaXJzdENhbGxlZVNhdmUpOworICAgIHBh
dGNoLT5yZXN1bHRDb25zdHJhaW50cy5hcHBlbmQoeyBCMzo6VmFsdWVSZXA6OnJlZyhmaXJzdENh
bGxlZVNhdmUpIH0pOworICAgIHBhdGNoLT5lYXJseUNsb2JiZXJlZCgpLmNsZWFyKGxhc3RDYWxs
ZWVTYXZlKTsKKyAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldChsYXN0Q2FsbGVlU2F2ZSkp
OworCisgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBKU0M6OkIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5wcm9i
ZShbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBmb3IgKFJlZyBy
ZWcgOiByZWdpc3RlcnMpCisgICAgICAgICAgICAgICAgY29udGV4dC5ncHIocmVnLmdwcigpKSA9
IDA7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgSW5zdCBpbnN0KFBhdGNoLCBwYXRjaCwg
QXJnOjpzcGVjaWFsKGNvZGUuYWRkU3BlY2lhbChXVEY6Om1ha2VVbmlxdWU8SlNDOjpCMzo6UGF0
Y2hwb2ludFNwZWNpYWw+KCkpKSk7CisgICAgaW5zdC5hcmdzLmFwcGVuZChUbXAoZmlyc3RDYWxs
ZWVTYXZlKSk7CisgICAgcm9vdC0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKworICAgIFRt
cCByZXN1bHQgPSBjb2RlLm5ld1RtcChCMzo6R1ApOworICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBu
dWxscHRyLCB0bXBzWzBdLCByZXN1bHQpOworICAgIGZvciAoVG1wIHRtcCA6IHRtcHMpCisgICAg
ICAgIHJvb3QtPmFwcGVuZChBZGQzMiwgbnVsbHB0ciwgdG1wLCByZXN1bHQpOworCisgICAgcm9v
dC0+YXBwZW5kKE1vdmUsIG51bGxwdHIsIHJlc3VsdCwgVG1wKEdQUkluZm86OnJldHVyblZhbHVl
R1BSKSk7CisgICAgcm9vdC0+YXBwZW5kKFJldDMyLCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpKTsKKworICAgIGF1dG8gcnVuUmVzdWx0ID0gY29tcGlsZUFuZFJ1bjx1aW50
MzJfdD4ocHJvYyk7CisgICAgQ0hFQ0socnVuUmVzdWx0ID09ICh0bXBDb3VudCAqICh0bXBDb3Vu
dCAtIDEpKSAvIDIpOworfQorCiAjZGVmaW5lIFBSRUZJWCAiTyIsIE9wdGlvbnM6OmRlZmF1bHRC
M09wdExldmVsKCksICI6ICIKIAogI2RlZmluZSBSVU4odGVzdCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKQEAgLTIxNTEsNiArMjI0OCw5IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdExlYTMyKCkpOwogICAgIFJVTih0ZXN0TGVhNjQo
KSk7CiAKKyAgICBSVU4odGVzdEVsaWRlU2ltcGxlTW92ZSgpKTsKKyAgICBSVU4odGVzdEVsaWRl
SGFuZGxlc0Vhcmx5Q2xvYmJlcigpKTsKKwogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHVzYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwCmluZGV4IDM3ZWVmZjRlNDQ1MzE1ZTgwY2VmZGRjNTM4MDA4NmJmMzE0
YWU5YmEuLmRjMWY5MDU5N2NkZDljNjBjODdmNmIyMzM4MDU3YTY2MGYwMTBhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAt
MzAzLDE3ICszMDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRpZEtpbGwoY29uc3QgRXhwcmVzc2lvblR5cGUmIHR5
cGVkVG1wKQotICAgIHsKLSAgICAgICAgVG1wIHRtcCA9IHR5cGVkVG1wLnRtcCgpOwotICAgICAg
ICBpZiAoIXRtcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHRtcC5pc0dQKCkp
Ci0gICAgICAgICAgICBtX2ZyZWVHUHMuYXBwZW5kKHRtcCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fZnJlZUZQcy5hcHBlbmQodG1wKTsKLSAgICB9Ci0KICAgICBjb25zdCBCYWc8QjM6
OlBhdGNocG9pbnRWYWx1ZSo+JiBwYXRjaHBvaW50cygpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9wYXRjaHBvaW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZDhkZjhlNjg3MTAyMTMxYjY0YzFhNmQ2NWU2ZmNj
YzEwM2I1ZTc1Li44YzA4NGZiNGNlNGI0NjA2ZGUyYzkzYmI2NzI2MDc3M2E5YTRiMTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBA
IC0yNDcsOCArMjQ3LDYgQEAgcHVibGljOgogICAgIFZhbHVlKiBjb25zdGFudChCMzo6VHlwZSwg
dWludDY0X3QgYml0cywgT3B0aW9uYWw8T3JpZ2luPiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBpbnNlcnRDb25zdGFudHMoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4
cHJlc3Npb25UeXBlKSB7IH0KLQogcHJpdmF0ZToKICAgICB2b2lkIGVtaXRFeGNlcHRpb25DaGVj
ayhDQ2FsbEhlbHBlcnMmLCBFeGNlcHRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCA3MmZkYWZmZjk3MzkyMzZjZTVl
MmQwYTY4ZGU4MThjN2QwMzhiODVmLi43NTk4M2VjNDc0ODllZWVmNjFiOTU4ZGM2NjU2MTcxYzdh
MjJlZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllfUE9Q
X0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lv
blN0YWNrLmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAg
ICAgICAgIHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV90b0tpbGxBZnRl
ckV4cHJlc3Npb24uYXBwZW5kKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+
CkBAIC05NSw4ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgT3BUeXBlIG1fY3VycmVudE9wY29kZTsK
ICAgICBzaXplX3QgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgeyAwIH07CiAKLSAgICBW
ZWN0b3I8RXhwcmVzc2lvblR5cGUsIDg+IG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uOwotCiAgICAg
dW5zaWduZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xvb3BJ
bmRleCB7IDAgfTsKIH07CkBAIC0xNDUsOCArMTQyLDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIG1fY29udHJvbFN0YWNr
LmFwcGVuZCh7IG1fY29udGV4dC5jcmVhdGVTdGFjaygpLCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwo
bV9zaWduYXR1cmUucmV0dXJuVHlwZSgpKSB9KTsKICAgICB1aW50OF90IG9wOwogICAgIHdoaWxl
IChtX2NvbnRyb2xTdGFjay5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJF
eHByZXNzaW9uLmlzRW1wdHkoKSk7Ci0KICAgICAgICAgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdP
ZmZzZXQgPSBtX29mZnNldDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50
OChvcCksICJjYW4ndCBkZWNvZGUgb3Bjb2RlIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIWlzVmFsaWRPcFR5cGUob3ApLCAiaW52YWxpZCBvcGNvZGUgIiwgb3ApOwpAQCAtMTYyLDgg
KzE1Nyw2IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VV
bnJlYWNoYWJsZUV4cHJlc3Npb24oKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICB3
aGlsZSAobV90b0tpbGxBZnRlckV4cHJlc3Npb24uc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1f
Y29udGV4dC5kaWRLaWxsKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLnRha2VMYXN0KCkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC01ODMsOCArNTc2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBE
cm9wOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNp
emUoKSwgImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgYXV0byBleHByZXNz
aW9uID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV90b0tpbGxBZnRl
ckV4cHJlc3Npb24uYXBwZW5kKGV4cHJlc3Npb24pOworICAgICAgICBtX2V4cHJlc3Npb25TdGFj
ay50YWtlTGFzdCgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2Iw
MTZmMGEzZTM5N2QwYTljNWUzNzE0Yy4uOTUyNWQ5NDI5YTVlYzhlMWVjM2IzNDdmZDdkNThiYjEy
YjgwOGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlk
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRL
aWxsKEV4cHJlc3Npb25UeXBlKSB7IH0KLQogICAgIGJvb2wgaGFzTWVtb3J5KCkgY29uc3QgeyBy
ZXR1cm4gISFtX21vZHVsZS5tZW1vcnk7IH0KIAogICAgIFZhbGlkYXRlKGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379008</attachid>
            <date>2019-09-17 17:12:39 -0700</date>
            <delta_ts>2019-09-17 17:31:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190917171238.patch</filename>
            <type>text/plain</type>
            <size>20150</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li40NGMwZmM0OTZiNGJjN2Nk
ZjEzNzhhMDhiOTI3YzE1MDFhYjUwNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOS0wOS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB3ZSBkaWRu
J3QgYXNrIFBhdGNocG9pbnRzCisgICAgICAgIGZvciBlYXJseSBjbG9iYmVyIHJlZ2lzdGVycyB3
aGVuIGRldGVybWluaW5nIHdoYXQgY2FsbGVlIHNhdmVzCisgICAgICAgIHdlcmUgdXNlZCBieSB0
aGUgcHJvZ3JhbS4KKworICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0
YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJCYXNp
Y0Jsb2NrLmg6CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuaDoKKyAgICAgICAgKiBiMy9haXIv
QWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpoYW5kbGVD
YWxsZWVTYXZlcyk6CisgICAgICAgICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIHdh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5l
cmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpkaWRLaWxsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlND
OjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCb2R5KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAg
ICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWxpZGF0
ZTo6ZGlkS2lsbCk6IERlbGV0ZWQuCisKIDIwMTktMDktMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSAzMmJpdCBiaXR3aWRlIG9wZXJhdGlvbiB3
aXRoIGFsbC1vbmUgKC0xKSBpcyB3cm9uZyBpbiBCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3Rl
cnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKaW5kZXggYmI1Y2Y2ZDRiODBkYWE4OTRhYmU3
Y2Q3ODNhMDBmZDgyNTBjODA0NS4uYmI3OTMwZDgzNTk4Mzk2ZjY0YzVjZGZmZGM0NzRiMGJjOGI3
NTE5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0
ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNv
ZGUuY3BwCkBAIC00MjEsNiArNDIxLDQzIEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lz
dGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICBtX25hbWVkVXNl
ZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogICAgICAgICAgICAgbV9uYW1lZERlZmRSZWdzID0gUmVn
aXN0ZXJTZXQoKTsKIAorICAgICAgICAgICAgYm9vbCBuZWVkc1RvR2VuZXJhdGUgPSAoWyZdICgp
IC0+IGJvb2wgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
dHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGFsc28gZWxpZGUgTW92MzJzCisgICAgICAg
ICAgICAgICAgaWYgKCEoaW5zdC5raW5kLm9wY29kZSA9PSBNb3ZlIHx8IGluc3Qua2luZC5vcGNv
ZGUgPT0gTW92ZURvdWJsZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgICAgICAgICAgQVNTRVJUKGluc3QuYXJncy5zaXplKCkgPj0gMik7CisgICAgICAgICAg
ICAgICAgQXJnIHNvdXJjZSA9IGluc3QuYXJnc1swXTsKKyAgICAgICAgICAgICAgICBBcmcgZGVz
dCA9IGluc3QuYXJnc1sxXTsKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5pc1RtcCgpIHx8
ICFkZXN0LmlzVG1wKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHRyYWNrIHdoZXJlIHRoZSBsYXN0IHVzZSBv
ZiBhIHJlZyBpcyBnbG9iYWxseSBzbyB3ZSBkb24ndCBrbm93IHdoZXJlIHdlIGNhbid0IGVsaWRl
IHRoZW0uCisgICAgICAgICAgICAgICAgQVNTRVJUKHNvdXJjZS5pc1JlZygpIHx8IG1fbGl2ZVJh
bmdlRW5kW3NvdXJjZS50bXAoKV0gPj0gbV9nbG9iYWxJbnN0SW5kZXgpOworICAgICAgICAgICAg
ICAgIGlmIChzb3VyY2UuaXNSZWcoKSB8fCBtX2xpdmVSYW5nZUVuZFtzb3VyY2UudG1wKCldICE9
IG1fZ2xvYmFsSW5zdEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIFJlZyBzb3VyY2VSZWcgPSBtX21hcFtzb3VyY2UudG1wKCldLnJlZzsK
KyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFscmVhZHkgbWF0ZXJpYWxp
emVkIGludG8gYSByZWdpc3RlciB3ZSBtYXkgc3RpbGwgbW92ZSBpdCBpbnRvIG9uZSBzbyBsZXQg
dGhlIG5vcm1hbCBnZW5lcmF0aW9uIGNvZGUgcnVuLgorICAgICAgICAgICAgICAgIGlmICghc291
cmNlUmVnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChzb3VyY2VSZWcpID09IHNvdXJjZS50
bXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc1JlZygpICYmIGRlc3QucmVnKCkg
IT0gc291cmNlUmVnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgIGlmIChSZWcgb2xkUmVnID0gbV9tYXBbZGVzdC50bXAoKV0ucmVnKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChvbGRSZWcpID09
IGRlc3QudG1wKCkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxvY2F0aW9uLT5h
dChvbGRSZWcpID0gVG1wKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
bV9jdXJyZW50QWxsb2NhdGlvbi0+YXQoc291cmNlUmVnKSA9IGRlc3QudG1wKCk7CisgICAgICAg
ICAgICAgICAgbV9tYXBbc291cmNlLnRtcCgpXS5yZWcgPSBSZWcoKTsKKyAgICAgICAgICAgICAg
ICBtX21hcFtkZXN0LnRtcCgpXS5yZWcgPSBzb3VyY2VSZWc7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfSkoKTsKKwogICAgICAgICAgICAgaW5zdC5mb3JFYWNo
QXJnKFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAg
ICAgICAgICAgIGlmICghYXJnLmlzVG1wKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQ4Miw3ICs1MTksNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6Omdl
bmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAgICAgYWxsb2NOYW1lZChtX25hbWVk
VXNlZFJlZ3MsIGZhbHNlKTsgLy8gTXVzdCBjb21lIGJlZm9yZSB0aGUgZGVmZCByZWdpc3RlcnMg
c2luY2Ugd2UgbWF5IHVzZSBhbmQgZGVmIHRoZSBzYW1lIHJlZ2lzdGVyLgogICAgICAgICAgICAg
YWxsb2NOYW1lZChtX25hbWVkRGVmZFJlZ3MsIHRydWUpOwogCi0gICAgICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobmVlZHNUb0dlbmVyYXRlKSB7CiAgICAgICAgICAgICAgICAgYXV0byB0cnlB
bGxvY2F0ZSA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxUbXAqLCA4PiB1c2Vz
VG9BbGxvYzsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFRtcCosIDg+IGRlZnNUb0FsbG9j
OwpAQCAtNjA1LDcgKzY0Miw5IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6
Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghaW5zdC5pc1Rlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAganVtcCA9IGluc3QuZ2VuZXJhdGUoKm1faml0LCBjb250ZXh0KTsKKyAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAganVtcDsKKyAgICAgICAgICAgICAgICBpZiAobmVlZHNU
b0dlbmVyYXRlKQorICAgICAgICAgICAgICAgICAgICBqdW1wID0gaW5zdC5nZW5lcmF0ZSgqbV9q
aXQsIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoanVtcCwgIWp1bXAu
aXNTZXQoKSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjbG9iYmVyZWRSZWdp
c3RlcnMpIHsKQEAgLTYxNiw3ICs2NTUsNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAgICAgICAgICAgICBt
X21hcFt0bXBdLnJlZyA9IFJlZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBuZWVkc1RvR2VuZXJhdGUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIEFTU0VSVChuZWVkc1RvR2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGlm
IChpbnN0LmtpbmQub3Bjb2RlID09IEp1bXAgJiYgYmxvY2stPnN1Y2Nlc3NvckJsb2NrKDApID09
IG1fY29kZS5maW5kTmV4dEJsb2NrKGJsb2NrKSkKICAgICAgICAgICAgICAgICAgICAgbmVlZHNU
b0dlbmVyYXRlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
YXNpY0Jsb2NrLmgKaW5kZXggMzc5YzYzNTA0MWE2MWIwYzZmMjg2ZDJjNmE4MjllMDkxMDdiZjli
Yy4uM2Y4MzVlMWFlOTA2N2M3NjVmOTcwNTVhMzYzMzJkOTQ1NzgzYjZkNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKQEAgLTEwNCw4ICsxMDQsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSB7
IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KIAotICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2spOwotICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2ssIEZyZXF1
ZW50ZWRCbG9jayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTdWNjZXNzb3JzKEZy
ZXF1ZW50ZWRCbG9jayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKIAogICAgIEJhc2ljQmxvY2sqIHN1
Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3IoaW5k
ZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCA2MTQ5YzlhYTA4YzMxYmZmYTEwYWZiNmIwMzFk
MDdjOTFiZjA3Njg1Li4zYzQ0YWZmYmRkMzkxMWRlOWRkOTdlOGViYmM3N2NiNjkxNjFlYmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMjI0LDcgKzIyNCw3IEBA
IHB1YmxpYzoKICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOyB9CiAKICAgICAvLyBSZWNvbXB1dGVzIHByZWRl
Y2Vzc29ycyBhbmQgZGVsZXRlcyB1bnJlYWNoYWJsZSBibG9ja3MuCi0gICAgdm9pZCByZXNldFJl
YWNoYWJpbGl0eSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXRSZWFjaGFiaWxp
dHkoKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJI
YW5kbGVDYWxsZWVTYXZlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckhh
bmRsZUNhbGxlZVNhdmVzLmNwcAppbmRleCA1NDdiYjZlZDUyNjU1YjA0ZTY3NWVhN2U5MTgxYTk2
MGM3NGI3Y2Q4Li4xMWU4NGM0MGFmZjM0NTgzMzU1ODhkYzE3NDkxNjNmNzQzMWVjM2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNh
dmVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ2LDggKzQ2LDEwIEBAIHZvaWQgaGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLnNldCh0bXAucmVnKCkp
OwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29k
ZSA9PSBQYXRjaCkKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7
CiAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLm1lcmdlKGluc3QuZXh0cmFDbG9iYmVy
ZWRSZWdzKCkpOworICAgICAgICAgICAgICAgIHVzZWRDYWxsZWVTYXZlcy5tZXJnZShpbnN0LmV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCAzZGNhMjk2
Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5Li44ZDdjZTNkZTY4NTY1OGNiOTJhNjY2
ZTIyNWI4YTNiZTQ1NmM1NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFp
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw4ICszOCwxMCBAQAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2lu
Y2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKICNpbmNsdWRlIDxj
bWF0aD4KKyNpbmNsdWRlIDxyZWdleD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgpAQCAtMjA2Myw2ICsyMDY1
LDE2MSBAQCB2b2lkIHRlc3RMZWEzMigpCiAgICAgQ0hFQ0sociA9PSBhICsgYik7CiB9CiAKK2lu
bGluZSBWZWN0b3I8U3RyaW5nPiBtYXRjaEFsbChjb25zdCBDU3RyaW5nJiBzb3VyY2UsIHN0ZDo6
cmVnZXggcmVnZXgpCit7CisgICAgVmVjdG9yPFN0cmluZz4gbWF0Y2hlczsKKyAgICBzdGQ6OnNt
YXRjaCBtYXRjaDsKKyAgICBmb3IgKHN0ZDo6c3RyaW5nIHN0ciA9IHNvdXJjZS5kYXRhKCk7IHN0
ZDo6cmVnZXhfc2VhcmNoKHN0ciwgbWF0Y2gsIHJlZ2V4KTspIHsKKyAgICAgICAgQVNTRVJUKG1h
dGNoLnNpemUoKSA9PSAxKTsKKyAgICAgICAgc3RyID0gbWF0Y2guc3VmZml4KCk7CisgICAgICAg
IG1hdGNoZXMuYXBwZW5kKG1hdGNoWzBdLnN0cigpLmNfc3RyKCkpOworICAgIH0KKyAgICByZXR1
cm4gbWF0Y2hlczsKK30KKwordm9pZCB0ZXN0RWxpZGVTaW1wbGVNb3ZlKCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIHRtcENvdW50ID0gMTsgdG1wQ291bnQgPCAxMDA7IHRtcENvdW50KyspIHsKKyAg
ICAgICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgICAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2Rl
KCk7CisKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKKworICAg
ICAgICBUbXAgdG1wID0gY29kZS5uZXdUbXAoQjM6OkdQKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
KE1vdmUsIG51bGxwdHIsIFRtcChHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0bXApOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG1wQ291bnQ7IGkrKykgeworICAgICAgICAgICAg
VG1wIG5ld1RtcCA9IGNvZGUubmV3VG1wKEIzOjpHUCk7CisgICAgICAgICAgICByb290LT5hcHBl
bmQoTW92ZSwgbnVsbHB0ciwgdG1wLCBuZXdUbXApOworICAgICAgICAgICAgdG1wID0gbmV3VG1w
OworICAgICAgICB9CisgICAgICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCB0bXAsIFRt
cChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgICAgICByb290LT5hcHBlbmQoUmV0MzIs
IG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCisgICAgICAgIGF1dG8g
Y29tcGlsYXRpb24gPSBjb21waWxlKHByb2MpOworICAgICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5
ID0gY29tcGlsYXRpb24tPmRpc2Fzc2VtYmx5KCk7CisgICAgICAgIHN0ZDo6cmVnZXggZmluZFJS
TW92ZShpc0FSTTY0KCkgPyAibW92IHJcXGQrLCByXFxkK1xcbiIgOiAibW92ICVcXHcrLCAlXFx3
K1xcbiIpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1hdGNoQWxsKGRpc2Fzc2VtYmx5LCBmaW5k
UlJNb3ZlKTsKKyAgICAgICAgLy8gc3AgLT4gZnA7IGFyZzAgLT4gcmV0MDsgZnAgLT4gc3AKKyAg
ICAgICAgLy8gZnAgLT4gc3Agb25seSBoYXBwZW5zIGluIE8wIGJlY2F1c2Ugd2UgZG9uJ3QgYWN0
dWFsbHkgbmVlZCB0byBtb3ZlIHRoZSBzdGFjayBpbiBnZW5lcmFsLgorICAgICAgICBDSEVDSyhy
ZXN1bHQuc2l6ZSgpID09IDIgKyAhT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSk7CisgICAg
fQorfQorCit2b2lkIHRlc3RFbGlkZUhhbmRsZXNFYXJseUNsb2JiZXIoKQoreworICAgIEIzOjpQ
cm9jZWR1cmUgcHJvYzsKKyAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2RlKCk7CisKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOworCisgICAgY29uc3QgdW5zaWduZWQgdG1w
Q291bnQgPSBSZWdpc3RlclNldDo6YWxsR1BScygpLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiAy
OworICAgIFZlY3RvcjxUbXA+IHRtcHModG1wQ291bnQpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0bXBDb3VudDsgKytpKSB7CisgICAgICAgIHRtcHNbaV0gPSBjb2RlLm5ld1RtcChC
Mzo6R1ApOworICAgICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oaSks
IHRtcHNbaV0pOworICAgIH0KKworICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVycyA9IFJlZ2lzdGVy
U2V0OjphbGxHUFJzKCk7CisgICAgcmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2Vy
dmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgcmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIFJlZyBmaXJzdENhbGxlZVNhdmU7CisgICAgUmVn
IGxhc3RDYWxsZWVTYXZlOworICAgIGF1dG8qIHBhdGNoID0gcHJvYy5hZGQ8QjM6OlBhdGNocG9p
bnRWYWx1ZT4oQjM6OkludDMyLCBCMzo6T3JpZ2luKCkpOworICAgIHBhdGNoLT5jbG9iYmVyRWFy
bHkocmVnaXN0ZXJzKTsKKyAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpIHsKKyAgICAgICAg
aWYgKCFmaXJzdENhbGxlZVNhdmUpCisgICAgICAgICAgICBmaXJzdENhbGxlZVNhdmUgPSByZWc7
CisgICAgICAgIGxhc3RDYWxsZWVTYXZlID0gcmVnOworICAgIH0KKyAgICBBU1NFUlQoZmlyc3RD
YWxsZWVTYXZlICE9IGxhc3RDYWxsZWVTYXZlKTsKKyAgICBwYXRjaC0+ZWFybHlDbG9iYmVyZWQo
KS5jbGVhcihmaXJzdENhbGxlZVNhdmUpOworICAgIHBhdGNoLT5yZXN1bHRDb25zdHJhaW50cy5h
cHBlbmQoeyBCMzo6VmFsdWVSZXA6OnJlZyhmaXJzdENhbGxlZVNhdmUpIH0pOworICAgIHBhdGNo
LT5lYXJseUNsb2JiZXJlZCgpLmNsZWFyKGxhc3RDYWxsZWVTYXZlKTsKKyAgICBwYXRjaC0+Y2xv
YmJlcihSZWdpc3RlclNldChsYXN0Q2FsbGVlU2F2ZSkpOworCisgICAgcGF0Y2gtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBKU0M6OkIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCisgICAgICAg
ICAgICAgICAgY29udGV4dC5ncHIocmVnLmdwcigpKSA9IDA7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgSW5zdCBpbnN0KFBhdGNoLCBwYXRjaCwgQXJnOjpzcGVjaWFsKGNvZGUuYWRkU3Bl
Y2lhbChXVEY6Om1ha2VVbmlxdWU8SlNDOjpCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKSk7Cisg
ICAgaW5zdC5hcmdzLmFwcGVuZChUbXAoZmlyc3RDYWxsZWVTYXZlKSk7CisgICAgcm9vdC0+YXBw
ZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKworICAgIFRtcCByZXN1bHQgPSBjb2RlLm5ld1RtcChC
Mzo6R1ApOworICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCB0bXBzWzBdLCByZXN1bHQp
OworICAgIGZvciAoVG1wIHRtcCA6IHRtcHMpCisgICAgICAgIHJvb3QtPmFwcGVuZChBZGQzMiwg
bnVsbHB0ciwgdG1wLCByZXN1bHQpOworCisgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIs
IHJlc3VsdCwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CisgICAgcm9vdC0+YXBwZW5k
KFJldDMyLCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKworICAgIGF1
dG8gcnVuUmVzdWx0ID0gY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYyk7CisgICAgQ0hFQ0so
cnVuUmVzdWx0ID09ICh0bXBDb3VudCAqICh0bXBDb3VudCAtIDEpKSAvIDIpOworfQorCit2b2lk
IHRlc3RFbGlkZU1vdmVUaGVuUmVhbGxvYygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJz
ID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKKyAgICByZWdpc3RlcnMuZXhjbHVkZShSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgcmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisKKyAgICBmb3IgKFJlZyByZWcgOiBy
ZWdpc3RlcnMpIHsKKyAgICAgICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgICAgICBDb2RlJiBj
b2RlID0gcHJvYy5jb2RlKCk7CisKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogdGFrZW4gPSBjb2RlLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gY29kZS5hZGRCbG9jaygpOworICAgICAgICBC
YXNpY0Jsb2NrKiBub3RUYWtlblJldHVybiA9IGNvZGUuYWRkQmxvY2soKTsKKyAgICAgICAgQmFz
aWNCbG9jayogcmV0ID0gY29kZS5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb24gPSBjb2RlLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVG1wIHRtcCA9IGNvZGUubmV3
VG1wKEIzOjpHUCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBu
dWxscHRyLCBBcmc6OmltbSgxKSwgVG1wKHJlZykpOworCisgICAgICAgICAgICByb290LT5hcHBl
bmQoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8pLCBUbXAocmVnKSwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHJvb3QtPnNl
dFN1Y2Nlc3NvcnModGFrZW4sIG5vdFRha2VuKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRha2VuLT5hcHBlbmQoSnVtcCwgbnVsbHB0cik7CisgICAgICAgICAgICB0YWtl
bi0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgewor
ICAgICAgICAgICAgbm90VGFrZW4tPmFwcGVuZChKdW1wLCBudWxscHRyKTsKKyAgICAgICAgICAg
IG5vdFRha2VuLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAg
ICAgICB7CisgICAgICAgICAgICB0bXAgPSBjb2RlLm5ld1RtcChCMzo6R1ApOworICAgICAgICAg
ICAgY29udGludWF0aW9uLT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oNDIpLCB0bXAp
OworICAgICAgICAgICAgY29udGludWF0aW9uLT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgdG1wLCBU
bXAocmVnKSk7CisgICAgICAgICAgICBjb250aW51YXRpb24tPmFwcGVuZChNb3ZlLCBudWxscHRy
LCBUbXAocmVnKSwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CisgICAgICAgICAgICBj
b250aW51YXRpb24tPmFwcGVuZChBZGQzMiwgbnVsbHB0ciwgVG1wKHJlZyksIFRtcChyZWcpKTsK
KyAgICAgICAgICAgIGNvbnRpbnVhdGlvbi0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgVG1wKHJlZyksIEFyZzo6Yml0
SW1tKC0xKSk7CisgICAgICAgICAgICBjb250aW51YXRpb24tPnNldFN1Y2Nlc3NvcnMocmV0LCBu
b3RUYWtlblJldHVybik7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICByZXQt
PmFwcGVuZChSZXQzMiwgbnVsbHB0ciwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7Cisg
ICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBub3RUYWtlblJldHVybi0+YXBwZW5k
KE1vdmUsIG51bGxwdHIsIFRtcChyZWcpLCBUbXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsK
KyAgICAgICAgICAgIG5vdFRha2VuUmV0dXJuLT5hcHBlbmQoUmV0MzIsIG51bGxwdHIsIFRtcChH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgICAgICB9CisKKyAgICAgICAgY29kZS5yZXNl
dFJlYWNoYWJpbGl0eSgpOworICAgICAgICBhdXRvIHJ1blJlc3VsdCA9IGNvbXBpbGVBbmRSdW48
dWludDMyX3Q+KHByb2MpOworICAgICAgICBDSEVDSyhydW5SZXN1bHQgPT0gNDIgKyAoNDIgKiAo
cmVnID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKSkpOworICAgIH0KK30KKwogI2RlZmluZSBQ
UkVGSVggIk8iLCBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpLCAiOiAiCiAKICNkZWZpbmUg
UlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMTUx
LDYgKzIzMDgsMTAgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0
TGVhMzIoKSk7CiAgICAgUlVOKHRlc3RMZWE2NCgpKTsKIAorICAgIFJVTih0ZXN0RWxpZGVTaW1w
bGVNb3ZlKCkpOworICAgIFJVTih0ZXN0RWxpZGVIYW5kbGVzRWFybHlDbG9iYmVyKCkpOworICAg
IFJVTih0ZXN0RWxpZGVNb3ZlVGhlblJlYWxsb2MoKSk7CisKICAgICBpZiAodGFza3MuaXNFbXB0
eSgpKQogICAgICAgICB1c2FnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAzN2VlZmY0ZTQ0NTMxNWU4MGNlZmRkYzUz
ODAwODZiZjMxNGFlOWJhLi5kYzFmOTA1OTdjZGQ5YzYwYzg3ZjZiMjMzODA1N2E2NjBmMDEwYTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAKQEAgLTMwMywxNyArMzAzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKGNvbnN0IEV4cHJlc3Np
b25UeXBlJiB0eXBlZFRtcCkKLSAgICB7Ci0gICAgICAgIFRtcCB0bXAgPSB0eXBlZFRtcC50bXAo
KTsKLSAgICAgICAgaWYgKCF0bXApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0
bXAuaXNHUCgpKQotICAgICAgICAgICAgbV9mcmVlR1BzLmFwcGVuZCh0bXApOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX2ZyZWVGUHMuYXBwZW5kKHRtcCk7Ci0gICAgfQotCiAgICAgY29u
c3QgQmFnPEIzOjpQYXRjaHBvaW50VmFsdWUqPiYgcGF0Y2hwb2ludHMoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fcGF0Y2hwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2Q4ZGY4ZTY4NzEwMjEzMWI2NGMx
YTZkNjVlNmZjY2MxMDNiNWU3NS4uOGMwODRmYjRjZTRiNDYwNmRlMmM5M2JiNjcyNjA3NzNhOWE0
YjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMjQ3LDggKzI0Nyw2IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogY29uc3RhbnQo
QjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBXVEY6Om51bGxvcHQp
OwogICAgIHZvaWQgaW5zZXJ0Q29uc3RhbnRzKCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RXhj
ZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzJiwgRXhjZXB0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNzJmZGFmZmY5
NzM5MjM2Y2U1ZTJkMGE2OGRlODE4YzdkMDM4Yjg1Zi4uNzU5ODNlYzQ3NDg5ZWVlZjYxYjk1OGRj
NjY1NjE3MWM3YTIyZWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC03Myw3ICs3Myw2IEBAIHByaXZhdGU6CiAjZGVmaW5lIFdB
U01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8ocmVzdWx0LCB3aGF0KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRiht
X2V4cHJlc3Npb25TdGFjay5pc0VtcHR5KCksICJjYW4ndCBwb3AgZW1wdHkgc3RhY2sgaW4gIiB3
aGF0KTsgXAogICAgICAgICByZXN1bHQgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1f
dG9LaWxsQWZ0ZXJFeHByZXNzaW9uLmFwcGVuZChyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAgICAgdGVtcGxh
dGU8T3BUeXBlPgpAQCAtOTUsOCArOTQsNiBAQCBwcml2YXRlOgogICAgIE9wVHlwZSBtX2N1cnJl
bnRPcGNvZGU7CiAgICAgc2l6ZV90IG1fY3VycmVudE9wY29kZVN0YXJ0aW5nT2Zmc2V0IHsgMCB9
OwogCi0gICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlLCA4PiBtX3RvS2lsbEFmdGVyRXhwcmVzc2lv
bjsKLQogICAgIHVuc2lnbmVkIG1fdW5yZWFjaGFibGVCbG9ja3MgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9sb29wSW5kZXggeyAwIH07CiB9OwpAQCAtMTQ1LDggKzE0Miw2IEBAIGF1dG8gRnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBtX2Nv
bnRyb2xTdGFjay5hcHBlbmQoeyBtX2NvbnRleHQuY3JlYXRlU3RhY2soKSwgbV9jb250ZXh0LmFk
ZFRvcExldmVsKG1fc2lnbmF0dXJlLnJldHVyblR5cGUoKSkgfSk7CiAgICAgdWludDhfdCBvcDsK
ICAgICB3aGlsZSAobV9jb250cm9sU3RhY2suc2l6ZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3Rv
S2lsbEFmdGVyRXhwcmVzc2lvbi5pc0VtcHR5KCkpOwotCiAgICAgICAgIG1fY3VycmVudE9wY29k
ZVN0YXJ0aW5nT2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlVUludDgob3ApLCAiY2FuJ3QgZGVjb2RlIG9wY29kZSIpOwogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFpc1ZhbGlkT3BUeXBlKG9wKSwgImludmFsaWQgb3Bjb2RlICIsIG9wKTsK
QEAgLTE2Miw4ICsxNTcsNiBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJv
ZHkoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZB
SUxTKHBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VFeHByZXNzaW9uKCkpOwotICAg
ICAgICAgICAgd2hpbGUgKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLnNpemUoKSkKLSAgICAgICAg
ICAgICAgICBtX2NvbnRleHQuZGlkS2lsbChtX3RvS2lsbEFmdGVyRXhwcmVzc2lvbi50YWtlTGFz
dCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgzLDggKzU3Niw3IEBAIGF1dG8gRnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAog
ICAgIGNhc2UgRHJvcDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2V4cHJlc3Np
b25TdGFjay5zaXplKCksICJjYW4ndCBkcm9wIG9uIGVtcHR5IHN0YWNrIik7Ci0gICAgICAgIGF1
dG8gZXhwcmVzc2lvbiA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIG1f
dG9LaWxsQWZ0ZXJFeHByZXNzaW9uLmFwcGVuZChleHByZXNzaW9uKTsKKyAgICAgICAgbV9leHBy
ZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCmluZGV4IDYyZThjMjEw
MTNmNGJmNWNiMDE2ZjBhM2UzOTdkMGE5YzVlMzcxNGMuLjk1MjVkOTQyOWE1ZWM4ZTFlYzNiMzQ3
ZmQ3ZDU4YmIxMmI4MDhmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZh
bGlkYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNTQsOCArMTU0LDYgQEAgcHVibGljOgogICAgIFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwg
Y29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9Ci0KICAgICBib29sIGhhc01lbW9yeSgp
IGNvbnN0IHsgcmV0dXJuICEhbV9tb2R1bGUubWVtb3J5OyB9CiAKICAgICBWYWxpZGF0ZShjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379011</attachid>
            <date>2019-09-17 17:31:49 -0700</date>
            <delta_ts>2019-09-17 17:35:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201703-20190917173149.patch</filename>
            <type>text/plain</type>
            <size>20308</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li40NGMwZmM0OTZiNGJjN2Nk
ZjEzNzhhMDhiOTI3YzE1MDFhYjUwNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOS0wOS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBFbGlkZSB1bm5lY2Vzc2FyeSBtb3ZlcyBpbiBBaXIgTzAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byByZW1vdmVzIHRoZSBjb2RlIHRoYXQgd291bGQgdHJ5IHRvIHJldXNlCisgICAgICAgIHRlbXBz
LiBUaGF0IGNvZGUgbWFrZXMgaXQgaGFyZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB3aGVyZSBh
CisgICAgICAgIHRlbXAgZGllcyBhcyBpdCBjb3VsZCBiZSByZXVzZWQgYWdhaW4gbGF0ZXIuIFRo
dXMgZXZlcnkgdGVtcCwKKyAgICAgICAgbWF5IGFwcGVhciB0byBsaXZlIGZvciBhIGxvbmcgdGlt
ZSBpbiB0aGUgZ2xvYmFsIG9yZGVyaW5nLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBh
IG1pbm9yIHByb2dyZXNzaW9uIG9uIHRoZSBvdmVyYWxsIHNjb3JlIG9mCisgICAgICAgIHdhc20g
c3VidGVzdHMgaW4gSlMyIGFuZCBhIDEwJSB3YXNtLUpJVCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB3ZSBkaWRu
J3QgYXNrIFBhdGNocG9pbnRzCisgICAgICAgIGZvciBlYXJseSBjbG9iYmVyIHJlZ2lzdGVycyB3
aGVuIGRldGVybWluaW5nIHdoYXQgY2FsbGVlIHNhdmVzCisgICAgICAgIHdlcmUgdXNlZCBieSB0
aGUgcHJvZ3JhbS4KKworICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0
YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJCYXNp
Y0Jsb2NrLmg6CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuaDoKKyAgICAgICAgKiBiMy9haXIv
QWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpoYW5kbGVD
YWxsZWVTYXZlcyk6CisgICAgICAgICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIHdh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5l
cmF0b3I6OmRpZEtpbGwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpkaWRLaWxsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlND
OjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCb2R5KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAg
ICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWxpZGF0
ZTo6ZGlkS2lsbCk6IERlbGV0ZWQuCisKIDIwMTktMDktMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSAzMmJpdCBiaXR3aWRlIG9wZXJhdGlvbiB3
aXRoIGFsbC1vbmUgKC0xKSBpcyB3cm9uZyBpbiBCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3Rl
cnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKaW5kZXggYmI1Y2Y2ZDRiODBkYWE4OTRhYmU3
Y2Q3ODNhMDBmZDgyNTBjODA0NS4uYmI3OTMwZDgzNTk4Mzk2ZjY0YzVjZGZmZGM0NzRiMGJjOGI3
NTE5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0
ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNv
ZGUuY3BwCkBAIC00MjEsNiArNDIxLDQzIEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lz
dGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICBtX25hbWVkVXNl
ZFJlZ3MgPSBSZWdpc3RlclNldCgpOwogICAgICAgICAgICAgbV9uYW1lZERlZmRSZWdzID0gUmVn
aXN0ZXJTZXQoKTsKIAorICAgICAgICAgICAgYm9vbCBuZWVkc1RvR2VuZXJhdGUgPSAoWyZdICgp
IC0+IGJvb2wgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
dHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGFsc28gZWxpZGUgTW92MzJzCisgICAgICAg
ICAgICAgICAgaWYgKCEoaW5zdC5raW5kLm9wY29kZSA9PSBNb3ZlIHx8IGluc3Qua2luZC5vcGNv
ZGUgPT0gTW92ZURvdWJsZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgICAgICAgICAgQVNTRVJUKGluc3QuYXJncy5zaXplKCkgPj0gMik7CisgICAgICAgICAg
ICAgICAgQXJnIHNvdXJjZSA9IGluc3QuYXJnc1swXTsKKyAgICAgICAgICAgICAgICBBcmcgZGVz
dCA9IGluc3QuYXJnc1sxXTsKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5pc1RtcCgpIHx8
ICFkZXN0LmlzVG1wKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHRyYWNrIHdoZXJlIHRoZSBsYXN0IHVzZSBv
ZiBhIHJlZyBpcyBnbG9iYWxseSBzbyB3ZSBkb24ndCBrbm93IHdoZXJlIHdlIGNhbid0IGVsaWRl
IHRoZW0uCisgICAgICAgICAgICAgICAgQVNTRVJUKHNvdXJjZS5pc1JlZygpIHx8IG1fbGl2ZVJh
bmdlRW5kW3NvdXJjZS50bXAoKV0gPj0gbV9nbG9iYWxJbnN0SW5kZXgpOworICAgICAgICAgICAg
ICAgIGlmIChzb3VyY2UuaXNSZWcoKSB8fCBtX2xpdmVSYW5nZUVuZFtzb3VyY2UudG1wKCldICE9
IG1fZ2xvYmFsSW5zdEluZGV4KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIFJlZyBzb3VyY2VSZWcgPSBtX21hcFtzb3VyY2UudG1wKCldLnJlZzsK
KyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFscmVhZHkgbWF0ZXJpYWxp
emVkIGludG8gYSByZWdpc3RlciB3ZSBtYXkgc3RpbGwgbW92ZSBpdCBpbnRvIG9uZSBzbyBsZXQg
dGhlIG5vcm1hbCBnZW5lcmF0aW9uIGNvZGUgcnVuLgorICAgICAgICAgICAgICAgIGlmICghc291
cmNlUmVnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChzb3VyY2VSZWcpID09IHNvdXJjZS50
bXAoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc1JlZygpICYmIGRlc3QucmVnKCkg
IT0gc291cmNlUmVnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgIGlmIChSZWcgb2xkUmVnID0gbV9tYXBbZGVzdC50bXAoKV0ucmVnKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRBbGxvY2F0aW9uLT5hdChvbGRSZWcpID09
IGRlc3QudG1wKCkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRBbGxvY2F0aW9uLT5h
dChvbGRSZWcpID0gVG1wKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
bV9jdXJyZW50QWxsb2NhdGlvbi0+YXQoc291cmNlUmVnKSA9IGRlc3QudG1wKCk7CisgICAgICAg
ICAgICAgICAgbV9tYXBbc291cmNlLnRtcCgpXS5yZWcgPSBSZWcoKTsKKyAgICAgICAgICAgICAg
ICBtX21hcFtkZXN0LnRtcCgpXS5yZWcgPSBzb3VyY2VSZWc7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfSkoKTsKKwogICAgICAgICAgICAgaW5zdC5mb3JFYWNo
QXJnKFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAg
ICAgICAgICAgIGlmICghYXJnLmlzVG1wKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQ4Miw3ICs1MTksNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6Omdl
bmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAgICAgYWxsb2NOYW1lZChtX25hbWVk
VXNlZFJlZ3MsIGZhbHNlKTsgLy8gTXVzdCBjb21lIGJlZm9yZSB0aGUgZGVmZCByZWdpc3RlcnMg
c2luY2Ugd2UgbWF5IHVzZSBhbmQgZGVmIHRoZSBzYW1lIHJlZ2lzdGVyLgogICAgICAgICAgICAg
YWxsb2NOYW1lZChtX25hbWVkRGVmZFJlZ3MsIHRydWUpOwogCi0gICAgICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobmVlZHNUb0dlbmVyYXRlKSB7CiAgICAgICAgICAgICAgICAgYXV0byB0cnlB
bGxvY2F0ZSA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxUbXAqLCA4PiB1c2Vz
VG9BbGxvYzsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFRtcCosIDg+IGRlZnNUb0FsbG9j
OwpAQCAtNjA1LDcgKzY0Miw5IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6
Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghaW5zdC5pc1Rlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAganVtcCA9IGluc3QuZ2VuZXJhdGUoKm1faml0LCBjb250ZXh0KTsKKyAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAganVtcDsKKyAgICAgICAgICAgICAgICBpZiAobmVlZHNU
b0dlbmVyYXRlKQorICAgICAgICAgICAgICAgICAgICBqdW1wID0gaW5zdC5nZW5lcmF0ZSgqbV9q
aXQsIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoanVtcCwgIWp1bXAu
aXNTZXQoKSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjbG9iYmVyZWRSZWdp
c3RlcnMpIHsKQEAgLTYxNiw3ICs2NTUsNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAgICAgICAgICAgICBt
X21hcFt0bXBdLnJlZyA9IFJlZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBuZWVkc1RvR2VuZXJhdGUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIEFTU0VSVChuZWVkc1RvR2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGlm
IChpbnN0LmtpbmQub3Bjb2RlID09IEp1bXAgJiYgYmxvY2stPnN1Y2Nlc3NvckJsb2NrKDApID09
IG1fY29kZS5maW5kTmV4dEJsb2NrKGJsb2NrKSkKICAgICAgICAgICAgICAgICAgICAgbmVlZHNU
b0dlbmVyYXRlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
YXNpY0Jsb2NrLmgKaW5kZXggMzc5YzYzNTA0MWE2MWIwYzZmMjg2ZDJjNmE4MjllMDkxMDdiZjli
Yy4uM2Y4MzVlMWFlOTA2N2M3NjVmOTcwNTVhMzYzMzJkOTQ1NzgzYjZkNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKQEAgLTEwNCw4ICsxMDQsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSB7
IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KIAotICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2spOwotICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2ssIEZyZXF1
ZW50ZWRCbG9jayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTdWNjZXNzb3JzKEZy
ZXF1ZW50ZWRCbG9jayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKIAogICAgIEJhc2ljQmxvY2sqIHN1
Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3IoaW5k
ZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCA2MTQ5YzlhYTA4YzMxYmZmYTEwYWZiNmIwMzFk
MDdjOTFiZjA3Njg1Li4zYzQ0YWZmYmRkMzkxMWRlOWRkOTdlOGViYmM3N2NiNjkxNjFlYmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMjI0LDcgKzIyNCw3IEBA
IHB1YmxpYzoKICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOyB9CiAKICAgICAvLyBSZWNvbXB1dGVzIHByZWRl
Y2Vzc29ycyBhbmQgZGVsZXRlcyB1bnJlYWNoYWJsZSBibG9ja3MuCi0gICAgdm9pZCByZXNldFJl
YWNoYWJpbGl0eSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXRSZWFjaGFiaWxp
dHkoKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJI
YW5kbGVDYWxsZWVTYXZlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckhh
bmRsZUNhbGxlZVNhdmVzLmNwcAppbmRleCA1NDdiYjZlZDUyNjU1YjA0ZTY3NWVhN2U5MTgxYTk2
MGM3NGI3Y2Q4Li4xMWU4NGM0MGFmZjM0NTgzMzU1ODhkYzE3NDkxNjNmNzQzMWVjM2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNh
dmVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ2LDggKzQ2LDEwIEBAIHZvaWQgaGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLnNldCh0bXAucmVnKCkp
OwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29k
ZSA9PSBQYXRjaCkKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7
CiAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLm1lcmdlKGluc3QuZXh0cmFDbG9iYmVy
ZWRSZWdzKCkpOworICAgICAgICAgICAgICAgIHVzZWRDYWxsZWVTYXZlcy5tZXJnZShpbnN0LmV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCAzZGNhMjk2
Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5Li4zNjQ4NmVkOWM4ODNiMTk2YzQwOTQ0
NzVlYzM4NjRiOWE5ZDE2NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFp
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw4ICszOCwxMCBAQAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2lu
Y2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKICNpbmNsdWRlIDxj
bWF0aD4KKyNpbmNsdWRlIDxyZWdleD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgpAQCAtMjA2Myw2ICsyMDY1
LDE2MyBAQCB2b2lkIHRlc3RMZWEzMigpCiAgICAgQ0hFQ0sociA9PSBhICsgYik7CiB9CiAKK2lu
bGluZSBWZWN0b3I8U3RyaW5nPiBtYXRjaEFsbChjb25zdCBDU3RyaW5nJiBzb3VyY2UsIHN0ZDo6
cmVnZXggcmVnZXgpCit7CisgICAgVmVjdG9yPFN0cmluZz4gbWF0Y2hlczsKKyAgICBzdGQ6OnNt
YXRjaCBtYXRjaDsKKyAgICBmb3IgKHN0ZDo6c3RyaW5nIHN0ciA9IHNvdXJjZS5kYXRhKCk7IHN0
ZDo6cmVnZXhfc2VhcmNoKHN0ciwgbWF0Y2gsIHJlZ2V4KTspIHsKKyAgICAgICAgQVNTRVJUKG1h
dGNoLnNpemUoKSA9PSAxKTsKKyAgICAgICAgc3RyID0gbWF0Y2guc3VmZml4KCk7CisgICAgICAg
IG1hdGNoZXMuYXBwZW5kKG1hdGNoWzBdLnN0cigpLmNfc3RyKCkpOworICAgIH0KKyAgICByZXR1
cm4gbWF0Y2hlczsKK30KKwordm9pZCB0ZXN0RWxpZGVTaW1wbGVNb3ZlKCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIHRtcENvdW50ID0gMTsgdG1wQ291bnQgPCAxMDA7IHRtcENvdW50KyspIHsKKyAg
ICAgICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgICAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2Rl
KCk7CisKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKKworICAg
ICAgICBUbXAgdG1wID0gY29kZS5uZXdUbXAoQjM6OkdQKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
KE1vdmUsIG51bGxwdHIsIFRtcChHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0bXApOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG1wQ291bnQ7IGkrKykgeworICAgICAgICAgICAg
VG1wIG5ld1RtcCA9IGNvZGUubmV3VG1wKEIzOjpHUCk7CisgICAgICAgICAgICByb290LT5hcHBl
bmQoTW92ZSwgbnVsbHB0ciwgdG1wLCBuZXdUbXApOworICAgICAgICAgICAgdG1wID0gbmV3VG1w
OworICAgICAgICB9CisgICAgICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCB0bXAsIFRt
cChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgICAgICByb290LT5hcHBlbmQoUmV0MzIs
IG51bGxwdHIsIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCisgICAgICAgIGF1dG8g
Y29tcGlsYXRpb24gPSBjb21waWxlKHByb2MpOworICAgICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5
ID0gY29tcGlsYXRpb24tPmRpc2Fzc2VtYmx5KCk7CisgICAgICAgIHN0ZDo6cmVnZXggZmluZFJS
TW92ZShpc0FSTTY0KCkgPyAibW92IHJcXGQrLCByXFxkK1xcbiIgOiAibW92ICVcXHcrLCAlXFx3
K1xcbiIpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1hdGNoQWxsKGRpc2Fzc2VtYmx5LCBmaW5k
UlJNb3ZlKTsKKyAgICAgICAgLy8gc3AgLT4gZnA7IGFyZzAgLT4gcmV0MDsgZnAgLT4gc3AKKyAg
ICAgICAgLy8gZnAgLT4gc3Agb25seSBoYXBwZW5zIGluIE8wIGJlY2F1c2Ugd2UgZG9uJ3QgYWN0
dWFsbHkgbmVlZCB0byBtb3ZlIHRoZSBzdGFjayBpbiBnZW5lcmFsLgorICAgICAgICBDSEVDSyhy
ZXN1bHQuc2l6ZSgpID09IDIgKyAhT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSk7CisgICAg
fQorfQorCit2b2lkIHRlc3RFbGlkZUhhbmRsZXNFYXJseUNsb2JiZXIoKQoreworICAgIEIzOjpQ
cm9jZWR1cmUgcHJvYzsKKyAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2RlKCk7CisKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOworCisgICAgY29uc3QgdW5zaWduZWQgdG1w
Q291bnQgPSBSZWdpc3RlclNldDo6YWxsR1BScygpLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiAy
OworICAgIFZlY3RvcjxUbXA+IHRtcHModG1wQ291bnQpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0bXBDb3VudDsgKytpKSB7CisgICAgICAgIHRtcHNbaV0gPSBjb2RlLm5ld1RtcChC
Mzo6R1ApOworICAgICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oaSks
IHRtcHNbaV0pOworICAgIH0KKworICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVycyA9IFJlZ2lzdGVy
U2V0OjphbGxHUFJzKCk7CisgICAgcmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2Vy
dmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgcmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIFJlZyBmaXJzdENhbGxlZVNhdmU7CisgICAgUmVn
IGxhc3RDYWxsZWVTYXZlOworICAgIGF1dG8qIHBhdGNoID0gcHJvYy5hZGQ8QjM6OlBhdGNocG9p
bnRWYWx1ZT4oQjM6OkludDMyLCBCMzo6T3JpZ2luKCkpOworICAgIHBhdGNoLT5jbG9iYmVyRWFy
bHkocmVnaXN0ZXJzKTsKKyAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpIHsKKyAgICAgICAg
aWYgKCFmaXJzdENhbGxlZVNhdmUpCisgICAgICAgICAgICBmaXJzdENhbGxlZVNhdmUgPSByZWc7
CisgICAgICAgIGxhc3RDYWxsZWVTYXZlID0gcmVnOworICAgIH0KKyAgICBBU1NFUlQoZmlyc3RD
YWxsZWVTYXZlICE9IGxhc3RDYWxsZWVTYXZlKTsKKyAgICBwYXRjaC0+ZWFybHlDbG9iYmVyZWQo
KS5jbGVhcihmaXJzdENhbGxlZVNhdmUpOworICAgIHBhdGNoLT5yZXN1bHRDb25zdHJhaW50cy5h
cHBlbmQoeyBCMzo6VmFsdWVSZXA6OnJlZyhmaXJzdENhbGxlZVNhdmUpIH0pOworICAgIHBhdGNo
LT5lYXJseUNsb2JiZXJlZCgpLmNsZWFyKGxhc3RDYWxsZWVTYXZlKTsKKyAgICBwYXRjaC0+Y2xv
YmJlcihSZWdpc3RlclNldChsYXN0Q2FsbGVlU2F2ZSkpOworCisgICAgcGF0Y2gtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBKU0M6OkIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCisgICAgICAg
ICAgICAgICAgY29udGV4dC5ncHIocmVnLmdwcigpKSA9IDA7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgSW5zdCBpbnN0KFBhdGNoLCBwYXRjaCwgQXJnOjpzcGVjaWFsKGNvZGUuYWRkU3Bl
Y2lhbChXVEY6Om1ha2VVbmlxdWU8SlNDOjpCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKSk7Cisg
ICAgaW5zdC5hcmdzLmFwcGVuZChUbXAoZmlyc3RDYWxsZWVTYXZlKSk7CisgICAgcm9vdC0+YXBw
ZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKworICAgIFRtcCByZXN1bHQgPSBjb2RlLm5ld1RtcChC
Mzo6R1ApOworICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCB0bXBzWzBdLCByZXN1bHQp
OworICAgIGZvciAoVG1wIHRtcCA6IHRtcHMpCisgICAgICAgIHJvb3QtPmFwcGVuZChBZGQzMiwg
bnVsbHB0ciwgdG1wLCByZXN1bHQpOworCisgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIs
IHJlc3VsdCwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CisgICAgcm9vdC0+YXBwZW5k
KFJldDMyLCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKworICAgIGF1
dG8gcnVuUmVzdWx0ID0gY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYyk7CisgICAgQ0hFQ0so
cnVuUmVzdWx0ID09ICh0bXBDb3VudCAqICh0bXBDb3VudCAtIDEpKSAvIDIpOworfQorCit2b2lk
IHRlc3RFbGlkZU1vdmVUaGVuUmVhbGxvYygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJz
ID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKKyAgICByZWdpc3RlcnMuZXhjbHVkZShSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgcmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisKKyAgICBmb3IgKFJlZyByZWcgOiBy
ZWdpc3RlcnMpIHsKKyAgICAgICAgQjM6OlByb2NlZHVyZSBwcm9jOworICAgICAgICBDb2RlJiBj
b2RlID0gcHJvYy5jb2RlKCk7CisKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogdGFrZW4gPSBjb2RlLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gY29kZS5hZGRCbG9jaygpOworICAgICAgICBC
YXNpY0Jsb2NrKiBub3RUYWtlblJldHVybiA9IGNvZGUuYWRkQmxvY2soKTsKKyAgICAgICAgQmFz
aWNCbG9jayogcmV0ID0gY29kZS5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb24gPSBjb2RlLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVG1wIHRtcCA9IGNvZGUubmV3
VG1wKEIzOjpHUCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBu
dWxscHRyLCBBcmc6OmltbSgxKSwgVG1wKHJlZykpOworCisgICAgICAgICAgICByb290LT5hcHBl
bmQoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8pLCBUbXAocmVnKSwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHJvb3QtPnNl
dFN1Y2Nlc3NvcnModGFrZW4sIG5vdFRha2VuKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRha2VuLT5hcHBlbmQoSnVtcCwgbnVsbHB0cik7CisgICAgICAgICAgICB0YWtl
bi0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgewor
ICAgICAgICAgICAgbm90VGFrZW4tPmFwcGVuZChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6
cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybyksIFRtcChyZWcpLCBBcmc6OmJpdEltbSgt
MSkpOworICAgICAgICAgICAgbm90VGFrZW4tPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uLCBu
b3RUYWtlblJldHVybik7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICB0bXAg
PSBjb2RlLm5ld1RtcChCMzo6R1ApOworICAgICAgICAgICAgY29udGludWF0aW9uLT5hcHBlbmQo
TW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oNDIpLCB0bXApOworICAgICAgICAgICAgY29udGludWF0
aW9uLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICBjb250
aW51YXRpb24tPnNldFN1Y2Nlc3NvcnMocmV0LCBub3RUYWtlblJldHVybik7CisgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICB0bXAgPSBjb2RlLm5ld1RtcChCMzo6R1ApOworICAg
ICAgICAgICAgcmV0LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oNDIpLCB0bXApOwor
ICAgICAgICAgICAgcmV0LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgdG1wLCBUbXAocmVnKSk7Cisg
ICAgICAgICAgICByZXQtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBUbXAocmVnKSwgVG1wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKSk7CisgICAgICAgICAgICByZXQtPmFwcGVuZChBZGQzMiwgbnVs
bHB0ciwgVG1wKHJlZyksIFRtcChyZWcpKTsKKyAgICAgICAgICAgIHJldC0+YXBwZW5kKFJldDMy
LCBudWxscHRyLCBUbXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG5vdFRha2VuUmV0dXJuLT5hcHBlbmQoTW92ZSwgbnVsbHB0
ciwgVG1wKHJlZyksIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgICAgICAgICAg
bm90VGFrZW5SZXR1cm4tPmFwcGVuZChSZXQzMiwgbnVsbHB0ciwgVG1wKEdQUkluZm86OnJldHVy
blZhbHVlR1BSKSk7CisgICAgICAgIH0KKworICAgICAgICBjb2RlLnJlc2V0UmVhY2hhYmlsaXR5
KCk7CisgICAgICAgIGF1dG8gcnVuUmVzdWx0ID0gY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJv
Yyk7CisgICAgICAgIENIRUNLKHJ1blJlc3VsdCA9PSA0MiArICg0MiAqIChyZWcgPT0gR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpKSk7CisgICAgfQorfQorCiAjZGVmaW5lIFBSRUZJWCAiTyIsIE9w
dGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCksICI6ICIKIAogI2RlZmluZSBSVU4odGVzdCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIxNTEsNiArMjMxMCwxMCBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMZWEzMigpKTsKICAg
ICBSVU4odGVzdExlYTY0KCkpOwogCisgICAgUlVOKHRlc3RFbGlkZVNpbXBsZU1vdmUoKSk7Cisg
ICAgUlVOKHRlc3RFbGlkZUhhbmRsZXNFYXJseUNsb2JiZXIoKSk7CisgICAgUlVOKHRlc3RFbGlk
ZU1vdmVUaGVuUmVhbGxvYygpKTsKKwogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAg
IHVzYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDM3ZWVmZjRlNDQ1MzE1ZTgwY2VmZGRjNTM4MDA4NmJmMzE0YWU5
YmEuLmRjMWY5MDU5N2NkZDljNjBjODdmNmIyMzM4MDU3YTY2MGYwMTBhOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMzAz
LDE3ICszMDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIGRpZEtpbGwoY29uc3QgRXhwcmVzc2lvblR5cGUmIHR5cGVk
VG1wKQotICAgIHsKLSAgICAgICAgVG1wIHRtcCA9IHR5cGVkVG1wLnRtcCgpOwotICAgICAgICBp
ZiAoIXRtcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHRtcC5pc0dQKCkpCi0g
ICAgICAgICAgICBtX2ZyZWVHUHMuYXBwZW5kKHRtcCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fZnJlZUZQcy5hcHBlbmQodG1wKTsKLSAgICB9Ci0KICAgICBjb25zdCBCYWc8QjM6OlBh
dGNocG9pbnRWYWx1ZSo+JiBwYXRjaHBvaW50cygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9wYXRjaHBvaW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZDhkZjhlNjg3MTAyMTMxYjY0YzFhNmQ2NWU2ZmNjYzEw
M2I1ZTc1Li44YzA4NGZiNGNlNGI0NjA2ZGUyYzkzYmI2NzI2MDc3M2E5YTRiMTM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0y
NDcsOCArMjQ3LDYgQEAgcHVibGljOgogICAgIFZhbHVlKiBjb25zdGFudChCMzo6VHlwZSwgdWlu
dDY0X3QgYml0cywgT3B0aW9uYWw8T3JpZ2luPiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBp
bnNlcnRDb25zdGFudHMoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJl
c3Npb25UeXBlKSB7IH0KLQogcHJpdmF0ZToKICAgICB2b2lkIGVtaXRFeGNlcHRpb25DaGVjayhD
Q2FsbEhlbHBlcnMmLCBFeGNlcHRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCA3MmZkYWZmZjk3MzkyMzZjZTVlMmQw
YTY4ZGU4MThjN2QwMzhiODVmLi43NTk4M2VjNDc0ODllZWVmNjFiOTU4ZGM2NjU2MTcxYzdhMjJl
ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJz
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllfUE9QX0VY
UFJFU1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0
YWNrLmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBcCiAgICAg
ICAgIHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV90b0tpbGxBZnRlckV4
cHJlc3Npb24uYXBwZW5kKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBA
IC05NSw4ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgT3BUeXBlIG1fY3VycmVudE9wY29kZTsKICAg
ICBzaXplX3QgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQgeyAwIH07CiAKLSAgICBWZWN0
b3I8RXhwcmVzc2lvblR5cGUsIDg+IG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uOwotCiAgICAgdW5z
aWduZWQgbV91bnJlYWNoYWJsZUJsb2NrcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xvb3BJbmRl
eCB7IDAgfTsKIH07CkBAIC0xNDUsOCArMTQyLDYgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6cGFyc2VCb2R5KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIG1fY29udHJvbFN0YWNrLmFw
cGVuZCh7IG1fY29udGV4dC5jcmVhdGVTdGFjaygpLCBtX2NvbnRleHQuYWRkVG9wTGV2ZWwobV9z
aWduYXR1cmUucmV0dXJuVHlwZSgpKSB9KTsKICAgICB1aW50OF90IG9wOwogICAgIHdoaWxlICht
X2NvbnRyb2xTdGFjay5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9LaWxsQWZ0ZXJFeHBy
ZXNzaW9uLmlzRW1wdHkoKSk7Ci0KICAgICAgICAgbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZz
ZXQgPSBtX29mZnNldDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChv
cCksICJjYW4ndCBkZWNvZGUgb3Bjb2RlIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IWlzVmFsaWRPcFR5cGUob3ApLCAiaW52YWxpZCBvcGNvZGUgIiwgb3ApOwpAQCAtMTYyLDggKzE1
Nyw2IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQm9keSgpIC0+IFBhcnRp
YWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VVbnJl
YWNoYWJsZUV4cHJlc3Npb24oKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgV0FTTV9G
QUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICB3aGls
ZSAobV90b0tpbGxBZnRlckV4cHJlc3Npb24uc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1fY29u
dGV4dC5kaWRLaWxsKG1fdG9LaWxsQWZ0ZXJFeHByZXNzaW9uLnRha2VMYXN0KCkpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC01ODMsOCArNTc2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBEcm9w
OiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSwgImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgYXV0byBleHByZXNzaW9u
ID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgbV90b0tpbGxBZnRlckV4
cHJlc3Npb24uYXBwZW5kKGV4cHJlc3Npb24pOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50
YWtlTGFzdCgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggNjJlOGMyMTAxM2Y0YmY1Y2IwMTZm
MGEzZTM5N2QwYTljNWUzNzE0Yy4uOTUyNWQ5NDI5YTVlYzhlMWVjM2IzNDdmZDdkNThiYjEyYjgw
OGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1
NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRD
YWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4
LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxs
KEV4cHJlc3Npb25UeXBlKSB7IH0KLQogICAgIGJvb2wgaGFzTWVtb3J5KCkgY29uc3QgeyByZXR1
cm4gISFtX21vZHVsZS5tZW1vcnk7IH0KIAogICAgIFZhbGlkYXRlKGNvbnN0IE1vZHVsZUluZm9y
bWF0aW9uJiBtb2R1bGUpCg==
</data>
<flag name="review"
          id="394688"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>