<?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>21856</bug_id>
          
          <creation_ts>2008-10-24 10:00:04 -0700</creation_ts>
          <short_desc>Need a way to store and retrieve preferences for the Web Inspector</short_desc>
          <delta_ts>2008-10-24 11:49:58 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>aroben</cc>
    
    <cc>kmccullough</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>96516</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-24 10:00:04 -0700</bug_when>
    <thetext>The time has come where we need to have preferences that persist for the Web Inspector. So we need a way to access them from C++ and JavaScript and have them persist (preferably in the application&apos;s preferences.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96518</commentid>
    <comment_count>1</comment_count>
      <attachid>24642</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-24 10:17:47 -0700</bug_when>
    <thetext>Created attachment 24642
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96522</commentid>
    <comment_count>2</comment_count>
      <attachid>24642</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-24 10:43:56 -0700</bug_when>
    <thetext>Comment on attachment 24642
Proposed patch

&gt; +        typedef enum {
&gt; +            NoType, StringType, StringVectorType, DoubleType, IntegerType, BooleanType
&gt; +        } Type;

You should just use &quot;enum Type { }&quot; syntax.

&gt; +        Setting(const Setting&amp; o)
&gt; +            : m_type(o.m_type)
&gt; +            , m_string(o.m_string)
&gt; +            , m_stringVector(o.m_stringVector)
&gt; +            , m_simpleContent(o.m_simpleContent)
&gt; +        {
&gt; +        }
&gt; +
&gt; +        Setting&amp; operator=(const Setting&amp; o)
&gt; +        {
&gt; +            m_type = o.m_type;
&gt; +            m_string = o.m_string;
&gt; +            m_stringVector = o.m_stringVector;
&gt; +            m_simpleContent = o.m_simpleContent;
&gt; +            return *this;
&gt; +        }

These are the same as what the compiler generates if you don&apos;t declare the operator at all. Just leave these out and it should work the same.

&gt; @@ -405,6 +405,10 @@ public:
&gt;      virtual void highlight(Node*) {};
&gt;      virtual void hideHighlight() {};
&gt;      virtual void inspectedURLChanged(const String&amp; newURL) {};
&gt; +
&gt; +    virtual void populateSetting(const String&amp; key, InspectorController::Setting&amp;) {};
&gt; +    virtual void storeSetting(const String&amp; key, const InspectorController::Setting&amp;) {};
&gt; +    virtual void removeSetting(const String&amp; key) {};

All these semicolons at the ends of lines after {} are unneeded and should be omitted.

&gt; +    // FIXME: this can be shared between Mac and Windows, this is currently copied code.

Why not make a shared source file and do this now? Is there some obstacle?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96532</commentid>
    <comment_count>3</comment_count>
      <attachid>24643</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-24 11:31:37 -0700</bug_when>
    <thetext>Created attachment 24643
Proposed patch (round two)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96534</commentid>
    <comment_count>4</comment_count>
      <attachid>24643</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-24 11:43:15 -0700</bug_when>
    <thetext>Comment on attachment 24643
Proposed patch (round two)

Adam reviewed the windows parts of this. The rest is basically the same from the patch Darin reviewed, with his suggestions fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96535</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-24 11:49:58 -0700</bug_when>
    <thetext>Landed in r37848.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24642</attachid>
            <date>2008-10-24 10:17:47 -0700</date>
            <delta_ts>2008-10-24 11:31:37 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-Add-a-mechanism-to-store-and-retrieve-preferences-fo.patch</filename>
            <type>text/plain</type>
            <size>42708</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSBiZDg2ZGQzNWQ4MDZhODRhNDYzYjEzMGQyNGIxMDNhYjU2YjgyNWIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDI0IE9jdCAyMDA4IDEwOjE1OjUyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGEgbWVjaGFuaXNtIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBwcmVmZXJlbmNlcyBmb3IgdGhlIFdl
YiBJbnNwZWN0b3IuCgpXZWJDb3JlOgoKMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CgogICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBhc2sgdGhlIEluc3Bl
Y3RvckNsaWVudCBmb3Iga2V5L3ZhbHVlIHNldHRpbmcgcGFpcnMuCiAgICAgICAgVGhlc2Ugc2V0
dGluZ3MgY2FuIGJlIHN0cmluZ3MsIG51bWJlcnMsIGJvb2xlYW5zIG9yIHN0cmluZyB2ZWN0b3Jz
LiBUaGUKICAgICAgICBzZXR0aW5ncyBhcmUgYWxzbyBicmlkZ2VkIHRvIGFuZCBmcm9tIEphdmFT
Y3JpcHQuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg1NgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBXZWJD
b3JlLmJhc2UuZXhwOiBFeHBvc2UgdGhlIFN0cmluZyBDRlN0cmluZ1JlZiBjb25zdHJ1Y3Rvci4K
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBBZGRlZCwgcHVyZSB2aXJ0dWFsLgog
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyk6IERpdHRvLgog
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnJlbW92ZVNldHRpbmcpOiBEaXR0by4K
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6c2V0dGluZyk6IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldHRpbmcgYW5kIHdy
YXBzIHRoZSByZXN1bHQgaW4gc2NyaXB0IHR5cGVzLgogICAgICAgIChXZWJDb3JlOjpzZXRTZXR0
aW5nKTogQ2FsbHMgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2V0dGluZyBhZnRlciBjb252ZXJ0
aW5nIGZyb20gc2NyaXB0IHR5cGVzLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKTogSW5jcmVtZW50IGEgZ2xvYmFsIHN0YXRpYwogICAg
ICAgIHRvIHRyYWNrIHRoZSBudW1iZXIgb2YgbGl2ZSBJbnNwZWN0b3JDb250cm9sbGVycy4KICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIp
OiBEZWNyZW1lbnQgdGhlIGdsb2JhbCBzdGF0aWMKICAgICAgICB0aGF0IHRyYWNrcyB0aGUgbnVt
YmVyIG9mIGxpdmUgSW5zcGVjdG9yQ29udHJvbGxlcnMuIERlbGV0ZSB0aGUgc2V0dGluZyBjYWNo
ZSBpZiB0aGVyZQogICAgICAgIGFyZSBubyBtb3JlIGxpdmUgY29udHJvbGxlcnMuCiAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldHRpbmcpOiBDaGVjayB0aGUgY2FjaGUg
YW5kIHJldHVybiB0aGUgc2V0dGluZyBmcm9tIHRoZXJlLAogICAgICAgIG90aGVyd2lzZSBtYWtl
IGEgbmV3IFNldHRpbmcgYW5kIGFzayB0aGUgY2xpZW50IHRvIHBvcHVsYXRlIGl0LgogICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXR0aW5nKTogQ2hhbmdlIHRoZSBj
YWNoZSBhbmQgYXNrIHRoZSBjbGllbnQgdG8gc3RvcmUgaXQuCiAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6IEFkZCBzZXR0
aW5nIGFuZCBzZXRTZXR0aW5nCiAgICAgICAgdG8gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIgc2Ny
aXB0IGNsYXNzLgogICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U2V0dGluZyk6CiAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6Om9wZXJhdG9yPSk6
CiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OnR5cGUpOiBS
ZXR1cm4gbV90eXBlLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0
aW5nOjpzdHJpbmcpOiBSZXR1cm4gbV9zdHJpbmcuIEFzc2VydCB0aGUgdHlwZSBpcyBjb3JyZWN0
LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpzdHJpbmdW
ZWN0b3IpOiBSZXR1cm4gbV9zdHJpbmdWZWN0b3IuCiAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlz
IGNvcnJlY3QuCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6
OmRvdWJsZVZhbHVlKTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5tX2RvdWJsZS4KICAgICAgICBB
c3NlcnQgdGhlIHR5cGUgaXMgY29ycmVjdC4KICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6U2V0dGluZzo6aW50ZWdlclZhbHVlKTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5t
X2ludGVnZXIuCiAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlzIGNvcnJlY3QuCiAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OmJvb2xlYW5WYWx1ZSk6IFJldHVy
biBtX3NpbXBsZUNvbnRlbnQubV9ib29sZWFuLgogICAgICAgIEFzc2VydCB0aGUgdHlwZSBpcyBj
b3JyZWN0LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpz
ZXQpOiBPdmVybG9hZGVkIGZvciBlYWNoIGRhdGEgdHlwZSwgc2V0cyB0aGUgcmlnaHQKICAgICAg
ICBmaWVsZCBhbmQgdGhlIHR5cGUuCiAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CiAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBB
ZGRlZCwgZW1wdHkgbWV0aG9kLgogICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVu
dDo6c3RvcmVTZXR0aW5nKTogRGl0dG8uCiAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9y
Q2xpZW50OjpyZW1vdmVTZXR0aW5nKTogRGl0dG8uCgpXZWJLaXQvZ3RrOgoKMjAwOC0xMC0yNCAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CgogICAgICAgIFN0dWIgb3V0IG5l
dyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kcy4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODU2CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6CiAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBOb3QgaW1w
bGVtZW50ZWQuCiAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcp
OiBEaXR0by4KICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnJlbW92ZVNldHRpbmcp
OiBEaXR0by4KICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgoK
V2ViS2l0L21hYzoKCjIwMDgtMTAtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUu
Y29tPgoKICAgICAgICBJbXBsZW1lbnQgbmV3IEluc3BlY3RvckNsaWVudCBtZXRob2RzIHRvIHdv
cmsgd2l0aCBTZXR0aW5ncy4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODU2CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgogICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgogICAgICAgIChjcmVhdGVLZXlGb3JQ
cmVmZXJlbmNlcyk6IEhlbHBlciB0byBtYWtlIHRoZSBwcmVmZXJlbmNlIGtleS4KICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBSZWFkIHRoZSBwcmVmZXJlbmNl
IHZhbHVlIGZyb20gQ0ZQcmVmZXJlbmNlcy4KICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
dG9yZVNldHRpbmcpOiBXcml0ZSB0aGUgc2V0dGluZyB2YWx1ZSB0byAgQ0ZQcmVmZXJlbmNlcy4K
ICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0aW5nKTogUmVtb3ZlIHRoZSBw
cmVmZXJlbmNlIGZyb20gQ0ZQcmVmZXJlbmNlcy4KCldlYktpdC9xdDoKCjIwMDgtMTAtMjQgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgoKICAgICAgICBTdHViIG91dCBuZXcg
SW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg1NgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CiAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0Ojpwb3B1bGF0ZVNldHRpbmcpOiBOb3QgaW1w
bGVtZW50ZWQuCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzdG9yZVNldHRp
bmcpOiBEaXR0by4KICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnJlbW92ZVNl
dHRpbmcpOiBEaXR0by4KICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
Lmg6CgpXZWJLaXQvd2luOgoKMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+CgogICAgICAgIEltcGxlbWVudCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMg
dG8gd29yayB3aXRoIFNldHRpbmdzLgoKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NTYKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKICAgICAg
ICAoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOiBIZWxwZXIgdG8gbWFrZSB0aGUgcHJlZmVyZW5j
ZSBrZXkuCiAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKTogUmVh
ZCB0aGUgcHJlZmVyZW5jZSB2YWx1ZSBmcm9tIENGUHJlZmVyZW5jZXMuCiAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKTogV3JpdGUgdGhlIHNldHRpbmcgdmFsdWUgdG8g
IENGUHJlZmVyZW5jZXMuCiAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVtb3ZlU2V0dGlu
Zyk6IFJlbW92ZSB0aGUgcHJlZmVyZW5jZSBmcm9tIENGUHJlZmVyZW5jZXMuCiAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKCldlYktpdC93eDoKCjIwMDgtMTAt
MjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgoKICAgICAgICBTdHViIG91
dCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1NgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcDoK
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBOb3Qg
aW1wbGVtZW50ZWQuCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6c3RvcmVTZXR0
aW5nKTogRGl0dG8uCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6cmVtb3ZlU2V0
dGluZyk6IERpdHRvLgogICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5o
OgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgNDggKysrKysrKwogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgMSArCiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCAgICAg
ICAgICAgICAgfCAgICA2ICsKIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwICAgICAgICB8ICAxNTUgKysrKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oICAgICAgICAgIHwgICA1NyArKysrKysrKwogV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBXZWJL
aXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrCiBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgfCAgIDE1ICsr
CiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oICAgfCAgICA0
ICsKIFdlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTUgKysKIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggICB8
ICAgIDQgKwogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0g
IHwgIDEwOCArKysrKysrKysrKysrKysKIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTQgKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5jcHAgICB8ICAgMTUgKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oICAgICB8ICAgIDQgKwogV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArKwogV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIHwgIDEwOCArKysrKysrKysrKysrKysKIFdlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggICB8ICAgIDQgKwogV2Vi
S2l0L3d4L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKwog
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwICAgIHwgICAxNSAr
KwogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaCAgICAgIHwgICAg
NCArCiAyMSBmaWxlcyBjaGFuZ2VkLCA2MjQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQ0ZmUxMGYuLmI0MDAxZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMDgtMTAtMjQgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBh
c2sgdGhlIEluc3BlY3RvckNsaWVudCBmb3Iga2V5L3ZhbHVlIHNldHRpbmcgcGFpcnMuCisgICAg
ICAgIFRoZXNlIHNldHRpbmdzIGNhbiBiZSBzdHJpbmdzLCBudW1iZXJzLCBib29sZWFucyBvciBz
dHJpbmcgdmVjdG9ycy4gVGhlCisgICAgICAgIHNldHRpbmdzIGFyZSBhbHNvIGJyaWRnZWQgdG8g
YW5kIGZyb20gSmF2YVNjcmlwdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6IEV4cG9zZSB0aGUgU3RyaW5nIENGU3Ry
aW5nUmVmIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKTog
QWRkZWQsIHB1cmUgdmlydHVhbC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6
c3RvcmVTZXR0aW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6
OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXR0aW5nKTogQ2FsbHMgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c2V0dGluZyBhbmQgd3JhcHMgdGhlIHJlc3VsdCBpbiBzY3JpcHQgdHlwZXMu
CisgICAgICAgIChXZWJDb3JlOjpzZXRTZXR0aW5nKTogQ2FsbHMgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0U2V0dGluZyBhZnRlciBjb252ZXJ0aW5nIGZyb20gc2NyaXB0IHR5cGVzLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6IElu
Y3JlbWVudCBhIGdsb2JhbCBzdGF0aWMKKyAgICAgICAgdG8gdHJhY2sgdGhlIG51bWJlciBvZiBs
aXZlIEluc3BlY3RvckNvbnRyb2xsZXJzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOiBEZWNyZW1lbnQgdGhlIGdsb2JhbCBzdGF0
aWMKKyAgICAgICAgdGhhdCB0cmFja3MgdGhlIG51bWJlciBvZiBsaXZlIEluc3BlY3RvckNvbnRy
b2xsZXJzLiBEZWxldGUgdGhlIHNldHRpbmcgY2FjaGUgaWYgdGhlcmUKKyAgICAgICAgYXJlIG5v
IG1vcmUgbGl2ZSBjb250cm9sbGVycy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnNldHRpbmcpOiBDaGVjayB0aGUgY2FjaGUgYW5kIHJldHVybiB0aGUgc2V0dGluZyBm
cm9tIHRoZXJlLAorICAgICAgICBvdGhlcndpc2UgbWFrZSBhIG5ldyBTZXR0aW5nIGFuZCBhc2sg
dGhlIGNsaWVudCB0byBwb3B1bGF0ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNldFNldHRpbmcpOiBDaGFuZ2UgdGhlIGNhY2hlIGFuZCBhc2sgdGhlIGNsaWVu
dCB0byBzdG9yZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Ondp
bmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6IEFkZCBzZXR0aW5nIGFuZCBzZXRTZXR0aW5nCisg
ICAgICAgIHRvIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyIHNjcmlwdCBjbGFzcy4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U2V0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6dHlwZSk6IFJldHVybiBtX3R5cGUuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpzdHJpbmcpOiBS
ZXR1cm4gbV9zdHJpbmcuIEFzc2VydCB0aGUgdHlwZSBpcyBjb3JyZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6c3RyaW5nVmVjdG9yKTogUmV0dXJu
IG1fc3RyaW5nVmVjdG9yLgorICAgICAgICBBc3NlcnQgdGhlIHR5cGUgaXMgY29ycmVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OmRvdWJsZVZhbHVl
KTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5tX2RvdWJsZS4KKyAgICAgICAgQXNzZXJ0IHRoZSB0
eXBlIGlzIGNvcnJlY3QuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpT
ZXR0aW5nOjppbnRlZ2VyVmFsdWUpOiBSZXR1cm4gbV9zaW1wbGVDb250ZW50Lm1faW50ZWdlci4K
KyAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlzIGNvcnJlY3QuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpib29sZWFuVmFsdWUpOiBSZXR1cm4gbV9zaW1w
bGVDb250ZW50Lm1fYm9vbGVhbi4KKyAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlzIGNvcnJlY3Qu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpzZXQpOiBP
dmVybG9hZGVkIGZvciBlYWNoIGRhdGEgdHlwZSwgc2V0cyB0aGUgcmlnaHQKKyAgICAgICAgZmll
bGQgYW5kIHRoZSB0eXBlLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBBZGRl
ZCwgZW1wdHkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6
OnN0b3JlU2V0dGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JD
bGllbnQ6OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KKwogMjAwOC0xMC0yMyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFz
ZS5leHAKaW5kZXggMzczNWNhNS4uMjA4ZmYxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cApAQCAtNTMzLDYgKzUzMyw3
IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2CiBfX1pON1dlYkNvcmU2U3RyaW5nNmFw
cGVuZEVSS1MwXwogX19aTjdXZWJDb3JlNlN0cmluZzZhcHBlbmRFYwogX19aTjdXZWJDb3JlNlN0
cmluZ0MxRVA4TlNTdHJpbmcKK19fWk43V2ViQ29yZTZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwog
X19aTjdXZWJDb3JlNlN0cmluZ0MxRVBLYwogX19aTjdXZWJDb3JlNlN0cmluZ0MxRVBLY2oKIF9f
Wk43V2ViQ29yZTZTdHJpbmdDMUVSS04zSlNDN1VTdHJpbmdFCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oCmluZGV4IDllZTRhMjYuLmZjYmY3OWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9oCiAj
ZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKQEAgLTU0LDYgKzU2LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNldHRpbmcoY29uc3QgU3Ry
aW5nJiBrZXkpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNzU4OThkNy4uYWUyOTQ2OSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTczNyw2ICs3Mzcs
MTA0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGluc3BlY3RlZFdpbmRvdyhKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTCiAgICAgcmV0dXJuIHRvUmVmKEpTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlcjo6d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgaW5z
cGVjdGVkV2luZG93KSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldHRpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250
cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxJbnNwZWN0b3JDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgSlNWYWx1ZVJlZiBrZXlWYWx1
ZSA9IGFyZ3VtZW50c1swXTsKKyAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjdHgsIGtleVZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBjb25z
dCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5nID0gY29udHJvbGxlci0+c2V0
dGluZyh0b1N0cmluZyhjdHgsIGtleVZhbHVlLCBleGNlcHRpb24pKTsKKworICAgIHN3aXRjaCAo
c2V0dGluZy50eXBlKCkpIHsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2FzZSBJbnNwZWN0
b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGU6CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpT
ZXR0aW5nOjpTdHJpbmdUeXBlOgorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5n
KGN0eCwganNTdHJpbmdSZWYoc2V0dGluZy5zdHJpbmcoKSkuZ2V0KCkpOworICAgICAgICBjYXNl
IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkRvdWJsZVR5cGU6CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBzZXR0aW5nLmRvdWJsZVZhbHVlKCkpOworICAg
ICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkludGVnZXJUeXBlOgorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgc2V0dGluZy5pbnRlZ2VyVmFs
dWUoKSk7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6Qm9vbGVh
blR5cGU6CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGN0eCwgc2V0dGlu
Zy5ib29sZWFuVmFsdWUoKSk7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0
dGluZzo6U3RyaW5nVmVjdG9yVHlwZTogeworICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWY+
IHN0cmluZ1ZhbHVlczsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdz
ID0gc2V0dGluZy5zdHJpbmdWZWN0b3IoKTsKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmluZ3Muc2l6ZSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlcy5hcHBlbmQoSlNW
YWx1ZU1ha2VTdHJpbmcoY3R4LCBqc1N0cmluZ1JlZihzdHJpbmdzW2ldKS5nZXQoKSkpOworCisg
ICAgICAgICAgICBKU09iamVjdFJlZiBzdHJpbmdzQXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShj
dHgsIHN0cmluZ1ZhbHVlcy5zaXplKCksIHN0cmluZ1ZhbHVlcy5kYXRhKCksIGV4Y2VwdGlvbik7
CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgICAgICAgICByZXR1cm4g
c3RyaW5nc0FycmF5OworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBz
ZXRTZXR0aW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IC8qYXJndW1lbnRDb3VudCovLCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW5zcGVjdG9yQ29u
dHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAg
IEpTVmFsdWVSZWYga2V5VmFsdWUgPSBhcmd1bWVudHNbMF07CisgICAgaWYgKCFKU1ZhbHVlSXNT
dHJpbmcoY3R4LCBrZXlWYWx1ZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOworCisgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyBzZXR0aW5nOworCisg
ICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IGFyZ3VtZW50c1sxXTsKKyAgICBzd2l0Y2ggKEpTVmFsdWVH
ZXRUeXBlKGN0eCwgdmFsdWUpKSB7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2Uga0pT
VHlwZVVuZGVmaW5lZDoKKyAgICAgICAgY2FzZSBrSlNUeXBlTnVsbDoKKyAgICAgICAgICAgIC8v
IERvIG5vdGhpbmcuIFRoZSBzZXR0aW5nIGlzIGFscmVhZHkgTm9UeXBlLgorICAgICAgICAgICAg
QVNTRVJUKHNldHRpbmcudHlwZSgpID09IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6Ok5v
VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrSlNUeXBlU3RyaW5nOgor
ICAgICAgICAgICAgc2V0dGluZy5zZXQodG9TdHJpbmcoY3R4LCB2YWx1ZSwgZXhjZXB0aW9uKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrSlNUeXBlTnVtYmVyOgorICAgICAg
ICAgICAgc2V0dGluZy5zZXQoSlNWYWx1ZVRvTnVtYmVyKGN0eCwgdmFsdWUsIGV4Y2VwdGlvbikp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0pTVHlwZUJvb2xlYW46CisgICAg
ICAgICAgICBzZXR0aW5nLnNldChKU1ZhbHVlVG9Cb29sZWFuKGN0eCwgdmFsdWUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtKU1R5cGVPYmplY3Q6IHsKKyAgICAgICAgICAg
IEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjdHgsIHZhbHVlLCAwKTsKKyAg
ICAgICAgICAgIEpTVmFsdWVSZWYgbGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGN0
eCwgb2JqZWN0LCBqc1N0cmluZ1JlZigibGVuZ3RoIikuZ2V0KCksIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHN0cmluZ3M7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGN0eCwgbGVuZ3RoVmFsdWUsIDApKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWYgaXRlbVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5k
ZXgoY3R4LCBvYmplY3QsIGksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY3R4KTsKKyAgICAgICAgICAgICAgICBzdHJpbmdzLmFwcGVuZCh0b1N0cmlu
ZyhjdHgsIGl0ZW1WYWx1ZSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY3R4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0dGluZy5z
ZXQoc3RyaW5ncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7CisKKyAgICBjb250cm9sbGVyLT5zZXRTZXR0aW5nKHRvU3RyaW5nKGN0
eCwga2V5VmFsdWUsIGV4Y2VwdGlvbiksIHNldHRpbmcpOworCisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGxvY2FsaXplZFN0cmlu
Z3MoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZb
XSAvKmFyZ3VtZW50c1tdKi8sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCiB7CiAgICAgSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW5zcGVjdG9y
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC05NDYsNiAr
MTA0NCw5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHByb2ZpbGVzKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSCiAKIC8vIEluc3BlY3RvckNvbnRyb2xs
ZXIgQ2xhc3MKIAorc3RhdGljIHVuc2lnbmVkIHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50Owor
c3RhdGljIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nKj4qIHNf
c2V0dGluZ0NhY2hlOworCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIDogbV9pbnNwZWN0ZWRQ
YWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC05NjcsNiArMTA2OCw3IEBAIElu
c3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVj
dG9yQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKICAgICBB
U1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKKyAgICArK3NfaW5zcGVjdG9yQ29udHJvbGxlckNv
dW50OwogfQogCiBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCkBA
IC05OTQsNiArMTA5NiwxNSBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJv
bGxlcigpCiAKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7CiAgICAgZGVs
ZXRlQWxsVmFsdWVzKG1fY29uc29sZU1lc3NhZ2VzKTsKKworICAgIEFTU0VSVChzX2luc3BlY3Rv
ckNvbnRyb2xsZXJDb3VudCk7CisgICAgLS1zX2luc3BlY3RvckNvbnRyb2xsZXJDb3VudDsKKwor
ICAgIGlmICghc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQgJiYgc19zZXR0aW5nQ2FjaGUpIHsK
KyAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCpzX3NldHRpbmdDYWNoZSk7CisgICAgICAgIGRlbGV0
ZSBzX3NldHRpbmdDYWNoZTsKKyAgICAgICAgc19zZXR0aW5nQ2FjaGUgPSAwOworICAgIH0KIH0K
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKQEAg
LTEwMTIsNiArMTEyMyw0OCBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPnNldHRpbmdzKCktPmRldmVsb3BlckV4
dHJhc0VuYWJsZWQoKTsKIH0KIAorY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sK
KyAgICBpZiAoIXNfc2V0dGluZ0NhY2hlKQorICAgICAgICBzX3NldHRpbmdDYWNoZSA9IG5ldyBI
YXNoTWFwPFN0cmluZywgU2V0dGluZyo+OworCisgICAgaWYgKFNldHRpbmcqIGNhY2hlZFNldHRp
bmcgPSBzX3NldHRpbmdDYWNoZS0+Z2V0KGtleSkpCisgICAgICAgIHJldHVybiAqY2FjaGVkU2V0
dGluZzsKKworICAgIFNldHRpbmcqIG5ld1NldHRpbmcgPSBuZXcgU2V0dGluZzsKKyAgICBzX3Nl
dHRpbmdDYWNoZS0+c2V0KGtleSwgbmV3U2V0dGluZyk7CisKKyAgICBtX2NsaWVudC0+cG9wdWxh
dGVTZXR0aW5nKGtleSwgKm5ld1NldHRpbmcpOworCisgICAgcmV0dXJuICpuZXdTZXR0aW5nOwor
fQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFNldHRpbmcmIHNldHRpbmcpCit7CisgICAgaWYgKHNldHRpbmcudHlwZSgpID09
IFNldHRpbmc6Ok5vVHlwZSkgeworICAgICAgICBpZiAoc19zZXR0aW5nQ2FjaGUpIHsKKyAgICAg
ICAgICAgIFNldHRpbmcqIGNhY2hlZFNldHRpbmcgPSBzX3NldHRpbmdDYWNoZS0+Z2V0KGtleSk7
CisgICAgICAgICAgICBpZiAoY2FjaGVkU2V0dGluZykgeworICAgICAgICAgICAgICAgIHNfc2V0
dGluZ0NhY2hlLT5yZW1vdmUoa2V5KTsKKyAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVkU2V0
dGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1fY2xpZW50LT5yZW1v
dmVTZXR0aW5nKGtleSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNfc2V0
dGluZ0NhY2hlKQorICAgICAgICBzX3NldHRpbmdDYWNoZSA9IG5ldyBIYXNoTWFwPFN0cmluZywg
U2V0dGluZyo+OworCisgICAgaWYgKFNldHRpbmcqIGNhY2hlZFNldHRpbmcgPSBzX3NldHRpbmdD
YWNoZS0+Z2V0KGtleSkpCisgICAgICAgICpjYWNoZWRTZXR0aW5nID0gc2V0dGluZzsKKyAgICBl
bHNlCisgICAgICAgIHNfc2V0dGluZ0NhY2hlLT5zZXQoa2V5LCBuZXcgU2V0dGluZyhzZXR0aW5n
KSk7CisKKyAgICBtX2NsaWVudC0+c3RvcmVTZXR0aW5nKGtleSwgc2V0dGluZyk7Cit9CisKIFN0
cmluZyBJbnNwZWN0b3JDb250cm9sbGVyOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIHsKICAgICBp
ZiAoIWVuYWJsZWQoKSkKQEAgLTEzNTAsNiArMTUwMyw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKCkKICNpZiBFTkFCTEUoREFUQUJBU0Up
CiAgICAgICAgIHsgImRhdGFiYXNlVGFibGVOYW1lcyIsIFdlYkNvcmU6OmRhdGFiYXNlVGFibGVO
YW1lcywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAjZW5kaWYKKyAgICAgICAgeyAic2V0
dGluZyIsIFdlYkNvcmU6OnNldHRpbmcsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAg
ICAgICB7ICJzZXRTZXR0aW5nIiwgV2ViQ29yZTo6c2V0U2V0dGluZywga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCiAgICAgICAgIHsgImluc3BlY3RlZFdpbmRvdyIsIFdlYkNvcmU6Omluc3Bl
Y3RlZFdpbmRvdywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgImxvY2Fs
aXplZFN0cmluZ3NVUkwiLCBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmdzLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAicGxhdGZvcm0iLCBXZWJDb3JlOjpwbGF0Zm9ybSwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggZWI5MDI4Zi4uMWU2MjQwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaApAQCAtNzksNiArNzksNjAgQEAgcHVibGljOgogICAgICAgICBTY3Jp
cHRzUGFuZWwKICAgICB9IFNwZWNpYWxQYW5lbHM7CiAKKyAgICBzdHJ1Y3QgU2V0dGluZyB7Cisg
ICAgICAgIHR5cGVkZWYgZW51bSB7CisgICAgICAgICAgICBOb1R5cGUsIFN0cmluZ1R5cGUsIFN0
cmluZ1ZlY3RvclR5cGUsIERvdWJsZVR5cGUsIEludGVnZXJUeXBlLCBCb29sZWFuVHlwZQorICAg
ICAgICB9IFR5cGU7CisKKyAgICAgICAgU2V0dGluZygpCisgICAgICAgICAgICA6IG1fdHlwZShO
b1R5cGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFNldHRpbmcoY29uc3QgU2V0
dGluZyYgbykKKyAgICAgICAgICAgIDogbV90eXBlKG8ubV90eXBlKQorICAgICAgICAgICAgLCBt
X3N0cmluZyhvLm1fc3RyaW5nKQorICAgICAgICAgICAgLCBtX3N0cmluZ1ZlY3RvcihvLm1fc3Ry
aW5nVmVjdG9yKQorICAgICAgICAgICAgLCBtX3NpbXBsZUNvbnRlbnQoby5tX3NpbXBsZUNvbnRl
bnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFNldHRpbmcmIG9wZXJhdG9yPShj
b25zdCBTZXR0aW5nJiBvKQorICAgICAgICB7CisgICAgICAgICAgICBtX3R5cGUgPSBvLm1fdHlw
ZTsKKyAgICAgICAgICAgIG1fc3RyaW5nID0gby5tX3N0cmluZzsKKyAgICAgICAgICAgIG1fc3Ry
aW5nVmVjdG9yID0gby5tX3N0cmluZ1ZlY3RvcjsKKyAgICAgICAgICAgIG1fc2ltcGxlQ29udGVu
dCA9IG8ubV9zaW1wbGVDb250ZW50OworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAg
ICB9CisKKyAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICAgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBl
KTsgcmV0dXJuIG1fc3RyaW5nOyB9OworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3Ry
aW5nVmVjdG9yKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IFN0cmluZ1ZlY3RvclR5cGUpOyBy
ZXR1cm4gbV9zdHJpbmdWZWN0b3I7IH07CisgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNv
bnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBEb3VibGVUeXBlKTsgcmV0dXJuIG1fc2ltcGxlQ29udGVu
dC5tX2RvdWJsZTsgfTsKKyAgICAgICAgbG9uZyBpbnRlZ2VyVmFsdWUoKSBjb25zdCB7IEFTU0VS
VChtX3R5cGUgPT0gSW50ZWdlclR5cGUpOyByZXR1cm4gbV9zaW1wbGVDb250ZW50Lm1faW50ZWdl
cjsgfTsKKyAgICAgICAgYm9vbCBib29sZWFuVmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUg
PT0gQm9vbGVhblR5cGUpOyByZXR1cm4gbV9zaW1wbGVDb250ZW50Lm1fYm9vbGVhbjsgfTsKKwor
ICAgICAgICB2b2lkIHNldChjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdHlwZSA9IFN0cmluZ1R5
cGU7IG1fc3RyaW5nID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHZhbHVlKSB7IG1fdHlwZSA9IFN0cmluZ1ZlY3RvclR5cGU7IG1fc3RyaW5nVmVjdG9y
ID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXQoZG91YmxlIHZhbHVlKSB7IG1fdHlwZSA9IERv
dWJsZVR5cGU7IG1fc2ltcGxlQ29udGVudC5tX2RvdWJsZSA9IHZhbHVlOyB9CisgICAgICAgIHZv
aWQgc2V0KGxvbmcgdmFsdWUpIHsgbV90eXBlID0gSW50ZWdlclR5cGU7IG1fc2ltcGxlQ29udGVu
dC5tX2ludGVnZXIgPSB2YWx1ZTsgfQorICAgICAgICB2b2lkIHNldChib29sIHZhbHVlKSB7IG1f
dHlwZSA9IEJvb2xlYW5UeXBlOyBtX3NpbXBsZUNvbnRlbnQubV9ib29sZWFuID0gdmFsdWU7IH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIFR5cGUgbV90eXBlOworCisgICAgICAgIFN0cmluZyBt
X3N0cmluZzsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9zdHJpbmdWZWN0b3I7CisKKyAgICAg
ICAgdW5pb24geworICAgICAgICAgICAgZG91YmxlIG1fZG91YmxlOworICAgICAgICAgICAgbG9u
ZyBtX2ludGVnZXI7CisgICAgICAgICAgICBib29sIG1fYm9vbGVhbjsKKyAgICAgICAgfSBtX3Np
bXBsZUNvbnRlbnQ7CisgICAgfTsKKwogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIElu
c3BlY3RvckNsaWVudCopOwogICAgIH5JbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKQEAgLTg5LDYg
KzE0Myw5IEBAIHB1YmxpYzoKIAogICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2luc3BlY3RlZFBhZ2U7IH0KIAorICAgIGNvbnN0IFNldHRpbmcmIHNldHRpbmcoY29u
c3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIHZvaWQgc2V0U2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU2V0dGluZyYpOworCiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwo
KTsKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGQ5
MjJiZDEuLjQyODA5MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MDUsNiArNDA1LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUqKSB7fTsKICAgICB2aXJ0
dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIHt9OwogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKSB7fTsKKworICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNl
dHRpbmcmKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJikge307CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpIHt9OwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCA1NDhlOWNlLi5mMzA3OGUzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA4LTEwLTI0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBTdHViIG91dCBuZXcg
SW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGluZyk6IE5v
dCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNl
dHRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVT
ZXR0aW5nKTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmg6CisKIDIwMDgtMTAtMjIgIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgogCiAgICAg
ICAgIEJ1aWxkIGZpeCBmb3Igb2xkZXIgR1RLKyB2ZXJzaW9ucyB3aGVyZSBHVEtfVFlQRV9UQVJH
RVRfTElTVCBpc24ndApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRHdGsuY3BwCmluZGV4IDFhNzIyNjEuLjZkMmI2MzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTgxLDUgKzgxLDIwIEBA
IHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnQ6OnBvcHVs
YXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGlu
ZyYgc2V0dGluZykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3Rv
ckNsaWVudDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBJbnNwZWN0b3JD
b250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5nKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggZmY2MGZhYi4uZTFhNTczYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
aAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBA
IC01OCw2ICs1OCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlSGln
aGxpZ2h0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxh
dGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpTZXR0aW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmco
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OlNldHRpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNldHRpbmcoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBrZXkpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmYwZWRiYy4uMWE2
OTdkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBJbnNwZWN0b3JDbGll
bnQgbWV0aG9kcyB0byB3b3JrIHdpdGggU2V0dGluZ3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06
CisgICAgICAgIChjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyk6IEhlbHBlciB0byBtYWtlIHRoZSBw
cmVmZXJlbmNlIGtleS4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0
aW5nKTogUmVhZCB0aGUgcHJlZmVyZW5jZSB2YWx1ZSBmcm9tIENGUHJlZmVyZW5jZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyk6IFdyaXRlIHRoZSBzZXR0aW5n
IHZhbHVlIHRvICBDRlByZWZlcmVuY2VzLgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpy
ZW1vdmVTZXR0aW5nKTogUmVtb3ZlIHRoZSBwcmVmZXJlbmNlIGZyb20gQ0ZQcmVmZXJlbmNlcy4K
KwogMjAwOC0xMC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDU1NTRjMDcuLjE0MDEyOTEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTUsNiArNTUs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuZXdV
UkwpOwogCisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIGtleSwgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOworICAg
IHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNv
bnN0IFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSk7CisKIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDAzZDg1YWUuLjM0
YWYxZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCkBAIC0xNDIsNiArMTQyLDExNCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6dXBk
YXRlV2luZG93VGl0bGUoKSBjb25zdAogICAgIFtbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIHdp
bmRvd10gc2V0VGl0bGU6dGl0bGVdOwogfQogCitzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGNy
ZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIC8vIEZJWE1F
OiB0aGlzIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBNYWMgYW5kIFdpbmRvd3MsIHRoaXMgaXMgY3Vy
cmVudGx5IGNvcGllZCBjb2RlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5Q0ZTdHJp
bmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBDRlN0cmluZ0Ny
ZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5zcGVjdG9yIFNldHRpbmcg
LSAlQCIpLCBrZXlDRlN0cmluZy5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmcmIHNldHRpbmcpCit7CisgICAgLy8gRklYTUU6IHRoaXMgY2FuIGJlIHNoYXJlZCBi
ZXR3ZWVuIE1hYyBhbmQgV2luZG93cywgdGhpcyBpcyBjdXJyZW50bHkgY29waWVkIGNvZGUuCisK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0
ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOworICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJl
Zj4gdmFsdWUoQWRvcHRDRiwgQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tl
eS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKTsKKworICAgIGlmICgh
dmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIENGVHlwZUlEIHR5cGUgPSBDRkdldFR5cGVJ
RCh2YWx1ZS5nZXQoKSk7CisgICAgaWYgKHR5cGUgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAg
ICAgICAgc2V0dGluZy5zZXQoc3RhdGljX2Nhc3Q8U3RyaW5nPihzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4odmFsdWUuZ2V0KCkpKSk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBDRkJvb2xlYW5HZXRU
eXBlSUQoKSkKKyAgICAgICAgc2V0dGluZy5zZXQoc3RhdGljX2Nhc3Q8Ym9vbD4oQ0ZCb29sZWFu
R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZS5nZXQoKSkpKSk7CisgICAg
ZWxzZSBpZiAodHlwZSA9PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgICAgIENGTnVtYmVy
UmVmIG51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQoKSk7CisgICAg
ICAgIGlmIChDRk51bWJlcklzRmxvYXRUeXBlKG51bWJlcikpIHsKKyAgICAgICAgICAgIGRvdWJs
ZSBkb3VibGVOdW1iZXIgPSAwLjA7CisgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHN0YXRp
Y19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQoKSksIGtDRk51bWJlckRvdWJsZVR5cGUsICZk
b3VibGVOdW1iZXIpOworICAgICAgICAgICAgc2V0dGluZy5zZXQoZG91YmxlTnVtYmVyKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvbmcgbG9uZ051bWJlciA9IDA7CisgICAgICAg
ICAgICBDRk51bWJlckdldFZhbHVlKHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQo
KSksIGtDRk51bWJlckxvbmdUeXBlLCAmbG9uZ051bWJlcik7CisgICAgICAgICAgICBzZXR0aW5n
LnNldChsb25nTnVtYmVyKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDRkFy
cmF5R2V0VHlwZUlEKCkpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsKKworICAg
ICAgICBDRkFycmF5UmVmIGFycmF5ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUuZ2V0
KCkpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBDRkFycmF5R2V0Q291bnQoYXJyYXkpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGFycmF5LCBpKSk7CisgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQo
c3RyaW5nKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIHN0cmluZ3Mu
YXBwZW5kKHN0YXRpY19jYXN0PFN0cmluZz4oc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHN0cmlu
ZykpKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldHRpbmcuc2V0KHN0cmluZ3MpOworICAgIH0g
ZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9y
Q29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3sKKyAgICAvLyBGSVhNRTogdGhpcyBjYW4g
YmUgc2hhcmVkIGJldHdlZW4gTWFjIGFuZCBXaW5kb3dzLCB0aGlzIGlzIGN1cnJlbnRseSBjb3Bp
ZWQgY29kZS4KKworICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gb2JqZWN0VG9TdG9y
ZTsKKworICAgIHN3aXRjaCAoc2V0dGluZy50eXBlKCkpIHsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGU6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OlN0cmluZ1R5cGU6CisgICAgICAgICAg
ICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmc6OkJvb2xlYW5UeXBlOgorICAgICAgICAgICAgb2JqZWN0VG9TdG9yZSA9IChzZXR0
aW5nLmJvb2xlYW5WYWx1ZSgpID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpT
ZXR0aW5nOjpEb3VibGVUeXBlOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBzZXR0aW5n
LmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnZhbHVlKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0
dGluZzo6SW50ZWdlclR5cGU6IHsKKyAgICAgICAgICAgIGxvbmcgdmFsdWUgPSBzZXR0aW5nLmlu
dGVnZXJWYWx1ZSgpOworICAgICAgICAgICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlckxvbmdUeXBlLCAmdmFsdWUpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5n
OjpTdHJpbmdWZWN0b3JUeXBlOiB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c3RyaW5ncyA9IHNldHRpbmcuc3RyaW5nVmVjdG9yKCk7CisgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBsZW5ndGggPSBzdHJpbmdzLnNpemUoKTsKKworICAgICAgICAgICAgUmV0YWluUHRyPENG
TXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBs
ZW5ndGgsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwgc3RyaW5nc1tpXS5jcmVhdGVDRlN0cmluZygp
KTsKKyAgICAgICAgICAgICAgICBDRkFycmF5U2V0VmFsdWVBdEluZGV4KGFycmF5LmdldCgpLCBp
LCBzdHJpbmcuZ2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvYmplY3RUb1N0
b3JlID0gYXJyYXk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEFTU0VSVChvYmplY3RUb1N0b3JlKTsKKworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJl
ZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAg
Q0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBvYmplY3RUb1N0
b3JlLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KQorewor
ICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBNYWMgYW5kIFdpbmRvd3Ms
IHRoaXMgaXMgY3VycmVudGx5IGNvcGllZCBjb2RlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7
CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCAwLCBr
Q0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7Cit9CisKICNwcmFnbWEgbWFyayAtCiAK
ICNkZWZpbmUgV2ViS2l0SW5zcGVjdG9yQXR0YWNoZWRLZXkgQCJXZWJLaXRJbnNwZWN0b3JBdHRh
Y2hlZCIKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IDgyMzEyN2IuLmM3OGM4NmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA4LTEwLTI0
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBTdHViIG91
dCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVTZXR0
aW5nKTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
UXQ6OnN0b3JlU2V0dGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oOgorCiAyMDA4LTEwLTIyICBZYWVsIEFoYXJvbiA8eWFlbC5haGFy
b25Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcCBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKaW5kZXggMjg3
OGQ1MS4uNzMzNTI4MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50UXQuY3BwCkBAIC0xODYsNiArMTg2LDIxIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6
OnVwZGF0ZVdpbmRvd1RpdGxlKCkKICAgICBtX3dlYlBhZ2UtPnZpZXcoKS0+c2V0V2luZG93VGl0
bGUoY2FwdGlvbi5hcmcobV9pbnNwZWN0ZWRVUkwpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGll
bnRRdDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBJbnNwZWN0b3JDb250cm9s
bGVyOjpTZXR0aW5nJiBzZXR0aW5nKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudFF0OjpyZW1vdmVTZXR0aW5nKGNv
bnN0IFN0cmluZyYga2V5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0KIAogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudFF0Lm1vYyIKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmgKaW5kZXggNTk3NzJhNC4uNDljMmQ1NiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTY1LDYgKzY1LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
JiBuZXdVUkwpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9y
Q29udHJvbGxlcjo6U2V0dGluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSk7CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHVwZGF0
ZVdpbmRvd1RpdGxlKCk7CiAgICAgICAgIFFXZWJQYWdlKiBtX2luc3BlY3RlZFdlYlBhZ2U7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDc5ZWYwY2YuLjdmNDQ4ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMTAtMjQgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBu
ZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMgdG8gd29yayB3aXRoIFNldHRpbmdzLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKTogSGVscGVyIHRvIG1ha2UgdGhlIHByZWZlcmVuY2Uga2V5LgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBSZWFkIHRoZSBwcmVmZXJlbmNlIHZhbHVl
IGZyb20gQ0ZQcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c3RvcmVT
ZXR0aW5nKTogV3JpdGUgdGhlIHNldHRpbmcgdmFsdWUgdG8gIENGUHJlZmVyZW5jZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbW92ZVNldHRpbmcpOiBSZW1vdmUgdGhlIHByZWZl
cmVuY2UgZnJvbSBDRlByZWZlcmVuY2VzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oOgorCiAyMDA4LTEwLTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
Z21haWwuY29tPgogCiAgICAgICAgIENvcnJlY3QgYnVpbGQgcmVncmVzc2lvbnMgaW4gQ2Fpcm8g
cG9ydCBmb3IgV2luZG93cy4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcAppbmRleCBiZmJmODU4Li4xNmNlMGIzIDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0zMTQsNiArMzE0
LDExNCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKQogICAg
IDo6U2V0V2luZG93VGV4dChtX2h3bmQsIHRpdGxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkpOwogfQogCitzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGNyZWF0ZUtleUZvclByZWZl
cmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBiZSBz
aGFyZWQgYmV0d2VlbiBNYWMgYW5kIFdpbmRvd3MsIHRoaXMgaXMgY3VycmVudGx5IGNvcGllZCBj
b2RlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5Q0ZTdHJpbmcoQWRvcHRDRiwga2V5
LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQo
MCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXlDRlN0
cmluZy5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRp
bmcpCit7CisgICAgLy8gRklYTUU6IHRoaXMgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIE1hYyBhbmQg
V2luZG93cywgdGhpcyBpcyBjdXJyZW50bHkgY29waWVkIGNvZGUuCisKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKGtleSkpOworICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUoQWRvcHRD
RiwgQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAg
IHJldHVybjsKKworICAgIENGVHlwZUlEIHR5cGUgPSBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSk7
CisgICAgaWYgKHR5cGUgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgc2V0dGluZy5z
ZXQoc3RhdGljX2Nhc3Q8U3RyaW5nPihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0
KCkpKSk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKKyAgICAg
ICAgc2V0dGluZy5zZXQoc3RhdGljX2Nhc3Q8Ym9vbD4oQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZS5nZXQoKSkpKSk7CisgICAgZWxzZSBpZiAodHlwZSA9
PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgICAgIENGTnVtYmVyUmVmIG51bWJlciA9IHN0
YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQoKSk7CisgICAgICAgIGlmIChDRk51bWJl
cklzRmxvYXRUeXBlKG51bWJlcikpIHsKKyAgICAgICAgICAgIGRvdWJsZSBkb3VibGVOdW1iZXIg
PSAwLjA7CisgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHN0YXRpY19jYXN0PENGTnVtYmVy
UmVmPih2YWx1ZS5nZXQoKSksIGtDRk51bWJlckRvdWJsZVR5cGUsICZkb3VibGVOdW1iZXIpOwor
ICAgICAgICAgICAgc2V0dGluZy5zZXQoZG91YmxlTnVtYmVyKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvbmcgbG9uZ051bWJlciA9IDA7CisgICAgICAgICAgICBDRk51bWJlckdl
dFZhbHVlKHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQoKSksIGtDRk51bWJlckxv
bmdUeXBlLCAmbG9uZ051bWJlcik7CisgICAgICAgICAgICBzZXR0aW5nLnNldChsb25nTnVtYmVy
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDRkFycmF5R2V0VHlwZUlEKCkp
IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsKKworICAgICAgICBDRkFycmF5UmVm
IGFycmF5ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUuZ2V0KCkpOworICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBDRkFycmF5R2V0Q291bnQoYXJyYXkpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIENGU3RyaW5nUmVm
IHN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGFycmF5LCBpKSk7CisgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoc3RyaW5nKSA9PSBDRlN0
cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIHN0cmluZ3MuYXBwZW5kKHN0YXRpY19j
YXN0PFN0cmluZz4oc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHN0cmluZykpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHNldHRpbmcuc2V0KHN0cmluZ3MpOworICAgIH0gZWxzZQorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN0b3Jl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0
dGluZyYgc2V0dGluZykKK3sKKyAgICAvLyBGSVhNRTogdGhpcyBjYW4gYmUgc2hhcmVkIGJldHdl
ZW4gTWFjIGFuZCBXaW5kb3dzLCB0aGlzIGlzIGN1cnJlbnRseSBjb3BpZWQgY29kZS4KKworICAg
IFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gb2JqZWN0VG9TdG9yZTsKKworICAgIHN3aXRj
aCAoc2V0dGluZy50eXBlKCkpIHsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2FzZSBJbnNw
ZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGU6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3RvckNv
bnRyb2xsZXI6OlNldHRpbmc6OlN0cmluZ1R5cGU6CisgICAgICAgICAgICBvYmplY3RUb1N0b3Jl
LmFkb3B0Q0Yoc2V0dGluZy5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkJvb2xl
YW5UeXBlOgorICAgICAgICAgICAgb2JqZWN0VG9TdG9yZSA9IChzZXR0aW5nLmJvb2xlYW5WYWx1
ZSgpID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFsc2UpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpEb3VibGVU
eXBlOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBzZXR0aW5nLmRvdWJsZVZhbHVlKCk7
CisgICAgICAgICAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NG
TnVtYmVyRG91YmxlVHlwZSwgJnZhbHVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6SW50ZWdlclR5
cGU6IHsKKyAgICAgICAgICAgIGxvbmcgdmFsdWUgPSBzZXR0aW5nLmludGVnZXJWYWx1ZSgpOwor
ICAgICAgICAgICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckxvbmdUeXBlLCAmdmFsdWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdWZWN0b3JU
eXBlOiB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncyA9IHNldHRp
bmcuc3RyaW5nVmVjdG9yKCk7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGggPSBz
dHJpbmdzLnNpemUoKTsKKworICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVm
PiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBsZW5ndGgsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBz
dHJpbmcoQWRvcHRDRiwgc3RyaW5nc1tpXS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBDRkFycmF5U2V0VmFsdWVBdEluZGV4KGFycmF5LmdldCgpLCBpLCBzdHJpbmcuZ2V0KCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvYmplY3RUb1N0b3JlID0gYXJyYXk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChvYmplY3RU
b1N0b3JlKTsKKworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRv
cHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgQ0ZQcmVmZXJlbmNlc1Nl
dEFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBvYmplY3RUb1N0b3JlLmdldCgpLCBrQ0ZQ
cmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIC8vIEZJWE1FOiB0
aGlzIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBNYWMgYW5kIFdpbmRvd3MsIHRoaXMgaXMgY3VycmVu
dGx5IGNvcGllZCBjb2RlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNL
ZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCAwLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbik7Cit9CisKIExSRVNVTFQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpvbkdl
dE1pbk1heEluZm8oV1BBUkFNLCBMUEFSQU0gbFBhcmFtKQogewogICAgIE1JTk1BWElORk8qIGlu
Zm8gPSByZWludGVycHJldF9jYXN0PE1JTk1BWElORk8qPihsUGFyYW0pOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOTAyZjNmYi4uYTI4
NTA3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCkBAIC02NCw2ICs2NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5ld1VSTCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7CisgICAgdmlydHVhbCB2b2lkIHN0
b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXR0
aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5KTsKKwogcHJpdmF0ZToKICAgICB+V2ViSW5z
cGVjdG9yQ2xpZW50KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJL
aXQvd3gvQ2hhbmdlTG9nCmluZGV4IDBhMjY1NTcuLmUxMjhlMGYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC93eC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDA4LTEwLTI0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHViIG91dCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6cG9w
dWxhdGVTZXR0aW5nKTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50OjpzdG9yZVNldHRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudDo6cmVtb3ZlU2V0dGluZyk6IERpdHRvLgorICAgICAgICAqIFdlYktpdFN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50V3guaDoKKwogMjAwOC0xMC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcCBiL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAppbmRleCBkNWYyMzZi
Li4xN2Q0ZWIwIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
V3guY3BwCkBAIC05OSw0ICs5OSwxOSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjppbnNwZWN0
ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5n
JiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0
dGluZykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNsaWVu
dDo6cmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guaCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4
LmgKaW5kZXggOWVhM2FlZC4uNmRkMDVkZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXeC5oCkBAIC01Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKKworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0
ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotLSAKMS42LjAuMgoK
</data>
<flag name="review"
          id="11259"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24643</attachid>
            <date>2008-10-24 11:31:37 -0700</date>
            <delta_ts>2008-10-24 11:43:15 -0700</delta_ts>
            <desc>Proposed patch (round two)</desc>
            <filename>0001-Add-a-mechanism-to-store-and-retrieve-preferences-fo.patch</filename>
            <type>text/plain</type>
            <size>44182</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSAwZWNjN2NkMmI1NzM0NzE0MjllN2YxMzk2YmVmNjdkNTM2YTY1NWZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDI0IE9jdCAyMDA4IDExOjMwOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGEgbWVjaGFuaXNtIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBwcmVmZXJlbmNlcyBmb3IgdGhlIFdl
YiBJbnNwZWN0b3IuCgpXZWJDb3JlOgoKMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CgogICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBhc2sgdGhlIEluc3Bl
Y3RvckNsaWVudCBmb3Iga2V5L3ZhbHVlIHNldHRpbmcgcGFpcnMuCiAgICAgICAgVGhlc2Ugc2V0
dGluZ3MgY2FuIGJlIHN0cmluZ3MsIG51bWJlcnMsIGJvb2xlYW5zIG9yIHN0cmluZyB2ZWN0b3Jz
LiBUaGUKICAgICAgICBzZXR0aW5ncyBhcmUgYWxzbyBicmlkZ2VkIHRvIGFuZCBmcm9tIEphdmFT
Y3JpcHQuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg1NgoKICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KCiAgICAgICAgKiBXZWJDb3Jl
LmJhc2UuZXhwOiBFeHBvc2UgdGhlIFN0cmluZyBDRlN0cmluZ1JlZiBjb25zdHJ1Y3Rvci4KICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBBZGRlZCwgcHVyZSB2aXJ0dWFsLgogICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyk6IERpdHRvLgogICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKICAgICAgICAoV2ViQ29y
ZTo6c2V0dGluZyk6IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldHRpbmcgYW5kIHdyYXBz
IHRoZSByZXN1bHQgaW4gc2NyaXB0IHR5cGVzLgogICAgICAgIChXZWJDb3JlOjpzZXRTZXR0aW5n
KTogQ2FsbHMgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2V0dGluZyBhZnRlciBjb252ZXJ0aW5n
IGZyb20gc2NyaXB0IHR5cGVzLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKTogSW5jcmVtZW50IGEgZ2xvYmFsIHN0YXRpYwogICAgICAg
IHRvIHRyYWNrIHRoZSBudW1iZXIgb2YgbGl2ZSBJbnNwZWN0b3JDb250cm9sbGVycy4KICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOiBE
ZWNyZW1lbnQgdGhlIGdsb2JhbCBzdGF0aWMKICAgICAgICB0aGF0IHRyYWNrcyB0aGUgbnVtYmVy
IG9mIGxpdmUgSW5zcGVjdG9yQ29udHJvbGxlcnMuIERlbGV0ZSB0aGUgc2V0dGluZyBjYWNoZSBp
ZiB0aGVyZQogICAgICAgIGFyZSBubyBtb3JlIGxpdmUgY29udHJvbGxlcnMuCiAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldHRpbmcpOiBDaGVjayB0aGUgY2FjaGUgYW5k
IHJldHVybiB0aGUgc2V0dGluZyBmcm9tIHRoZXJlLAogICAgICAgIG90aGVyd2lzZSBtYWtlIGEg
bmV3IFNldHRpbmcgYW5kIGFzayB0aGUgY2xpZW50IHRvIHBvcHVsYXRlIGl0LgogICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXR0aW5nKTogQ2hhbmdlIHRoZSBjYWNo
ZSBhbmQgYXNrIHRoZSBjbGllbnQgdG8gc3RvcmUgaXQuCiAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6IEFkZCBzZXR0aW5n
IGFuZCBzZXRTZXR0aW5nCiAgICAgICAgdG8gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIgc2NyaXB0
IGNsYXNzLgogICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U2V0dGluZyk6CiAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6Om9wZXJhdG9yPSk6CiAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OnR5cGUpOiBSZXR1
cm4gbV90eXBlLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5n
OjpzdHJpbmcpOiBSZXR1cm4gbV9zdHJpbmcuIEFzc2VydCB0aGUgdHlwZSBpcyBjb3JyZWN0Lgog
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpzdHJpbmdWZWN0
b3IpOiBSZXR1cm4gbV9zdHJpbmdWZWN0b3IuCiAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlzIGNv
cnJlY3QuCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OmRv
dWJsZVZhbHVlKTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5tX2RvdWJsZS4KICAgICAgICBBc3Nl
cnQgdGhlIHR5cGUgaXMgY29ycmVjdC4KICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6U2V0dGluZzo6aW50ZWdlclZhbHVlKTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5tX2lu
dGVnZXIuCiAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlzIGNvcnJlY3QuCiAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OmJvb2xlYW5WYWx1ZSk6IFJldHVybiBt
X3NpbXBsZUNvbnRlbnQubV9ib29sZWFuLgogICAgICAgIEFzc2VydCB0aGUgdHlwZSBpcyBjb3Jy
ZWN0LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpzZXQp
OiBPdmVybG9hZGVkIGZvciBlYWNoIGRhdGEgdHlwZSwgc2V0cyB0aGUgcmlnaHQKICAgICAgICBm
aWVsZCBhbmQgdGhlIHR5cGUuCiAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CiAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcpOiBBZGRl
ZCwgZW1wdHkgbWV0aG9kLgogICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVudDo6
c3RvcmVTZXR0aW5nKTogRGl0dG8uCiAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xp
ZW50OjpyZW1vdmVTZXR0aW5nKTogRGl0dG8uCgpXZWJLaXQ6CgoyMDA4LTEwLTI0ICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KCiAgICAgICAgSW1wbGVtZW50IG5ldyBJbnNw
ZWN0b3JDbGllbnQgbWV0aG9kcyB0byB3b3JrIHdpdGggU2V0dGluZ3MuCgogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1NgoKICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KCiAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogQWRkIHRoZSBuZXcgSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGZpbGUuCgpXZWJLaXQvZ3Rr
OgoKMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CgogICAg
ICAgIFN0dWIgb3V0IG5ldyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kcy4KCiAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CgogICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEd0ay5jcHA6CiAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRp
bmcpOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Ojpz
dG9yZVNldHRpbmcpOiBEaXR0by4KICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnJl
bW92ZVNldHRpbmcpOiBEaXR0by4KICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEd0ay5oOgoKV2ViS2l0L21hYzoKCjIwMDgtMTAtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgoKICAgICAgICBJbXBsZW1lbnQgbmV3IEluc3BlY3RvckNsaWVudCBt
ZXRob2RzIHRvIHdvcmsgd2l0aCBTZXR0aW5ncy4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CgogICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOiBBZGQg
dGhlIG5ldyBtZXRob2RzIGFuZAogICAgICAgIGd1YXJkIHRoZSBPYmpDIHBhcnRzIG9mIHRoZSBo
ZWFkZXIuCgpXZWJLaXQvcXQ6CgoyMDA4LTEwLTI0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KCiAgICAgICAgU3R1YiBvdXQgbmV3IEluc3BlY3RvckNsaWVudCBtZXRob2Rz
LgoKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NTYK
CiAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCgogICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRRdDo6cG9wdWxhdGVTZXR0aW5nKTogTm90IGltcGxlbWVudGVkLgogICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRRdDo6c3RvcmVTZXR0aW5nKTogRGl0dG8uCiAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudFF0OjpyZW1vdmVTZXR0aW5nKTogRGl0dG8uCiAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgoKV2ViS2l0L3dpbjoKCjIwMDgtMTAt
MjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgoKICAgICAgICBJbXBsZW1l
bnQgbmV3IEluc3BlY3RvckNsaWVudCBtZXRob2RzIHRvIHdvcmsgd2l0aCBTZXR0aW5ncy4KCiAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CgogICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgoKICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2Vi
S2l0LnZjcHJvajogQWRkIHRoZSBuZXcgSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGZpbGUuCiAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDogQWRkIHRoZSBuZXcgbWV0
aG9kcy4KCldlYktpdC93eDoKCjIwMDgtMTAtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlA
YXBwbGUuY29tPgoKICAgICAgICBTdHViIG91dCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMu
CgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1NgoK
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KCiAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0luc3BlY3RvckNsaWVudFd4LmNwcDoKICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
Ojpwb3B1bGF0ZVNldHRpbmcpOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKTogRGl0dG8uCiAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudDo6cmVtb3ZlU2V0dGluZyk6IERpdHRvLgogICAgICAgICogV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ4ICsrKysrKysKIFdlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudC5oICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwICAgICAgICAgfCAgMTU1ICsrKysrKysrKysr
KysrKysrKysrKwogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oICAgICAg
ICAgICB8ICAgNDAgKysrKysrCiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNiArKy0tCiBXZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMCArKwogV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qICAgICAgICAgICB8ICAgIDQgKwogV2ViS2l0L2NmL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysKIFdlYktpdC9jZi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgfCAgMTM3ICsrKysrKysrKysrKysrKysrKwog
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQg
KysKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCAgfCAg
IDE1ICsrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oICAg
IHwgICAgNCArCiBXZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxMSArKwogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaCAgICB8ICAgIDkgKysKIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE0ICsrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50UXQuY3BwICAgIHwgICAxNSArKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFF0LmggICAgICB8ICAgIDQgKwogV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysKIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggICAgfCAgICA0ICsKIFdlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXQudmNwcm9qICAgICAgICAgICAgfCAgICA0ICsKIFdlYktpdC93eC9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrCiBXZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAgICAgIHwgICAxNSArKwogV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaCAgICAgICB8ICAgIDQgKwogMjQgZmls
ZXMgY2hhbmdlZCwgNTY3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFdlYktpdC9jZi9DaGFuZ2VMb2cKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NGZlMTBmLi45ODBk
MTBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUxIEBACisyMDA4LTEwLTI0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBtZWNoYW5pc20gdG8gYXNrIHRoZSBJbnNwZWN0
b3JDbGllbnQgZm9yIGtleS92YWx1ZSBzZXR0aW5nIHBhaXJzLgorICAgICAgICBUaGVzZSBzZXR0
aW5ncyBjYW4gYmUgc3RyaW5ncywgbnVtYmVycywgYm9vbGVhbnMgb3Igc3RyaW5nIHZlY3RvcnMu
IFRoZQorICAgICAgICBzZXR0aW5ncyBhcmUgYWxzbyBicmlkZ2VkIHRvIGFuZCBmcm9tIEphdmFT
Y3JpcHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmJhc2UuZXhwOiBFeHBvc2UgdGhlIFN0cmluZyBDRlN0cmluZ1JlZiBjb25zdHJ1Y3Rv
ci4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGluZyk6IEFkZGVkLCBwdXJlIHZpcnR1
YWwuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0aW5nKTog
RGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0dGluZyk6IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldHRp
bmcgYW5kIHdyYXBzIHRoZSByZXN1bHQgaW4gc2NyaXB0IHR5cGVzLgorICAgICAgICAoV2ViQ29y
ZTo6c2V0U2V0dGluZyk6IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNldHRpbmcgYWZ0
ZXIgY29udmVydGluZyBmcm9tIHNjcmlwdCB0eXBlcy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOiBJbmNyZW1lbnQgYSBnbG9iYWwg
c3RhdGljCisgICAgICAgIHRvIHRyYWNrIHRoZSBudW1iZXIgb2YgbGl2ZSBJbnNwZWN0b3JDb250
cm9sbGVycy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0
b3JDb250cm9sbGVyKTogRGVjcmVtZW50IHRoZSBnbG9iYWwgc3RhdGljCisgICAgICAgIHRoYXQg
dHJhY2tzIHRoZSBudW1iZXIgb2YgbGl2ZSBJbnNwZWN0b3JDb250cm9sbGVycy4gRGVsZXRlIHRo
ZSBzZXR0aW5nIGNhY2hlIGlmIHRoZXJlCisgICAgICAgIGFyZSBubyBtb3JlIGxpdmUgY29udHJv
bGxlcnMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXR0aW5nKTog
Q2hlY2sgdGhlIGNhY2hlIGFuZCByZXR1cm4gdGhlIHNldHRpbmcgZnJvbSB0aGVyZSwKKyAgICAg
ICAgb3RoZXJ3aXNlIG1ha2UgYSBuZXcgU2V0dGluZyBhbmQgYXNrIHRoZSBjbGllbnQgdG8gcG9w
dWxhdGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXR0
aW5nKTogQ2hhbmdlIHRoZSBjYWNoZSBhbmQgYXNrIHRoZSBjbGllbnQgdG8gc3RvcmUgaXQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3RB
dmFpbGFibGUpOiBBZGQgc2V0dGluZyBhbmQgc2V0U2V0dGluZworICAgICAgICB0byB0aGUgSW5z
cGVjdG9yQ29udHJvbGxlciBzY3JpcHQgY2xhc3MuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OlNldHRpbmc6OlNldHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OlNldHRpbmc6OnR5cGUpOiBSZXR1cm4gbV90eXBlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6c3RyaW5nKTogUmV0dXJuIG1fc3RyaW5nLiBB
c3NlcnQgdGhlIHR5cGUgaXMgY29ycmVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OlNldHRpbmc6OnN0cmluZ1ZlY3Rvcik6IFJldHVybiBtX3N0cmluZ1ZlY3Rvci4K
KyAgICAgICAgQXNzZXJ0IHRoZSB0eXBlIGlzIGNvcnJlY3QuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpkb3VibGVWYWx1ZSk6IFJldHVybiBtX3NpbXBs
ZUNvbnRlbnQubV9kb3VibGUuCisgICAgICAgIEFzc2VydCB0aGUgdHlwZSBpcyBjb3JyZWN0Lgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6aW50ZWdlclZh
bHVlKTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5tX2ludGVnZXIuCisgICAgICAgIEFzc2VydCB0
aGUgdHlwZSBpcyBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZzo6Ym9vbGVhblZhbHVlKTogUmV0dXJuIG1fc2ltcGxlQ29udGVudC5tX2Jvb2xl
YW4uCisgICAgICAgIEFzc2VydCB0aGUgdHlwZSBpcyBjb3JyZWN0LgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6c2V0KTogT3ZlcmxvYWRlZCBmb3IgZWFj
aCBkYXRhIHR5cGUsIHNldHMgdGhlIHJpZ2h0CisgICAgICAgIGZpZWxkIGFuZCB0aGUgdHlwZS4K
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eUluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKTogQWRkZWQsIGVtcHR5IG1ldGhvZC4K
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0
aW5nKTogRGl0dG8uCisKIDIwMDgtMTAtMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDM3MzVj
YTUuLjIwOGZmMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTUzMyw2ICs1MzMsNyBAQCBfX1pON1dlYkNvcmU2
RWRpdG9yN291dGRlbnRFdgogX19aTjdXZWJDb3JlNlN0cmluZzZhcHBlbmRFUktTMF8KIF9fWk43
V2ViQ29yZTZTdHJpbmc2YXBwZW5kRWMKIF9fWk43V2ViQ29yZTZTdHJpbmdDMUVQOE5TU3RyaW5n
CitfX1pON1dlYkNvcmU2U3RyaW5nQzFFUEsxMF9fQ0ZTdHJpbmcKIF9fWk43V2ViQ29yZTZTdHJp
bmdDMUVQS2MKIF9fWk43V2ViQ29yZTZTdHJpbmdDMUVQS2NqCiBfX1pON1dlYkNvcmU2U3RyaW5n
QzFFUktOM0pTQzdVU3RyaW5nRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA5
ZWU0YTI2Li5mY2JmNzlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
bGllbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtMjYs
NiArMjYsOCBAQAogI2lmbmRlZiBJbnNwZWN0b3JDbGllbnRfaAogI2RlZmluZSBJbnNwZWN0b3JD
bGllbnRfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE5vZGU7CkBAIC01NCw2ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIG5ld1VSTCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJv
bGxlcjo6U2V0dGluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IDc1ODk4ZDcuLmFlMjk0NjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC03MzcsNiArNzM3LDEwNCBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBpbnNwZWN0ZWRXaW5kb3coSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypm
dW5jdGlvbiovLCBKUwogICAgIHJldHVybiB0b1JlZihKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6
OndyYXAoaW5zcGVjdGVkV2luZG93LT5nbG9iYWxFeGVjKCksIGluc3BlY3RlZFdpbmRvdykpOwog
fQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXR0aW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IC8qYXJndW1l
bnRDb3VudCovLCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SW5zcGVjdG9yQ29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKKworICAgIEpTVmFsdWVSZWYga2V5VmFsdWUgPSBhcmd1bWVudHNbMF07
CisgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY3R4LCBrZXlWYWx1ZSkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgY29uc3QgSW5zcGVjdG9yQ29udHJv
bGxlcjo6U2V0dGluZyYgc2V0dGluZyA9IGNvbnRyb2xsZXItPnNldHRpbmcodG9TdHJpbmcoY3R4
LCBrZXlWYWx1ZSwgZXhjZXB0aW9uKSk7CisKKyAgICBzd2l0Y2ggKHNldHRpbmcudHlwZSgpKSB7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0
dGluZzo6Tm9UeXBlOgorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6U3RyaW5nVHlw
ZToKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIGpzU3RyaW5nUmVm
KHNldHRpbmcuc3RyaW5nKCkpLmdldCgpKTsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9s
bGVyOjpTZXR0aW5nOjpEb3VibGVUeXBlOgorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
TnVtYmVyKGN0eCwgc2V0dGluZy5kb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgY2FzZSBJbnNwZWN0
b3JDb250cm9sbGVyOjpTZXR0aW5nOjpJbnRlZ2VyVHlwZToKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZU51bWJlcihjdHgsIHNldHRpbmcuaW50ZWdlclZhbHVlKCkpOworICAgICAgICBj
YXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OkJvb2xlYW5UeXBlOgorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjdHgsIHNldHRpbmcuYm9vbGVhblZhbHVlKCkp
OworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OlN0cmluZ1ZlY3Rv
clR5cGU6IHsKKyAgICAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmPiBzdHJpbmdWYWx1ZXM7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncyA9IHNldHRpbmcuc3RyaW5n
VmVjdG9yKCk7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdzLnNp
emUoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
KyAgICAgICAgICAgICAgICBzdHJpbmdWYWx1ZXMuYXBwZW5kKEpTVmFsdWVNYWtlU3RyaW5nKGN0
eCwganNTdHJpbmdSZWYoc3RyaW5nc1tpXSkuZ2V0KCkpKTsKKworICAgICAgICAgICAgSlNPYmpl
Y3RSZWYgc3RyaW5nc0FycmF5ID0gSlNPYmplY3RNYWtlQXJyYXkoY3R4LCBzdHJpbmdWYWx1ZXMu
c2l6ZSgpLCBzdHJpbmdWYWx1ZXMuZGF0YSgpLCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjdHgpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ3NBcnJheTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0U2V0dGluZyhKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCAvKmFyZ3VtZW50Q291bnQqLywgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEluc3BlY3RvckNvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBKU1ZhbHVlUmVmIGtleVZh
bHVlID0gYXJndW1lbnRzWzBdOworICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGN0eCwga2V5VmFs
dWUpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIElu
c3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcgc2V0dGluZzsKKworICAgIEpTVmFsdWVSZWYgdmFs
dWUgPSBhcmd1bWVudHNbMV07CisgICAgc3dpdGNoIChKU1ZhbHVlR2V0VHlwZShjdHgsIHZhbHVl
KSkgeworICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIGtKU1R5cGVVbmRlZmluZWQ6Cisg
ICAgICAgIGNhc2Uga0pTVHlwZU51bGw6CisgICAgICAgICAgICAvLyBEbyBub3RoaW5nLiBUaGUg
c2V0dGluZyBpcyBhbHJlYWR5IE5vVHlwZS4KKyAgICAgICAgICAgIEFTU0VSVChzZXR0aW5nLnR5
cGUoKSA9PSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpOb1R5cGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2Uga0pTVHlwZVN0cmluZzoKKyAgICAgICAgICAgIHNldHRp
bmcuc2V0KHRvU3RyaW5nKGN0eCwgdmFsdWUsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2Uga0pTVHlwZU51bWJlcjoKKyAgICAgICAgICAgIHNldHRpbmcuc2V0
KEpTVmFsdWVUb051bWJlcihjdHgsIHZhbHVlLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIGtKU1R5cGVCb29sZWFuOgorICAgICAgICAgICAgc2V0dGluZy5z
ZXQoSlNWYWx1ZVRvQm9vbGVhbihjdHgsIHZhbHVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBrSlNUeXBlT2JqZWN0OiB7CisgICAgICAgICAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoY3R4LCB2YWx1ZSwgMCk7CisgICAgICAgICAgICBKU1ZhbHVl
UmVmIGxlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIG9iamVjdCwganNTdHJp
bmdSZWYoImxlbmd0aCIpLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworCisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdzOworICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
VmFsdWVUb051bWJlcihjdHgsIGxlbmd0aFZhbHVlLCAwKSk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVmIGl0ZW1WYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGN0eCwgb2JqZWN0LCBp
LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7
CisgICAgICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQodG9TdHJpbmcoY3R4LCBpdGVtVmFsdWUs
IGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldHRpbmcuc2V0KHN0cmluZ3MpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhjZXB0aW9uICYm
ICpleGNlcHRpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
CisgICAgY29udHJvbGxlci0+c2V0U2V0dGluZyh0b1N0cmluZyhjdHgsIGtleVZhbHVlLCBleGNl
cHRpb24pLCBzZXR0aW5nKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBsb2NhbGl6ZWRTdHJpbmdzKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IC8qYXJndW1lbnRDb3VudCovLCBjb25zdCBKU1ZhbHVlUmVmW10gLyphcmd1bWVudHNbXSov
LCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQogewogICAgIEluc3BlY3RvckNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEluc3BlY3RvckNvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtOTQ2LDYgKzEwNDQsOSBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBwcm9maWxlcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0
aW9uKi8sIEpTT2JqZWN0UgogCiAvLyBJbnNwZWN0b3JDb250cm9sbGVyIENsYXNzCiAKK3N0YXRp
YyB1bnNpZ25lZCBzX2luc3BlY3RvckNvbnRyb2xsZXJDb3VudDsKK3N0YXRpYyBIYXNoTWFwPFN0
cmluZywgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyo+KiBzX3NldHRpbmdDYWNoZTsKKwog
SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNw
ZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICA6IG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQpAQCAtOTY3LDYgKzEwNjgsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50
KQogewogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQs
IGNsaWVudCk7CisgICAgKytzX2luc3BlY3RvckNvbnRyb2xsZXJDb3VudDsKIH0KIAogSW5zcGVj
dG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQpAQCAtOTk0LDYgKzEwOTYsMTUg
QEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQogCiAgICAgZGVs
ZXRlQWxsVmFsdWVzKG1fZnJhbWVSZXNvdXJjZXMpOwogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Nv
bnNvbGVNZXNzYWdlcyk7CisKKyAgICBBU1NFUlQoc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQp
OworICAgIC0tc19pbnNwZWN0b3JDb250cm9sbGVyQ291bnQ7CisKKyAgICBpZiAoIXNfaW5zcGVj
dG9yQ29udHJvbGxlckNvdW50ICYmIHNfc2V0dGluZ0NhY2hlKSB7CisgICAgICAgIGRlbGV0ZUFs
bFZhbHVlcygqc19zZXR0aW5nQ2FjaGUpOworICAgICAgICBkZWxldGUgc19zZXR0aW5nQ2FjaGU7
CisgICAgICAgIHNfc2V0dGluZ0NhY2hlID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCkBAIC0xMDEyLDYgKzExMjMsNDgg
QEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4g
bV9pbnNwZWN0ZWRQYWdlLT5zZXR0aW5ncygpLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiB9
CiAKK2NvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Cit7CisgICAgaWYgKCFzX3NldHRp
bmdDYWNoZSkKKyAgICAgICAgc19zZXR0aW5nQ2FjaGUgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFNl
dHRpbmcqPjsKKworICAgIGlmIChTZXR0aW5nKiBjYWNoZWRTZXR0aW5nID0gc19zZXR0aW5nQ2Fj
aGUtPmdldChrZXkpKQorICAgICAgICByZXR1cm4gKmNhY2hlZFNldHRpbmc7CisKKyAgICBTZXR0
aW5nKiBuZXdTZXR0aW5nID0gbmV3IFNldHRpbmc7CisgICAgc19zZXR0aW5nQ2FjaGUtPnNldChr
ZXksIG5ld1NldHRpbmcpOworCisgICAgbV9jbGllbnQtPnBvcHVsYXRlU2V0dGluZyhrZXksICpu
ZXdTZXR0aW5nKTsKKworICAgIHJldHVybiAqbmV3U2V0dGluZzsKK30KKwordm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzZXRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTZXR0aW5n
JiBzZXR0aW5nKQoreworICAgIGlmIChzZXR0aW5nLnR5cGUoKSA9PSBTZXR0aW5nOjpOb1R5cGUp
IHsKKyAgICAgICAgaWYgKHNfc2V0dGluZ0NhY2hlKSB7CisgICAgICAgICAgICBTZXR0aW5nKiBj
YWNoZWRTZXR0aW5nID0gc19zZXR0aW5nQ2FjaGUtPmdldChrZXkpOworICAgICAgICAgICAgaWYg
KGNhY2hlZFNldHRpbmcpIHsKKyAgICAgICAgICAgICAgICBzX3NldHRpbmdDYWNoZS0+cmVtb3Zl
KGtleSk7CisgICAgICAgICAgICAgICAgZGVsZXRlIGNhY2hlZFNldHRpbmc7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBtX2NsaWVudC0+cmVtb3ZlU2V0dGluZyhrZXkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzX3NldHRpbmdDYWNoZSkKKyAgICAg
ICAgc19zZXR0aW5nQ2FjaGUgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFNldHRpbmcqPjsKKworICAg
IGlmIChTZXR0aW5nKiBjYWNoZWRTZXR0aW5nID0gc19zZXR0aW5nQ2FjaGUtPmdldChrZXkpKQor
ICAgICAgICAqY2FjaGVkU2V0dGluZyA9IHNldHRpbmc7CisgICAgZWxzZQorICAgICAgICBzX3Nl
dHRpbmdDYWNoZS0+c2V0KGtleSwgbmV3IFNldHRpbmcoc2V0dGluZykpOworCisgICAgbV9jbGll
bnQtPnN0b3JlU2V0dGluZyhrZXksIHNldHRpbmcpOworfQorCiBTdHJpbmcgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCkBA
IC0xMzUwLDYgKzE1MDMsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbmRvd1Njcmlw
dE9iamVjdEF2YWlsYWJsZSgpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICAgICB7ICJkYXRh
YmFzZVRhYmxlTmFtZXMiLCBXZWJDb3JlOjpkYXRhYmFzZVRhYmxlTmFtZXMsIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAogI2VuZGlmCisgICAgICAgIHsgInNldHRpbmciLCBXZWJDb3JlOjpz
ZXR0aW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAic2V0U2V0dGlu
ZyIsIFdlYkNvcmU6OnNldFNldHRpbmcsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAg
ICAgICB7ICJpbnNwZWN0ZWRXaW5kb3ciLCBXZWJDb3JlOjppbnNwZWN0ZWRXaW5kb3csIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJsb2NhbGl6ZWRTdHJpbmdzVVJMIiwg
V2ViQ29yZTo6bG9jYWxpemVkU3RyaW5ncywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAg
ICAgICAgIHsgInBsYXRmb3JtIiwgV2ViQ29yZTo6cGxhdGZvcm0sIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGVi
OTAyOGYuLmNkZjJjMmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTc5LDYgKzc5LDQzIEBAIHB1YmxpYzoKICAgICAgICAgU2NyaXB0c1BhbmVsCiAgICAgfSBT
cGVjaWFsUGFuZWxzOwogCisgICAgc3RydWN0IFNldHRpbmcgeworICAgICAgICBlbnVtIFR5cGUg
eworICAgICAgICAgICAgTm9UeXBlLCBTdHJpbmdUeXBlLCBTdHJpbmdWZWN0b3JUeXBlLCBEb3Vi
bGVUeXBlLCBJbnRlZ2VyVHlwZSwgQm9vbGVhblR5cGUKKyAgICAgICAgfTsKKworICAgICAgICBT
ZXR0aW5nKCkKKyAgICAgICAgICAgIDogbV90eXBlKE5vVHlwZSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICAgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBl
KTsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJp
bmdWZWN0b3IoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gU3RyaW5nVmVjdG9yVHlwZSk7IHJl
dHVybiBtX3N0cmluZ1ZlY3RvcjsgfQorICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25z
dCB7IEFTU0VSVChtX3R5cGUgPT0gRG91YmxlVHlwZSk7IHJldHVybiBtX3NpbXBsZUNvbnRlbnQu
bV9kb3VibGU7IH0KKyAgICAgICAgbG9uZyBpbnRlZ2VyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCht
X3R5cGUgPT0gSW50ZWdlclR5cGUpOyByZXR1cm4gbV9zaW1wbGVDb250ZW50Lm1faW50ZWdlcjsg
fQorICAgICAgICBib29sIGJvb2xlYW5WYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBC
b29sZWFuVHlwZSk7IHJldHVybiBtX3NpbXBsZUNvbnRlbnQubV9ib29sZWFuOyB9CisKKyAgICAg
ICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3R5cGUgPSBTdHJpbmdUeXBlOyBt
X3N0cmluZyA9IHZhbHVlOyB9CisgICAgICAgIHZvaWQgc2V0KGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB2YWx1ZSkgeyBtX3R5cGUgPSBTdHJpbmdWZWN0b3JUeXBlOyBtX3N0cmluZ1ZlY3RvciA9IHZh
bHVlOyB9CisgICAgICAgIHZvaWQgc2V0KGRvdWJsZSB2YWx1ZSkgeyBtX3R5cGUgPSBEb3VibGVU
eXBlOyBtX3NpbXBsZUNvbnRlbnQubV9kb3VibGUgPSB2YWx1ZTsgfQorICAgICAgICB2b2lkIHNl
dChsb25nIHZhbHVlKSB7IG1fdHlwZSA9IEludGVnZXJUeXBlOyBtX3NpbXBsZUNvbnRlbnQubV9p
bnRlZ2VyID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXQoYm9vbCB2YWx1ZSkgeyBtX3R5cGUg
PSBCb29sZWFuVHlwZTsgbV9zaW1wbGVDb250ZW50Lm1fYm9vbGVhbiA9IHZhbHVlOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBUeXBlIG1fdHlwZTsKKworICAgICAgICBTdHJpbmcgbV9zdHJp
bmc7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fc3RyaW5nVmVjdG9yOworCisgICAgICAgIHVu
aW9uIHsKKyAgICAgICAgICAgIGRvdWJsZSBtX2RvdWJsZTsKKyAgICAgICAgICAgIGxvbmcgbV9p
bnRlZ2VyOworICAgICAgICAgICAgYm9vbCBtX2Jvb2xlYW47CisgICAgICAgIH0gbV9zaW1wbGVD
b250ZW50OworICAgIH07CisKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0
b3JDbGllbnQqKTsKICAgICB+SW5zcGVjdG9yQ29udHJvbGxlcigpOwogCkBAIC04OSw2ICsxMjYs
OSBAQCBwdWJsaWM6CiAKICAgICBQYWdlKiBpbnNwZWN0ZWRQYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnNwZWN0ZWRQYWdlOyB9CiAKKyAgICBjb25zdCBTZXR0aW5nJiBzZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdDsKKyAgICB2b2lkIHNldFNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFNldHRpbmcmKTsKKwogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAK
ICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBkOTIyYmQx
Li4wMjIwYzc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzg2LDI1ICszODYsMjkgQEAgcHVi
bGljOgogCiBjbGFzcyBFbXB0eUluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0b3JDbGll
bnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkVtcHR5SW5zcGVjdG9yQ2xpZW50KCkge30KKyAg
ICB2aXJ0dWFsIH5FbXB0eUluc3BlY3RvckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGluc3BlY3RvckRlc3Ryb3llZCgpIHt9OworICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0
cm95ZWQoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlUGFnZSgpIHsgcmV0dXJuIDA7
IH07CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgeyByZXR1cm4g
U3RyaW5nKCk7IH07CisgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIHsg
cmV0dXJuIFN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1dpbmRvdygpIHt9Owot
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIHt9OworICAgIHZpcnR1YWwgdm9pZCBzaG93
V2luZG93KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCkgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KCkge307Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaFdp
bmRvdygpIHt9OworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIHt9OworICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0
KE5vZGUqKSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIHt9OwotICAgIHZp
cnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3VVJMKSB7fTsK
KyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
aGlkZUhpZ2hsaWdodCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgbmV3VVJMKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpIHsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDY1Mjg0Zi4uZWUyZDg4
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDgtMTAtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMg
dG8gd29yayB3aXRoIFNldHRpbmdzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUg
bmV3IEluc3BlY3RvckNsaWVudENGLmNwcCBmaWxlLgorCiAyMDA4LTEwLTE1ICBNYXJrIFJvd2Ug
IDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQnJhZHkgRWlk
c29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNzhmOTku
LjYzZWFjMGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5
LDYgKzI5LDcgQEAKIAkJMUM2OEY2NzAwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGln
aHQubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjhG
NjY0MDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Lm0gKi87IH07CiAJCTFDNjhG
NjcxMDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Vmlldy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NjUwOTVCNUZDMTAwQzI5
ODRFIC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3LmggKi87IH07CiAJCTFDNjhGNjcyMDk1QjVGQzEw
MEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Vmlldy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2OEY2NjYwOTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5v
ZGVIaWdobGlnaHRWaWV3Lm0gKi87IH07CisJCTFDN0IwQzY2MEVCMjQ2NEQwMEEyODUwMiAvKiBX
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzdCMEM2NTBFQjI0NjREMDBBMjg1MDIgLyogV2ViSW5zcGVjdG9yQ2xp
ZW50Q0YuY3BwICovOyB9OwogCQkxQzhDQjA3QTBBRTk4MzBDMDBCMUY2RTkgLyogV2ViRWRpdGlu
Z0RlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM4Q0IwNzkwQUU5ODMwQzAwQjFGNkU5IC8qIFdlYkVkaXRpbmdEZWxlZ2F0ZVBy
aXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQ0E1N0Q2MjBBRUQ2QTQ3MDAwOUJERDAgLyogV2ViR3JhcGhpY3NFeHRyYXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTU3RDYwMEFFRDZBNDcw
MDA5QkREMCAvKiBXZWJHcmFwaGljc0V4dHJhcy5oICovOyB9OwogCQkxQ0E1N0Q2MzBBRUQ2QTQ3
MDAwOUJERDAgLyogV2ViR3JhcGhpY3NFeHRyYXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTU3RDYxMEFFRDZBNDcwMDA5QkREMCAvKiBXZWJHcmFw
aGljc0V4dHJhcy5jICovOyB9OwpAQCAtMzIxLDYgKzMyMiw3IEBACiAJCTFDNjhGNjY1MDk1QjVG
QzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vZGVIaWdobGlnaHRWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkx
QzY4RjY2NjA5NUI1RkMxMDBDMjk4NEUgLyogV2ViTm9kZUhpZ2hsaWdodFZpZXcubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IHBhdGggPSBXZWJOb2Rl
SGlnaGxpZ2h0Vmlldy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJMUM2Q0IwM0UwQUE2MzkxRDAwRDIzQkZEIC8qIE1pZ3JhdGVIZWFk
ZXJzLm1ha2UgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWlncmF0ZUhlYWRlcnMubWFrZTsgcGF0
aCA9IG1hYy9NaWdyYXRlSGVhZGVycy5tYWtlOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzdCMEM2NTBFQjI0NjREMDBBMjg1MDIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwOyBwYXRoID0gY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTFDOENCMDc5MEFFOTgzMEMwMEIxRjZFOSAv
KiBXZWJFZGl0aW5nRGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkVkaXRpbmdEZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM5MDRGRDIwQkE5REQwRjAwODFFOUQwIC8qIFdlYktpdC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXQueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDOTA0RkQzMEJBOUREMEYwMDgxRTlEMCAvKiBWZXJzaW9uLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDMzLDYgKzEwMzUsNyBAQAogCQkJCTUx
NDk0Q0Q1MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQubW0gKi8sCiAJ
CQkJOUNFMUY4QTMwMkE1QzZGMzBFQ0EyQUNEIC8qIFdlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lm0g
Ki8sCiAJCQkJMDY2OTNEREEwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5o
ICovLAorCQkJCTFDN0IwQzY1MEVCMjQ2NEQwMEEyODUwMiAvKiBXZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAgKi8sCiAJCQkJMDY2OTNEREIwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNs
aWVudC5tbSAqLywKIAkJCQk5MzQ1RDRFQTAzNjVDNUIyMDA4NjM1Q0UgLyogV2ViSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsLmggKi8sCiAJCQkJOTM0NUQ0RUIwMzY1QzVCMjAwODYzNUNFIC8qIFdl
YkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tICovLApAQCAtMTU5MSw2ICsxNTk0LDcgQEAKIAkJ
CQkxQUVBNkE1MTBEQzhDRTJGMDAzRDEyQkYgLyogV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ3NTRFMERFNDgwQjkwMEYwQTY0OCAv
KiBXZWJJY29uRmV0Y2hlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY4MzRBQUQ4MEU2NEIxQzcw
MEUyNzM3QyAvKiBXZWJUZXh0SXRlcmF0b3IubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzdCMEM2
NjBFQjI0NjREMDBBMjg1MDIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjYzNjUxCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMCwwICsxLDEzIEBACisyMDA4LTEwLTI0
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgbmV3IEluc3BlY3RvckNsaWVudCBtZXRob2RzIHRvIHdvcmsgd2l0aCBTZXR0aW5ncy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDogQWRkZWQuCisgICAgICAgIChjcmVhdGVLZXlG
b3JQcmVmZXJlbmNlcyk6IEhlbHBlciB0byBtYWtlIHRoZSBwcmVmZXJlbmNlIGtleS4KKyAgICAg
ICAgKFdlYkluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKTogUmVhZCB0aGUgcHJlZmVy
ZW5jZSB2YWx1ZSBmcm9tIENGUHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6OnN0b3JlU2V0dGluZyk6IFdyaXRlIHRoZSBzZXR0aW5nIHZhbHVlIHRvICBDRlByZWZlcmVu
Y2VzLgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0aW5nKTogUmVtb3Zl
IHRoZSBwcmVmZXJlbmNlIGZyb20gQ0ZQcmVmZXJlbmNlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjVkMWYwNGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgorCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgorCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgY3JlYXRlS2V5Rm9y
UHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBrZXlDRlN0cmluZyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0
dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNw
ZWN0b3IgU2V0dGluZyAtICVAIiksIGtleUNGU3RyaW5nLmdldCgpKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVj
dG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtl
eSkpOworICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUoQWRvcHRDRiwgQ0ZQ
cmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJlZmVyZW5j
ZXNDdXJyZW50QXBwbGljYXRpb24pKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIENGVHlwZUlEIHR5cGUgPSBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSk7CisgICAg
aWYgKHR5cGUgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgc2V0dGluZy5zZXQoc3Rh
dGljX2Nhc3Q8U3RyaW5nPihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0KCkpKSk7
CisgICAgZWxzZSBpZiAodHlwZSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKKyAgICAgICAgc2V0
dGluZy5zZXQoc3RhdGljX2Nhc3Q8Ym9vbD4oQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8
Q0ZCb29sZWFuUmVmPih2YWx1ZS5nZXQoKSkpKSk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBDRk51
bWJlckdldFR5cGVJRCgpKSB7CisgICAgICAgIENGTnVtYmVyUmVmIG51bWJlciA9IHN0YXRpY19j
YXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQoKSk7CisgICAgICAgIGlmIChDRk51bWJlcklzRmxv
YXRUeXBlKG51bWJlcikpIHsKKyAgICAgICAgICAgIGRvdWJsZSBkb3VibGVOdW1iZXIgPSAwLjA7
CisgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2
YWx1ZS5nZXQoKSksIGtDRk51bWJlckRvdWJsZVR5cGUsICZkb3VibGVOdW1iZXIpOworICAgICAg
ICAgICAgc2V0dGluZy5zZXQoZG91YmxlTnVtYmVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvbmcgbG9uZ051bWJlciA9IDA7CisgICAgICAgICAgICBDRk51bWJlckdldFZhbHVl
KHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZS5nZXQoKSksIGtDRk51bWJlckxvbmdUeXBl
LCAmbG9uZ051bWJlcik7CisgICAgICAgICAgICBzZXR0aW5nLnNldChsb25nTnVtYmVyKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsKKyAg
ICAgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nczsKKworICAgICAgICBDRkFycmF5UmVmIGFycmF5
ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUuZ2V0KCkpOworICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBDRkFycmF5R2V0Q291bnQoYXJyYXkpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIHN0cmlu
ZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFycmF5
LCBpKSk7CisgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoc3RyaW5nKSA9PSBDRlN0cmluZ0dl
dFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIHN0cmluZ3MuYXBwZW5kKHN0YXRpY19jYXN0PFN0
cmluZz4oc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHN0cmluZykpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHNldHRpbmcuc2V0KHN0cmluZ3MpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYg
c2V0dGluZykKK3sKKyAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9iamVjdFRvU3Rv
cmU7CisKKyAgICBzd2l0Y2ggKHNldHRpbmcudHlwZSgpKSB7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6Tm9UeXBlOgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nOjpTdHJpbmdUeXBlOgorICAgICAgICAg
ICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVy
OjpTZXR0aW5nOjpCb29sZWFuVHlwZToKKyAgICAgICAgICAgIG9iamVjdFRvU3RvcmUgPSAoc2V0
dGluZy5ib29sZWFuVmFsdWUoKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6
U2V0dGluZzo6RG91YmxlVHlwZTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gc2V0dGlu
Zy5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKENGTnVt
YmVyQ3JlYXRlKDAsIGtDRk51bWJlckRvdWJsZVR5cGUsICZ2YWx1ZSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OlNl
dHRpbmc6OkludGVnZXJUeXBlOiB7CisgICAgICAgICAgICBsb25nIHZhbHVlID0gc2V0dGluZy5p
bnRlZ2VyVmFsdWUoKTsKKyAgICAgICAgICAgIG9iamVjdFRvU3RvcmUuYWRvcHRDRihDRk51bWJl
ckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwgJnZhbHVlKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGlu
Zzo6U3RyaW5nVmVjdG9yVHlwZTogeworICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHN0cmluZ3MgPSBzZXR0aW5nLnN0cmluZ1ZlY3RvcigpOworICAgICAgICAgICAgY29uc3QgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaW5ncy5zaXplKCk7CisKKyAgICAgICAgICAgIFJldGFpblB0cjxD
Rk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwg
bGVuZ3RoLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gc3RyaW5nKEFkb3B0Q0YsIHN0cmluZ3NbaV0uY3JlYXRlQ0ZTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgQ0ZBcnJheVNldFZhbHVlQXRJbmRleChhcnJheS5nZXQoKSwg
aSwgc3RyaW5nLmdldCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2JqZWN0VG9T
dG9yZSA9IGFycmF5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBy
ZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOworICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwgb2JqZWN0VG9T
dG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOworfQorCit2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6cmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkKK3sK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0
ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShw
cmVmZXJlbmNlc0tleS5nZXQoKSwgMCwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24p
OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCA1NDhlOWNlLi5kMmZiMWZhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA4LTEw
LTI0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBTdHVi
IG91dCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGlu
Zyk6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Ojpz
dG9yZVNldHRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Ojpy
ZW1vdmVTZXR0aW5nKTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50R3RrLmg6CisKIDIwMDgtMTAtMjIgIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgog
CiAgICAgICAgIEJ1aWxkIGZpeCBmb3Igb2xkZXIgR1RLKyB2ZXJzaW9ucyB3aGVyZSBHVEtfVFlQ
RV9UQVJHRVRfTElTVCBpc24ndApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuY3BwCmluZGV4IDFhNzIyNjEuLjZkMmI2MzMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTgxLDUgKzgx
LDIwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnQ6
OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6
U2V0dGluZyYgc2V0dGluZykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIElu
c3BlY3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5nKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50OjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmlu
ZyYga2V5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggZmY2MGZhYi4uZTFh
NTczYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5oCkBAIC01OCw2ICs1OCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBo
aWRlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNl
dHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNldHRp
bmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXkpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmYwZWRi
Yy4uNDRmNmYzOSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBJbnNwZWN0
b3JDbGllbnQgbWV0aG9kcyB0byB3b3JrIHdpdGggU2V0dGluZ3MuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaDogQWRkIHRoZSBuZXcgbWV0aG9kcyBhbmQKKyAgICAgICAgZ3VhcmQgdGhlIE9i
akMgcGFydHMgb2YgdGhlIGhlYWRlci4KKwogMjAwOC0xMC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDU1NTRj
MDcuLjZhODA3YzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtMzEsOCArMzEsMTMgQEAKIAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCisjaWZkZWYgX19PQkpDX18KIEBjbGFzcyBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVy
OwogQGNsYXNzIFdlYlZpZXc7CisjZWxzZQorY2xhc3MgV2ViSW5zcGVjdG9yV2luZG93Q29udHJv
bGxlcjsKK2NsYXNzIFdlYlZpZXc7CisjZW5kaWYKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7CiBwdWJsaWM6CkBAIC01NSw2ICs2
MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5l
d1VSTCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYga2V5LCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwg
Y29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5KTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDgyMzEyN2Iu
LjFlZWExYzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA4LTEwLTI0ICBUaW1vdGh5IEhhdGNoZXIg
IDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBTdHViIG91dCBuZXcgSW5zcGVjdG9yQ2xp
ZW50IG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVTZXR0aW5nKTogTm90IGltcGxlbWVudGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnN0b3JlU2V0dGluZyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnJlbW92ZVNldHRpbmcp
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgor
CiAyMDA4LTEwLTIyICBZYWVsIEFoYXJvbiA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKaW5kZXggMjg3OGQ1MS4uNzMzNTI4MCAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAorKysg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCkBAIC0xODYs
NiArMTg2LDIxIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkK
ICAgICBtX3dlYlBhZ2UtPnZpZXcoKS0+c2V0V2luZG93VGl0bGUoY2FwdGlvbi5hcmcobV9pbnNw
ZWN0ZWRVUkwpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVTZXR0aW5n
KGNvbnN0IFN0cmluZyYga2V5LCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5n
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6
OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxl
cjo6U2V0dGluZyYgc2V0dGluZykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEluc3BlY3RvckNsaWVudFF0OjpyZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0KIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dFF0Lm1vYyIKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgK
aW5kZXggNTk3NzJhNC4uNDljMmQ1NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmgKQEAgLTY1LDYgKzY1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpOwogCisgICAgICAg
IHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSk7
CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHVwZGF0ZVdpbmRvd1RpdGxlKCk7CiAgICAg
ICAgIFFXZWJQYWdlKiBtX2luc3BlY3RlZFdlYlBhZ2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDc5ZWYwY2YuLmNjYWE4Zjcg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMTAtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgSW5zcGVjdG9yQ2xpZW50IG1l
dGhvZHMgdG8gd29yayB3aXRoIFNldHRpbmdzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qOiBBZGQgdGhl
IG5ldyBJbnNwZWN0b3JDbGllbnRDRi5jcHAgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDogQWRkIHRoZSBuZXcgbWV0aG9kcy4KKwogMjAwOC0xMC0y
MiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGdtYWlsLmNvbT4KIAogICAgICAgICBDb3JyZWN0
IGJ1aWxkIHJlZ3Jlc3Npb25zIGluIENhaXJvIHBvcnQgZm9yIFdpbmRvd3MuCmRpZmYgLS1naXQg
YS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5MDJmM2ZiLi5h
Mjg1MDdhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKQEAgLTY0LDYgKzY0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNl
dHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXkpOworCiBwcml2YXRlOgogICAgIH5XZWJJ
bnNwZWN0b3JDbGllbnQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdC52Y3Byb2ogYi9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagpp
bmRleCA2NTE1YjIxLi4xNGY1MjI3IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYktpdC52Y3By
b2ovV2ViS2l0LnZjcHJvagorKysgYi9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZj
cHJvagpAQCAtMjA1OSw2ICsyMDU5LDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNmXFdlYkNvcmVTdXBwb3J0XFdlYkluc3BlY3Rv
ckNsaWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxXZWJJbnNwZWN0b3JDbGllbnQuaCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4
L0NoYW5nZUxvZwppbmRleCAwYTI2NTU3Li5kMGJkOTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAw
OC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAg
U3R1YiBvdXQgbmV3IEluc3BlY3RvckNsaWVudCBtZXRob2RzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0
dGluZyk6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dDo6c3RvcmVTZXR0aW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnQ6OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFd4Lmg6CisKIDIwMDgtMTAtMjAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKaW5kZXggZDVmMjM2Yi4uMTdkNGVi
MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3gu
Y3BwCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcApA
QCAtOTksNCArOTksMTkgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6aW5zcGVjdGVkVVJMQ2hh
bmdlZChjb25zdCBTdHJpbmcmIG5ld1VSTCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIEluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5nKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnQ6OnJlbW92
ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oCmluZGV4
IDllYTNhZWQuLjZkZDA1ZGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50V3guaApAQCAtNTcsNiArNTcsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBo
aWRlSGlnaGxpZ2h0KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmIG5ld1VSTCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5n
KGNvbnN0IFN0cmluZyYga2V5LCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7CisgICAg
dmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVj
dG9yQ29udHJvbGxlcjo6U2V0dGluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXR0aW5n
KGNvbnN0IFN0cmluZyYga2V5KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLS0gCjEu
Ni4wLjIKCg==
</data>
<flag name="review"
          id="11260"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>