<?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>132437</bug_id>
          
          <creation_ts>2014-05-01 13:03:15 -0700</creation_ts>
          <short_desc>Add a DFG function whitelist</short_desc>
          <delta_ts>2014-05-22 15:42:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1005818</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 13:03:15 -0700</bug_when>
    <thetext>Often times when debugging using bytecode ranges isn&apos;t enough to narrow down to the particular DFG block that&apos;s causing issues. We should add the ability to whitelist specific functions specified in a file to enable further filtering without having to recompile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005820</commentid>
    <comment_count>1</comment_count>
      <attachid>230605</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 13:05:19 -0700</bug_when>
    <thetext>Created attachment 230605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005821</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-01 13:06:56 -0700</bug_when>
    <thetext>Attachment 230605 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:313:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005826</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 13:20:19 -0700</bug_when>
    <thetext>Boo, apparently strnstr and fgetln are BSD-only. So lame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005841</commentid>
    <comment_count>4</comment_count>
      <attachid>230605</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-01 14:17:06 -0700</bug_when>
    <thetext>Comment on attachment 230605
Patch

Plz fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005863</commentid>
    <comment_count>5</comment_count>
      <attachid>230615</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 15:07:22 -0700</bug_when>
    <thetext>Created attachment 230615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005864</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-01 15:09:13 -0700</bug_when>
    <thetext>Attachment 230615 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:313:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005865</commentid>
    <comment_count>7</comment_count>
      <attachid>230615</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 15:09:39 -0700</bug_when>
    <thetext>Comment on attachment 230615
Patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:3596
&gt; +    if (!profile)
&gt; +        dataLog(&quot;Got null profile for bytecode &quot;, bytecodeOffset, &quot; in code block &quot;, *this, &quot;\n&quot;);

Remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005866</commentid>
    <comment_count>8</comment_count>
      <attachid>230615</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 15:11:20 -0700</bug_when>
    <thetext>Comment on attachment 230615
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.h:88
&gt; +    if (mightCompileFunctionForCall(codeBlock))
&gt; +        return capabilityLevel(codeBlock);
&gt; +    if (mightInlineFunctionForCall(codeBlock))
&gt; +        return leastUpperBound(CanInline, capabilityLevel(codeBlock));
&gt; +    return CannotCompile;

We should rearrange this to check both mightCompile/mightInline, then do the CodeBlock capability check accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005916</commentid>
    <comment_count>9</comment_count>
      <attachid>230633</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 17:31:33 -0700</bug_when>
    <thetext>Created attachment 230633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005917</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-01 17:33:02 -0700</bug_when>
    <thetext>Attachment 230633 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:313:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005919</commentid>
    <comment_count>11</comment_count>
      <attachid>230634</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-01 17:39:56 -0700</bug_when>
    <thetext>Created attachment 230634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005920</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-01 17:42:04 -0700</bug_when>
    <thetext>Attachment 230634 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:313:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005951</commentid>
    <comment_count>13</comment_count>
      <attachid>230634</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-01 19:09:03 -0700</bug_when>
    <thetext>Comment on attachment 230634
Patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGFunctionWhitelist.cpp:70
&gt; +        // Get rid of newlines at the end of the strings.

&quot;ends&quot;

&gt; Source/JavaScriptCore/dfg/DFGFunctionWhitelist.cpp:73
&gt; +        if (line[length-1] == &apos;\n&apos;) {
&gt; +            line[length-1] = &apos;\0&apos;;

spacing

&gt; Source/JavaScriptCore/dfg/DFGFunctionWhitelist.h:48
&gt; +    HashSet&lt;String&gt; m_functionNames;

You should call this &quot;entries&quot; or something. It&apos;s not just names -- it&apos;s whitelist entries, which can be names or hashes or both concatenated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006076</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-02 11:52:41 -0700</bug_when>
    <thetext>Committed r168178: &lt;http://trac.webkit.org/changeset/168178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006080</commentid>
    <comment_count>15</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-05-02 12:07:06 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Committed r168178: &lt;http://trac.webkit.org/changeset/168178&gt;

This broke the cloop build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006148</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-05-02 14:16:36 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Committed r168178: &lt;http://trac.webkit.org/changeset/168178&gt;
&gt; 
&gt; This broke the cloop build.

Fix on the way!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011071</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-22 15:42:26 -0700</bug_when>
    <thetext>*** Bug 131004 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230605</attachid>
            <date>2014-05-01 13:05:19 -0700</date>
            <delta_ts>2014-05-01 15:07:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132437-20140501130325.patch</filename>
            <type>text/plain</type>
            <size>19714</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4MTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE0LTA1LTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgREZHIGZ1bmN0aW9uIHdoaXRlbGlzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNDM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2Z0ZW4gdGltZXMgd2hlbiBkZWJ1Z2dpbmcs
IHVzaW5nIGJ5dGVjb2RlIHJhbmdlcyBpc24ndCBlbm91Z2ggdG8gbmFycm93IGRvd24gdG8gdGhl
IAorICAgICAgICBwYXJ0aWN1bGFyIERGRyBibG9jayB0aGF0J3MgY2F1c2luZyBpc3N1ZXMuIFRo
aXMgcGF0Y2ggYWRkcyB0aGUgYWJpbGl0eSB0byB3aGl0ZWxpc3QgCisgICAgICAgIHNwZWNpZmlj
IGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gYSBmaWxlIHRvIGVuYWJsZSBmdXJ0aGVyIGZpbHRlcmlu
ZyB3aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjppc1N1cHBvcnRlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
bG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbkZvckNv
bnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRl
bGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OkZ1bmN0aW9uV2hp
dGVsaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6cGFyc2VGdW5j
dGlvbk5hbWVzSW5GaWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6
Y29udGFpbnMpOgorICAgICAgICAqIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA1LTAxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmUgZmFpbHMgdG8gYnVpbGQgd2l0aCBzb21lIHZlcnNp
b25zIG9mIGNsYW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNjgxMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGRmZy9ERkdGaXh1cFBoYXNlLmNwcAogICAgIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHAK
ICAgICBkZmcvREZHRmx1c2hlZEF0LmNwcAorICAgIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAKICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0dyYXBoU2FmZXBvaW50LmNwcAog
ICAgIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY4MTA4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzk1LDYgKzM5NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHRml4dXBQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHRmx1c2hlZEF0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdGbHVzaEZvcm1hdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdH
cmFwaFNhZmVwb2ludC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIiAvPgpAQCAtOTU0LDYgKzk1NSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hlZEF0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hGb3JtYXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdGUFJJbmZvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdHZW5lcmF0aW9uSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZGZnXERGR0dQUkluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdHcmFwaC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY4MTA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg5LDYgKzEwODksOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCI+CisgICAgICA8RmlsdGVyPmRm
ZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCI+CiAgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMzA0Miw2ICszMDQ1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdGUFJJbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRl
bGlzdC5oIj4KKyAgICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdGlvbkluZm8uaCI+CiAgICAg
ICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODEwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04MDEsNiArODAxLDggQEAKIAkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9OwogCQky
QTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBG
RTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIg
LyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9u
V2hpdGVsaXN0LmNwcCAqLzsgfTsKKwkJMkE4ODA2NzkxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1
bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLzsgfTsKIAkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQUEzMTAx
OEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAv
KiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBQUJDREU2MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUFDRTYzQzE4Q0E1QTAzMDBF
RDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNBMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMjU2OSw2ICsyNTcxLDggQEAKIAkJMkE4MzYzODQx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIgLyog
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOyBwYXRoID0gZGZnL0RGR0Z1bmN0aW9uV2hp
dGVsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4ODA2NzcxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0Z1bmN0aW9uV2hpdGVsaXN0Lmg7IHBhdGggPSBkZmcvREZHRnVuY3Rp
b25XaGl0ZWxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJE
NDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDgyNiw2ICs0ODMwLDggQEAKIAkJ
CQkwRkM5N0YzQzE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGREIyQ0U1MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAg
Ki8sCiAJCQkJMEZEQjJDRTYxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggKi8sCisJ
CQkJMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCAq
LywKKwkJCQkyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gZGZnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTU0NzUsNiArNTQ4MSw3IEBACiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQ
SUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUxNDBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE4ODA2NzkxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTY4ODYsNiArNjg5Myw3
IEBACiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24g
MTY4MTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJERkdGdW5jdGlvbldoaXRlbGlz
dC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKQEAgLTQwLDcgKzQxLDggQEAgYm9vbCBpc1N1cHBvcnRlZChD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICByZXR1cm4gT3B0aW9uczo6dXNlREZHSklUKCkK
ICAgICAgICAgJiYgTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpCi0gICAg
ICAgICYmIE9wdGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpOworICAgICAgICAmJiBPcHRpb25zOjpieXRlY29k
ZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpKQorICAgICAgICAmJiBGdW5jdGlvbldoaXRlbGlzdDo6ZW5zdXJlR2xvYmFsV2hpdGVsaXN0
KCkuY29udGFpbnMoY29kZUJsb2NrKTsKIH0KIAogYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVC
bG9jayogY29kZUJsb2NrKQpAQCAtNjYsMjIgKzY4LDE5IEBAIGJvb2wgbWlnaHRDb21waWxlRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3QoQ28KIAogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbChD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29kZUJsb2Nr
KSAKLSAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQor
ICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhp
bXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAg
ICAgICYmICFjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKQog
ICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlk
YXRlKCk7CiB9CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29kZUJsb2NrKSAKLSAg
ICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11
bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkK
KyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4
aW11bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
KCkKICAgICAgICAgJiYgIWNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZh
dGlvbigpCiAgICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5p
bmdDYW5kaWRhdGUoKTsKIH0KIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29kZUJsb2Nr
KSAKLSAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dCgpCisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6
Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQoKQogICAgICAgICAmJiAhY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3Rp
dmF0aW9uKCkKICAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxp
bmluZ0NhbmRpZGF0ZSgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
dW5jdGlvbldoaXRlbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJERkdGdW5jdGlvbldoaXRlbGlzdC5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CisKK3N0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCogZnVuY3Rpb25X
aGl0ZWxpc3Q7CisKK0Z1bmN0aW9uV2hpdGVsaXN0JiBGdW5jdGlvbldoaXRlbGlzdDo6ZW5zdXJl
R2xvYmFsV2hpdGVsaXN0KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6
ZVdoaXRlbGlzdEZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVdoaXRlbGlzdEZs
YWcsIFtdIHsKKyAgICAgICAgZnVuY3Rpb25XaGl0ZWxpc3QgPSBuZXcgRnVuY3Rpb25XaGl0ZWxp
c3QoT3B0aW9uczo6ZGZnRnVuY3Rpb25XaGl0ZWxpc3RGaWxlKCkpOworICAgIH0pOworICAgIHJl
dHVybiAqZnVuY3Rpb25XaGl0ZWxpc3Q7Cit9CisKK0Z1bmN0aW9uV2hpdGVsaXN0OjpGdW5jdGlv
bldoaXRlbGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKK3sKKyAgICBwYXJzZUZ1bmN0aW9uTmFt
ZXNJbkZpbGUoZmlsZW5hbWUpOworfQorCit2b2lkIEZ1bmN0aW9uV2hpdGVsaXN0OjpwYXJzZUZ1
bmN0aW9uTmFtZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpCit7CisgICAgaWYgKCFmaWxl
bmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRklMRSogZiA9IGZvcGVuKGZpbGVuYW1lLCAi
ciIpOworICAgIGlmICghZikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGxlbmd0aDsK
KyAgICBjaGFyKiBsaW5lOworICAgIHdoaWxlICgobGluZSA9IGZnZXRsbihmLCAmbGVuZ3RoKSkp
IHsKKyAgICAgICAgaWYgKHN0cm5zdHIobGluZSwgIi8vIiwgbGVuZ3RoKSA9PSBsaW5lKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gR2V0IHJpZCBvZiBuZXdsaW5lcyBhdCB0
aGUgZW5kIG9mIHRoZSBzdHJpbmdzLgorICAgICAgICBpZiAobGluZVtsZW5ndGgtMV0gPT0gJ1xu
JykgeworICAgICAgICAgICAgbGluZVtsZW5ndGgtMV0gPSAnXDAnOworICAgICAgICAgICAgbGVu
Z3RoLS07CisgICAgICAgIH0KKworICAgICAgICAvLyBTa2lwIGVtcHR5IGxpbmVzLgorICAgICAg
ICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAg
bV9mdW5jdGlvbk5hbWVzLmFkZChTdHJpbmcobGluZSwgbGVuZ3RoKSk7CisgICAgfQorfQorCiti
b29sIEZ1bmN0aW9uV2hpdGVsaXN0Ojpjb250YWlucyhDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29u
c3QgCit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIGlmICghT3B0
aW9uczo6ZGZnRnVuY3Rpb25XaGl0ZWxpc3RGaWxlKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKG1fZnVuY3Rpb25OYW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2stPmluZmVy
cmVkTmFtZSgpKTsKKyAgICBpZiAobV9mdW5jdGlvbk5hbWVzLmNvbnRhaW5zKG5hbWUpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyBoYXNoID0gU3RyaW5nOjpmcm9tVVRGOChj
b2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSk7CisgICAgaWYgKG1fZnVuY3Rpb25O
YW1lcy5jb250YWlucyhoYXNoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcg
bmFtZUFuZEhhc2ggPSBuYW1lOworICAgIG5hbWVBbmRIYXNoLmFwcGVuZCgnIycpOworICAgIG5h
bWVBbmRIYXNoLmFwcGVuZChoYXNoKTsKKyAgICByZXR1cm4gbV9mdW5jdGlvbk5hbWVzLmNvbnRh
aW5zKG5hbWVBbmRIYXNoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0
ZWxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBERkdGdW5jdGlvbldoaXRlbGlzdF9oCisjZGVmaW5lIERGR0Z1bmN0aW9uV2hpdGVsaXN0
X2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeyAKKworY2xhc3MgQ29kZUJsb2NrOworCituYW1lc3Bh
Y2UgREZHIHsKKworY2xhc3MgRnVuY3Rpb25XaGl0ZWxpc3QgeworcHVibGljOgorICAgIHN0YXRp
YyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsV2hpdGVsaXN0KCk7CisKKyAgICBib29s
IGNvbnRhaW5zKENvZGVCbG9jayopIGNvbnN0OworCitwcml2YXRlOgorICAgIEZ1bmN0aW9uV2hp
dGVsaXN0KGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHBhcnNlRnVuY3Rpb25OYW1lc0luRmlsZShj
b25zdCBjaGFyKik7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9mdW5jdGlvbk5hbWVzOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gREZHRnVuY3Rpb25XaGl0
ZWxpc3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJ
KHJldmlzaW9uIDE2ODEwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcsIE9wCiAgICAgcmV0dXJuIHZhbHVlLmluaXQoc3RyaW5nKTsK
IH0KIAorc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBjb25zdCBjaGFyKiYg
dmFsdWUpCit7CisgICAgdmFsdWUgPSBzdHJpbmc7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0
YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgR0NMb2dnaW5nOjpMZXZlbCYgdmFs
dWUpCiB7CiAgICAgaWYgKCFzdHJjYXNlY21wKHN0cmluZywgIm5vbmUiKSB8fCAhc3RyY2FzZWNt
cChzdHJpbmcsICJubyIpIHx8ICFzdHJjYXNlY21wKHN0cmluZywgImZhbHNlIikgfHwgIXN0cmNt
cChzdHJpbmcsICIwIikpIHsKQEAgLTM1MCwxMCArMzU2LDE4IEBAIHZvaWQgT3B0aW9uczo6ZHVt
cE9wdGlvbihPcHRpb25JRCBpZCwgRkkKICAgICBjYXNlIG9wdGlvblJhbmdlVHlwZToKICAgICAg
ICAgZnByaW50ZihzdHJlYW0sICIlcyIsIHNfb3B0aW9uc1tpZF0udS5vcHRpb25SYW5nZVZhbC5y
YW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBnY0xvZ0xldmVsVHlwZToK
KyAgICBjYXNlIG9wdGlvblN0cmluZ1R5cGU6IHsKKyAgICAgICAgY29uc3QgY2hhciogb3B0aW9u
ID0gc19vcHRpb25zW2lkXS51Lm9wdGlvblN0cmluZ1ZhbDsKKyAgICAgICAgaWYgKCFvcHRpb24p
CisgICAgICAgICAgICBvcHRpb24gPSAiIjsKKyAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIs
IG9wdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGdjTG9nTGV2ZWxUeXBl
OiB7CiAgICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBHQ0xvZ2dpbmc6OmxldmVsQXNTdHJp
bmcoc19vcHRpb25zW2lkXS51LmdjTG9nTGV2ZWxWYWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIH0KICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgZm9vdGVyKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTY4MTA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiB9OwogCiB0eXBlZGVmIE9wdGlvblJhbmdlIG9w
dGlvblJhbmdlOwordHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAKICNkZWZpbmUg
SlNDX09QVElPTlModikgXAogICAgIHYoYm9vbCwgdXNlTExJbnQsICB0cnVlKSBcCkBAIC0xMTcs
NiArMTE4LDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KGJvb2ws
IHNob3dGVExEaXNhc3NlbWJseSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNob3dBbGxERkdOb2Rl
cywgZmFsc2UpIFwKICAgICB2KG9wdGlvblJhbmdlLCBieXRlY29kZVJhbmdlVG9ERkdDb21waWxl
LCAwKSBcCisgICAgdihvcHRpb25TdHJpbmcsIGRmZ0Z1bmN0aW9uV2hpdGVsaXN0RmlsZSwgbnVs
bHB0cikgXAogICAgIHYoYm9vbCwgZHVtcEJ5dGVjb2RlQXRERkdUaW1lLCBmYWxzZSkgXAogICAg
IHYoYm9vbCwgZHVtcEdyYXBoQXRFYWNoUGhhc2UsIGZhbHNlKSBcCiAgICAgdihib29sLCB2ZXJi
b3NlREZHQnl0ZUNvZGVQYXJzaW5nLCBmYWxzZSkgXApAQCAtMzA4LDYgKzMxMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGRvdWJsZVR5cGUsCiAgICAgICAgIGludDMyVHlwZSwKICAgICAgICAgb3B0
aW9uUmFuZ2VUeXBlLAorICAgICAgICBvcHRpb25TdHJpbmdUeXBlLAogICAgICAgICBnY0xvZ0xl
dmVsVHlwZSwKICAgICB9OwogCkBAIC0zMTksNiArMzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGRvdWJsZSBkb3VibGVWYWw7CiAgICAgICAgICAgICBpbnQzMiBpbnQzMlZhbDsKICAgICAg
ICAgICAgIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlVmFsOworICAgICAgICAgICAgY29uc3QgY2hh
ciogb3B0aW9uU3RyaW5nVmFsOwogICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xl
dmVsVmFsOwogICAgICAgICB9IHU7CiAgICAgICAgIGJvb2wgZGlkT3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230615</attachid>
            <date>2014-05-01 15:07:22 -0700</date>
            <delta_ts>2014-05-01 17:31:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132437-20140501150525.patch</filename>
            <type>text/plain</type>
            <size>23586</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4MTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE0LTA1LTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgREZHIGZ1bmN0aW9uIHdoaXRlbGlzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNDM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2Z0ZW4gdGltZXMgd2hlbiBkZWJ1Z2dpbmcs
IHVzaW5nIGJ5dGVjb2RlIHJhbmdlcyBpc24ndCBlbm91Z2ggdG8gbmFycm93IGRvd24gdG8gdGhl
IAorICAgICAgICBwYXJ0aWN1bGFyIERGRyBibG9jayB0aGF0J3MgY2F1c2luZyBpc3N1ZXMuIFRo
aXMgcGF0Y2ggYWRkcyB0aGUgYWJpbGl0eSB0byB3aGl0ZWxpc3QgCisgICAgICAgIHNwZWNpZmlj
IGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gYSBmaWxlIHRvIGVuYWJsZSBmdXJ0aGVyIGZpbHRlcmlu
ZyB3aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjppc1N1cHBvcnRlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
bG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbkZvckNv
bnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRl
bGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OkZ1bmN0aW9uV2hp
dGVsaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6cGFyc2VGdW5j
dGlvbk5hbWVzSW5GaWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6
Y29udGFpbnMpOgorICAgICAgICAqIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA1LTAxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmUgZmFpbHMgdG8gYnVpbGQgd2l0aCBzb21lIHZlcnNp
b25zIG9mIGNsYW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNjgxMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGRmZy9ERkdGaXh1cFBoYXNlLmNwcAogICAgIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHAK
ICAgICBkZmcvREZHRmx1c2hlZEF0LmNwcAorICAgIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAKICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0dyYXBoU2FmZXBvaW50LmNwcAog
ICAgIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY4MTA4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzk1LDYgKzM5NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHRml4dXBQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHRmx1c2hlZEF0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdGbHVzaEZvcm1hdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdH
cmFwaFNhZmVwb2ludC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIiAvPgpAQCAtOTU0LDYgKzk1NSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hlZEF0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hGb3JtYXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdGUFJJbmZvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdHZW5lcmF0aW9uSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZGZnXERGR0dQUkluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdHcmFwaC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY4MTA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg5LDYgKzEwODksOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCI+CisgICAgICA8RmlsdGVyPmRm
ZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCI+CiAgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMzA0Miw2ICszMDQ1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdGUFJJbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRl
bGlzdC5oIj4KKyAgICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdGlvbkluZm8uaCI+CiAgICAg
ICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODEwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04MDEsNiArODAxLDggQEAKIAkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9OwogCQky
QTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBG
RTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIg
LyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9u
V2hpdGVsaXN0LmNwcCAqLzsgfTsKKwkJMkE4ODA2NzkxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1
bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLzsgfTsKIAkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQUEzMTAx
OEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAv
KiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBQUJDREU2MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUFDRTYzQzE4Q0E1QTAzMDBF
RDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNBMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMjU2OSw2ICsyNTcxLDggQEAKIAkJMkE4MzYzODQx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIgLyog
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOyBwYXRoID0gZGZnL0RGR0Z1bmN0aW9uV2hp
dGVsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4ODA2NzcxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0Z1bmN0aW9uV2hpdGVsaXN0Lmg7IHBhdGggPSBkZmcvREZHRnVuY3Rp
b25XaGl0ZWxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJE
NDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDgyNiw2ICs0ODMwLDggQEAKIAkJ
CQkwRkM5N0YzQzE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGREIyQ0U1MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAg
Ki8sCiAJCQkJMEZEQjJDRTYxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggKi8sCisJ
CQkJMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCAq
LywKKwkJCQkyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gZGZnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTU0NzUsNiArNTQ4MSw3IEBACiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQ
SUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUxNDBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE4ODA2NzkxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTY4ODYsNiArNjg5Myw3
IEBACiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE2
ODEwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTg3LDQgKzM1ODcsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OnNldFN0
ZXBwaW5nTW9kZShDb2RlQmxvYwogICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25E
dWVUb0RlYnVnZ2VyU3RlcHBpbmcpOwogfQogCitSYXJlQ2FzZVByb2ZpbGUqIENvZGVCbG9jazo6
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorewor
ICAgIFJhcmVDYXNlUHJvZmlsZSogcHJvZmlsZSA9IHRyeUJpbmFyeVNlYXJjaDxSYXJlQ2FzZVBy
b2ZpbGUsIGludD4oCisgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVByb2Zp
bGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGdldFJhcmVDYXNlUHJvZmlsZUJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICBpZiAoIXByb2ZpbGUpCisgICAgICAgIGRhdGFMb2coIkdvdCBu
dWxsIHByb2ZpbGUgZm9yIGJ5dGVjb2RlICIsIGJ5dGVjb2RlT2Zmc2V0LCAiIGluIGNvZGUgYmxv
Y2sgIiwgKnRoaXMsICJcbiIpOworICAgIHJldHVybiBwcm9maWxlOworfQorCitERkc6OkNhcGFi
aWxpdHlMZXZlbCBDb2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbCgpCit7CisgICAgREZHOjpDYXBh
YmlsaXR5TGV2ZWwgcmVzdWx0ID0gY2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKTsKKyAgICBtX2Nh
cGFiaWxpdHlMZXZlbFN0YXRlID0gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMTY4MTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTIgKzMwMSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAKICAgICB2
aXJ0dWFsIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgPSAw
OwotICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCgpCi0gICAgewotICAg
ICAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCByZXN1bHQgPSBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5h
bCgpOwotICAgICAgICBtX2NhcGFiaWxpdHlMZXZlbFN0YXRlID0gcmVzdWx0OwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoKTsKICAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxTdGF0ZSgp
IHsgcmV0dXJuIG1fY2FwYWJpbGl0eUxldmVsU3RhdGU7IH0KIAogICAgIGJvb2wgaGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoSklUQ29kZTo6SklUVHlwZSB0eXBlVG9SZXBsYWNlKTsKQEAgLTQ2Niwx
MiArNDYxLDcgQEAgcHVibGljOgogICAgIH0KICAgICB1bnNpZ25lZCBudW1iZXJPZlJhcmVDYXNl
UHJvZmlsZXMoKSB7IHJldHVybiBtX3JhcmVDYXNlUHJvZmlsZXMuc2l6ZSgpOyB9CiAgICAgUmFy
ZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2ZpbGUoaW50IGluZGV4KSB7IHJldHVybiAmbV9yYXJl
Q2FzZVByb2ZpbGVzW2luZGV4XTsgfQotICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxSYXJlQ2FzZVByb2ZpbGUsIGludD4oCi0gICAgICAgICAg
ICBtX3JhcmVDYXNlUHJvZmlsZXMsIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCksIGJ5dGVjb2Rl
T2Zmc2V0LAotICAgICAgICAgICAgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmZzZXQpOwot
ICAgIH0KKyAgICBSYXJlQ2FzZVByb2ZpbGUqIHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGludCBieXRlY29kZU9mZnNldCk7CiAKICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjgxMDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgorI2luY2x1ZGUgIkRGR0Z1bmN0aW9uV2hpdGVsaXN0LmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5o
IgpAQCAtNDAsNyArNDEsOCBAQCBib29sIGlzU3VwcG9ydGVkKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewogICAgIHJldHVybiBPcHRpb25zOjp1c2VERkdKSVQoKQogICAgICAgICAmJiBNYWNyb0Fz
c2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50KCkKLSAgICAgICAgJiYgT3B0aW9uczo6Ynl0
ZWNvZGVSYW5nZVRvREZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSk7CisgICAgICAgICYmIE9wdGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUo
KS5pc0luUmFuZ2UoY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpCisgICAgICAgICYmIEZ1
bmN0aW9uV2hpdGVsaXN0OjplbnN1cmVHbG9iYWxXaGl0ZWxpc3QoKS5jb250YWlucyhjb2RlQmxv
Y2spOwogfQogCiBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBA
IC02NiwyMiArNjgsMTkgQEAgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChD
bwogCiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spIAotICAgICAgICAmJiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JD
YWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgcmV0dXJuIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJ
bmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKICAgICAgICAgJiYgIWNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigpCiAgICAgICAgICYmIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKIH0KIGJvb2wgbWln
aHRJbmxpbmVGdW5jdGlvbkZvckNsb3N1cmVDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewot
ICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spIAotICAgICAgICAmJiBjb2RlQmxvY2st
Pmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJl
Q2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAgIHJldHVybiBjb2RlQmxv
Y2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9z
dXJlQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQogICAgICAgICAmJiAhY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCkKICAgICAgICAgJiYg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpOwogfQog
Ym9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spIAotICAgICAgICAmJiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JD
b25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKKyAgICByZXR1cm4gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9y
Q29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAgICAgICYmICFj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKQogICAgICAgICAm
JiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJl
dmlzaW9uIDE2ODEwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE4ICs4MSwyMCBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIHByb2dyYW1DYXBhYmlsaXR5CiAKIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgZnVuY3Rp
b25Gb3JDYWxsQ2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlm
ICghbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKGNvZGVCbG9jaykpCi0gICAgICAgIHJldHVy
biBDYW5ub3RDb21waWxlOwotICAgIAotICAgIHJldHVybiBjYXBhYmlsaXR5TGV2ZWwoY29kZUJs
b2NrKTsKKyAgICBpZiAobWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKGNvZGVCbG9jaykpCisg
ICAgICAgIHJldHVybiBjYXBhYmlsaXR5TGV2ZWwoY29kZUJsb2NrKTsKKyAgICBpZiAobWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNhbGwoY29kZUJsb2NrKSkKKyAgICAgICAgcmV0dXJuIGxlYXN0VXBw
ZXJCb3VuZChDYW5JbmxpbmUsIGNhcGFiaWxpdHlMZXZlbChjb2RlQmxvY2spKTsKKyAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKIH0KIAogaW5saW5lIENhcGFiaWxpdHlMZXZlbCBmdW5jdGlvbkZv
ckNvbnN0cnVjdENhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBp
ZiAoIW1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykpCi0gICAgICAg
IHJldHVybiBDYW5ub3RDb21waWxlOwotICAgIAotICAgIHJldHVybiBjYXBhYmlsaXR5TGV2ZWwo
Y29kZUJsb2NrKTsKKyAgICBpZiAobWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoY29k
ZUJsb2NrKSkKKyAgICAgICAgcmV0dXJuIGNhcGFiaWxpdHlMZXZlbChjb2RlQmxvY2spOworICAg
IGlmIChtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykpCisgICAgICAg
IHJldHVybiBsZWFzdFVwcGVyQm91bmQoQ2FuSW5saW5lLCBjYXBhYmlsaXR5TGV2ZWwoY29kZUJs
b2NrKSk7CisgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiB9CiAKIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgaW5saW5lRnVuY3Rpb25Gb3JDYWxsQ2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayogY29k
ZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRl
bGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5j
dGlvbldoaXRlbGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdGdW5j
dGlvbldoaXRlbGlzdC5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiT3B0
aW9ucy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CisKK3N0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCogZnVuY3Rpb25XaGl0ZWxpc3Q7CisK
K0Z1bmN0aW9uV2hpdGVsaXN0JiBGdW5jdGlvbldoaXRlbGlzdDo6ZW5zdXJlR2xvYmFsV2hpdGVs
aXN0KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZVdoaXRlbGlzdEZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVdoaXRlbGlzdEZsYWcsIFtdIHsKKyAg
ICAgICAgZnVuY3Rpb25XaGl0ZWxpc3QgPSBuZXcgRnVuY3Rpb25XaGl0ZWxpc3QoT3B0aW9uczo6
ZGZnRnVuY3Rpb25XaGl0ZWxpc3RGaWxlKCkpOworICAgIH0pOworICAgIHJldHVybiAqZnVuY3Rp
b25XaGl0ZWxpc3Q7Cit9CisKK0Z1bmN0aW9uV2hpdGVsaXN0OjpGdW5jdGlvbldoaXRlbGlzdChj
b25zdCBjaGFyKiBmaWxlbmFtZSkKK3sKKyAgICBwYXJzZUZ1bmN0aW9uTmFtZXNJbkZpbGUoZmls
ZW5hbWUpOworfQorCit2b2lkIEZ1bmN0aW9uV2hpdGVsaXN0OjpwYXJzZUZ1bmN0aW9uTmFtZXNJ
bkZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpCit7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRklMRSogZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworICAgIGlm
ICghZikgeworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlv
dSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/XG4i
LCBmaWxlbmFtZSk7IAorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hhciogbGluZTsK
KyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOworICAgIHdoaWxlICgobGluZSA9IGZnZXRzKGJ1ZmZl
ciwgc2l6ZW9mKGJ1ZmZlciksIGYpKSkgeworICAgICAgICBpZiAoc3Ryc3RyKGxpbmUsICIvLyIp
ID09IGxpbmUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBHZXQgcmlkIG9m
IG5ld2xpbmVzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZ3MuCisgICAgICAgIHNpemVfdCBsZW5n
dGggPSBzdHJsZW4obGluZSk7CisgICAgICAgIGlmIChsaW5lW2xlbmd0aC0xXSA9PSAnXG4nKSB7
CisgICAgICAgICAgICBsaW5lW2xlbmd0aC0xXSA9ICdcMCc7CisgICAgICAgICAgICBsZW5ndGgt
LTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNraXAgZW1wdHkgbGluZXMuCisgICAgICAgIGlm
ICghbGVuZ3RoKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBtX2Z1
bmN0aW9uTmFtZXMuYWRkKFN0cmluZyhsaW5lLCBsZW5ndGgpKTsKKyAgICB9Cit9CisKK2Jvb2wg
RnVuY3Rpb25XaGl0ZWxpc3Q6OmNvbnRhaW5zKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdCAK
K3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgaWYgKCFPcHRpb25z
OjpkZmdGdW5jdGlvbldoaXRlbGlzdEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAobV9mdW5jdGlvbk5hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KGNvZGVCbG9jay0+aW5mZXJyZWRO
YW1lKCkpOworICAgIGlmIChtX2Z1bmN0aW9uTmFtZXMuY29udGFpbnMobmFtZSkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgU3RyaW5nIGhhc2ggPSBTdHJpbmc6OmZyb21VVEY4KGNvZGVC
bG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpKTsKKyAgICBpZiAobV9mdW5jdGlvbk5hbWVz
LmNvbnRhaW5zKGhhc2gpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyBuYW1l
QW5kSGFzaCA9IG5hbWU7CisgICAgbmFtZUFuZEhhc2guYXBwZW5kKCcjJyk7CisgICAgbmFtZUFu
ZEhhc2guYXBwZW5kKGhhc2gpOworICAgIHJldHVybiBtX2Z1bmN0aW9uTmFtZXMuY29udGFpbnMo
bmFtZUFuZEhhc2gpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IERGR0Z1bmN0aW9uV2hpdGVsaXN0X2gKKyNkZWZpbmUgREZHRnVuY3Rpb25XaGl0ZWxpc3RfaAor
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIEpTQyB7IAorCitjbGFzcyBDb2RlQmxvY2s7CisKK25hbWVzcGFjZSBE
RkcgeworCitjbGFzcyBGdW5jdGlvbldoaXRlbGlzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIEZ1
bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxXaGl0ZWxpc3QoKTsKKworICAgIGJvb2wgY29u
dGFpbnMoQ29kZUJsb2NrKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb25XaGl0ZWxp
c3QoY29uc3QgY2hhciopOworICAgIHZvaWQgcGFyc2VGdW5jdGlvbk5hbWVzSW5GaWxlKGNvbnN0
IGNoYXIqKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Z1bmN0aW9uTmFtZXM7Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBERkdGdW5jdGlvbldoaXRlbGlz
dF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2
aXNpb24gMTY4MTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEyIEBAIHN0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgT3AKICAgICByZXR1cm4gdmFsdWUuaW5pdChzdHJpbmcpOwogfQog
CitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGNvbnN0IGNoYXIqJiB2YWx1
ZSkKK3sKKyAgICB2YWx1ZSA9IHN0cmluZzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBHQ0xvZ2dpbmc6OkxldmVsJiB2YWx1ZSkK
IHsKICAgICBpZiAoIXN0cmNhc2VjbXAoc3RyaW5nLCAibm9uZSIpIHx8ICFzdHJjYXNlY21wKHN0
cmluZywgIm5vIikgfHwgIXN0cmNhc2VjbXAoc3RyaW5nLCAiZmFsc2UiKSB8fCAhc3RyY21wKHN0
cmluZywgIjAiKSkgewpAQCAtMzUwLDEwICszNTYsMTggQEAgdm9pZCBPcHRpb25zOjpkdW1wT3B0
aW9uKE9wdGlvbklEIGlkLCBGSQogICAgIGNhc2Ugb3B0aW9uUmFuZ2VUeXBlOgogICAgICAgICBm
cHJpbnRmKHN0cmVhbSwgIiVzIiwgc19vcHRpb25zW2lkXS51Lm9wdGlvblJhbmdlVmFsLnJhbmdl
U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIGdjTG9nTGV2ZWxUeXBlOgorICAg
IGNhc2Ugb3B0aW9uU3RyaW5nVHlwZTogeworICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBz
X29wdGlvbnNbaWRdLnUub3B0aW9uU3RyaW5nVmFsOworICAgICAgICBpZiAoIW9wdGlvbikKKyAg
ICAgICAgICAgIG9wdGlvbiA9ICIiOworICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgb3B0
aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgZ2NMb2dMZXZlbFR5cGU6IHsK
ICAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhz
X29wdGlvbnNbaWRdLnUuZ2NMb2dMZXZlbFZhbCkpOwogICAgICAgICBicmVhazsKICAgICB9Cisg
ICAgfQogICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBmb290ZXIpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNjgxMDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKIH07CiAKIHR5cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9u
UmFuZ2U7Cit0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKIAogI2RlZmluZSBKU0Nf
T1BUSU9OUyh2KSBcCiAgICAgdihib29sLCB1c2VMTEludCwgIHRydWUpIFwKQEAgLTExNyw2ICsx
MTgsNyBAQCB0eXBlZGVmIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlOwogICAgIHYoYm9vbCwgc2hv
d0ZUTERpc2Fzc2VtYmx5LCBmYWxzZSkgXAogICAgIHYoYm9vbCwgc2hvd0FsbERGR05vZGVzLCBm
YWxzZSkgXAogICAgIHYob3B0aW9uUmFuZ2UsIGJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUsIDAp
IFwKKyAgICB2KG9wdGlvblN0cmluZywgZGZnRnVuY3Rpb25XaGl0ZWxpc3RGaWxlLCBudWxscHRy
KSBcCiAgICAgdihib29sLCBkdW1wQnl0ZWNvZGVBdERGR1RpbWUsIGZhbHNlKSBcCiAgICAgdihi
b29sLCBkdW1wR3JhcGhBdEVhY2hQaGFzZSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHZlcmJvc2VE
RkdCeXRlQ29kZVBhcnNpbmcsIGZhbHNlKSBcCkBAIC0zMDgsNiArMzEwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgZG91YmxlVHlwZSwKICAgICAgICAgaW50MzJUeXBlLAogICAgICAgICBvcHRpb25S
YW5nZVR5cGUsCisgICAgICAgIG9wdGlvblN0cmluZ1R5cGUsCiAgICAgICAgIGdjTG9nTGV2ZWxU
eXBlLAogICAgIH07CiAKQEAgLTMxOSw2ICszMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ZG91YmxlIGRvdWJsZVZhbDsKICAgICAgICAgICAgIGludDMyIGludDMyVmFsOwogICAgICAgICAg
ICAgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2VWYWw7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBv
cHRpb25TdHJpbmdWYWw7CiAgICAgICAgICAgICBHQ0xvZ2dpbmc6OkxldmVsIGdjTG9nTGV2ZWxW
YWw7CiAgICAgICAgIH0gdTsKICAgICAgICAgYm9vbCBkaWRPdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230633</attachid>
            <date>2014-05-01 17:31:33 -0700</date>
            <delta_ts>2014-05-01 17:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132437-20140501172931.patch</filename>
            <type>text/plain</type>
            <size>23953</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE0LTA1LTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgREZHIGZ1bmN0aW9uIHdoaXRlbGlzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNDM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2Z0ZW4gdGltZXMgd2hlbiBkZWJ1Z2dpbmcs
IHVzaW5nIGJ5dGVjb2RlIHJhbmdlcyBpc24ndCBlbm91Z2ggdG8gbmFycm93IGRvd24gdG8gdGhl
IAorICAgICAgICBwYXJ0aWN1bGFyIERGRyBibG9jayB0aGF0J3MgY2F1c2luZyBpc3N1ZXMuIFRo
aXMgcGF0Y2ggYWRkcyB0aGUgYWJpbGl0eSB0byB3aGl0ZWxpc3QgCisgICAgICAgIHNwZWNpZmlj
IGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gYSBmaWxlIHRvIGVuYWJsZSBmdXJ0aGVyIGZpbHRlcmlu
ZyB3aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjppc1N1cHBvcnRlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
bG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbkZvckNv
bnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRl
bGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OkZ1bmN0aW9uV2hp
dGVsaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6cGFyc2VGdW5j
dGlvbk5hbWVzSW5GaWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6
Y29udGFpbnMpOgorICAgICAgICAqIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA1LTAxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmUgZmFpbHMgdG8gYnVpbGQgd2l0aCBzb21lIHZlcnNp
b25zIG9mIGNsYW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNjgxMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGRmZy9ERkdGaXh1cFBoYXNlLmNwcAogICAgIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHAK
ICAgICBkZmcvREZHRmx1c2hlZEF0LmNwcAorICAgIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAKICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0dyYXBoU2FmZXBvaW50LmNwcAog
ICAgIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzk1LDYgKzM5NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHRml4dXBQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHRmx1c2hlZEF0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdGbHVzaEZvcm1hdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdH
cmFwaFNhZmVwb2ludC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIiAvPgpAQCAtOTU0LDYgKzk1NSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hlZEF0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hGb3JtYXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdGUFJJbmZvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdHZW5lcmF0aW9uSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZGZnXERGR0dQUkluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdHcmFwaC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg5LDYgKzEwODksOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCI+CisgICAgICA8RmlsdGVyPmRm
ZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCI+CiAgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMzA0Miw2ICszMDQ1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdGUFJJbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRl
bGlzdC5oIj4KKyAgICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdGlvbkluZm8uaCI+CiAgICAg
ICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODEzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04MDEsNiArODAxLDggQEAKIAkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9OwogCQky
QTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBG
RTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIg
LyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9u
V2hpdGVsaXN0LmNwcCAqLzsgfTsKKwkJMkE4ODA2NzkxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1
bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLzsgfTsKIAkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQUEzMTAx
OEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAv
KiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBQUJDREU2MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUFDRTYzQzE4Q0E1QTAzMDBF
RDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNBMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMjU2OSw2ICsyNTcxLDggQEAKIAkJMkE4MzYzODQx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIgLyog
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOyBwYXRoID0gZGZnL0RGR0Z1bmN0aW9uV2hp
dGVsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4ODA2NzcxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0Z1bmN0aW9uV2hpdGVsaXN0Lmg7IHBhdGggPSBkZmcvREZHRnVuY3Rp
b25XaGl0ZWxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJE
NDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDgyNiw2ICs0ODMwLDggQEAKIAkJ
CQkwRkM5N0YzQzE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGREIyQ0U1MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAg
Ki8sCiAJCQkJMEZEQjJDRTYxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggKi8sCisJ
CQkJMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCAq
LywKKwkJCQkyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gZGZnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTU0NzUsNiArNTQ4MSw3IEBACiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQ
SUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUxNDBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE4ODA2NzkxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTY4ODYsNiArNjg5Myw3
IEBACiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE2
ODEzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTg3LDQgKzM1ODcsMTggQEAgdm9pZCBDb2RlQmxvY2s6OnNldFN0
ZXBwaW5nTW9kZShDb2RlQmxvYwogICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25E
dWVUb0RlYnVnZ2VyU3RlcHBpbmcpOwogfQogCitSYXJlQ2FzZVByb2ZpbGUqIENvZGVCbG9jazo6
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorewor
ICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8UmFyZUNhc2VQcm9maWxlLCBpbnQ+KAorICAgICAg
ICBtX3JhcmVDYXNlUHJvZmlsZXMsIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCksIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZnNldCk7Cit9CisK
K0RGRzo6Q2FwYWJpbGl0eUxldmVsIENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsKCkKK3sKKyAg
ICBERkc6OkNhcGFiaWxpdHlMZXZlbCByZXN1bHQgPSBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgp
OworICAgIG1fY2FwYWJpbGl0eUxldmVsU3RhdGUgPSByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjgxMzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSwxMiAr
MzAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0g
MDsKIAogICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsSW50
ZXJuYWwoKSA9IDA7Ci0gICAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKCkK
LSAgICB7Ci0gICAgICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIHJlc3VsdCA9IGNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCk7Ci0gICAgICAgIG1fY2FwYWJpbGl0eUxldmVsU3RhdGUgPSByZXN1bHQ7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIERGRzo6Q2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbCgpOwogICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbFN0YXRlKCkgeyByZXR1cm4gbV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZTsgfQogCiAgICAgYm9v
bCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudChKSVRDb2RlOjpKSVRUeXBlIHR5cGVUb1JlcGxhY2Up
OwpAQCAtNDY2LDEyICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHVuc2lnbmVkIG51bWJl
ck9mUmFyZUNhc2VQcm9maWxlcygpIHsgcmV0dXJuIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCk7
IH0KICAgICBSYXJlQ2FzZVByb2ZpbGUqIHJhcmVDYXNlUHJvZmlsZShpbnQgaW5kZXgpIHsgcmV0
dXJuICZtX3JhcmVDYXNlUHJvZmlsZXNbaW5kZXhdOyB9Ci0gICAgUmFyZUNhc2VQcm9maWxlKiBy
YXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCi0gICAg
ewotICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPFJhcmVDYXNlUHJvZmlsZSwgaW50PigK
LSAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVByb2ZpbGVzLnNpemUo
KSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29k
ZU9mZnNldCk7Ci0gICAgfQorICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KTsKIAogICAgIGJvb2wgbGlrZWx5VG9U
YWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE2ODEzNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCkBAIC00MCw3ICs0MSw4IEBAIGJvb2wgaXNTdXBwb3J0ZWQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZURGR0pJVCgpCiAgICAgICAg
ICYmIE1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQotICAgICAgICAmJiBP
cHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICAgICAgJiYgT3B0aW9uczo6Ynl0ZWNvZGVSYW5nZVRv
REZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSkKKyAg
ICAgICAgJiYgRnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgpLmNvbnRh
aW5zKGNvZGVCbG9jayk7CiB9CiAKIGJvb2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKQEAgLTY2LDIyICs2OCwxOSBAQCBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9y
Q29uc3RydWN0KENvCiAKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCi0gICAg
ICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1G
dW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKKyAgICByZXR1
cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0
aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQogICAgICAgICAmJiAh
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCkKICAgICAgICAg
JiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpOwog
fQogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCi0gICAgICAgICYm
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlv
bkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgcmV0
dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAg
ICAgICYmICFjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKQog
ICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlk
YXRlKCk7CiB9CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCi0gICAg
ICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1G
dW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAg
IHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVt
RnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKICAg
ICAgICAgJiYgIWNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigp
CiAgICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5k
aWRhdGUoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMjAgKzc5LDMzIEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgcHJvZ3JhbUNhcGFiaWxpdHkKICAgICByZXR1cm4gY2FwYWJpbGl0
eUxldmVsKGNvZGVCbG9jayk7CiB9CiAKLWlubGluZSBDYXBhYmlsaXR5TGV2ZWwgZnVuY3Rpb25G
b3JDYWxsQ2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayogY29kZUJsb2NrKQoraW5saW5lIENhcGFi
aWxpdHlMZXZlbCBmdW5jdGlvbkNhcGFiaWxpdHlMZXZlbChib29sIG1pZ2h0Q29tcGlsZSwgYm9v
bCBtaWdodElubGluZSwgQ2FwYWJpbGl0eUxldmVsIGNvbXB1dGVkQ2FwYWJpbGl0eUxldmVsKQog
ewotICAgIGlmICghbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKGNvZGVCbG9jaykpCisgICAg
aWYgKG1pZ2h0Q29tcGlsZSAmJiBtaWdodElubGluZSkKKyAgICAgICAgcmV0dXJuIGxlYXN0VXBw
ZXJCb3VuZChDYW5Db21waWxlQW5kSW5saW5lLCBjb21wdXRlZENhcGFiaWxpdHlMZXZlbCk7Cisg
ICAgaWYgKG1pZ2h0Q29tcGlsZSAmJiAhbWlnaHRJbmxpbmUpCisgICAgICAgIHJldHVybiBsZWFz
dFVwcGVyQm91bmQoQ2FuQ29tcGlsZSwgY29tcHV0ZWRDYXBhYmlsaXR5TGV2ZWwpOworICAgIGlm
ICghbWlnaHRDb21waWxlICYmIG1pZ2h0SW5saW5lKQorICAgICAgICByZXR1cm4gbGVhc3RVcHBl
ckJvdW5kKENhbklubGluZSwgY29tcHV0ZWRDYXBhYmlsaXR5TGV2ZWwpOworICAgIGlmICghbWln
aHRDb21waWxlICYmICFtaWdodElubGluZSkKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7
Ci0gICAgCi0gICAgcmV0dXJuIGNhcGFiaWxpdHlMZXZlbChjb2RlQmxvY2spOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2lubGluZSBDYXBhYmlsaXR5TGV2ZWwgZnVu
Y3Rpb25Gb3JDYWxsQ2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAg
IHJldHVybiBmdW5jdGlvbkNhcGFiaWxpdHlMZXZlbCgKKyAgICAgICAgbWlnaHRDb21waWxlRnVu
Y3Rpb25Gb3JDYWxsKGNvZGVCbG9jayksCisgICAgICAgIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
YWxsKGNvZGVCbG9jayksCisgICAgICAgIGNhcGFiaWxpdHlMZXZlbChjb2RlQmxvY2spKTsKIH0K
IAogaW5saW5lIENhcGFiaWxpdHlMZXZlbCBmdW5jdGlvbkZvckNvbnN0cnVjdENhcGFiaWxpdHlM
ZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBpZiAoIW1pZ2h0Q29tcGlsZUZ1bmN0
aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykpCi0gICAgICAgIHJldHVybiBDYW5ub3RDb21waWxl
OwotICAgIAotICAgIHJldHVybiBjYXBhYmlsaXR5TGV2ZWwoY29kZUJsb2NrKTsKKyAgICByZXR1
cm4gZnVuY3Rpb25DYXBhYmlsaXR5TGV2ZWwoCisgICAgICAgIG1pZ2h0Q29tcGlsZUZ1bmN0aW9u
Rm9yQ29uc3RydWN0KGNvZGVCbG9jayksCisgICAgICAgIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
b25zdHJ1Y3QoY29kZUJsb2NrKSwKKyAgICAgICAgY2FwYWJpbGl0eUxldmVsKGNvZGVCbG9jaykp
OwogfQogCiBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGlubGluZUZ1bmN0aW9uRm9yQ2FsbENhcGFi
aWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIKKworI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitzdGF0aWMgRnVuY3Rpb25XaGl0ZWxp
c3QqIGZ1bmN0aW9uV2hpdGVsaXN0OworCitGdW5jdGlvbldoaXRlbGlzdCYgRnVuY3Rpb25XaGl0
ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVXaGl0ZWxpc3RGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVXaGl0ZWxpc3RGbGFnLCBbXSB7CisgICAgICAgIGZ1bmN0aW9uV2hpdGVsaXN0ID0gbmV3IEZ1
bmN0aW9uV2hpdGVsaXN0KE9wdGlvbnM6OmRmZ0Z1bmN0aW9uV2hpdGVsaXN0RmlsZSgpKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gKmZ1bmN0aW9uV2hpdGVsaXN0OworfQorCitGdW5jdGlvbldoaXRl
bGlzdDo6RnVuY3Rpb25XaGl0ZWxpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCit7CisgICAgcGFy
c2VGdW5jdGlvbk5hbWVzSW5GaWxlKGZpbGVuYW1lKTsKK30KKwordm9pZCBGdW5jdGlvbldoaXRl
bGlzdDo6cGFyc2VGdW5jdGlvbk5hbWVzSW5GaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorewor
ICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEZJTEUqIGYgPSBmb3Bl
bihmaWxlbmFtZSwgInIiKTsKKyAgICBpZiAoIWYpIHsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxl
ZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3UgYWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxl
bWVudCB0byBXZWJQcm9jZXNzLnNiP1xuIiwgZmlsZW5hbWUpOyAKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNoYXIqIGxpbmU7CisgICAgY2hhciBidWZmZXJbQlVGU0laXTsKKyAgICB3
aGlsZSAoKGxpbmUgPSBmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmKSkpIHsKKyAgICAg
ICAgaWYgKHN0cnN0cihsaW5lLCAiLy8iKSA9PSBsaW5lKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgLy8gR2V0IHJpZCBvZiBuZXdsaW5lcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJp
bmdzLgorICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGxpbmUpOworICAgICAgICBpZiAo
bGluZVtsZW5ndGgtMV0gPT0gJ1xuJykgeworICAgICAgICAgICAgbGluZVtsZW5ndGgtMV0gPSAn
XDAnOworICAgICAgICAgICAgbGVuZ3RoLS07CisgICAgICAgIH0KKworICAgICAgICAvLyBTa2lw
IGVtcHR5IGxpbmVzLgorICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAKKyAgICAgICAgbV9mdW5jdGlvbk5hbWVzLmFkZChTdHJpbmcobGluZSwgbGVu
Z3RoKSk7CisgICAgfQorfQorCitib29sIEZ1bmN0aW9uV2hpdGVsaXN0Ojpjb250YWlucyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaykgY29uc3QgCit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOworICAgIGlmICghT3B0aW9uczo6ZGZnRnVuY3Rpb25XaGl0ZWxpc3RGaWxlKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fZnVuY3Rpb25OYW1lcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9t
VVRGOChjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpKTsKKyAgICBpZiAobV9mdW5jdGlvbk5hbWVz
LmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyBoYXNo
ID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSk7
CisgICAgaWYgKG1fZnVuY3Rpb25OYW1lcy5jb250YWlucyhoYXNoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBTdHJpbmcgbmFtZUFuZEhhc2ggPSBuYW1lOworICAgIG5hbWVBbmRIYXNo
LmFwcGVuZCgnIycpOworICAgIG5hbWVBbmRIYXNoLmFwcGVuZChoYXNoKTsKKyAgICByZXR1cm4g
bV9mdW5jdGlvbk5hbWVzLmNvbnRhaW5zKG5hbWVBbmRIYXNoKTsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlv
bldoaXRlbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RnVuY3Rpb25XaGl0ZWxpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkdGdW5jdGlvbldoaXRlbGlzdF9oCisjZGVmaW5l
IERGR0Z1bmN0aW9uV2hpdGVsaXN0X2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeyAKKworY2xhc3Mg
Q29kZUJsb2NrOworCituYW1lc3BhY2UgREZHIHsKKworY2xhc3MgRnVuY3Rpb25XaGl0ZWxpc3Qg
eworcHVibGljOgorICAgIHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsV2hp
dGVsaXN0KCk7CisKKyAgICBib29sIGNvbnRhaW5zKENvZGVCbG9jayopIGNvbnN0OworCitwcml2
YXRlOgorICAgIEZ1bmN0aW9uV2hpdGVsaXN0KGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHBhcnNl
RnVuY3Rpb25OYW1lc0luRmlsZShjb25zdCBjaGFyKik7CisKKyAgICBIYXNoU2V0PFN0cmluZz4g
bV9mdW5jdGlvbk5hbWVzOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5k
aWYgLy8gREZHRnVuY3Rpb25XaGl0ZWxpc3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDE2ODEzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niwx
MiBAQCBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIE9wCiAgICAgcmV0dXJu
IHZhbHVlLmluaXQoc3RyaW5nKTsKIH0KIAorc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciog
c3RyaW5nLCBjb25zdCBjaGFyKiYgdmFsdWUpCit7CisgICAgdmFsdWUgPSBzdHJpbmc7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywg
R0NMb2dnaW5nOjpMZXZlbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFzdHJjYXNlY21wKHN0cmluZywg
Im5vbmUiKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcsICJubyIpIHx8ICFzdHJjYXNlY21wKHN0cmlu
ZywgImZhbHNlIikgfHwgIXN0cmNtcChzdHJpbmcsICIwIikpIHsKQEAgLTM1MCwxMCArMzU2LDE4
IEBAIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihPcHRpb25JRCBpZCwgRkkKICAgICBjYXNlIG9w
dGlvblJhbmdlVHlwZToKICAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIHNfb3B0aW9uc1tp
ZF0udS5vcHRpb25SYW5nZVZhbC5yYW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBnY0xvZ0xldmVsVHlwZToKKyAgICBjYXNlIG9wdGlvblN0cmluZ1R5cGU6IHsKKyAgICAg
ICAgY29uc3QgY2hhciogb3B0aW9uID0gc19vcHRpb25zW2lkXS51Lm9wdGlvblN0cmluZ1ZhbDsK
KyAgICAgICAgaWYgKCFvcHRpb24pCisgICAgICAgICAgICBvcHRpb24gPSAiIjsKKyAgICAgICAg
ZnByaW50ZihzdHJlYW0sICIlcyIsIG9wdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIGdjTG9nTGV2ZWxUeXBlOiB7CiAgICAgICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBH
Q0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcoc19vcHRpb25zW2lkXS51LmdjTG9nTGV2ZWxWYWwpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIH0KICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwg
Zm9vdGVyKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiB9OwogCiB0
eXBlZGVmIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlOwordHlwZWRlZiBjb25zdCBjaGFyKiBvcHRp
b25TdHJpbmc7CiAKICNkZWZpbmUgSlNDX09QVElPTlModikgXAogICAgIHYoYm9vbCwgdXNlTExJ
bnQsICB0cnVlKSBcCkBAIC0xMTcsNiArMTE4LDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRp
b25SYW5nZTsKICAgICB2KGJvb2wsIHNob3dGVExEaXNhc3NlbWJseSwgZmFsc2UpIFwKICAgICB2
KGJvb2wsIHNob3dBbGxERkdOb2RlcywgZmFsc2UpIFwKICAgICB2KG9wdGlvblJhbmdlLCBieXRl
Y29kZVJhbmdlVG9ERkdDb21waWxlLCAwKSBcCisgICAgdihvcHRpb25TdHJpbmcsIGRmZ0Z1bmN0
aW9uV2hpdGVsaXN0RmlsZSwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZHVtcEJ5dGVjb2RlQXRE
RkdUaW1lLCBmYWxzZSkgXAogICAgIHYoYm9vbCwgZHVtcEdyYXBoQXRFYWNoUGhhc2UsIGZhbHNl
KSBcCiAgICAgdihib29sLCB2ZXJib3NlREZHQnl0ZUNvZGVQYXJzaW5nLCBmYWxzZSkgXApAQCAt
MzA4LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGRvdWJsZVR5cGUsCiAgICAgICAgIGlu
dDMyVHlwZSwKICAgICAgICAgb3B0aW9uUmFuZ2VUeXBlLAorICAgICAgICBvcHRpb25TdHJpbmdU
eXBlLAogICAgICAgICBnY0xvZ0xldmVsVHlwZSwKICAgICB9OwogCkBAIC0zMTksNiArMzIyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVWYWw7CiAgICAgICAgICAgICBp
bnQzMiBpbnQzMlZhbDsKICAgICAgICAgICAgIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlVmFsOwor
ICAgICAgICAgICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nVmFsOwogICAgICAgICAgICAgR0NM
b2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsVmFsOwogICAgICAgICB9IHU7CiAgICAgICAgIGJvb2wg
ZGlkT3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230634</attachid>
            <date>2014-05-01 17:39:56 -0700</date>
            <delta_ts>2014-05-01 19:09:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132437-20140501173754.patch</filename>
            <type>text/plain</type>
            <size>23980</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE0LTA1LTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgREZHIGZ1bmN0aW9uIHdoaXRlbGlzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNDM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT2Z0ZW4gdGltZXMgd2hlbiBkZWJ1Z2dpbmcs
IHVzaW5nIGJ5dGVjb2RlIHJhbmdlcyBpc24ndCBlbm91Z2ggdG8gbmFycm93IGRvd24gdG8gdGhl
IAorICAgICAgICBwYXJ0aWN1bGFyIERGRyBibG9jayB0aGF0J3MgY2F1c2luZyBpc3N1ZXMuIFRo
aXMgcGF0Y2ggYWRkcyB0aGUgYWJpbGl0eSB0byB3aGl0ZWxpc3QgCisgICAgICAgIHNwZWNpZmlj
IGZ1bmN0aW9ucyBzcGVjaWZpZWQgaW4gYSBmaWxlIHRvIGVuYWJsZSBmdXJ0aGVyIGZpbHRlcmlu
ZyB3aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjppc1N1cHBvcnRlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
bG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbkZvckNv
bnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRl
bGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OkZ1bmN0aW9uV2hp
dGVsaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6cGFyc2VGdW5j
dGlvbk5hbWVzSW5GaWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6
Y29udGFpbnMpOgorICAgICAgICAqIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA1LTAxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmUgZmFpbHMgdG8gYnVpbGQgd2l0aCBzb21lIHZlcnNp
b25zIG9mIGNsYW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNjgxMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGRmZy9ERkdGaXh1cFBoYXNlLmNwcAogICAgIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHAK
ICAgICBkZmcvREZHRmx1c2hlZEF0LmNwcAorICAgIGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAKICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0dyYXBoU2FmZXBvaW50LmNwcAog
ICAgIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzk1LDYgKzM5NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHRml4dXBQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHRmx1c2hlZEF0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdGbHVzaEZvcm1hdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdH
cmFwaFNhZmVwb2ludC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIiAvPgpAQCAtOTU0LDYgKzk1NSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hlZEF0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHRmx1c2hGb3JtYXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdGUFJJbmZvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdHZW5lcmF0aW9uSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZGZnXERGR0dQUkluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdHcmFwaC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg5LDYgKzEwODksOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCI+CisgICAgICA8RmlsdGVyPmRm
ZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
ZGZnXERGR0dyYXBoLmNwcCI+CiAgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMzA0Miw2ICszMDQ1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdGUFJJbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRl
bGlzdC5oIj4KKyAgICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdGlvbkluZm8uaCI+CiAgICAg
ICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODEzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04MDEsNiArODAxLDggQEAKIAkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9OwogCQky
QTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBG
RTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQTg4MDY3ODE5MTA3RDU1MDBDQjBCQkIg
LyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9u
V2hpdGVsaXN0LmNwcCAqLzsgfTsKKwkJMkE4ODA2NzkxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1
bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLzsgfTsKIAkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQUEzMTAx
OEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAv
KiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBQUJDREU2MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUFDRTYzQzE4Q0E1QTAzMDBF
RDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNBMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMjU2OSw2ICsyNTcxLDggQEAKIAkJMkE4MzYzODQx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIgLyog
REZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOyBwYXRoID0gZGZnL0RGR0Z1bmN0aW9uV2hp
dGVsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4ODA2NzcxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0Z1bmN0aW9uV2hpdGVsaXN0Lmg7IHBhdGggPSBkZmcvREZHRnVuY3Rp
b25XaGl0ZWxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJE
NDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDgyNiw2ICs0ODMwLDggQEAKIAkJ
CQkwRkM5N0YzQzE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGREIyQ0U1MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAg
Ki8sCiAJCQkJMEZEQjJDRTYxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggKi8sCisJ
CQkJMkE4ODA2NzYxOTEwN0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCAq
LywKKwkJCQkyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gZGZnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTU0NzUsNiArNTQ4MSw3IEBACiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQ
SUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUxNDBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE4ODA2NzkxOTEwN0Q1
NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTY4ODYsNiArNjg5Myw3
IEBACiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTg4
MDY3ODE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE2
ODEzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTg3LDQgKzM1ODcsMTggQEAgdm9pZCBDb2RlQmxvY2s6OnNldFN0
ZXBwaW5nTW9kZShDb2RlQmxvYwogICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25E
dWVUb0RlYnVnZ2VyU3RlcHBpbmcpOwogfQogCitSYXJlQ2FzZVByb2ZpbGUqIENvZGVCbG9jazo6
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorewor
ICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8UmFyZUNhc2VQcm9maWxlLCBpbnQ+KAorICAgICAg
ICBtX3JhcmVDYXNlUHJvZmlsZXMsIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCksIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZnNldCk7Cit9CisK
K0RGRzo6Q2FwYWJpbGl0eUxldmVsIENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsKCkKK3sKKyAg
ICBERkc6OkNhcGFiaWxpdHlMZXZlbCByZXN1bHQgPSBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgp
OworICAgIG1fY2FwYWJpbGl0eUxldmVsU3RhdGUgPSByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjgxMzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSwxMiAr
MzAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0g
MDsKIAogICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsSW50
ZXJuYWwoKSA9IDA7Ci0gICAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKCkK
LSAgICB7Ci0gICAgICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIHJlc3VsdCA9IGNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCk7Ci0gICAgICAgIG1fY2FwYWJpbGl0eUxldmVsU3RhdGUgPSByZXN1bHQ7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIERGRzo6Q2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbCgpOwogICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbFN0YXRlKCkgeyByZXR1cm4gbV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZTsgfQogCiAgICAgYm9v
bCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudChKSVRDb2RlOjpKSVRUeXBlIHR5cGVUb1JlcGxhY2Up
OwpAQCAtNDY2LDEyICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHVuc2lnbmVkIG51bWJl
ck9mUmFyZUNhc2VQcm9maWxlcygpIHsgcmV0dXJuIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCk7
IH0KICAgICBSYXJlQ2FzZVByb2ZpbGUqIHJhcmVDYXNlUHJvZmlsZShpbnQgaW5kZXgpIHsgcmV0
dXJuICZtX3JhcmVDYXNlUHJvZmlsZXNbaW5kZXhdOyB9Ci0gICAgUmFyZUNhc2VQcm9maWxlKiBy
YXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCi0gICAg
ewotICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPFJhcmVDYXNlUHJvZmlsZSwgaW50PigK
LSAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVByb2ZpbGVzLnNpemUo
KSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29k
ZU9mZnNldCk7Ci0gICAgfQorICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KTsKIAogICAgIGJvb2wgbGlrZWx5VG9U
YWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE2ODEzNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCkBAIC00MCw3ICs0MSw4IEBAIGJvb2wgaXNTdXBwb3J0ZWQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZURGR0pJVCgpCiAgICAgICAg
ICYmIE1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQotICAgICAgICAmJiBP
cHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAgICAgICAgJiYgT3B0aW9uczo6Ynl0ZWNvZGVSYW5nZVRv
REZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSkKKyAg
ICAgICAgJiYgRnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgpLmNvbnRh
aW5zKGNvZGVCbG9jayk7CiB9CiAKIGJvb2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKQEAgLTY2LDIyICs2OCwxOSBAQCBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9y
Q29uc3RydWN0KENvCiAKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCi0gICAg
ICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1G
dW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKKyAgICByZXR1
cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0
aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQogICAgICAgICAmJiAh
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCkKICAgICAgICAg
JiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpOwog
fQogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCi0gICAgICAgICYm
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlv
bkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgcmV0
dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAg
ICAgICYmICFjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKQog
ICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlk
YXRlKCk7CiB9CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCi0gICAg
ICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1G
dW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAg
IHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVt
RnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKICAg
ICAgICAgJiYgIWNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigp
CiAgICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5k
aWRhdGUoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMjAgKzc5LDM0IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgcHJvZ3JhbUNhcGFiaWxpdHkKICAgICByZXR1cm4gY2FwYWJpbGl0
eUxldmVsKGNvZGVCbG9jayk7CiB9CiAKLWlubGluZSBDYXBhYmlsaXR5TGV2ZWwgZnVuY3Rpb25G
b3JDYWxsQ2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayogY29kZUJsb2NrKQoraW5saW5lIENhcGFi
aWxpdHlMZXZlbCBmdW5jdGlvbkNhcGFiaWxpdHlMZXZlbChib29sIG1pZ2h0Q29tcGlsZSwgYm9v
bCBtaWdodElubGluZSwgQ2FwYWJpbGl0eUxldmVsIGNvbXB1dGVkQ2FwYWJpbGl0eUxldmVsKQog
ewotICAgIGlmICghbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKGNvZGVCbG9jaykpCisgICAg
aWYgKG1pZ2h0Q29tcGlsZSAmJiBtaWdodElubGluZSkKKyAgICAgICAgcmV0dXJuIGxlYXN0VXBw
ZXJCb3VuZChDYW5Db21waWxlQW5kSW5saW5lLCBjb21wdXRlZENhcGFiaWxpdHlMZXZlbCk7Cisg
ICAgaWYgKG1pZ2h0Q29tcGlsZSAmJiAhbWlnaHRJbmxpbmUpCisgICAgICAgIHJldHVybiBsZWFz
dFVwcGVyQm91bmQoQ2FuQ29tcGlsZSwgY29tcHV0ZWRDYXBhYmlsaXR5TGV2ZWwpOworICAgIGlm
ICghbWlnaHRDb21waWxlICYmIG1pZ2h0SW5saW5lKQorICAgICAgICByZXR1cm4gbGVhc3RVcHBl
ckJvdW5kKENhbklubGluZSwgY29tcHV0ZWRDYXBhYmlsaXR5TGV2ZWwpOworICAgIGlmICghbWln
aHRDb21waWxlICYmICFtaWdodElubGluZSkKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7
Ci0gICAgCi0gICAgcmV0dXJuIGNhcGFiaWxpdHlMZXZlbChjb2RlQmxvY2spOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7Cit9CisK
K2lubGluZSBDYXBhYmlsaXR5TGV2ZWwgZnVuY3Rpb25Gb3JDYWxsQ2FwYWJpbGl0eUxldmVsKENv
ZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIHJldHVybiBmdW5jdGlvbkNhcGFiaWxpdHlMZXZl
bCgKKyAgICAgICAgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKGNvZGVCbG9jayksCisgICAg
ICAgIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKGNvZGVCbG9jayksCisgICAgICAgIGNhcGFi
aWxpdHlMZXZlbChjb2RlQmxvY2spKTsKIH0KIAogaW5saW5lIENhcGFiaWxpdHlMZXZlbCBmdW5j
dGlvbkZvckNvbnN0cnVjdENhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsK
LSAgICBpZiAoIW1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykpCi0g
ICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwotICAgIAotICAgIHJldHVybiBjYXBhYmlsaXR5
TGV2ZWwoY29kZUJsb2NrKTsKKyAgICByZXR1cm4gZnVuY3Rpb25DYXBhYmlsaXR5TGV2ZWwoCisg
ICAgICAgIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jayksCisgICAg
ICAgIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoY29kZUJsb2NrKSwKKyAgICAgICAg
Y2FwYWJpbGl0eUxldmVsKGNvZGVCbG9jaykpOwogfQogCiBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGlubGluZUZ1bmN0aW9uRm9yQ2FsbENhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9j
aykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25X
aGl0ZWxpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGdW5jdGlvbldoaXRlbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHRnVuY3Rpb25X
aGl0ZWxpc3QuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIk9wdGlvbnMu
aCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCitzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QqIGZ1bmN0aW9uV2hpdGVsaXN0OworCitGdW5j
dGlvbldoaXRlbGlzdCYgRnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgp
Cit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVXaGl0ZWxpc3RGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVXaGl0ZWxpc3RGbGFnLCBbXSB7CisgICAgICAg
IGZ1bmN0aW9uV2hpdGVsaXN0ID0gbmV3IEZ1bmN0aW9uV2hpdGVsaXN0KE9wdGlvbnM6OmRmZ0Z1
bmN0aW9uV2hpdGVsaXN0RmlsZSgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKmZ1bmN0aW9uV2hp
dGVsaXN0OworfQorCitGdW5jdGlvbldoaXRlbGlzdDo6RnVuY3Rpb25XaGl0ZWxpc3QoY29uc3Qg
Y2hhciogZmlsZW5hbWUpCit7CisgICAgcGFyc2VGdW5jdGlvbk5hbWVzSW5GaWxlKGZpbGVuYW1l
KTsKK30KKwordm9pZCBGdW5jdGlvbldoaXRlbGlzdDo6cGFyc2VGdW5jdGlvbk5hbWVzSW5GaWxl
KGNvbnN0IGNoYXIqIGZpbGVuYW1lKQoreworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZJTEUqIGYgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsKKyAgICBpZiAoIWYp
IHsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3UgYWRk
IHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNzLnNiP1xuIiwgZmls
ZW5hbWUpOyAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoYXIqIGxpbmU7CisgICAg
Y2hhciBidWZmZXJbQlVGU0laXTsKKyAgICB3aGlsZSAoKGxpbmUgPSBmZ2V0cyhidWZmZXIsIHNp
emVvZihidWZmZXIpLCBmKSkpIHsKKyAgICAgICAgaWYgKHN0cnN0cihsaW5lLCAiLy8iKSA9PSBs
aW5lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gR2V0IHJpZCBvZiBuZXds
aW5lcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmdzLgorICAgICAgICBzaXplX3QgbGVuZ3RoID0g
c3RybGVuKGxpbmUpOworICAgICAgICBpZiAobGluZVtsZW5ndGgtMV0gPT0gJ1xuJykgeworICAg
ICAgICAgICAgbGluZVtsZW5ndGgtMV0gPSAnXDAnOworICAgICAgICAgICAgbGVuZ3RoLS07Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTa2lwIGVtcHR5IGxpbmVzLgorICAgICAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgbV9mdW5jdGlv
bk5hbWVzLmFkZChTdHJpbmcobGluZSwgbGVuZ3RoKSk7CisgICAgfQorfQorCitib29sIEZ1bmN0
aW9uV2hpdGVsaXN0Ojpjb250YWlucyhDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QgCit7Cisg
ICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIGlmICghT3B0aW9uczo6ZGZn
RnVuY3Rpb25XaGl0ZWxpc3RGaWxlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KG1fZnVuY3Rpb25OYW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2stPmluZmVycmVkTmFtZSgp
KTsKKyAgICBpZiAobV9mdW5jdGlvbk5hbWVzLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIFN0cmluZyBoYXNoID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2st
Pmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSk7CisgICAgaWYgKG1fZnVuY3Rpb25OYW1lcy5jb250
YWlucyhoYXNoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgbmFtZUFuZEhh
c2ggPSBuYW1lOworICAgIG5hbWVBbmRIYXNoLmFwcGVuZCgnIycpOworICAgIG5hbWVBbmRIYXNo
LmFwcGVuZChoYXNoKTsKKyAgICByZXR1cm4gbV9mdW5jdGlvbk5hbWVzLmNvbnRhaW5zKG5hbWVB
bmRIYXNoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkdG
dW5jdGlvbldoaXRlbGlzdF9oCisjZGVmaW5lIERGR0Z1bmN0aW9uV2hpdGVsaXN0X2gKKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBKU0MgeyAKKworY2xhc3MgQ29kZUJsb2NrOworCituYW1lc3BhY2UgREZHIHsK
KworY2xhc3MgRnVuY3Rpb25XaGl0ZWxpc3QgeworcHVibGljOgorICAgIHN0YXRpYyBGdW5jdGlv
bldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsV2hpdGVsaXN0KCk7CisKKyAgICBib29sIGNvbnRhaW5z
KENvZGVCbG9jayopIGNvbnN0OworCitwcml2YXRlOgorICAgIEZ1bmN0aW9uV2hpdGVsaXN0KGNv
bnN0IGNoYXIqKTsKKyAgICB2b2lkIHBhcnNlRnVuY3Rpb25OYW1lc0luRmlsZShjb25zdCBjaGFy
Kik7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9mdW5jdGlvbk5hbWVzOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gREZHRnVuY3Rpb25XaGl0ZWxpc3RfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9u
IDE2ODEzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBj
aGFyKiBzdHJpbmcsIE9wCiAgICAgcmV0dXJuIHZhbHVlLmluaXQoc3RyaW5nKTsKIH0KIAorc3Rh
dGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBjb25zdCBjaGFyKiYgdmFsdWUpCit7
CisgICAgdmFsdWUgPSBzdHJpbmc7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29s
IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgR0NMb2dnaW5nOjpMZXZlbCYgdmFsdWUpCiB7CiAg
ICAgaWYgKCFzdHJjYXNlY21wKHN0cmluZywgIm5vbmUiKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcs
ICJubyIpIHx8ICFzdHJjYXNlY21wKHN0cmluZywgImZhbHNlIikgfHwgIXN0cmNtcChzdHJpbmcs
ICIwIikpIHsKQEAgLTM1MCwxMCArMzU2LDE4IEBAIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihP
cHRpb25JRCBpZCwgRkkKICAgICBjYXNlIG9wdGlvblJhbmdlVHlwZToKICAgICAgICAgZnByaW50
ZihzdHJlYW0sICIlcyIsIHNfb3B0aW9uc1tpZF0udS5vcHRpb25SYW5nZVZhbC5yYW5nZVN0cmlu
ZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBnY0xvZ0xldmVsVHlwZToKKyAgICBjYXNl
IG9wdGlvblN0cmluZ1R5cGU6IHsKKyAgICAgICAgY29uc3QgY2hhciogb3B0aW9uID0gc19vcHRp
b25zW2lkXS51Lm9wdGlvblN0cmluZ1ZhbDsKKyAgICAgICAgaWYgKCFvcHRpb24pCisgICAgICAg
ICAgICBvcHRpb24gPSAiIjsKKyAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIG9wdGlvbik7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIGdjTG9nTGV2ZWxUeXBlOiB7CiAgICAg
ICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcoc19vcHRp
b25zW2lkXS51LmdjTG9nTGV2ZWxWYWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIH0K
ICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgZm9vdGVyKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTY4MTM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2
ICs4OSw3IEBAIHByaXZhdGU6CiB9OwogCiB0eXBlZGVmIE9wdGlvblJhbmdlIG9wdGlvblJhbmdl
OwordHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAKICNkZWZpbmUgSlNDX09QVElP
TlModikgXAogICAgIHYoYm9vbCwgdXNlTExJbnQsICB0cnVlKSBcCkBAIC0xMTcsNiArMTE4LDcg
QEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KGJvb2wsIHNob3dGVExE
aXNhc3NlbWJseSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNob3dBbGxERkdOb2RlcywgZmFsc2Up
IFwKICAgICB2KG9wdGlvblJhbmdlLCBieXRlY29kZVJhbmdlVG9ERkdDb21waWxlLCAwKSBcCisg
ICAgdihvcHRpb25TdHJpbmcsIGRmZ0Z1bmN0aW9uV2hpdGVsaXN0RmlsZSwgbnVsbHB0cikgXAog
ICAgIHYoYm9vbCwgZHVtcEJ5dGVjb2RlQXRERkdUaW1lLCBmYWxzZSkgXAogICAgIHYoYm9vbCwg
ZHVtcEdyYXBoQXRFYWNoUGhhc2UsIGZhbHNlKSBcCiAgICAgdihib29sLCB2ZXJib3NlREZHQnl0
ZUNvZGVQYXJzaW5nLCBmYWxzZSkgXApAQCAtMzA4LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGRvdWJsZVR5cGUsCiAgICAgICAgIGludDMyVHlwZSwKICAgICAgICAgb3B0aW9uUmFuZ2VU
eXBlLAorICAgICAgICBvcHRpb25TdHJpbmdUeXBlLAogICAgICAgICBnY0xvZ0xldmVsVHlwZSwK
ICAgICB9OwogCkBAIC0zMTksNiArMzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGRvdWJs
ZSBkb3VibGVWYWw7CiAgICAgICAgICAgICBpbnQzMiBpbnQzMlZhbDsKICAgICAgICAgICAgIE9w
dGlvblJhbmdlIG9wdGlvblJhbmdlVmFsOworICAgICAgICAgICAgY29uc3QgY2hhciogb3B0aW9u
U3RyaW5nVmFsOwogICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsVmFsOwog
ICAgICAgICB9IHU7CiAgICAgICAgIGJvb2wgZGlkT3ZlcnJpZGU7Cg==
</data>
<flag name="review"
          id="255015"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>