<?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>136297</bug_id>
          
          <creation_ts>2014-08-27 11:04:54 -0700</creation_ts>
          <short_desc>Web Replay: code generator should be able to encode/decode ViewState::Flags</short_desc>
          <delta_ts>2017-07-10 13:59:36 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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>
          <dependson>136312</dependson>
          <blocked>129694</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031695</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-27 11:04:54 -0700</bug_when>
    <thetext>ViewState::(enum) is an anonymous enum inside of a struct (ViewState). ViewState::Flags is a typedef for uint32_t, and the enum values are used to bitwise-construct and query a uint32_t containing several flags.

For replay we still want to serialize ViewState with string names, since ViewState::Flags could change in the future and we don&apos;t want reordering the flags to break serialization.
But, since the enum is un-named and ViewState::Flags is a uint32_t, the existing code will try to define new EncodingTraits specializations for uint32_t, which isn&apos;t allowed.

To sidestep this, I&apos;ll generate a wrapper class for each framework, so multiple specializations can exist for the same underlying type. Cases like ViewState will use a new flag in the inputs file to opt-in to this code generation behavior.


Sketch:

enum class JSEnum { FooBar, BarBaz };

template &lt;JSEnum EnumName, typename StorageType&gt;
class UncheckedJSEnum {
public:
    UncheckedJSEnum(StorageType value) : m_value(value) { }
    StorageType m_value;
};
    
template&lt;&gt; struct EncodingTraits&lt;UncheckedJSEnum&lt;JSEnum::FooBar,uint32_t&gt;&gt; {
  ...  
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031714</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-27 11:59:58 -0700</bug_when>
    <thetext>Even simpler:

enum class WebEnums { FooBar, BarBaz };
struct ViewState {
    typedef uint32_t Flags;
};
template &lt;typename EnumType, EnumType tag&gt;
class Phantom { };
template&lt;&gt; struct EncodingTraits&lt;Phantom&lt;JSEnums,JSEnums::FooBar&gt;&gt; {
    typedef ViewState::Flags DecodedType;
    static EncodedValue encodeValue(const DecodedType&amp;);
    static bool decodeValue(EncodedValue&amp;, const DecodedType&amp;);
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037084</commentid>
    <comment_count>2</comment_count>
      <attachid>238625</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-24 16:36:44 -0700</bug_when>
    <thetext>Created attachment 238625
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327158</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-10 13:59:36 -0700</bug_when>
    <thetext>Closing web replay-related bugs until we resume working on the feature again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238625</attachid>
            <date>2014-09-24 16:36:44 -0700</date>
            <delta_ts>2014-09-24 16:36:44 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-136297-20140924163637.patch</filename>
            <type>text/plain</type>
            <size>30776</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZTY5NjJmZDMzMzU5MWIxODAxZDQzOTJhNThiNTNlNTM1MmRhNTQzLi5iOWNhZTdjMjU0ODkyZWZm
ZWQyZjZlMDE1NzA0ZTQ3MWU4YmZjNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MCBAQAogMjAxNC0wOC0yNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKKyAgICAgICAgV2ViIFJlcGxheTogY29kZSBnZW5lcmF0b3Igc2hvdWxkIGJlIGFi
bGUgdG8gZW5jb2RlL2RlY29kZSBWaWV3U3RhdGU6OkZsYWdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYyOTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3U3RhdGU6OihlbnVtKSBpcyBhbiBhbm9u
eW1vdXMgZW51bSBpbnNpZGUgb2YgYSBzdHJ1Y3QuIFZpZXdTdGF0ZTo6RmxhZ3MgaXMgYSB0eXBl
ZGVmCisgICAgICAgIGZvciB1bnNpZ25lZCwgYW5kIHRoZSBlbnVtIHZhbHVlcyBhcmUgdXNlZCB0
byBiaXR3aXNlLWNvbnN0cnVjdCBhbmQgcXVlcnkgYW4gdW5zaWduZWQgdmFsdWUKKyAgICAgICAg
Y29udGFpbmluZyBzZXZlcmFsIGZsYWdzLgorCisgICAgICAgIEZvciByZXBsYXkgd2Ugc3RpbGwg
d2FudCB0byBzZXJpYWxpemUgVmlld1N0YXRlIHdpdGggc3RyaW5nIG5hbWVzLCBzaW5jZSBWaWV3
U3RhdGU6OkZsYWdzCisgICAgICAgIGNvdWxkIGNoYW5nZSBpbiB0aGUgZnV0dXJlIGFuZCB3ZSBk
b24ndCB3YW50IHJlb3JkZXJpbmcgdGhlIGZsYWdzIHRvIGJyZWFrIHNlcmlhbGl6YXRpb24uCisg
ICAgICAgIEJ1dCwgc2luY2UgdGhlIGVudW0gaXMgdW4tbmFtZWQgYW5kIFZpZXdTdGF0ZTo6Rmxh
Z3MgaXMgdW5zaWduZWQsIHRoZSBleGlzdGluZyBjb2RlIHdpbGwKKyAgICAgICAgdHJ5IHRvIGRl
ZmluZSBuZXcgRW5jb2RpbmdUcmFpdHMgc3BlY2lhbGl6YXRpb25zIGZvciB1bnNpZ25lZCwgd2hp
Y2ggaXNuJ3QgYWxsb3dlZC4KKworICAgICAgICBUbyBzaWRlc3RlcCB0aGlzLCB3ZSB1c2UgcGhh
bnRvbSB0eXBlcyBzbyBtdWx0aXBsZSBzcGVjaWFsaXphdGlvbnMgY2FuIGV4aXN0IGZvciB0aGUg
c2FtZQorICAgICAgICB1bmRlcmx5aW5nIHR5cGUuIENhc2VzIGxpa2UgVmlld1N0YXRlIHdpbGwg
dXNlIGEgbmV3IGZsYWcgaW4gdGhlIGlucHV0cyBmaWxlIHRvIG9wdC1pbiB0bworICAgICAgICB0
aGlzIGNvZGUgZ2VuZXJhdGlvbiBiZWhhdmlvci4KKworICAgICAgICBSZWJhc2VsaW5lIHNvbWUg
dGVzdHMgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHNwYWNpbmcgaW5kdWNlZCBieSB0aGlzIGNoYW5n
ZS4KKworICAgICAgICBUZXN0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZ2VuZXJhdGUtdW5jaGVja2VkLWVudW0uanNvbgorCisgICAgICAgICogcmVwbGF5L0Vu
Y29kZWRWYWx1ZS5oOiBBZGQgYSBkdW1teSBQaGFudG9tIGNsYXNzLgorICAgICAgICAqIHJlcGxh
eS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHk6IENyZWF0ZSBhbiBlbnVtIGZv
ciBlYWNoIGZyYW1ld29yayB0aGF0IGNvbnRhaW5zIG5hbWVzCisgICAgICAgIG9mIGVhY2ggdW5j
aGVja2VkIGVudW0uIFRoaXMgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIFBoYW50b20gdHlwZSBh
cmd1bWVudC4KKyAgICAgICAgKFR5cGUudW5jaGVja2VkX2VudW1fdHlwZV9uYW1lKToKKyAgICAg
ICAgKFR5cGUuZW5jb2RpbmdfdHlwZV9hcmd1bWVudCk6CisgICAgICAgIChHZW5lcmF0b3IuZ2Vu
ZXJhdGVfaGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV91bmNoZWNrZWRfZW51
bV9kZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfdW5jaGVja2VkX2Vu
dW1fZGVjbGFyYXRpb24uVW5jaGVja2VkRW51bXMpOgorICAgICAgICAqIHJlcGxheS9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHk6CisgICAgICAgICogcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdp
dGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6CisgICAgICAgICogcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJz
Lmpzb24tVGVzdFJlcGxheUlucHV0cy5oOgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2dlbmVyYXRlLWVudW0td2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
aDoKKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVt
cy13aXRoLXNhbWUtYmFzZS1uYW1lLmpzb24tVGVzdFJlcGxheUlucHV0cy5oOgorICAgICAgICAq
IHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQu
anNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6CisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuaDoKKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaDoKKyAgICAgICAg
KiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1v
ZGVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oOgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2dlbmVyYXRlLXVuY2hlY2tlZC1lbnVtLmpzb24tVGVzdFJlcGxheUlucHV0
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dl
bmVyYXRlLXVuY2hlY2tlZC1lbnVtLmpzb24tVGVzdFJlcGxheUlucHV0cy5oOiBBZGRlZC4KKyAg
ICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS11bmNoZWNrZWQtZW51bS5qc29u
OiBBZGRlZC4KKworMjAxNC0wOC0yNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKICAgICAgICAgV2ViIFJlcGxheTogb25seSBnZW5lcmF0ZSBFbmNvZGluZ1RyYWl0
cyBmb3IgZW51bXMgZGVmaW5lZCBpbiB0aGUgdGFyZ2V0IGZyYW1ld29yawogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzExCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCmluZGV4IDNlZDA4OWYwZjhiMzUyMTMz
YjI3MDEwNjA1ZWM2NjdlMGZjYTU3ZGUuLmI2OWZiOWNkYmEzZWVmZDI5ZDEyOWU0MDE5ZWVhNDhk
ZTViMWY5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2Rl
ZFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUu
aApAQCAtMTcwLDYgKzE3MCwxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxT
dHJpbmc+IDogcHVibGljIFNjYWxhckVuY29kaW5nVHJhaXRzPFN0cmluZz4gewogICAgIH0KIH07
CiAKKy8vIFVzZWQgdG8gZGlzYW1iaWd1YXRlIEVuY29kaW5nVHJhaXRzIHNwZWNpYWxpemF0aW9u
cyB3aXRoIHRoZSBzYW1lIGNvbmNyZXRlIHR5cGUsIHN1Y2gKKy8vIGFzIGZvciBWaWV3U3RhdGU6
OkZsYWdzIHdoaWNoIGlzIHR5cGVkZWYnZCB0byB1bnNpZ25lZC4gPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzEzNjI5Nz4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZSwgRW51bVR5cGUgdGFnPiBj
bGFzcyBQaGFudG9tIHt9OworICAgIAogLy8gQmFzZSBjYXNlcyBmb3IgbG9hZGluZyBhbmQgc3Rv
cmluZyB2YWx1ZXMuCiB0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFCiB2b2lkIEVuY29kZWRW
YWx1ZTo6cHV0PEVuY29kZWRWYWx1ZT4oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHR5cGVuYW1l
IEVuY29kaW5nVHJhaXRzPEVuY29kZWRWYWx1ZT46OkRlY29kZWRUeXBlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxh
eUlucHV0cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yUmVwbGF5SW5wdXRzLnB5CmluZGV4IGYxOThkMDc1YjdiM2UwMGY4OTYyYmRlN2M5ZWY0
ZDI3ZTIwZGJkNTQuLjM2YTY5MmRhZTM5OGJkOWJhYzc2MzE3YmVlNTA1ODg3ZWRhNGQwYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yUmVwbGF5SW5wdXRzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5CkBAIC0zNjksNyArMzY5LDE4IEBAIGNs
YXNzIFR5cGU6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zdG9yYWdl
X3R5cGUocXVhbGlmaWVkKQogCisgICAgZGVmIHVuY2hlY2tlZF9lbnVtX3R5cGVfbmFtZShzZWxm
KToKKyAgICAgICAgY29tcG9uZW50cyA9IFtzZWxmLl9uYW1lXQorICAgICAgICBpZiBzZWxmLmVu
Y2xvc2luZ19jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbXBvbmVudHMgWzowXSA9
IFtzZWxmLmVuY2xvc2luZ19jbGFzc10KKworICAgICAgICByZXR1cm4gIiIuam9pbihjb21wb25l
bnRzKQorCiAgICAgZGVmIGVuY29kaW5nX3R5cGVfYXJndW1lbnQoc2VsZiwgcXVhbGlmaWVkPUZh
bHNlKToKKyAgICAgICAgaWYgc2VsZi5oYXNfZmxhZygiVU5DSEVDS0VEIik6CisgICAgICAgICAg
ICBwcmVmaXggPSAiJXM6OiIgJSBzZWxmLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKQor
ICAgICAgICAgICAgcmV0dXJuICJQaGFudG9tPCVzVW5jaGVja2VkRW51bXMsICVzVW5jaGVja2Vk
RW51bXM6OiVzPiIgJSAocHJlZml4LCBwcmVmaXgsIHNlbGYudW5jaGVja2VkX2VudW1fdHlwZV9u
YW1lKCkpCisKICAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZCkKIAogCkBA
IC02MTYsNiArNjI3LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgJ2luY2x1ZGVz
Jzogc2VsZi5nZW5lcmF0ZV9pbmNsdWRlcyhkZWZhdWx0cz1zZWxmLnNldHRpbmcoJ2hlYWRlcklu
Y2x1ZGVzJykpLAogICAgICAgICAgICAgJ3R5cGVGb3J3YXJkRGVjbGFyYXRpb25zJzogc2VsZi5n
ZW5lcmF0ZV90eXBlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCksCiAgICAgICAgICAgICAnaW5wdXRG
b3J3YXJkRGVjbGFyYXRpb25zJzogIlxuIi5qb2luKFt3cmFwX3dpdGhfZ3VhcmQoImNsYXNzICVz
OyIsIF9pbnB1dC5ndWFyZCkgJSBfaW5wdXQubmFtZSBmb3IgX2lucHV0IGluIHNlbGYuX21vZGVs
LmlucHV0c10pLAorICAgICAgICAgICAgJ3VuY2hlY2tlZEVudW1EZWNsYXJhdGlvbnMnOiBzZWxm
LmdlbmVyYXRlX3VuY2hlY2tlZF9lbnVtX2RlY2xhcmF0aW9uKCksCiAgICAgICAgICAgICAnaW5w
dXRDbGFzc0RlY2xhcmF0aW9ucyc6ICJcblxuIi5qb2luKFtzZWxmLmdlbmVyYXRlX2NsYXNzX2Rl
Y2xhcmF0aW9uKF9pbnB1dCkgZm9yIF9pbnB1dCBpbiBzZWxmLl9tb2RlbC5pbnB1dHNdKSwKICAg
ICAgICAgICAgICdpbnB1dFRyYWl0RGVjbGFyYXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2Vu
ZXJhdGVfaW5wdXRfdHJhaXRfZGVjbGFyYXRpb24oX2lucHV0KSBmb3IgX2lucHV0IGluIHNlbGYu
X21vZGVsLmlucHV0c10pLAogICAgICAgICAgICAgJ2VudW1UcmFpdERlY2xhcmF0aW9ucyc6ICJc
blxuIi5qb2luKFt3cmFwX3dpdGhfZ3VhcmQoc2VsZi5nZW5lcmF0ZV9lbnVtX3RyYWl0X2RlY2xh
cmF0aW9uKF90eXBlKSwgX3R5cGUuZ3VhcmQpIGZvciBfdHlwZSBpbiBlbnVtc190b19nZW5lcmF0
ZV0pLApAQCAtNzMwLDYgKzc0MiwyMSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAgICAgcmV0
dXJuICJcbiIuam9pbihsaW5lcykKIAorICAgIGRlZiBnZW5lcmF0ZV91bmNoZWNrZWRfZW51bV9k
ZWNsYXJhdGlvbihzZWxmKToKKyAgICAgICAgdW5jaGVja2VkX2VudW1zID0gZmlsdGVyKGxhbWJk
YSBfdHlwZTogX3R5cGUuaGFzX2ZsYWcoIlVOQ0hFQ0tFRCIpIGFuZCBfdHlwZS5mcmFtZXdvcmsg
aXMgc2VsZi50YXJnZXRfZnJhbWV3b3JrLCBzZWxmLl9tb2RlbC5lbnVtX3R5cGVzKCkpCisgICAg
ICAgIGlmIGxlbih1bmNoZWNrZWRfZW51bXMpIGlzIDA6CisgICAgICAgICAgICByZXR1cm4gIiIK
KworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgibmFtZXNwYWNlICVz
IHsiICUgc2VsZi50YXJnZXRfZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoImVudW0gY2xhc3MgVW5jaGVja2VkRW51bXMgeyIpCisgICAgICAgIGxp
bmVzLmV4dGVuZChbIiAgICAlcywiICUgZW51bS51bmNoZWNrZWRfZW51bV90eXBlX25hbWUoKSBm
b3IgZW51bSBpbiB1bmNoZWNrZWRfZW51bXNdKQorICAgICAgICBsaW5lcy5hcHBlbmQoIn07IikK
KyAgICAgICAgbGluZXMuYXBwZW5kKCJ9IikKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorCisg
ICAgICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCisKICAgICBkZWYgZ2VuZXJhdGVfY2xhc3Nf
ZGVjbGFyYXRpb24oc2VsZiwgX2lucHV0KToKICAgICAgICAgZXh0cmFfZGVjbGFyYXRpb25zID0g
W10KICAgICAgICAgaWYgX2lucHV0LnF1ZXVlID09IElucHV0UXVldWVzLkVWRU5UX0xPT1A6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVy
YXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5CmluZGV4IGVh
OWFjZWUyNTY1NmQ4NTQ1NjFjZTRjN2I2YWVkODc1ZDRjYTA1YTcuLjUxNzAzMDMyMzU0NTc5YjQ2
MDQzOWNlNGFmOGFiY2M4OTY4ODZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVw
bGF5SW5wdXRzVGVtcGxhdGVzLnB5CkBAIC03OSw2ICs3OSw3IEBAIG5hbWVzcGFjZSAke2lucHV0
c05hbWVzcGFjZX0gewogJHtpbnB1dEZvcndhcmREZWNsYXJhdGlvbnN9CiB9IC8vIG5hbWVzcGFj
ZSAke2lucHV0c05hbWVzcGFjZX0KIAorJHt1bmNoZWNrZWRFbnVtRGVjbGFyYXRpb25zfQogbmFt
ZXNwYWNlICR7dHJhaXRzTmFtZXNwYWNlfSB7CiAke2lucHV0VHJhaXREZWNsYXJhdGlvbnN9CiAk
e2VudW1UcmFpdERlY2xhcmF0aW9uc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhl
bHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1l
bnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaAppbmRleCAxODMwYmMzYjBmMzM0YzM4ODUzMWQ4MWI4MmYwNDQ3Yjk3MTJiMDU2Li4x
YmZhOGYwMTZlODNhY2UzM2IwNjBkNmVmNWJiMjRiZjEzNDRhNmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5
SW5wdXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy13aXRoLWd1YXJkZWQtdmFs
dWVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBU
ZXN0IHsKIGNsYXNzIFNhdmVkTW91c2VCdXR0b247CiB9IC8vIG5hbWVzcGFjZSBUZXN0CiAKKwog
bmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTYXZl
ZE1vdXNlQnV0dG9uPiB7CiAgICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJ
bnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVu
Y29kaW5nLWhlbHBlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGlu
Zy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCmluZGV4IDhjZDRlYWE2Y2U2Njc3ZWM0
MzdmZmIzZWEwMDQ0ZGVkMTM1YjA4N2UuLjE0OTBhMjJjYTg3NGJmODRjMzZjMzQxYmI5Yzg3YjM5
MGJkMWExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMuanNvbi1UZXN0
UmVwbGF5SW5wdXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RS
ZXBsYXlJbnB1dHMuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgVGVzdCB7CiBjbGFzcyBT
YXZlZE1vdXNlQnV0dG9uOwogfSAvLyBuYW1lc3BhY2UgVGVzdAogCisKIG5hbWVzcGFjZSBKU0Mg
ewogdGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4g
ewogICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2Ny
aXB0TWVtb2l6ZWREYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS13aXRoLWd1YXJkLmpzb24t
VGVzdFJlcGxheUlucHV0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0td2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaAppbmRleCA1MGE0Y2Y3N2ZiODg5YmYxMDVhY2M2OWIzYjgwN2MyM2Y0YzJmOWE2Li45
ZGI4YWQ5ZjM0N2VlZGRkNjcwYTRjOTNlMGRmMGM5MjExNTBlZmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLXdp
dGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIFRlc3QgewogY2xhc3MgSGFuZGxlV2hlZWxFdmVudDsKIH0gLy8gbmFtZXNwYWNlIFRlc3QK
IAorCiBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6
OkhhbmRsZVdoZWVsRXZlbnQ+IHsKICAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0
dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bXMt
d2l0aC1zYW1lLWJhc2UtbmFtZS5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtcy13
aXRoLXNhbWUtYmFzZS1uYW1lLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCmluZGV4IGJjNTMzNDcy
OWM3ZTlkYmNlYWJlYWU0OGEwZmQ1ZmE3NjU5ODEyNjguLmIwNjgzMzQ0OGVjZmRlZDljOTcwZTFl
N2Q0M2RjOTM0Y2U3M2JiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtcy13aXRoLXNhbWUtYmFzZS1u
YW1lLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtcy13aXRoLXNhbWUtYmFz
ZS1uYW1lLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFj
ZSBUZXN0IHsKIGNsYXNzIEZvcm1Db21ibzsKIH0gLy8gbmFtZXNwYWNlIFRlc3QKIAorCiBuYW1l
c3BhY2UgSlNDIHsKIHRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OkZvcm1Db21i
bz4gewogICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6
U2NyaXB0TWVtb2l6ZWREYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb24tVGVzdFJl
cGxheUlucHV0cy5oCmluZGV4IDA3NGJhMWYxNjFhOTg5MThlNmIzNTI2MGI4NWNjMzZiMjg1Yjc4
Y2UuLmFlYzI4OWVmNGI1NmY1NzUwNjE3MDIyM2M4NTg1MTZkYjljOGVjZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1p
bnB1dC13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCkBAIC00Myw2ICs0Myw3IEBA
IGNsYXNzIEdldEN1cnJlbnRUaW1lOwogY2xhc3MgU2V0UmFuZG9tU2VlZDsKIH0gLy8gbmFtZXNw
YWNlIFRlc3QKIAorCiBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoRFVNTVlfRkVBVFVSRSkK
IHRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OkdldEN1cnJlbnRUaW1lPiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlu
cHV0cy5oCmluZGV4IDQ2YWJjNDUwMTQyZjEyYWU2NzFlYTNlYmQxZTcwNWRlODg4MzM0YTAuLjQ4
NDg1ZmZjOGI4OGNiODllODRjOGMzZjcwNGFlNGM0YzUxMTRjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1p
bnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCkBAIC00
NSw2ICs0NSw3IEBAIGNsYXNzIEFycmF5T2ZUaGluZ3M7CiBjbGFzcyBTYXZlZEhpc3Rvcnk7CiB9
IC8vIG5hbWVzcGFjZSBUZXN0CiAKKwogbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTw+IHN0cnVj
dCBJbnB1dFRyYWl0czxUZXN0OjpBcnJheU9mVGhpbmdzPiB7CiAgICAgc3RhdGljIElucHV0UXVl
dWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaAppbmRleCA1YmM1
ZDFhMTczNzQ5ZTBjMWFmNTg2YjBhZmZiNTBiYTZiNGExMDFmLi5jYmM3YmNhOTc4NzcwY2I3ZmI5
NzU1ZWVhZWM1MmI5ZDI0Nzg2Yjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3Mu
anNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlucHV0cy13aXRoLWZsYWdzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFNjYWxhcklucHV0MTsK
IGNsYXNzIFNjYWxhcklucHV0MjsKIH0gLy8gbmFtZXNwYWNlIFRlc3QKIAorCiBuYW1lc3BhY2Ug
SlNDIHsKIHRlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OlNjYWxhcklucHV0MT4g
ewogICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6U2Ny
aXB0TWVtb2l6ZWREYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1tb2Rlcy5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24tVGVz
dFJlcGxheUlucHV0cy5oCmluZGV4IGMwZmM3MzhiZDk0OTY5NjY5NDEyYTFkZjZlOWFmZWI5YzQ1
MGNmMmIuLjBiNzU1ODIwNjBlNmU5NWZjNDQyMGU2MGMwYzBiODlhNTQzOWM2NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9n
ZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCkBAIC00MSw2
ICs0MSw3IEBAIGNsYXNzIFNjYWxhcklucHV0OwogY2xhc3MgTWFwSW5wdXQ7CiB9IC8vIG5hbWVz
cGFjZSBUZXN0CiAKKwogbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1dFRy
YWl0czxUZXN0OjpTY2FsYXJJbnB1dD4gewogICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkg
eyByZXR1cm4gSW5wdXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRhOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtdW5jaGVja2VkLWVudW0uanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS11bmNoZWNr
ZWQtZW51bS5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyODExZTIyNWZh
YjBhMTE1YjYxNGUzMDkzMTY2MTg2N2QzMGUxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtdW5j
aGVja2VkLWVudW0uanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtMCwwICsxLDIyMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxF
LiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLXVuY2hlY2tlZC1l
bnVtLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgImdlbmVyYXRlLXVuY2hlY2tlZC1lbnVtLmpzb24tVGVzdFJlcGxheUlucHV0cy5oIgor
CisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAiSW50ZXJuYWxOYW1lc3BhY2VJbXBs
SW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VJbXBs
SW5jbHVkZUR1bW15Lmg+CisjaW5jbHVkZSA8cGxhdGZvcm0vR2FtZXBhZEtleS5oPgorCituYW1l
c3BhY2UgVGVzdCB7CitIYW5kbGVWaWV3U3RhdGVDaGFuZ2U6OkhhbmRsZVZpZXdTdGF0ZUNoYW5n
ZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGZsYWdzKQorICAgIDogV2ViQ29yZTo6RXZlbnRM
b29wSW5wdXQ8SGFuZGxlVmlld1N0YXRlQ2hhbmdlPigpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQor
eworfQorCitIYW5kbGVWaWV3U3RhdGVDaGFuZ2U6On5IYW5kbGVWaWV3U3RhdGVDaGFuZ2UoKQor
eworfQorCitIYW5kbGVHYW1lcGFkUHJlc3M6OkhhbmRsZUdhbWVwYWRQcmVzcyhXZWJDb3JlOjpH
YW1lcGFkS2V5IGtleXMpCisgICAgOiBXZWJDb3JlOjpFdmVudExvb3BJbnB1dDxIYW5kbGVHYW1l
cGFkUHJlc3M+KCkKKyAgICAsIG1fa2V5cyhrZXlzKQoreworfQorCitIYW5kbGVHYW1lcGFkUHJl
c3M6On5IYW5kbGVHYW1lcGFkUHJlc3MoKQoreworfQorfSAvLyBuYW1lc3BhY2UgVGVzdAorCitu
YW1lc3BhY2UgSlNDIHsKK2NvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFpdHM8VGVzdDo6SGFu
ZGxlVmlld1N0YXRlQ2hhbmdlPjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiSGFuZGxlVmlld1N0YXRlQ2hhbmdlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3Zv
aWQgSW5wdXRUcmFpdHM8VGVzdDo6SGFuZGxlVmlld1N0YXRlQ2hhbmdlPjo6ZW5jb2RlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBjb25zdCBUZXN0OjpIYW5kbGVWaWV3U3RhdGVDaGFuZ2Um
IGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8UGhhbnRvbTxXZWJDb3JlOjpVbmNoZWNr
ZWRFbnVtcywgV2ViQ29yZTo6VW5jaGVja2VkRW51bXM6OlZpZXdTdGF0ZUZsYWdzPj4oQVNDSUlM
aXRlcmFsKCJmbGFncyIpLCBpbnB1dC5mbGFncygpKTsKK30KKworYm9vbCBJbnB1dFRyYWl0czxU
ZXN0OjpIYW5kbGVWaWV3U3RhdGVDaGFuZ2U+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVk
VmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpIYW5kbGVWaWV3U3RhdGVDaGFuZ2U+JiBpbnB1
dCkKK3sKKyAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGZsYWdzOworICAgIGlmICghZW5j
b2RlZFZhbHVlLmdldDxQaGFudG9tPFdlYkNvcmU6OlVuY2hlY2tlZEVudW1zLCBXZWJDb3JlOjpV
bmNoZWNrZWRFbnVtczo6Vmlld1N0YXRlRmxhZ3M+PihBU0NJSUxpdGVyYWwoImZsYWdzIiksIGZs
YWdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRlc3Q6OkhhbmRsZVZpZXdTdGF0ZUNoYW5nZT4oZmxhZ3MpOworICAgIHJldHVybiB0cnVl
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OkhhbmRsZUdhbWVw
YWRQcmVzcz46OnR5cGUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IHR5cGUoIkhhbmRsZUdhbWVwYWRQcmVzcyIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBlOworfQorCit2b2lkIElucHV0VHJhaXRz
PFRlc3Q6OkhhbmRsZUdhbWVwYWRQcmVzcz46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRW
YWx1ZSwgY29uc3QgVGVzdDo6SGFuZGxlR2FtZXBhZFByZXNzJiBpbnB1dCkKK3sKKyAgICBlbmNv
ZGVkVmFsdWUucHV0PFBoYW50b208V2ViQ29yZTo6VW5jaGVja2VkRW51bXMsIFdlYkNvcmU6OlVu
Y2hlY2tlZEVudW1zOjpHYW1lcGFkS2V5Pj4oQVNDSUlMaXRlcmFsKCJrZXlzIiksIGlucHV0Lmtl
eXMoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6SGFuZGxlR2FtZXBhZFByZXNzPjo6
ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6
SGFuZGxlR2FtZXBhZFByZXNzPiYgaW5wdXQpCit7CisgICAgV2ViQ29yZTo6R2FtZXBhZEtleSBr
ZXlzOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxQaGFudG9tPFdlYkNvcmU6OlVuY2hlY2tl
ZEVudW1zLCBXZWJDb3JlOjpVbmNoZWNrZWRFbnVtczo6R2FtZXBhZEtleT4+KEFTQ0lJTGl0ZXJh
bCgia2V5cyIpLCBrZXlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRlc3Q6OkhhbmRsZUdhbWVwYWRQcmVzcz4oa2V5cyk7CisgICAgcmV0
dXJuIHRydWU7Cit9CitFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGhhbnRvbTxXZWJDb3Jl
OjpVbmNoZWNrZWRFbnVtcywgV2ViQ29yZTo6VW5jaGVja2VkRW51bXM6OkdhbWVwYWRLZXk+Pjo6
ZW5jb2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6R2FtZXBhZEtleSYgZW51bVZhbHVlKQoreworICAg
IEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZUFycmF5KCk7
CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok9FTV9VUCkgeworICAgICAgICBlbmNvZGVk
VmFsdWUuYXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJPRU1fVVAiKSk7CisgICAgICAgIGlm
IChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6T0VNX1VQKQorICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZWRWYWx1ZTsKKyAgICB9CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok9FTV9ET1dOKSB7
CisgICAgICAgIGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIk9FTV9E
T1dOIikpOworICAgICAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6Ok9FTV9ET1dOKQorICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9CisgICAgaWYgKGVudW1WYWx1ZSAm
IFdlYkNvcmU6Ok9FTV9MRUZUKSB7CisgICAgICAgIGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3RyaW5n
PihBU0NJSUxpdGVyYWwoIk9FTV9MRUZUIikpOworICAgICAgICBpZiAoZW51bVZhbHVlID09IFdl
YkNvcmU6Ok9FTV9MRUZUKQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9
CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok9FTV9SSUdIVCkgeworICAgICAgICBlbmNv
ZGVkVmFsdWUuYXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJPRU1fUklHSFQiKSk7CisgICAg
ICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6T0VNX1JJR0hUKQorICAgICAgICAgICAgcmV0
dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok9F
TV9MVCkgeworICAgICAgICBlbmNvZGVkVmFsdWUuYXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFs
KCJPRU1fTFQiKSk7CisgICAgICAgIGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6T0VNX0xUKQor
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9CisgICAgaWYgKGVudW1WYWx1
ZSAmIFdlYkNvcmU6Ok9FTV9SVCkgeworICAgICAgICBlbmNvZGVkVmFsdWUuYXBwZW5kPFN0cmlu
Zz4oQVNDSUlMaXRlcmFsKCJPRU1fUlQiKSk7CisgICAgICAgIGlmIChlbnVtVmFsdWUgPT0gV2Vi
Q29yZTo6T0VNX1JUKQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKK30KKworYm9vbCBFbmNvZGluZ1RyYWl0czxQaGFudG9t
PFdlYkNvcmU6OlVuY2hlY2tlZEVudW1zLCBXZWJDb3JlOjpVbmNoZWNrZWRFbnVtczo6R2FtZXBh
ZEtleT4+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgV2ViQ29yZTo6
R2FtZXBhZEtleSYgZW51bVZhbHVlKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudW1TdHJpbmdz
OworICAgIGlmICghRW5jb2RpbmdUcmFpdHM8VmVjdG9yPFN0cmluZz4+OjpkZWNvZGVWYWx1ZShl
bmNvZGVkVmFsdWUsIGVudW1TdHJpbmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Zm9yIChTdHJpbmcgZW51bVN0cmluZyA6IGVudW1TdHJpbmdzKSB7CisgICAgICAgIGlmIChlbnVt
U3RyaW5nID09ICJPRU1fVVAiKQorICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6R2FtZXBhZEtleT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6T0VNX1VQKTsKKyAgICAg
ICAgaWYgKGVudW1TdHJpbmcgPT0gIk9FTV9ET1dOIikKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkdhbWVwYWRLZXk+KGVudW1WYWx1ZSB8IFdlYkNvcmU6Ok9F
TV9ET1dOKTsKKyAgICAgICAgaWYgKGVudW1TdHJpbmcgPT0gIk9FTV9MRUZUIikKKyAgICAgICAg
ICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkdhbWVwYWRLZXk+KGVudW1WYWx1
ZSB8IFdlYkNvcmU6Ok9FTV9MRUZUKTsKKyAgICAgICAgaWYgKGVudW1TdHJpbmcgPT0gIk9FTV9S
SUdIVCIpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpHYW1l
cGFkS2V5PihlbnVtVmFsdWUgfCBXZWJDb3JlOjpPRU1fUklHSFQpOworICAgICAgICBpZiAoZW51
bVN0cmluZyA9PSAiT0VNX0xUIikKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkdhbWVwYWRLZXk+KGVudW1WYWx1ZSB8IFdlYkNvcmU6Ok9FTV9MVCk7CisgICAg
ICAgIGlmIChlbnVtU3RyaW5nID09ICJPRU1fUlQiKQorICAgICAgICAgICAgZW51bVZhbHVlID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2FtZXBhZEtleT4oZW51bVZhbHVlIHwgV2ViQ29yZTo6T0VN
X1JUKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRW5jb2RlZFZhbHVlIEVuY29k
aW5nVHJhaXRzPFBoYW50b208V2ViQ29yZTo6VW5jaGVja2VkRW51bXMsIFdlYkNvcmU6OlVuY2hl
Y2tlZEVudW1zOjpWaWV3U3RhdGVGbGFncz4+OjplbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpW
aWV3U3RhdGU6OkZsYWdzJiBlbnVtVmFsdWUpCit7CisgICAgRW5jb2RlZFZhbHVlIGVuY29kZWRW
YWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlQXJyYXkoKTsKKyAgICBpZiAoZW51bVZhbHVlICYg
V2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgeworICAgICAgICBlbmNvZGVkVmFs
dWUuYXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJXaW5kb3dJc0FjdGl2ZSIpKTsKKyAgICAg
ICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKQor
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9CisgICAgaWYgKGVudW1WYWx1
ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNGb2N1c2VkKSB7CisgICAgICAgIGVuY29kZWRWYWx1
ZS5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIklzRm9jdXNlZCIpKTsKKyAgICAgICAgaWYg
KGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpWaWV3U3RhdGU6OklzRm9jdXNlZCkKKyAgICAgICAgICAg
IHJldHVybiBlbmNvZGVkVmFsdWU7CisgICAgfQorICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3Jl
OjpWaWV3U3RhdGU6OklzVmlzaWJsZSkgeworICAgICAgICBlbmNvZGVkVmFsdWUuYXBwZW5kPFN0
cmluZz4oQVNDSUlMaXRlcmFsKCJJc1Zpc2libGUiKSk7CisgICAgICAgIGlmIChlbnVtVmFsdWUg
PT0gV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpCisgICAgICAgICAgICByZXR1cm4gZW5j
b2RlZFZhbHVlOworICAgIH0KKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6Vmlld1N0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkKSB7CisgICAgICAgIGVuY29kZWRWYWx1ZS5hcHBlbmQ8U3Ry
aW5nPihBU0NJSUxpdGVyYWwoIklzVmlzaWJsZU9yT2NjbHVkZWQiKSk7CisgICAgICAgIGlmIChl
bnVtVmFsdWUgPT0gV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKQorICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZWRWYWx1ZTsKKyAgICB9CisgICAgaWYgKGVudW1WYWx1ZSAm
IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRvdykgeworICAgICAgICBlbmNvZGVkVmFsdWUu
YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJJc0luV2luZG93IikpOworICAgICAgICBpZiAo
ZW51bVZhbHVlID09IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRvdykKKyAgICAgICAgICAg
IHJldHVybiBlbmNvZGVkVmFsdWU7CisgICAgfQorICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3Jl
OjpWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB7CisgICAgICAgIGVuY29kZWRWYWx1ZS5hcHBl
bmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIklzVmlzdWFsbHlJZGxlIikpOworICAgICAgICBpZiAo
ZW51bVZhbHVlID09IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpCisgICAgICAg
ICAgICByZXR1cm4gZW5jb2RlZFZhbHVlOworICAgIH0KKyAgICByZXR1cm4gZW5jb2RlZFZhbHVl
OworfQorCitib29sIEVuY29kaW5nVHJhaXRzPFBoYW50b208V2ViQ29yZTo6VW5jaGVja2VkRW51
bXMsIFdlYkNvcmU6OlVuY2hlY2tlZEVudW1zOjpWaWV3U3RhdGVGbGFncz4+OjpkZWNvZGVWYWx1
ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyYg
ZW51bVZhbHVlKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudW1TdHJpbmdzOworICAgIGlmICgh
RW5jb2RpbmdUcmFpdHM8VmVjdG9yPFN0cmluZz4+OjpkZWNvZGVWYWx1ZShlbmNvZGVkVmFsdWUs
IGVudW1TdHJpbmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChTdHJpbmcg
ZW51bVN0cmluZyA6IGVudW1TdHJpbmdzKSB7CisgICAgICAgIGlmIChlbnVtU3RyaW5nID09ICJX
aW5kb3dJc0FjdGl2ZSIpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpWaWV3U3RhdGU6OkZsYWdzPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6Oldp
bmRvd0lzQWN0aXZlKTsKKyAgICAgICAgaWYgKGVudW1TdHJpbmcgPT0gIklzRm9jdXNlZCIpCisg
ICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWV3U3RhdGU6OkZs
YWdzPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6OklzRm9jdXNlZCk7CisgICAgICAg
IGlmIChlbnVtU3RyaW5nID09ICJJc1Zpc2libGUiKQorICAgICAgICAgICAgZW51bVZhbHVlID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncz4oZW51bVZhbHVlIHwgV2ViQ29y
ZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgICAgICBpZiAoZW51bVN0cmluZyA9PSAiSXNW
aXNpYmxlT3JPY2NsdWRlZCIpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQpOworICAgICAgICBpZiAoZW51bVN0cmluZyA9PSAiSXNJbldp
bmRvdyIpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWV3
U3RhdGU6OkZsYWdzPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3cp
OworICAgICAgICBpZiAoZW51bVN0cmluZyA9PSAiSXNWaXN1YWxseUlkbGUiKQorICAgICAgICAg
ICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncz4oZW51
bVZhbHVlIHwgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLXVuY2hlY2tlZC1lbnVtLmpzb24tVGVzdFJl
cGxheUlucHV0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2dlbmVyYXRlLXVuY2hlY2tlZC1lbnVtLmpzb24tVGVzdFJlcGxheUlucHV0cy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMzZDQ5MmI0MGY3MTY4OWViNGI5NDYxZDQ0NjNhN2IxOTc3M2Q4NTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZ2VuZXJhdGUtdW5jaGVja2VkLWVudW0uanNvbi1UZXN0UmVwbGF5SW5wdXRz
LmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBnZW5lcmF0ZS11bmNoZWNrZWQtZW51bS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBKYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5CisKKyNp
Zm5kZWYgZ2VuZXJhdGVfdW5jaGVja2VkX2VudW1fanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKyNk
ZWZpbmUgZ2VuZXJhdGVfdW5jaGVja2VkX2VudW1fanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKwor
I2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIkludGVybmFsTmFtZXNwYWNlSGVhZGVy
SW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGFnZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxw
bGF0Zm9ybS9FeHRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitlbnVtIEdhbWVwYWRLZXkgOiB1bnNpZ25lZDsKK30KKworCituYW1lc3Bh
Y2UgVGVzdCB7CitjbGFzcyBIYW5kbGVWaWV3U3RhdGVDaGFuZ2U7CitjbGFzcyBIYW5kbGVHYW1l
cGFkUHJlc3M7Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpIYW5kbGVWaWV3U3RhdGVDaGFuZ2U+IHsK
KyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50
TG9vcElucHV0OyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6SGFu
ZGxlVmlld1N0YXRlQ2hhbmdlJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2Rl
ZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OkhhbmRsZVZpZXdTdGF0ZUNoYW5nZT4mKTsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OkhhbmRsZUdhbWVwYWRQ
cmVzcz4geworICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1
ZTo6RXZlbnRMb29wSW5wdXQ7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
KCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBU
ZXN0OjpIYW5kbGVHYW1lcGFkUHJlc3MmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpF
bmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6SGFuZGxlR2FtZXBhZFByZXNzPiYp
OworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFBoYW50b208V2ViQ29yZTo6
VW5jaGVja2VkRW51bXMsIFdlYkNvcmU6OlVuY2hlY2tlZEVudW1zOjpHYW1lcGFkS2V5Pj4gewor
ICAgIHR5cGVkZWYgV2ViQ29yZTo6R2FtZXBhZEtleSBEZWNvZGVkVHlwZTsKKworICAgIHN0YXRp
YyBFbmNvZGVkVmFsdWUgZW5jb2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6R2FtZXBhZEtleSYgdmFs
dWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKEVuY29kZWRWYWx1ZSYsIFdlYkNvcmU6
OkdhbWVwYWRLZXkmIHZhbHVlKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJh
aXRzPFBoYW50b208V2ViQ29yZTo6VW5jaGVja2VkRW51bXMsIFdlYkNvcmU6OlVuY2hlY2tlZEVu
dW1zOjpWaWV3U3RhdGVGbGFncz4+IHsKKyAgICB0eXBlZGVmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6
RmxhZ3MgRGVjb2RlZFR5cGU7CisKKyAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVl
KGNvbnN0IFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MmIHZhbHVlKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzJiB2
YWx1ZSk7Cit9OworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBUZXN0IHsKK2NsYXNz
IEhhbmRsZVZpZXdTdGF0ZUNoYW5nZSA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExvb3BJbnB1dDxI
YW5kbGVWaWV3U3RhdGVDaGFuZ2U+IHsKK3B1YmxpYzoKKyAgICBIYW5kbGVWaWV3U3RhdGVDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFncyk7CisgICAgdmlydHVhbCB+SGFuZGxl
Vmlld1N0YXRlQ2hhbmdlKCk7CisKKyAgICAvLyBFdmVudExvb3BJbnB1dCBBUEkKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hPblBhZ2UoV2ViQ29yZTo6UGFnZSYpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzOyB9Citwcml2YXRlOgorICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgbV9mbGFnczsK
K307CisKK2NsYXNzIEhhbmRsZUdhbWVwYWRQcmVzcyA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExv
b3BJbnB1dDxIYW5kbGVHYW1lcGFkUHJlc3M+IHsKK3B1YmxpYzoKKyAgICBIYW5kbGVHYW1lcGFk
UHJlc3MoV2ViQ29yZTo6R2FtZXBhZEtleSBrZXlzKTsKKyAgICB2aXJ0dWFsIH5IYW5kbGVHYW1l
cGFkUHJlc3MoKTsKKworICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaE9uUGFnZShXZWJDb3JlOjpQYWdlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgV2Vi
Q29yZTo6R2FtZXBhZEtleSBrZXlzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlzOyB9Citwcml2YXRl
OgorICAgIFdlYkNvcmU6OkdhbWVwYWRLZXkgbV9rZXlzOworfTsKK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworI2RlZmluZSBURVNUX1JFUExBWV9JTlBVVF9OQU1FU19GT1JfRUFDSChtYWNybykgXAor
ICAgIG1hY3JvKEhhbmRsZVZpZXdTdGF0ZUNoYW5nZSkgXAorICAgIG1hY3JvKEhhbmRsZUdhbWVw
YWRQcmVzcykgXAorICAgIFwKKy8vIGVuZCBvZiBURVNUX1JFUExBWV9JTlBVVF9OQU1FU19GT1Jf
RUFDSAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCisKKyNlbmRpZiAvLyBnZW5lcmF0
ZS11bmNoZWNrZWQtZW51bS5qc29uLVRlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLXVuY2hlY2tl
ZC1lbnVtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtdW5jaGVja2VkLWVudW0uanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTE0MjBkNGNiOWVlOWM0
YzRhMjMzMDQ1MDdmM2YyNjlkZDUxOGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLXVuY2hlY2tlZC1lbnVtLmpz
b24KQEAgLTAsMCArMSw1MiBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIldlYkNvcmUi
OiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxhZ3MiLCAibW9k
ZSI6ICJTQ0FMQVIiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSIsICJVTkNIRUNL
RUQiXSwKKyAgICAgICAgICAgICAgICAiZW5jbG9zaW5nX2NsYXNzIjogIlZpZXdTdGF0ZSIsCisg
ICAgICAgICAgICAgICAgInZhbHVlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgIldpbmRvd0lz
QWN0aXZlIiwKKyAgICAgICAgICAgICAgICAgICAgIklzRm9jdXNlZCIsCisgICAgICAgICAgICAg
ICAgICAgICJJc1Zpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAiSXNWaXNpYmxlT3JPY2Ns
dWRlZCIsCisgICAgICAgICAgICAgICAgICAgICJJc0luV2luZG93IiwKKyAgICAgICAgICAgICAg
ICAgICAgIklzVmlzdWFsbHlJZGxlIgorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgImhlYWRlciI6ICJwYWdlL1ZpZXdTdGF0ZS5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJHYW1lcGFkS2V5IiwgIm1vZGUiOiAiU0NB
TEFSIiwgInN0b3JhZ2UiOiAidW5zaWduZWQiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsi
RU5VTSIsICJVTkNIRUNLRUQiXSwKKyAgICAgICAgICAgICAgICAidmFsdWVzIjogWworICAgICAg
ICAgICAgICAgICAgICAiT0VNX1VQIiwKKyAgICAgICAgICAgICAgICAgICAgIk9FTV9ET1dOIiwK
KyAgICAgICAgICAgICAgICAgICAgIk9FTV9MRUZUIiwKKyAgICAgICAgICAgICAgICAgICAgIk9F
TV9SSUdIVCIsCisgICAgICAgICAgICAgICAgICAgICJPRU1fTFQiLAorICAgICAgICAgICAgICAg
ICAgICAiT0VNX1JUIgorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRl
ciI6ICJwbGF0Zm9ybS9HYW1lcGFkS2V5LmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAg
ICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
SGFuZGxlVmlld1N0YXRlQ2hhbmdlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAor
ICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAorICAgICAgICAgICAgIm1lbWJlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmbGFncyIsICJ0eXBlIjogIlZpZXdTdGF0
ZTo6RmxhZ3MiIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiSGFuZGxlR2FtZXBhZFByZXNzIiwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICIiLAorICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAorICAgICAgICAg
ICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJrZXlzIiwgInR5cGUi
OiAiR2FtZXBhZEtleSIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>