<?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>102667</bug_id>
          
          <creation_ts>2012-11-19 02:21:05 -0800</creation_ts>
          <short_desc>[Qt] Lookup mimetypes using QMimeDatabase</short_desc>
          <delta_ts>2012-11-22 07:51:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103069</dependson>
          <blocked>103054</blocked>
    
    <blocked>103056</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>abarth</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770508</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 02:21:05 -0800</bug_when>
    <thetext>With the recent addition of QMimeDatabase in QtCore we can get rid of the static table of mimetypes and extensions which is constantly in risk of becoming outdated and instead use QMimeDatabase which uses the system mimetype database if available. 

Note that to begin with this should probably be restricted to filename detection only. Detection by content has historical had some security issues due to some loaders not verifying against context.

Benifits should be better detection of downloaded files (offers of applications), and ability to recognize common aliases for supported mimetypes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770516</commentid>
    <comment_count>1</comment_count>
      <attachid>174926</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 02:28:54 -0800</bug_when>
    <thetext>Created attachment 174926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770575</commentid>
    <comment_count>2</comment_count>
      <attachid>174926</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-11-19 04:02:38 -0800</bug_when>
    <thetext>Comment on attachment 174926
Patch

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

There&apos;s a lot of cross-platform code changed. Is there a way to avoid that and make our MIMETypeRegistry.cpp behave more like the other platforms?

&gt; Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp:42
&gt; +inline static QMimeDatabase&amp; mimeDatabase()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(QMimeDatabase, s_mimeDatabase, ());
&gt; +    return s_mimeDatabase;
&gt; +}

I don&apos;t think you need this optimization. AFAICS QMimeDatabase is really cheap to construct because it internally uses exactly the same pattern already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770607</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 04:37:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 174926 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174926&amp;action=review
&gt; 
&gt; There&apos;s a lot of cross-platform code changed. Is there a way to avoid that and make our MIMETypeRegistry.cpp behave more like the other platforms?
&gt; 
We still behave the same for most parts. The only behaviour change is the attempt to detect multi-part suffixes (.tar.gz), and this code was changed so that other platforms can do the same if they want, but it is kind of a Unix tradition only.

&gt; &gt; Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp:42
&gt; &gt; +inline static QMimeDatabase&amp; mimeDatabase()
&gt; &gt; +{
&gt; &gt; +    DEFINE_STATIC_LOCAL(QMimeDatabase, s_mimeDatabase, ());
&gt; &gt; +    return s_mimeDatabase;
&gt; &gt; +}
&gt; 
&gt; I don&apos;t think you need this optimization. AFAICS QMimeDatabase is really cheap to construct because it internally uses exactly the same pattern already.

Why aren&apos;t the QMimeDatabase method static then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770620</commentid>
    <comment_count>4</comment_count>
      <attachid>174959</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 04:59:39 -0800</bug_when>
    <thetext>Created attachment 174959
Patch

Removed static QMimeDatabase optimization, ensured WK2 uses the same logic as WK1 and added one mime-type feature from Qt backend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770629</commentid>
    <comment_count>5</comment_count>
      <attachid>174959</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 05:15:28 -0800</bug_when>
    <thetext>Comment on attachment 174959
Patch

Attachment 174959 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14910178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770638</commentid>
    <comment_count>6</comment_count>
      <attachid>174960</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 05:24:18 -0800</bug_when>
    <thetext>Created attachment 174960
Patch

Update exported symbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770642</commentid>
    <comment_count>7</comment_count>
      <attachid>174960</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 05:31:56 -0800</bug_when>
    <thetext>Comment on attachment 174960
Patch

Attachment 174960 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14905192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770646</commentid>
    <comment_count>8</comment_count>
      <attachid>174961</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 05:37:56 -0800</bug_when>
    <thetext>Created attachment 174961
Patch

Update exported symbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773787</commentid>
    <comment_count>9</comment_count>
      <attachid>175637</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-22 03:22:54 -0800</bug_when>
    <thetext>Created attachment 175637
Patch

Use cross-platform mimetype detection in File.cpp. Added another missing function in the Qt implementation to detect if extensions are valid for a given mimetype, and used that to set suggestedFilename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773789</commentid>
    <comment_count>10</comment_count>
      <attachid>175638</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-22 03:28:40 -0800</bug_when>
    <thetext>Created attachment 175638
Patch

Forgot to commit the last two lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773832</commentid>
    <comment_count>11</comment_count>
      <attachid>175645</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-22 04:38:04 -0800</bug_when>
    <thetext>Created attachment 175645
Patch

Split patch in three. This is the first part only detecting by last extension but doing so using QMimeDatabase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773840</commentid>
    <comment_count>12</comment_count>
      <attachid>175645</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-11-22 04:56:00 -0800</bug_when>
    <thetext>Comment on attachment 175645
Patch

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

r=me with comments. Nice to see the list of hardcoded types finally go away!

&gt; Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp:41
&gt; +    const String filename = &quot;filename.&quot; + ext.lower();

Since the only thing we do is to take the filename and convert it (allocatingly) to a QString, I suppose you could also construct a QString here right away.

&gt; Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp:56
&gt; +    return &quot;application/octet-stream&quot;;

Why not return defaultMIMEType() here and safe the string construction? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773857</commentid>
    <comment_count>13</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-22 05:24:24 -0800</bug_when>
    <thetext>Committed r135507: &lt;http://trac.webkit.org/changeset/135507&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773955</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-22 07:51:40 -0800</bug_when>
    <thetext>new bug report to track the regression caused by this patch - https://bugs.webkit.org/show_bug.cgi?id=103069</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174926</attachid>
            <date>2012-11-19 02:28:54 -0800</date>
            <delta_ts>2012-11-19 04:59:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121119112619.patch</filename>
            <type>text/plain</type>
            <size>14454</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRkNWQ4NTAzNDJmYTUx
YjkxZjczMzQ4YmFjYzNjZjdiMjJmNDE4YS4uOTI2YjkwYWZkMzFlNjBhN2VhYjhkNzYyYzE5YjVi
NWMwOGQxMDRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLiBUbyBzdXBwb3J0IFVu
aXgKKyAgICAgICAgc3R5bGUgbXVsdGktZXh0ZW5zaW9ucyAoZS5nLiB0YXIuZ3opLCBzb21lIGxv
YWRlcnMgd2lsbCBub3cgcHJlZmVyIG1pbWV0eXBlIGRldGVjdGlvbgorICAgICAgICBieSBmaWxl
bmFtZSBvdmVyIGRldGVjdGlvbiBieSBleHRlbnNpb24gYWxvbmUuCisKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5cGVGcm9tRmlsZU5h
bWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZl
TUlNRVR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6aXNXZWxsS25vd25NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZVR5cGVBc3NvY2lhdGlvbk1hcCk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oOgorICAgICAgICAoTUlNRVR5cGVSZWdpc3RyeSk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1F
VHlwZUZvclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9y
bWFsaXplZE1JTUVUeXBlKToKKwogMjAxMi0xMS0xNSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlIHNob3VsZCB0cmlnZ2VyIGEgY29uc29sZSB3YXJuaW5nIHdo
ZW4gd2UgZW5jb3VudGVyIGludmFsaWQgc2FuZGJveCBmbGFncy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
MzQwY2Y5NTM3NDYzYzY2MzE1OGI0YmMzMzg2NmFiNzRkYTAzMjg2OS4uOTM4ZmEwZDY0NGM3M2U2
ZWQxOGRiYjNjMDc1NmE4NmY4MmExZmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0xMS0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lh
LmNvbT4KKworICAgICAgICBbUXRdIExvb2t1cCBtaW1ldHlwZXMgdXNpbmcgUU1pbWVEYXRhYmFz
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9va3Vw
IG1pbWV0eXBlIGJ5IGZpbGVuYW1lIGluc3RlYWQgb2YganVzdCBsYXN0IGV4dGVuc2lvbi4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUpOgorCiAy
MDEyLTExLTE0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1F0XSBGaXggdHN0X1FXZWJGcmFtZTo6c2V0VXJsV2l0aFBlbmRpbmdMb2FkcygpIEFQSSB0
ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA2OTJiZGUxYWNhMGFkN2MxNjFjNGQzZjQ4
ZWQyMTM2YTNhNTJhZGMwLi4zNTM1YWM0YzkxY2RiMjg4ZWU5MDdmMjc4MDhlMGY3MTdjZDQ0YjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM0LDYgKzM0LDIxIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKFFUKQorc3RhdGljIFN0cmluZyBnZXRDb250ZW50
VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGU6OkNvbnRlbnRUeXBlTG9v
a3VwUG9saWN5IHBvbGljeSkKK3sKKyAgICBTdHJpbmcgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yUGF0aChuYW1lKTsKKyAgICBpZiAocG9saWN5ID09IEZpbGU6OldlbGxL
bm93bkNvbnRlbnRUeXBlcykgeworICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzV2Vs
bEtub3duTUlNRVR5cGUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHBvbGljeSA9PSBGaWxlOjpBbGxDb250ZW50VHlwZXMp
OworICAgICAgICBpZiAodHlwZSA9PSBkZWZhdWx0TUlNRVR5cGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAgcmV0dXJuIHR5cGU7Cit9CisjZWxzZQogc3RhdGlj
IFN0cmluZyBnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGU6OkNvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSkKIHsKICAgICBTdHJpbmcgdHlwZTsK
QEAgLTQ4LDYgKzYzLDcgQEAgc3RhdGljIFN0cmluZyBnZXRDb250ZW50VHlwZUZyb21GaWxlTmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGU6OkNvbnRlbnRUeXBlTG8KICAgICB9CiAgICAgcmV0
dXJuIHR5cGU7CiB9CisjZW5kaWYKIAogc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0
ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IGM4OTY4NWI2YjU2ZTYyZmY2ZTJmOWZlMTMxMmQ3YjZhMWZkYTg3MDMuLjU5OGE4ZmNkNDE5ZDJm
M2FlNTY3MjdhZGVkOWEyMGRkZWQ4NDE0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtODc2LDkgKzg3NiwxMSBAQCBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRl
cjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUwogICAg
IFN0cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0aCgp
KTsKICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBhdGguc3Vic3RyaW5nKGRlY29kZWRQ
YXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKTsKIAotICAgIC8vIFdlIGRvbid0IHVzZSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNhdXNlIGl0IHJldHVybnMgImFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0gICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKLSAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihleHRlbnNpb24pOworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoZGVj
b2RlZFBhdGgpOworICAgICAgICBpZiAobWltZVR5cGUgPT0gZGVmYXVsdE1JTUVUeXBlKCkpCisg
ICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmluZygpOworICAgIH0KIAogI2lmICFQTEFURk9STShN
QUMpICYmICFQTEFURk9STShDSFJPTUlVTSkgJiYgIVBMQVRGT1JNKEVGTCkgLy8gTWFjIGhhcyBu
byBQbHVnaW5EYXRhYmFzZSwgbm9yIGRvZXMgQ2hyb21pdW0gb3IgRUZMCiAgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVGYWN0b3J5LmNwcAppbmRleCAwNGZiNWVkYjU2NzRjNzI0OWVjZTBmYzAxOTAxNTFjOWMyYTk3
OGJhLi40ZWJiNTJiY2ZiMThhYzhlODMyMTM2YWM4NDZkYmM5Mjg4OGYyOTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC03MCw2
ICs3MCw4IEBAIHN0YXRpYyBBcmNoaXZlTUlNRVR5cGVzTWFwJiBhcmNoaXZlTUlNRVR5cGVzKCkK
ICAgICBtaW1lVHlwZXMuc2V0KCJtdWx0aXBhcnQvcmVsYXRlZCIsIGFyY2hpdmVGYWN0b3J5Q3Jl
YXRlPE1IVE1MQXJjaGl2ZT4pOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBtaW1lVHlwZXMuc2V0
KCJtZXNzYWdlL3JmYzgyMiIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4pOwor
I2VsaWYgUExBVEZPUk0oUVQpCisgICAgbWltZVR5cGVzLnNldCgiYXBwbGljYXRpb24veC1taW1l
YXJjaGl2ZSIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4pOwogI2VuZGlmCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApp
bmRleCA0NDBiNDI5OWFiY2JkYTEzNzNjNmU2YjFhZmM1ZGI4MjMyNzg3YjQ1Li40MDUxYmFiNTE5
ZDFmODgxMjlhNzczODg1OWM5ODkzOTFlZDlmMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNDgyLDYgKzQ4MiwyMCBAQCBzdGF0aWMgU3Ry
aW5nIGZpbmRNaW1lVHlwZShjb25zdCBUeXBlRXh0ZW5zaW9uUGFpciogcGFpcnMsIHVuc2lnbmVk
IG51bVBhaXJzLCBjbwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorc3RhdGljIGJvb2wgY29u
dGFpbnNNaW1lVHlwZShjb25zdCBUeXBlRXh0ZW5zaW9uUGFpciogcGFpcnMsIHVuc2lnbmVkIG51
bVBhaXJzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyB0eXBlID0gbWltZVR5
cGUubG93ZXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFpcnM7ICsraSwg
KytwYWlycykgeworICAgICAgICBpZiAodHlwZSA9PSBwYWlycy0+dHlwZSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogU3RyaW5nIE1J
TUVUeXBlUmVnaXN0cnk6OmdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKQogewogICAgIC8vIFRoaXMgbWV0aG9kIG11c3QgYmUgdGhyZWFkIHNh
ZmUgYW5kIHNob3VsZCBub3QgY29uc3VsdCB0aGUgT1MvcmVnaXN0cnkuCkBAIC00OTEsNiArNTA1
LDE2IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAgcmV0dXJuIGZpbmRNaW1lVHlwZShj
b21tb25NZWRpYVR5cGVzLCBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9u
TWVkaWFUeXBlc1swXSksIGV4dGVuc2lvbik7CiB9CiAKK2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6
aXNXZWxsS25vd25NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIC8vIFRo
aXMgbWV0aG9kIG11c3QgYmUgdGhyZWFkIHNhZmUgYW5kIHNob3VsZCBub3QgY29uc3VsdCB0aGUg
T1MvcmVnaXN0cnkuCisgICAgYm9vbCBmb3VuZCA9IGNvbnRhaW5zTWltZVR5cGUod2VsbEtub3du
TWltZVR5cGVzLCBzaXplb2Yod2VsbEtub3duTWltZVR5cGVzKSAvIHNpemVvZih3ZWxsS25vd25N
aW1lVHlwZXNbMF0pLCBtaW1lVHlwZSk7CisgICAgaWYgKGZvdW5kKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gY29udGFpbnNNaW1lVHlwZShjb21tb25NZWRpYVR5cGVzLCBzaXpl
b2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSksIG1pbWVU
eXBlKTsKK30KKworI2lmICFQTEFURk9STShRVCkKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3Mg
PSBwYXRoLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01MDIsNiArNTI2LDcgQEAgU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
fQogICAgIHJldHVybiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKIH0KKyNlbmRpZgogCiBi
b29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogewpAQCAtNjM4LDYgKzY2MywxMyBAQCBjb25zdCBTdHJpbmcmIGRlZmF1
bHRNSU1FVHlwZSgpCiAgICAgcmV0dXJuIGRlZmF1bHRNSU1FVHlwZTsKIH0KIAorI2lmICFQTEFU
Rk9STShRVCkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCitTdHJpbmcgTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAg
cmV0dXJuIG1pbWVUeXBlOworfQorI2VuZGlmCisKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQog
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBNSU1FVHlwZUFzc29jaWF0aW9uTWFwOwog
CkBAIC02OTYsMTggKzcyOCwxNiBAQCBzdGF0aWMgY29uc3QgTUlNRVR5cGVBc3NvY2lhdGlvbk1h
cCYgbWltZVR5cGVBc3NvY2lhdGlvbk1hcCgpCiAKICAgICByZXR1cm4gKm1pbWVUeXBlTWFwOwog
fQotI2VuZGlmCiAKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSNpZiBQTEFURk9STShCTEFDS0JFUlJZKQog
ICAgIE1JTUVUeXBlQXNzb2NpYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVR5cGVB
c3NvY2lhdGlvbk1hcCgpLmZpbmQobWltZVR5cGUpOwogCiAgICAgaWYgKGl0ICE9IG1pbWVUeXBl
QXNzb2NpYXRpb25NYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLSNlbmRp
ZgorCiAgICAgcmV0dXJuIG1pbWVUeXBlOwogfQotCisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4
IDU2MTJiOTIyM2EyMzQxYjE5N2Q1MzhkZWE0N2U0OTg0ZTRiM2NjYTEuLjUxN2MzMjI5M2E1Nzk2
ZWQ4MWE1ODE4OGE2ZGVjOWQ2YmNlZGI4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc4LDYgKzc4LDkgQEAgcHVibGljOgogICAgIC8vIGJyb3dz
ZXIgKGUuZy4gYSBRdCBQbHVnaW4pLgogICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25QbHVn
aW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiB0aGUgbWltZSB0eXBlIGlzIGluIHRoZSB3aGl0ZS1saXN0IG9mICJ3ZWxsLWtub3duIiBN
SU1FIHR5cGVzLgorICAgIHN0YXRpYyBib29sIGlzV2VsbEtub3duTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CisKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBtaW1lIHR5cGUgaXMg
c3VpdGFibGUgZm9yIGJlaW5nIHNob3duIGluc2lkZSBhIHBhZ2UuCiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGFueSBvZiBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoKSwgaXNTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlKCksIGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZSgpIHJldHVybnMgdHJ1ZQog
ICAgIC8vIG9yIGlmIGdpdmVuIG1pbWUgdHlwZSBiZWdpbnMgd2l0aCAidGV4dC8iIGFuZCBpc1Vu
c3VwcG9ydGVkVGV4dE1JTUVUeXBlKCkgcmV0dXJucyBmYWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwCmluZGV4IGJjNTU1M2FlYzE2
YzVkMjczMTRlY2E0NmE0YmMzYmZjMzJhYzA2MGYuLjcxM2QwMTFmYTc4MTlmYTkxNDc1NDY2NTZh
MDU4NmJjMTgxMTVjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L01J
TUVUeXBlUmVnaXN0cnlRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTUlN
RVR5cGVSZWdpc3RyeVF0LmNwcApAQCAtMjksNzggKzI5LDUxIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogCisjaW5jbHVkZSA8UU1pbWVEYXRh
YmFzZT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEV4dGVuc2lvbk1hcCB7Ci0g
ICAgY29uc3QgY2hhciogZXh0ZW5zaW9uOwotICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlOwotfTsK
LQotc3RhdGljIGNvbnN0IEV4dGVuc2lvbk1hcCBleHRlbnNpb25NYXBbXSA9IHsKLSAgICB7ICJi
bXAiLCAiaW1hZ2UvYm1wIiB9LAotICAgIHsgImNzcyIsICJ0ZXh0L2NzcyIgfSwKLSAgICB7ICJn
aWYiLCAiaW1hZ2UvZ2lmIiB9LAotICAgIHsgImh0bWwiLCAidGV4dC9odG1sIiB9LAotICAgIHsg
Imh0bSIsICJ0ZXh0L2h0bWwiIH0sCi0gICAgeyAiaWNvIiwgImltYWdlL3gtaWNvbiIgfSwKLSAg
ICB7ICJqcGVnIiwgImltYWdlL2pwZWciIH0sCi0gICAgeyAianBnIiwgImltYWdlL2pwZWciIH0s
Ci0gICAgeyAianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiB9LAotICAgIHsgIm1uZyIs
ICJ2aWRlby94LW1uZyIgfSwKLSAgICB7ICJtcDQiLCAidmlkZW8vbXA0IiB9LAotICAgIHsgIm00
diIsICJ2aWRlby9tcDQiIH0sCi0gICAgeyAibTRhIiwgImF1ZGlvL3gtbTRhIiB9LAotICAgIHsg
Im1odCIsICJtdWx0aXBhcnQvcmVsYXRlZCIgfSwKLSAgICB7ICJtaHRtbCIsICJtdWx0aXBhcnQv
cmVsYXRlZCIgfSwKLSAgICB7ICJtcDMiLCAiYXVkaW8vbXAzIiB9LAotICAgIHsgIm9ndiIsICJ2
aWRlby9vZ2ciIH0sCi0gICAgeyAib2dhIiwgImF1ZGlvL29nZyIgfSwKLSAgICB7ICJvZ20iLCAi
YXVkaW8vb2dnIiB9LAotICAgIHsgIm9nZyIsICJhdWRpby9vZ2ciIH0sCi0gICAgeyAid2VibSIs
ICJ2aWRlby93ZWJtIiB9LAotICAgIHsgIndlYm0iLCAiYXVkaW8vd2VibSIgfSwKLSAgICB7ICJ3
YXYiLCAiYXVkaW8vd2F2IiB9LAotICAgIHsgIm1vdiIsICJ2aWRlby9xdWlja3RpbWUiIH0sCi0g
ICAgeyAicGJtIiwgImltYWdlL3gtcG9ydGFibGUtYml0bWFwIiB9LAotICAgIHsgInBnbSIsICJp
bWFnZS94LXBvcnRhYmxlLWdyYXltYXAiIH0sCi0gICAgeyAicGRmIiwgImFwcGxpY2F0aW9uL3Bk
ZiIgfSwKLSAgICB7ICJwbmciLCAiaW1hZ2UvcG5nIiB9LAotICAgIHsgInBwbSIsICJpbWFnZS94
LXBvcnRhYmxlLXBpeG1hcCIgfSwKLSAgICB7ICJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3htbCIg
fSwKLSAgICB7ICJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIgfSwKLSAgICB7ICJ0ZXh0IiwgInRleHQv
cGxhaW4iIH0sCi0gICAgeyAidGlmIiwgImltYWdlL3RpZmYiIH0sCi0gICAgeyAidGlmZiIsICJp
bWFnZS90aWZmIiB9LAotICAgIHsgInR4dCIsICJ0ZXh0L3BsYWluIiB9LAotICAgIHsgInhibSIs
ICJpbWFnZS94LXhiaXRtYXAiIH0sCi0gICAgeyAieG1sIiwgInRleHQveG1sIiB9LAotICAgIHsg
InhwbSIsICJpbWFnZS94LXhwbSIgfSwKLSAgICB7ICJ4c2wiLCAidGV4dC94c2wiIH0sCi0gICAg
eyAieGh0bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIiB9LAotICAgIHsgIndtbCIsICJ0ZXh0
L3ZuZC53YXAud21sIiB9LAotICAgIHsgIndtbGMiLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxj
IiB9LAotICAgIHsgMCwgMCB9Ci19OworaW5saW5lIHN0YXRpYyBRTWltZURhdGFiYXNlJiBtaW1l
RGF0YWJhc2UoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUU1pbWVEYXRhYmFzZSwgc19t
aW1lRGF0YWJhc2UsICgpKTsKKyAgICByZXR1cm4gc19taW1lRGF0YWJhc2U7Cit9CiAKIFN0cmlu
ZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcg
JmV4dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgU3RyaW5nIHMgPSBl
eHQubG93ZXIoKTsKKyAgICAvLyBRTWltZURhdGFiYXNlIGxhY2tzIHRoZSBhYmlsaXR5IHRvIHF1
ZXJ5IGJ5IGV4dGVuc2lvbiBhbG9uZSwgc28gd2UgY3JlYXRlIGEgZmFrZSBmaWxlbmFtZSB0byBs
b29rdXAuCisgICAgY29uc3QgU3RyaW5nIGZpbGVuYW1lID0gImZpbGVuYW1lLiIgKyBleHQubG93
ZXIoKTsKIAotICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9IGV4dGVuc2lvbk1hcDsKLSAgICB3
aGlsZSAoZS0+ZXh0ZW5zaW9uKSB7Ci0gICAgICAgIGlmIChzID09IGUtPmV4dGVuc2lvbikKLSAg
ICAgICAgICAgIHJldHVybiBlLT5taW1lVHlwZTsKLSAgICAgICAgKytlOwotICAgIH0KKyAgICBR
TWltZVR5cGUgbWltZVR5cGUgPSBtaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvckZpbGUoZmlsZW5h
bWUsIFFNaW1lRGF0YWJhc2U6Ok1hdGNoRXh0ZW5zaW9uKTsKKyAgICBpZiAobWltZVR5cGUuaXNW
YWxpZCgpICYmICFtaW1lVHlwZS5pc0RlZmF1bHQoKSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBl
Lm5hbWUoKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIE1JTUVUeXBlUmVn
aXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgUU1p
bWVUeXBlIHR5cGUgPSBtaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvckZpbGUocGF0aCwgUU1pbWVE
YXRhYmFzZTo6TWF0Y2hFeHRlbnNpb24pOworICAgIGlmICh0eXBlLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIHR5cGUubmFtZSgpOworCisgICAgcmV0dXJuICJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iOworfQorCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIC8vIFRoaXMgbG9va3MgdXAg
dGhlIG1pbWUgdHlwZSBvYmplY3QgYnkgcHJlZmVycmVkIG5hbWUgb3IgYWxpYXMsIGFuZCByZXR1
cm5zIHRoZSBwcmVmZXJyZWQgbmFtZS4KKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBtaW1lRGF0
YWJhc2UoKS5taW1lVHlwZUZvck5hbWUobWltZVR5cGVOYW1lKTsKKyAgICBpZiAobWltZVR5cGUu
aXNWYWxpZCgpICYmICFtaW1lVHlwZS5pc0RlZmF1bHQoKSkKKyAgICAgICAgcmV0dXJuIG1pbWVU
eXBlLm5hbWUoKTsKKworICAgIHJldHVybiBtaW1lVHlwZU5hbWU7Cit9CisKIGJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7CiAgICAgcmV0dXJuIG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uL3gt
cXQtcGx1Z2luIiwgZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCAwNzMxZDkzMTU4YTE2Zjk3MzBl
ODQxZTIwODE3YTg4MjJiNGU2MTQ4Li5kOGU2NTFmZjNkNWQyMGJmYzJkMGZjZjY5MGNkZGQ4NDNm
ZmIyYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEzNTAsMjIgKzEzNTAsMjQgQEAgUGFzc1JlZlB0
cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcKIE9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUlu
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgLy8gcURlYnVnKCk8
PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnN0cmluZygpPDwiLCBtaW1lID0gIjw8
bWltZVR5cGVJbjsKLSAgICBRRmlsZUluZm8gZmkodXJsLnBhdGgoKSk7Ci0gICAgU3RyaW5nIGV4
dGVuc2lvbiA9IGZpLnN1ZmZpeCgpOwotICAgIGlmIChtaW1lVHlwZUluID09ICJhcHBsaWNhdGlv
bi94LXF0LXBsdWdpbiIgfHwgbWltZVR5cGVJbiA9PSAiYXBwbGljYXRpb24veC1xdC1zdHlsZWQt
d2lkZ2V0IikKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdpbk1J
TUVUeXBlKG1pbWVUeXBlSW4pKQogICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudE90aGVyUGx1
Z2luOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgIW1pbWVUeXBlSW4ubGVuZ3RoKCkpCisg
ICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgbWltZVR5cGVJbi5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBPYmplY3RDb250ZW50Tm9uZTsKIAogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBl
SW47Ci0gICAgaWYgKCFtaW1lVHlwZS5sZW5ndGgoKSkKLSAgICAgICAgbWltZVR5cGUgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgIGlm
IChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgodXJsLnBhdGgoKSk7CisgICAgICAgIGlmIChtaW1lVHlw
ZSA9PSBkZWZhdWx0TUlNRVR5cGUoKSkKKyAgICAgICAgICAgIG1pbWVUeXBlID0gU3RyaW5nKCk7
CisgICAgfQogCi0gICAgaWYgKCFtaW1lVHlwZS5sZW5ndGgoKSkKLSAgICAgICAgbWltZVR5cGUg
PSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5NSU1FVHlwZUZvckV4dGVuc2lv
bihleHRlbnNpb24pOworICAgIFFGaWxlSW5mbyBmaSh1cmwucGF0aCgpKTsKKyAgICBpZiAobWlt
ZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBtaW1lVHlwZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0
YWxsZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpLnN1ZmZpeCgpKTsKIAotICAg
IGlmICghbWltZVR5cGUubGVuZ3RoKCkpCisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnRGcmFtZTsKIAogICAgIE9iamVjdENvbnRlbnRUeXBl
IHBsdWdJblR5cGUgPSBPYmplY3RDb250ZW50Tm9uZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174959</attachid>
            <date>2012-11-19 04:59:39 -0800</date>
            <delta_ts>2012-11-19 05:24:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121119135703.patch</filename>
            <type>text/plain</type>
            <size>18776</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjOTA5OWJkODZjZDNl
ODBlNzE1MTE2NmEwZjI4Y2U3Njc0YjAzMC4uZjMzMmFhYTRlNmM5NDk3NjRhODFmYzI3YzYzY2Ew
MzRkMGYzN2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTExLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLiBUbyBzdXBwb3J0IFVu
aXgKKyAgICAgICAgc3R5bGUgbXVsdGktZXh0ZW5zaW9ucyAoZS5nLiB0YXIuZ3opLCBzb21lIGxv
YWRlcnMgd2lsbCBub3cgcHJlZmVyIG1pbWV0eXBlIGRldGVjdGlvbgorICAgICAgICBieSBmaWxl
bmFtZSBvdmVyIGRldGVjdGlvbiBieSBleHRlbnNpb24gYWxvbmUuCisKKyAgICAgICAgU3VwcG9y
dCBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb24gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUgd2FzIGFsc28gYWRkZWQgdG8gUXQuCisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlTUlNRVR5cGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRhaW5zTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
aXNXZWxsS25vd25NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5cGVBc3Nv
Y2lhdGlvbk1hcCk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAg
ICAgICAoTUlNRVR5cGVSZWdpc3RyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9R
TmV0d29ya1JlcGx5SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5
SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L01J
TUVUeXBlUmVnaXN0cnlRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKToKKwogMjAxMi0x
MS0xOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaW5wdXQu
dmFsdWU9IiIgc2hvdWxkIGNsZWFyIGRhdGUvdGltZSBpbnB1dCBlbGVtZW50cyB3aXRoIHBhcnRp
YWwgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMxNmJjODZhZDY5NTRmMGU1NGEwN2M5MjQ1ODUy
YjM0YTZkMDM3NzMuLjgwZmVhYWZjYmI4NWYwZjJlZjQyYTkxMjAzYTUyZDFiNDBkOTIwZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMTkgIEFsbGFuIFNhbmRmZWxk
IEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBMb29rdXAg
bWltZXR5cGVzIHVzaW5nIFFNaW1lRGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExvb2t1cCBtaW1ldHlwZSBieSBmaWxlbmFtZSBpbnN0ZWFk
IG9mIGp1c3QgbGFzdCBleHRlbnNpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKwogMjAxMi0xMS0xOCAgTGFzemxvIEdvbWJvcyAgPGwu
Z29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtRdF0gUmVtb3ZlIHJlbWFpbmluZyB0cmFj
ZXMgb2Ygc3ltYmlhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM3NDBkNDc4M2M5YWVkNTAwYmQzMmFkNTY2ODAy
YTBlZGYxMDI1OTIuLmQ3ZGM2OGMxMzAxOWM4ZTFjYzUwMmNjNWRlM2IwYWM2ZjIxMjlmNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMS0xOSAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIExvb2t1cCBtaW1l
dHlwZXMgdXNpbmcgUU1pbWVEYXRhYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTG9va3VwIG1pbWV0eXBlIGJ5IGZpbGVuYW1lIGluc3RlYWQgb2Yg
anVzdCBsYXN0IGV4dGVuc2lvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUpOgorCiAyMDEyLTExLTE5ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggNjkyYmRlMWFjYTBhZDdjMTYxYzRkM2Y0OGVk
MjEzNmEzYTUyYWRjMC4uMzUzNWFjNGM5MWNkYjI4OGVlOTA3ZjI3ODA4ZTBmNzE3Y2Q0NGI0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0zNCw2ICszNCwyMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShRVCkKK3N0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5
cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvb2t1
cFBvbGljeSBwb2xpY3kpCit7CisgICAgU3RyaW5nIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvclBhdGgobmFtZSk7CisgICAgaWYgKHBvbGljeSA9PSBGaWxlOjpXZWxsS25v
d25Db250ZW50VHlwZXMpIHsKKyAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1dlbGxL
bm93bk1JTUVUeXBlKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIEFTU0VSVChwb2xpY3kgPT0gRmlsZTo6QWxsQ29udGVudFR5cGVzKTsK
KyAgICAgICAgaWYgKHR5cGUgPT0gZGVmYXVsdE1JTUVUeXBlKCkpCisgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgfQorICAgIHJldHVybiB0eXBlOworfQorI2Vsc2UKIHN0YXRpYyBT
dHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
OjpDb250ZW50VHlwZUxvb2t1cFBvbGljeSBwb2xpY3kpCiB7CiAgICAgU3RyaW5nIHR5cGU7CkBA
IC00OCw2ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvCiAgICAgfQogICAgIHJldHVy
biB0eXBlOwogfQorI2VuZGlmCiAKIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVC
bG9iRGF0YUZvckZpbGVXaXRoVHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAx
M2Q0YzFlZDZiZmIyNzYxMzAyZWQ2MTgxMThiMDY4ZWU0M2RlZGI4Li5hZTNiN2ViMzc3MGZlY2I3
NjBlMDliNjEzZTFiYzEwNTIwMDkwMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKQEAgLTg4NSw5ICs4ODUsMTEgQEAgT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXI6
OmRlZmF1bHRPYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFMKICAgICBT
dHJpbmcgZGVjb2RlZFBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7
CiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGRlY29kZWRQYXRoLnN1YnN0cmluZyhkZWNvZGVkUGF0
aC5yZXZlcnNlRmluZCgnLicpICsgMSk7CiAKLSAgICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkgYmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFpbHVyZQotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JF
eHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGRlY29k
ZWRQYXRoKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQorICAg
ICAgICAgICAgbWltZVR5cGUgPSBTdHJpbmcoKTsKKyAgICB9CiAKICNpZiAhUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oQ0hST01JVU0pICYmICFQTEFURk9STShFRkwpIC8vIE1hYyBoYXMgbm8g
UGx1Z2luRGF0YWJhc2UsIG5vciBkb2VzIENocm9taXVtIG9yIEVGTAogICAgIGlmIChtaW1lVHlw
ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAKaW5kZXggMDRmYjVlZGI1Njc0YzcyNDllY2UwZmMwMTkwMTUxYzljMmE5Nzhi
YS4uNGViYjUyYmNmYjE4YWM4ZTgzMjEzNmFjODQ2ZGJjOTI4ODhmMjk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNzAsNiAr
NzAsOCBAQCBzdGF0aWMgQXJjaGl2ZU1JTUVUeXBlc01hcCYgYXJjaGl2ZU1JTUVUeXBlcygpCiAg
ICAgbWltZVR5cGVzLnNldCgibXVsdGlwYXJ0L3JlbGF0ZWQiLCBhcmNoaXZlRmFjdG9yeUNyZWF0
ZTxNSFRNTEFyY2hpdmU+KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgbWltZVR5cGVzLnNldCgi
bWVzc2FnZS9yZmM4MjIiLCBhcmNoaXZlRmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KTsKKyNl
bGlmIFBMQVRGT1JNKFFUKQorICAgIG1pbWVUeXBlcy5zZXQoImFwcGxpY2F0aW9uL3gtbWltZWFy
Y2hpdmUiLCBhcmNoaXZlRmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KTsKICNlbmRpZgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5k
ZXggNDQwYjQyOTlhYmNiZGExMzczYzZlNmIxYWZjNWRiODIzMjc4N2I0NS4uNDA1MWJhYjUxOWQx
Zjg4MTI5YTc3Mzg4NTljOTg5MzkxZWQ5ZjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTQ4Miw2ICs0ODIsMjAgQEAgc3RhdGljIFN0cmlu
ZyBmaW5kTWltZVR5cGUoY29uc3QgVHlwZUV4dGVuc2lvblBhaXIqIHBhaXJzLCB1bnNpZ25lZCBu
dW1QYWlycywgY28KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBib29sIGNvbnRh
aW5zTWltZVR5cGUoY29uc3QgVHlwZUV4dGVuc2lvblBhaXIqIHBhaXJzLCB1bnNpZ25lZCBudW1Q
YWlycywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBl
Lmxvd2VyKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhaXJzOyArK2ksICsr
cGFpcnMpIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gcGFpcnMtPnR5cGUpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIHRocmVhZCBzYWZl
IGFuZCBzaG91bGQgbm90IGNvbnN1bHQgdGhlIE9TL3JlZ2lzdHJ5LgpAQCAtNDkxLDYgKzUwNSwx
NiBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpbwogICAgIHJldHVybiBmaW5kTWltZVR5cGUoY29t
bW9uTWVkaWFUeXBlcywgc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXMpIC8gc2l6ZW9mKGNvbW1vbk1l
ZGlhVHlwZXNbMF0pLCBleHRlbnNpb24pOwogfQogCitib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
V2VsbEtub3duTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICAvLyBUaGlz
IG1ldGhvZCBtdXN0IGJlIHRocmVhZCBzYWZlIGFuZCBzaG91bGQgbm90IGNvbnN1bHQgdGhlIE9T
L3JlZ2lzdHJ5LgorICAgIGJvb2wgZm91bmQgPSBjb250YWluc01pbWVUeXBlKHdlbGxLbm93bk1p
bWVUeXBlcywgc2l6ZW9mKHdlbGxLbm93bk1pbWVUeXBlcykgLyBzaXplb2Yod2VsbEtub3duTWlt
ZVR5cGVzWzBdKSwgbWltZVR5cGUpOworICAgIGlmIChmb3VuZCkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIGNvbnRhaW5zTWltZVR5cGUoY29tbW9uTWVkaWFUeXBlcywgc2l6ZW9m
KGNvbW1vbk1lZGlhVHlwZXMpIC8gc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXNbMF0pLCBtaW1lVHlw
ZSk7Cit9CisKKyNpZiAhUExBVEZPUk0oUVQpCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzaXplX3QgcG9zID0g
cGF0aC5yZXZlcnNlRmluZCgnLicpOwpAQCAtNTAyLDYgKzUyNiw3IEBAIFN0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0K
ICAgICByZXR1cm4gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7CiB9CisjZW5kaWYKIAogYm9v
bCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKQEAgLTYzOCw2ICs2NjMsMTMgQEAgY29uc3QgU3RyaW5nJiBkZWZhdWx0
TUlNRVR5cGUoKQogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7CiB9CiAKKyNpZiAhUExBVEZP
Uk0oUVQpICYmICFQTEFURk9STShCTEFDS0JFUlJZKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJl
dHVybiBtaW1lVHlwZTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gTUlNRVR5cGVBc3NvY2lhdGlvbk1hcDsKIApA
QCAtNjk2LDE4ICs3MjgsMTYgQEAgc3RhdGljIGNvbnN0IE1JTUVUeXBlQXNzb2NpYXRpb25NYXAm
IG1pbWVUeXBlQXNzb2NpYXRpb25NYXAoKQogCiAgICAgcmV0dXJuICptaW1lVHlwZU1hcDsKIH0K
LSNlbmRpZgogCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0jaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAg
ICBNSU1FVHlwZUFzc29jaWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUeXBlQXNz
b2NpYXRpb25NYXAoKS5maW5kKG1pbWVUeXBlKTsKIAogICAgIGlmIChpdCAhPSBtaW1lVHlwZUFz
c29jaWF0aW9uTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0jZW5kaWYK
KwogICAgIHJldHVybiBtaW1lVHlwZTsKIH0KLQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA1
NjEyYjkyMjNhMjM0MWIxOTdkNTM4ZGVhNDdlNDk4NGU0YjNjY2ExLi41MTdjMzIyOTNhNTc5NmVk
ODFhNTgxODhhNmRlYzlkNmJjZWRiODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oCkBAIC03OCw2ICs3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBicm93c2Vy
IChlLmcuIGEgUXQgUGx1Z2luKS4KICAgICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uUGx1Z2lu
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKKyAgICAvLyBDaGVjayB0byBzZWUg
aWYgdGhlIG1pbWUgdHlwZSBpcyBpbiB0aGUgd2hpdGUtbGlzdCBvZiAid2VsbC1rbm93biIgTUlN
RSB0eXBlcy4KKyAgICBzdGF0aWMgYm9vbCBpc1dlbGxLbm93bk1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOworCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbWltZSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBzaG93biBpbnNpZGUgYSBwYWdlLgogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBhbnkgb2YgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKCksIGlzU3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZSgpLCBpc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUoKSByZXR1cm5zIHRydWUKICAg
ICAvLyBvciBpZiBnaXZlbiBtaW1lIHR5cGUgYmVnaW5zIHdpdGggInRleHQvIiBhbmQgaXNVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZSgpIHJldHVybnMgZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3Bw
CmluZGV4IGI4M2YyYmEwOGMyMTU0OTZhZDJlODIyNDhkMmZhODRlMWFjOGM4OTguLjlmNTZhN2My
OGEyMmEzNDNiYzVmZTU0MmQ1ODIyMTMxYWI3MGJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3Bw
CkBAIC01ODEsOCArNTgxLDE1IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNw
b25zZUlmTmVlZGVkKCkKIAogICAgICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZp
bGVuYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVk
RmlsZW5hbWUodXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIFN0cmluZyBtaW1lRXh0ZW5zaW9uID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVy
cmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgICAgICAgICAgaWYgKG1pbWVF
eHRlbnNpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKHVybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIFFGaWxlSW5mbyBmaSh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoU3RyaW5nKGZpLmJh
c2VOYW1lKCkpICsgIi4iICsgbWltZUV4dGVuc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXNDb2RlKTsKICAg
ICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQobV9yZXBseVdyYXBwZXItPnJlcGx5KCkt
PmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRv
Qnl0ZUFycmF5KCkuY29uc3REYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKaW5kZXggYmM1NTUzYWVjMTZjNWQyNzMxNGVjYTQ2
YTRiYzNiZmMzMmFjMDYwZi4uMWY5ZGY3MjI3MDNiYjQzODU3MjAwY2UwN2FiYmU4YmE3OTAxMDgw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3Ry
eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5
UXQuY3BwCkBAIC0yOSw3OCArMjksNTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKKyNpbmNsdWRlIDxRTWltZURhdGFiYXNlPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgRXh0ZW5zaW9uTWFwIHsKLSAgICBjb25zdCBjaGFy
KiBleHRlbnNpb247Ci0gICAgY29uc3QgY2hhciogbWltZVR5cGU7Ci19OworU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQor
eworICAgIC8vIFFNaW1lRGF0YWJhc2UgbGFja3MgdGhlIGFiaWxpdHkgdG8gcXVlcnkgYnkgZXh0
ZW5zaW9uIGFsb25lLCBzbyB3ZSBjcmVhdGUgYSBmYWtlIGZpbGVuYW1lIHRvIGxvb2t1cC4KKyAg
ICBjb25zdCBTdHJpbmcgZmlsZW5hbWUgPSAiZmlsZW5hbWUuIiArIGV4dC5sb3dlcigpOwogCi1z
dGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbk1hcFtdID0gewotICAgIHsgImJtcCIs
ICJpbWFnZS9ibXAiIH0sCi0gICAgeyAiY3NzIiwgInRleHQvY3NzIiB9LAotICAgIHsgImdpZiIs
ICJpbWFnZS9naWYiIH0sCi0gICAgeyAiaHRtbCIsICJ0ZXh0L2h0bWwiIH0sCi0gICAgeyAiaHRt
IiwgInRleHQvaHRtbCIgfSwKLSAgICB7ICJpY28iLCAiaW1hZ2UveC1pY29uIiB9LAotICAgIHsg
ImpwZWciLCAiaW1hZ2UvanBlZyIgfSwKLSAgICB7ICJqcGciLCAiaW1hZ2UvanBlZyIgfSwKLSAg
ICB7ICJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiIH0sCi0gICAgeyAibW5nIiwgInZp
ZGVvL3gtbW5nIiB9LAotICAgIHsgIm1wNCIsICJ2aWRlby9tcDQiIH0sCi0gICAgeyAibTR2Iiwg
InZpZGVvL21wNCIgfSwKLSAgICB7ICJtNGEiLCAiYXVkaW8veC1tNGEiIH0sCi0gICAgeyAibWh0
IiwgIm11bHRpcGFydC9yZWxhdGVkIiB9LAotICAgIHsgIm1odG1sIiwgIm11bHRpcGFydC9yZWxh
dGVkIiB9LAotICAgIHsgIm1wMyIsICJhdWRpby9tcDMiIH0sCi0gICAgeyAib2d2IiwgInZpZGVv
L29nZyIgfSwKLSAgICB7ICJvZ2EiLCAiYXVkaW8vb2dnIiB9LAotICAgIHsgIm9nbSIsICJhdWRp
by9vZ2ciIH0sCi0gICAgeyAib2dnIiwgImF1ZGlvL29nZyIgfSwKLSAgICB7ICJ3ZWJtIiwgInZp
ZGVvL3dlYm0iIH0sCi0gICAgeyAid2VibSIsICJhdWRpby93ZWJtIiB9LAotICAgIHsgIndhdiIs
ICJhdWRpby93YXYiIH0sCi0gICAgeyAibW92IiwgInZpZGVvL3F1aWNrdGltZSIgfSwKLSAgICB7
ICJwYm0iLCAiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiIH0sCi0gICAgeyAicGdtIiwgImltYWdl
L3gtcG9ydGFibGUtZ3JheW1hcCIgfSwKLSAgICB7ICJwZGYiLCAiYXBwbGljYXRpb24vcGRmIiB9
LAotICAgIHsgInBuZyIsICJpbWFnZS9wbmciIH0sCi0gICAgeyAicHBtIiwgImltYWdlL3gtcG9y
dGFibGUtcGl4bWFwIiB9LAotICAgIHsgInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiB9LAot
ICAgIHsgInN2ZyIsICJpbWFnZS9zdmcreG1sIiB9LAotICAgIHsgInRleHQiLCAidGV4dC9wbGFp
biIgfSwKLSAgICB7ICJ0aWYiLCAiaW1hZ2UvdGlmZiIgfSwKLSAgICB7ICJ0aWZmIiwgImltYWdl
L3RpZmYiIH0sCi0gICAgeyAidHh0IiwgInRleHQvcGxhaW4iIH0sCi0gICAgeyAieGJtIiwgImlt
YWdlL3gteGJpdG1hcCIgfSwKLSAgICB7ICJ4bWwiLCAidGV4dC94bWwiIH0sCi0gICAgeyAieHBt
IiwgImltYWdlL3gteHBtIiB9LAotICAgIHsgInhzbCIsICJ0ZXh0L3hzbCIgfSwKLSAgICB7ICJ4
aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIH0sCi0gICAgeyAid21sIiwgInRleHQvdm5k
LndhcC53bWwiIH0sCi0gICAgeyAid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiIH0s
Ci0gICAgeyAwLCAwIH0KLX07CisgICAgUU1pbWVUeXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFz
ZSgpLm1pbWVUeXBlRm9yRmlsZShmaWxlbmFtZSwgUU1pbWVEYXRhYmFzZTo6TWF0Y2hFeHRlbnNp
b24pOworICAgIGlmIChtaW1lVHlwZS5pc1ZhbGlkKCkgJiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgp
KQorICAgICAgICByZXR1cm4gbWltZVR5cGUubmFtZSgpOwogCi1TdHJpbmcgTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVG
b3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIFFNaW1lVHlwZSB0eXBlID0gUU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yRmlsZShw
YXRoLCBRTWltZURhdGFiYXNlOjpNYXRjaEV4dGVuc2lvbik7CisgICAgaWYgKHR5cGUuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm4gdHlwZS5uYW1lKCk7CiAKLSAgICBTdHJpbmcgcyA9IGV4dC5s
b3dlcigpOworICAgIHJldHVybiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKK30KIAotICAg
IGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9IGV4dGVuc2lvbk1hcDsKLSAgICB3aGlsZSAoZS0+ZXh0
ZW5zaW9uKSB7Ci0gICAgICAgIGlmIChzID09IGUtPmV4dGVuc2lvbikKLSAgICAgICAgICAgIHJl
dHVybiBlLT5taW1lVHlwZTsKLSAgICAgICAgKytlOwotICAgIH0KK1N0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlTmFtZSkKK3sKKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBRTWltZURhdGFiYXNlKCku
bWltZVR5cGVGb3JOYW1lKG1pbWVUeXBlTmFtZSk7CisgICAgaWYgKG1pbWVUeXBlLmlzVmFsaWQo
KSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5wcmVm
ZXJyZWRTdWZmaXgoKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
TmFtZSkKK3sKKyAgICAvLyBUaGlzIGxvb2tzIHVwIHRoZSBtaW1lIHR5cGUgb2JqZWN0IGJ5IHBy
ZWZlcnJlZCBuYW1lIG9yIGFsaWFzLCBhbmQgcmV0dXJucyB0aGUgcHJlZmVycmVkIG5hbWUuCisg
ICAgUU1pbWVUeXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yTmFtZSht
aW1lVHlwZU5hbWUpOworICAgIGlmIChtaW1lVHlwZS5pc1ZhbGlkKCkgJiYgIW1pbWVUeXBlLmlz
RGVmYXVsdCgpKQorICAgICAgICByZXR1cm4gbWltZVR5cGUubmFtZSgpOworCisgICAgcmV0dXJu
IG1pbWVUeXBlTmFtZTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9u
UGx1Z2luTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gbWlt
ZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24veC1xdC1wbHVnaW4iLCBmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwCmluZGV4IDA3MzFkOTMxNThhMTZmOTczMGU4NDFlMjA4MTdhODgyMmI0ZTYxNDguLmQ4
ZTY1MWZmM2Q1ZDIwYmZjMmQwZmNmNjkwY2RkZDg0M2ZmYjJiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApA
QCAtMTM1MCwyMiArMTM1MCwyNCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVu
dFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogT2JqZWN0Q29u
dGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcykKIHsKICAgICAvLyBxRGVidWcoKTw8IiArKysrKysrKysrKysrKysrIHVybCBp
cyAiPDx1cmwuc3RyaW5nKCk8PCIsIG1pbWUgPSAiPDxtaW1lVHlwZUluOwotICAgIFFGaWxlSW5m
byBmaSh1cmwucGF0aCgpKTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZmkuc3VmZml4KCk7Ci0g
ICAgaWYgKG1pbWVUeXBlSW4gPT0gImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiB8fCBtaW1lVHlw
ZUluID09ICJhcHBsaWNhdGlvbi94LXF0LXN0eWxlZC13aWRnZXQiKQorICAgIGlmIChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUobWltZVR5cGVJbikpCiAgICAg
ICAgIHJldHVybiBPYmplY3RDb250ZW50T3RoZXJQbHVnaW47CiAKLSAgICBpZiAodXJsLmlzRW1w
dHkoKSAmJiAhbWltZVR5cGVJbi5sZW5ndGgoKSkKKyAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiBt
aW1lVHlwZUluLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnROb25lOwog
CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gbWltZVR5cGVJbjsKLSAgICBpZiAoIW1pbWVUeXBlLmxl
bmd0aCgpKQotICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewor
ICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCh1
cmwucGF0aCgpKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQor
ICAgICAgICAgICAgbWltZVR5cGUgPSBTdHJpbmcoKTsKKyAgICB9CiAKLSAgICBpZiAoIW1pbWVU
eXBlLmxlbmd0aCgpKQotICAgICAgICBtaW1lVHlwZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxs
ZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgUUZpbGVJ
bmZvIGZpKHVybC5wYXRoKCkpOworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAg
IG1pbWVUeXBlID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+TUlNRVR5cGVG
b3JFeHRlbnNpb24oZmkuc3VmZml4KCkpOwogCi0gICAgaWYgKCFtaW1lVHlwZS5sZW5ndGgoKSkK
KyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVu
dEZyYW1lOwogCiAgICAgT2JqZWN0Q29udGVudFR5cGUgcGx1Z0luVHlwZSA9IE9iamVjdENvbnRl
bnROb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBiM2RmM2I1OGYx
M2U3NGRkYzViZTQ5MGY0ODMxMDk2ZTZjNDNjN2M0Li4wM2M1YTQ4ZTQyYTkxZmRmYTFhZGU0NjRk
OWVkZmViYWYzYTliMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
MTQyMywxOSArMTQyMywyMSBAQCBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdAogICAgIC8vIGlzIGNv
bnNvbGlkYXRlZC4KIAogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47Ci0gICAgaWYg
KG1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gdXJsLnBh
dGgoKS5zdWJzdHJpbmcodXJsLnBhdGgoKS5yZXZlcnNlRmluZCgnLicpICsgMSkubG93ZXIoKTsK
IAorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVHJ5IHRvIGd1ZXNz
IHRoZSBNSU1FIHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uLgotICAgICAgICBtaW1lVHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7Ci0KLSAg
ICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gQ2hlY2sgaWYg
dGhlcmUncyBhIHBsdWctaW4gYXJvdW5kIHRoYXQgY2FuIGhhbmRsZSB0aGUgZXh0ZW5zaW9uLgot
ICAgICAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9IHdlYlBhZ2UtPmNvcmVQ
YWdlKCktPnBsdWdpbkRhdGEoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luU3Vw
cG9ydHNFeHRlbnNpb24ocGx1Z2luRGF0YSwgZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW47Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9y
UGF0aCh1cmwucGF0aCgpKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGRlZmF1bHRNSU1FVHlw
ZSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBpZiAo
bWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSB1cmwucGF0
aCgpLnN1YnN0cmluZyh1cmwucGF0aCgpLnJldmVyc2VGaW5kKCcuJykgKyAxKS5sb3dlcigpOwor
ICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgcGx1Zy1pbiBhcm91bmQgdGhhdCBjYW4gaGFu
ZGxlIHRoZSBleHRlbnNpb24uCisgICAgICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBpZiAoUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9IHdl
YlBhZ2UtPmNvcmVQYWdlKCktPnBsdWdpbkRhdGEoKSkgeworICAgICAgICAgICAgICAgIGlmIChw
bHVnaW5TdXBwb3J0c0V4dGVuc2lvbihwbHVnaW5EYXRhLCBleHRlbnNpb24pKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudE5ldHNjYXBlUGx1Z2luOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174960</attachid>
            <date>2012-11-19 05:24:18 -0800</date>
            <delta_ts>2012-11-19 05:37:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121119142143.patch</filename>
            <type>text/plain</type>
            <size>19550</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjOTA5OWJkODZjZDNl
ODBlNzE1MTE2NmEwZjI4Y2U3Njc0YjAzMC4uNzJkMzNjYTcxZDhhNWFhYjI2Njc5NmM1MjkyOTdi
MzJlYTRlZTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLiBUbyBzdXBwb3J0IFVu
aXgKKyAgICAgICAgc3R5bGUgbXVsdGktZXh0ZW5zaW9ucyAoZS5nLiB0YXIuZ3opLCBzb21lIGxv
YWRlcnMgd2lsbCBub3cgcHJlZmVyIG1pbWV0eXBlIGRldGVjdGlvbgorICAgICAgICBieSBmaWxl
bmFtZSBvdmVyIGRldGVjdGlvbiBieSBleHRlbnNpb24gYWxvbmUuCisKKyAgICAgICAgU3VwcG9y
dCBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb24gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUgd2FzIGFsc28gYWRkZWQgdG8gUXQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5
cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zTWltZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNXZWxsS25vd25NSU1FVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6bWltZVR5cGVBc3NvY2lhdGlvbk1hcCk6CisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAoTUlNRVR5cGVSZWdpc3RyeSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9u
Rm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9y
bWFsaXplZE1JTUVUeXBlKToKKwogMjAxMi0xMS0xOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgaW5wdXQudmFsdWU9IiIgc2hvdWxkIGNsZWFyIGRhdGUvdGlt
ZSBpbnB1dCBlbGVtZW50cyB3aXRoIHBhcnRpYWwgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMx
NmJjODZhZDY5NTRmMGU1NGEwN2M5MjQ1ODUyYjM0YTZkMDM3NzMuLjgwZmVhYWZjYmI4NWYwZjJl
ZjQyYTkxMjAzYTUyZDFiNDBkOTIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMTEtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBMb29rdXAgbWltZXR5cGVzIHVzaW5nIFFNaW1lRGF0YWJhc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvb2t1cCBt
aW1ldHlwZSBieSBmaWxlbmFtZSBpbnN0ZWFkIG9mIGp1c3QgbGFzdCBleHRlbnNpb24uCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKwogMjAx
Mi0xMS0xOCAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtRdF0gUmVtb3ZlIHJlbWFpbmluZyB0cmFjZXMgb2Ygc3ltYmlhbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM3
NDBkNDc4M2M5YWVkNTAwYmQzMmFkNTY2ODAyYTBlZGYxMDI1OTIuLmQ3ZGM2OGMxMzAxOWM4ZTFj
YzUwMmNjNWRlM2IwYWM2ZjIxMjlmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMS0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4K
KworICAgICAgICBbUXRdIExvb2t1cCBtaW1ldHlwZXMgdXNpbmcgUU1pbWVEYXRhYmFzZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9va3VwIG1pbWV0
eXBlIGJ5IGZpbGVuYW1lIGluc3RlYWQgb2YganVzdCBsYXN0IGV4dGVuc2lvbi4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUp
OgorCiAyMDEyLTExLTE5ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwMDQ0
OGNhZTA0ZjExYmQ0ODE4YjAzZGMzOTA2ZDU5NjIzZjUzODdjLi5iODNmM2NjMjU2MzBjY2QzNjM1
NTkzYmQzMjUzMTQwOTVkYjU2MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDQ2LDYgKzQ0
Niw3IEBAIF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFUE5TXzVGcmFtZUUK
IF9fWk43V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFUE5TXzVSYW5nZUUKIF9fWk43
V2ViQ29yZTE2TGVnYWN5V2ViQXJjaGl2ZTZjcmVhdGVFdgogX19aTjdXZWJDb3JlMTZNSU1FVHlw
ZVJlZ2lzdHJ5MTVjYW5TaG93TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
Nk1JTUVUeXBlUmVnaXN0cnkxOGdldE1JTUVUeXBlRm9yUGF0aEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTIzZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb25FUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyNGlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdp
c3RyeTI2Z2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
aW5kZXggNjkyYmRlMWFjYTBhZDdjMTYxYzRkM2Y0OGVkMjEzNmEzYTUyYWRjMC4uMzUzNWFjNGM5
MWNkYjI4OGVlOTA3ZjI3ODA4ZTBmNzE3Y2Q0NGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CkBAIC0zNCw2ICszNCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9S
TShRVCkKK3N0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvb2t1cFBvbGljeSBwb2xpY3kpCit7CisgICAg
U3RyaW5nIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobmFtZSk7
CisgICAgaWYgKHBvbGljeSA9PSBGaWxlOjpXZWxsS25vd25Db250ZW50VHlwZXMpIHsKKyAgICAg
ICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1dlbGxLbm93bk1JTUVUeXBlKHR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChw
b2xpY3kgPT0gRmlsZTo6QWxsQ29udGVudFR5cGVzKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gZGVm
YXVsdE1JTUVUeXBlKCkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAg
IHJldHVybiB0eXBlOworfQorI2Vsc2UKIHN0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9t
RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvb2t1cFBvbGlj
eSBwb2xpY3kpCiB7CiAgICAgU3RyaW5nIHR5cGU7CkBAIC00OCw2ICs2Myw3IEBAIHN0YXRpYyBT
dHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
OjpDb250ZW50VHlwZUxvCiAgICAgfQogICAgIHJldHVybiB0eXBlOwogfQorI2VuZGlmCiAKIHN0
YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxM2Q0YzFlZDZiZmIyNzYxMzAyZWQ2MTgx
MThiMDY4ZWU0M2RlZGI4Li5hZTNiN2ViMzc3MGZlY2I3NjBlMDliNjEzZTFiYzEwNTIwMDkwMzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTg4NSw5ICs4ODUsMTEg
QEAgT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXI6OmRlZmF1bHRPYmplY3RDb250ZW50VHlw
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFMKICAgICBTdHJpbmcgZGVjb2RlZFBhdGggPSBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7CiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9
IGRlY29kZWRQYXRoLnN1YnN0cmluZyhkZWNvZGVkUGF0aC5yZXZlcnNlRmluZCgnLicpICsgMSk7
CiAKLSAgICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQ
YXRoKCkgYmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVwb24g
ZmFpbHVyZQotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIG1pbWVUeXBlID0g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAg
ICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGRlY29kZWRQYXRoKTsKKyAgICAgICAgaWYgKG1p
bWVUeXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBTdHJp
bmcoKTsKKyAgICB9CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oQ0hST01JVU0p
ICYmICFQTEFURk9STShFRkwpIC8vIE1hYyBoYXMgbm8gUGx1Z2luRGF0YWJhc2UsIG5vciBkb2Vz
IENocm9taXVtIG9yIEVGTAogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggMDRmYjVl
ZGI1Njc0YzcyNDllY2UwZmMwMTkwMTUxYzljMmE5NzhiYS4uNGViYjUyYmNmYjE4YWM4ZTgzMjEz
NmFjODQ2ZGJjOTI4ODhmMjk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNzAsNiArNzAsOCBAQCBzdGF0aWMgQXJjaGl2ZU1J
TUVUeXBlc01hcCYgYXJjaGl2ZU1JTUVUeXBlcygpCiAgICAgbWltZVR5cGVzLnNldCgibXVsdGlw
YXJ0L3JlbGF0ZWQiLCBhcmNoaXZlRmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KTsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgbWltZVR5cGVzLnNldCgibWVzc2FnZS9yZmM4MjIiLCBhcmNoaXZl
RmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIG1p
bWVUeXBlcy5zZXQoImFwcGxpY2F0aW9uL3gtbWltZWFyY2hpdmUiLCBhcmNoaXZlRmFjdG9yeUNy
ZWF0ZTxNSFRNTEFyY2hpdmU+KTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNDQwYjQyOTlhYmNiZGExMzczYzZl
NmIxYWZjNWRiODIzMjc4N2I0NS4uNDA1MWJhYjUxOWQxZjg4MTI5YTc3Mzg4NTljOTg5MzkxZWQ5
ZjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
QEAgLTQ4Miw2ICs0ODIsMjAgQEAgc3RhdGljIFN0cmluZyBmaW5kTWltZVR5cGUoY29uc3QgVHlw
ZUV4dGVuc2lvblBhaXIqIHBhaXJzLCB1bnNpZ25lZCBudW1QYWlycywgY28KICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBib29sIGNvbnRhaW5zTWltZVR5cGUoY29uc3QgVHlwZUV4
dGVuc2lvblBhaXIqIHBhaXJzLCB1bnNpZ25lZCBudW1QYWlycywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKK3sKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlLmxvd2VyKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bVBhaXJzOyArK2ksICsrcGFpcnMpIHsKKyAgICAgICAgaWYgKHR5
cGUgPT0gcGFpcnMtPnR5cGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25v
d25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICAv
LyBUaGlzIG1ldGhvZCBtdXN0IGJlIHRocmVhZCBzYWZlIGFuZCBzaG91bGQgbm90IGNvbnN1bHQg
dGhlIE9TL3JlZ2lzdHJ5LgpAQCAtNDkxLDYgKzUwNSwxNiBAQCBTdHJpbmcgTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpbwogICAgIHJldHVybiBmaW5kTWltZVR5cGUoY29tbW9uTWVkaWFUeXBlcywgc2l6ZW9mKGNv
bW1vbk1lZGlhVHlwZXMpIC8gc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXNbMF0pLCBleHRlbnNpb24p
OwogfQogCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzV2VsbEtub3duTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIHRocmVhZCBz
YWZlIGFuZCBzaG91bGQgbm90IGNvbnN1bHQgdGhlIE9TL3JlZ2lzdHJ5LgorICAgIGJvb2wgZm91
bmQgPSBjb250YWluc01pbWVUeXBlKHdlbGxLbm93bk1pbWVUeXBlcywgc2l6ZW9mKHdlbGxLbm93
bk1pbWVUeXBlcykgLyBzaXplb2Yod2VsbEtub3duTWltZVR5cGVzWzBdKSwgbWltZVR5cGUpOwor
ICAgIGlmIChmb3VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvbnRhaW5z
TWltZVR5cGUoY29tbW9uTWVkaWFUeXBlcywgc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXMpIC8gc2l6
ZW9mKGNvbW1vbk1lZGlhVHlwZXNbMF0pLCBtaW1lVHlwZSk7Cit9CisKKyNpZiAhUExBVEZPUk0o
UVQpCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBzaXplX3QgcG9zID0gcGF0aC5yZXZlcnNlRmluZCgnLicpOwpA
QCAtNTAyLDYgKzUyNiw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
clBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0KICAgICByZXR1cm4gImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSI7CiB9CisjZW5kaWYKIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKQEAgLTYzOCw2
ICs2NjMsMTMgQEAgY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQogICAgIHJldHVybiBk
ZWZhdWx0TUlNRVR5cGU7CiB9CiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShCTEFD
S0JFUlJZKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBtaW1lVHlwZTsKK30KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gTUlNRVR5cGVBc3NvY2lhdGlvbk1hcDsKIApAQCAtNjk2LDE4ICs3MjgsMTYgQEAgc3Rh
dGljIGNvbnN0IE1JTUVUeXBlQXNzb2NpYXRpb25NYXAmIG1pbWVUeXBlQXNzb2NpYXRpb25NYXAo
KQogCiAgICAgcmV0dXJuICptaW1lVHlwZU1hcDsKIH0KLSNlbmRpZgogCiBTdHJpbmcgTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7Ci0jaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBNSU1FVHlwZUFzc29jaWF0aW9uTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUeXBlQXNzb2NpYXRpb25NYXAoKS5maW5kKG1pbWVU
eXBlKTsKIAogICAgIGlmIChpdCAhPSBtaW1lVHlwZUFzc29jaWF0aW9uTWFwKCkuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0jZW5kaWYKKwogICAgIHJldHVybiBtaW1lVHlwZTsK
IH0KLQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA1NjEyYjkyMjNhMjM0MWIxOTdkNTM4ZGVh
NDdlNDk4NGU0YjNjY2ExLi41MTdjMzIyOTNhNTc5NmVkODFhNTgxODhhNmRlYzlkNmJjZWRiODRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC03OCw2
ICs3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBicm93c2VyIChlLmcuIGEgUXQgUGx1Z2luKS4KICAg
ICBzdGF0aWMgYm9vbCBpc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CiAKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIG1pbWUgdHlwZSBpcyBpbiB0
aGUgd2hpdGUtbGlzdCBvZiAid2VsbC1rbm93biIgTUlNRSB0eXBlcy4KKyAgICBzdGF0aWMgYm9v
bCBpc1dlbGxLbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIGEgbWltZSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBzaG93biBp
bnNpZGUgYSBwYWdlLgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgaXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlKCksIGlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZSgpLCBpc1N1cHBvcnRl
ZE1lZGlhTUlNRVR5cGUoKSByZXR1cm5zIHRydWUKICAgICAvLyBvciBpZiBnaXZlbiBtaW1lIHR5
cGUgYmVnaW5zIHdpdGggInRleHQvIiBhbmQgaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZSgpIHJl
dHVybnMgZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCmluZGV4IGI4M2YyYmEwOGMyMTU0OTZh
ZDJlODIyNDhkMmZhODRlMWFjOGM4OTguLjlmNTZhN2MyOGEyMmEzNDNiYzVmZTU0MmQ1ODIyMTMx
YWI3MGJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCkBAIC01ODEsOCArNTgxLDE1IEBAIHZv
aWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkKIAogICAgICAg
ICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3BvbnNl
LnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUodXJsLmxhc3RQYXRoQ29t
cG9uZW50KCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBtaW1lRXh0ZW5z
aW9uID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUo
bWltZVR5cGUpOworICAgICAgICAgICAgaWYgKG1pbWVFeHRlbnNpb24uaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHVybC5sYXN0UGF0aENv
bXBvbmVudCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFFGaWxlSW5m
byBmaSh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
c2V0U3VnZ2VzdGVkRmlsZW5hbWUoU3RyaW5nKGZpLmJhc2VOYW1lKCkpICsgIi4iICsgbWltZUV4
dGVuc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzQ29kZShzdGF0dXNDb2RlKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c1RleHQobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVl
c3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvQnl0ZUFycmF5KCkuY29uc3REYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3Ry
eVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5j
cHAKaW5kZXggYmM1NTUzYWVjMTZjNWQyNzMxNGVjYTQ2YTRiYzNiZmMzMmFjMDYwZi4uMWY5ZGY3
MjI3MDNiYjQzODU3MjAwY2UwN2FiYmU4YmE3OTAxMDgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwCkBAIC0yOSw3OCArMjksNTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAK
KyNpbmNsdWRlIDxRTWltZURhdGFiYXNlPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1
Y3QgRXh0ZW5zaW9uTWFwIHsKLSAgICBjb25zdCBjaGFyKiBleHRlbnNpb247Ci0gICAgY29uc3Qg
Y2hhciogbWltZVR5cGU7Ci19OworU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQoreworICAgIC8vIFFNaW1lRGF0YWJhc2Ug
bGFja3MgdGhlIGFiaWxpdHkgdG8gcXVlcnkgYnkgZXh0ZW5zaW9uIGFsb25lLCBzbyB3ZSBjcmVh
dGUgYSBmYWtlIGZpbGVuYW1lIHRvIGxvb2t1cC4KKyAgICBjb25zdCBTdHJpbmcgZmlsZW5hbWUg
PSAiZmlsZW5hbWUuIiArIGV4dC5sb3dlcigpOwogCi1zdGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFw
IGV4dGVuc2lvbk1hcFtdID0gewotICAgIHsgImJtcCIsICJpbWFnZS9ibXAiIH0sCi0gICAgeyAi
Y3NzIiwgInRleHQvY3NzIiB9LAotICAgIHsgImdpZiIsICJpbWFnZS9naWYiIH0sCi0gICAgeyAi
aHRtbCIsICJ0ZXh0L2h0bWwiIH0sCi0gICAgeyAiaHRtIiwgInRleHQvaHRtbCIgfSwKLSAgICB7
ICJpY28iLCAiaW1hZ2UveC1pY29uIiB9LAotICAgIHsgImpwZWciLCAiaW1hZ2UvanBlZyIgfSwK
LSAgICB7ICJqcGciLCAiaW1hZ2UvanBlZyIgfSwKLSAgICB7ICJqcyIsICJhcHBsaWNhdGlvbi94
LWphdmFzY3JpcHQiIH0sCi0gICAgeyAibW5nIiwgInZpZGVvL3gtbW5nIiB9LAotICAgIHsgIm1w
NCIsICJ2aWRlby9tcDQiIH0sCi0gICAgeyAibTR2IiwgInZpZGVvL21wNCIgfSwKLSAgICB7ICJt
NGEiLCAiYXVkaW8veC1tNGEiIH0sCi0gICAgeyAibWh0IiwgIm11bHRpcGFydC9yZWxhdGVkIiB9
LAotICAgIHsgIm1odG1sIiwgIm11bHRpcGFydC9yZWxhdGVkIiB9LAotICAgIHsgIm1wMyIsICJh
dWRpby9tcDMiIH0sCi0gICAgeyAib2d2IiwgInZpZGVvL29nZyIgfSwKLSAgICB7ICJvZ2EiLCAi
YXVkaW8vb2dnIiB9LAotICAgIHsgIm9nbSIsICJhdWRpby9vZ2ciIH0sCi0gICAgeyAib2dnIiwg
ImF1ZGlvL29nZyIgfSwKLSAgICB7ICJ3ZWJtIiwgInZpZGVvL3dlYm0iIH0sCi0gICAgeyAid2Vi
bSIsICJhdWRpby93ZWJtIiB9LAotICAgIHsgIndhdiIsICJhdWRpby93YXYiIH0sCi0gICAgeyAi
bW92IiwgInZpZGVvL3F1aWNrdGltZSIgfSwKLSAgICB7ICJwYm0iLCAiaW1hZ2UveC1wb3J0YWJs
ZS1iaXRtYXAiIH0sCi0gICAgeyAicGdtIiwgImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCIgfSwK
LSAgICB7ICJwZGYiLCAiYXBwbGljYXRpb24vcGRmIiB9LAotICAgIHsgInBuZyIsICJpbWFnZS9w
bmciIH0sCi0gICAgeyAicHBtIiwgImltYWdlL3gtcG9ydGFibGUtcGl4bWFwIiB9LAotICAgIHsg
InJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiB9LAotICAgIHsgInN2ZyIsICJpbWFnZS9zdmcr
eG1sIiB9LAotICAgIHsgInRleHQiLCAidGV4dC9wbGFpbiIgfSwKLSAgICB7ICJ0aWYiLCAiaW1h
Z2UvdGlmZiIgfSwKLSAgICB7ICJ0aWZmIiwgImltYWdlL3RpZmYiIH0sCi0gICAgeyAidHh0Iiwg
InRleHQvcGxhaW4iIH0sCi0gICAgeyAieGJtIiwgImltYWdlL3gteGJpdG1hcCIgfSwKLSAgICB7
ICJ4bWwiLCAidGV4dC94bWwiIH0sCi0gICAgeyAieHBtIiwgImltYWdlL3gteHBtIiB9LAotICAg
IHsgInhzbCIsICJ0ZXh0L3hzbCIgfSwKLSAgICB7ICJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRt
bCt4bWwiIH0sCi0gICAgeyAid21sIiwgInRleHQvdm5kLndhcC53bWwiIH0sCi0gICAgeyAid21s
YyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiIH0sCi0gICAgeyAwLCAwIH0KLX07CisgICAg
UU1pbWVUeXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yRmlsZShmaWxl
bmFtZSwgUU1pbWVEYXRhYmFzZTo6TWF0Y2hFeHRlbnNpb24pOworICAgIGlmIChtaW1lVHlwZS5p
c1ZhbGlkKCkgJiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgpKQorICAgICAgICByZXR1cm4gbWltZVR5
cGUubmFtZSgpOwogCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRl
bnNpb24oY29uc3QgU3RyaW5nICZleHQpCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFFNaW1lVHlwZSB0eXBlID0g
UU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yRmlsZShwYXRoLCBRTWltZURhdGFiYXNlOjpNYXRj
aEV4dGVuc2lvbik7CisgICAgaWYgKHR5cGUuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHlw
ZS5uYW1lKCk7CiAKLSAgICBTdHJpbmcgcyA9IGV4dC5sb3dlcigpOworICAgIHJldHVybiAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKK30KIAotICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9
IGV4dGVuc2lvbk1hcDsKLSAgICB3aGlsZSAoZS0+ZXh0ZW5zaW9uKSB7Ci0gICAgICAgIGlmIChz
ID09IGUtPmV4dGVuc2lvbikKLSAgICAgICAgICAgIHJldHVybiBlLT5taW1lVHlwZTsKLSAgICAg
ICAgKytlOwotICAgIH0KK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRl
bnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlTmFtZSkKK3sKKyAgICBRTWlt
ZVR5cGUgbWltZVR5cGUgPSBRTWltZURhdGFiYXNlKCkubWltZVR5cGVGb3JOYW1lKG1pbWVUeXBl
TmFtZSk7CisgICAgaWYgKG1pbWVUeXBlLmlzVmFsaWQoKSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0
KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5wcmVmZXJyZWRTdWZmaXgoKTsKIAogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6
ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlTmFtZSkKK3sKKyAgICAvLyBUaGlzIGxv
b2tzIHVwIHRoZSBtaW1lIHR5cGUgb2JqZWN0IGJ5IHByZWZlcnJlZCBuYW1lIG9yIGFsaWFzLCBh
bmQgcmV0dXJucyB0aGUgcHJlZmVycmVkIG5hbWUuCisgICAgUU1pbWVUeXBlIG1pbWVUeXBlID0g
UU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yTmFtZShtaW1lVHlwZU5hbWUpOworICAgIGlmICht
aW1lVHlwZS5pc1ZhbGlkKCkgJiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgpKQorICAgICAgICByZXR1
cm4gbWltZVR5cGUubmFtZSgpOworCisgICAgcmV0dXJuIG1pbWVUeXBlTmFtZTsKK30KKwogYm9v
bCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGlj
YXRpb24veC1xdC1wbHVnaW4iLCBmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDA3MzFkOTMxNThh
MTZmOTczMGU4NDFlMjA4MTdhODgyMmI0ZTYxNDguLmQ4ZTY1MWZmM2Q1ZDIwYmZjMmQwZmNmNjkw
Y2RkZDg0M2ZmYjJiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtMTM1MCwyMiArMTM1MCwyNCBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZwogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGll
bnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICAvLyBx
RGVidWcoKTw8IiArKysrKysrKysrKysrKysrIHVybCBpcyAiPDx1cmwuc3RyaW5nKCk8PCIsIG1p
bWUgPSAiPDxtaW1lVHlwZUluOwotICAgIFFGaWxlSW5mbyBmaSh1cmwucGF0aCgpKTsKLSAgICBT
dHJpbmcgZXh0ZW5zaW9uID0gZmkuc3VmZml4KCk7Ci0gICAgaWYgKG1pbWVUeXBlSW4gPT0gImFw
cGxpY2F0aW9uL3gtcXQtcGx1Z2luIiB8fCBtaW1lVHlwZUluID09ICJhcHBsaWNhdGlvbi94LXF0
LXN0eWxlZC13aWRnZXQiKQorICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9u
UGx1Z2luTUlNRVR5cGUobWltZVR5cGVJbikpCiAgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50
T3RoZXJQbHVnaW47CiAKLSAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAhbWltZVR5cGVJbi5sZW5n
dGgoKSkKKyAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiBtaW1lVHlwZUluLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnROb25lOwogCiAgICAgU3RyaW5nIG1pbWVUeXBlID0g
bWltZVR5cGVJbjsKLSAgICBpZiAoIW1pbWVUeXBlLmxlbmd0aCgpKQotICAgICAgICBtaW1lVHlw
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7
CisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgeworICAgICAgICBtaW1lVHlwZSA9IE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCh1cmwucGF0aCgpKTsKKyAgICAgICAgaWYg
KG1pbWVUeXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBT
dHJpbmcoKTsKKyAgICB9CiAKLSAgICBpZiAoIW1pbWVUeXBlLmxlbmd0aCgpKQotICAgICAgICBt
aW1lVHlwZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOworICAg
IGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIG1pbWVUeXBlID0gUGx1Z2luRGF0YWJh
c2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+TUlNRVR5cGVGb3JFeHRlbnNpb24oZmkuc3VmZml4KCkp
OwogCi0gICAgaWYgKCFtaW1lVHlwZS5sZW5ndGgoKSkKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudEZyYW1lOwogCiAgICAgT2JqZWN0Q29u
dGVudFR5cGUgcGx1Z0luVHlwZSA9IE9iamVjdENvbnRlbnROb25lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiM2RmM2I1OGYxM2U3NGRkYzViZTQ5MGY0ODMxMDk2ZTZj
NDNjN2M0Li4wM2M1YTQ4ZTQyYTkxZmRmYTFhZGU0NjRkOWVkZmViYWYzYTliMDk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTQyMywxOSArMTQyMywyMSBAQCBPYmpl
Y3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdAogICAgIC8vIGlzIGNvbnNvbGlkYXRlZC4KIAogICAgIFN0cmlu
ZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewot
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gdXJsLnBhdGgoKS5zdWJzdHJpbmcodXJsLnBhdGgo
KS5yZXZlcnNlRmluZCgnLicpICsgMSkubG93ZXIoKTsKIAorICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gVHJ5IHRvIGd1ZXNzIHRoZSBNSU1FIHR5cGUgZnJvbSB0aGUg
ZXh0ZW5zaW9uLgotICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVU
eXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7Ci0KLSAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIHBsdWctaW4gYXJvdW5k
IHRoYXQgY2FuIGhhbmRsZSB0aGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgaWYgKFdlYlBhZ2Uq
IHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUGx1Z2lu
RGF0YSogcGx1Z2luRGF0YSA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPnBsdWdpbkRhdGEoKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luU3VwcG9ydHNFeHRlbnNpb24ocGx1Z2luRGF0
YSwgZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RDb250
ZW50TmV0c2NhcGVQbHVnaW47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBtaW1lVHlwZSA9
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCh1cmwucGF0aCgpKTsKKyAgICAg
ICAgaWYgKG1pbWVUeXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQorICAgICAgICAgICAgbWltZVR5
cGUgPSBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIFN0cmluZyBleHRlbnNpb24gPSB1cmwucGF0aCgpLnN1YnN0cmluZyh1cmwucGF0aCgp
LnJldmVyc2VGaW5kKCcuJykgKyAxKS5sb3dlcigpOworICAgICAgICAvLyBDaGVjayBpZiB0aGVy
ZSdzIGEgcGx1Zy1pbiBhcm91bmQgdGhhdCBjYW4gaGFuZGxlIHRoZSBleHRlbnNpb24uCisgICAg
ICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAg
ICBpZiAoUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPnBsdWdp
bkRhdGEoKSkgeworICAgICAgICAgICAgICAgIGlmIChwbHVnaW5TdXBwb3J0c0V4dGVuc2lvbihw
bHVnaW5EYXRhLCBleHRlbnNpb24pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0
Q29udGVudE5ldHNjYXBlUGx1Z2luOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174961</attachid>
            <date>2012-11-19 05:37:56 -0800</date>
            <delta_ts>2012-11-22 03:22:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121119143520.patch</filename>
            <type>text/plain</type>
            <size>19996</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjOTA5OWJkODZjZDNl
ODBlNzE1MTE2NmEwZjI4Y2U3Njc0YjAzMC4uNzJkMzNjYTcxZDhhNWFhYjI2Njc5NmM1MjkyOTdi
MzJlYTRlZTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLiBUbyBzdXBwb3J0IFVu
aXgKKyAgICAgICAgc3R5bGUgbXVsdGktZXh0ZW5zaW9ucyAoZS5nLiB0YXIuZ3opLCBzb21lIGxv
YWRlcnMgd2lsbCBub3cgcHJlZmVyIG1pbWV0eXBlIGRldGVjdGlvbgorICAgICAgICBieSBmaWxl
bmFtZSBvdmVyIGRldGVjdGlvbiBieSBleHRlbnNpb24gYWxvbmUuCisKKyAgICAgICAgU3VwcG9y
dCBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb24gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUgd2FzIGFsc28gYWRkZWQgdG8gUXQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5
cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zTWltZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNXZWxsS25vd25NSU1FVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6bWltZVR5cGVBc3NvY2lhdGlvbk1hcCk6CisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAoTUlNRVR5cGVSZWdpc3RyeSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9u
Rm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9y
bWFsaXplZE1JTUVUeXBlKToKKwogMjAxMi0xMS0xOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgaW5wdXQudmFsdWU9IiIgc2hvdWxkIGNsZWFyIGRhdGUvdGlt
ZSBpbnB1dCBlbGVtZW50cyB3aXRoIHBhcnRpYWwgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMx
NmJjODZhZDY5NTRmMGU1NGEwN2M5MjQ1ODUyYjM0YTZkMDM3NzMuLjgwZmVhYWZjYmI4NWYwZjJl
ZjQyYTkxMjAzYTUyZDFiNDBkOTIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMTEtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBMb29rdXAgbWltZXR5cGVzIHVzaW5nIFFNaW1lRGF0YWJhc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvb2t1cCBt
aW1ldHlwZSBieSBmaWxlbmFtZSBpbnN0ZWFkIG9mIGp1c3QgbGFzdCBleHRlbnNpb24uCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKwogMjAx
Mi0xMS0xOCAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtRdF0gUmVtb3ZlIHJlbWFpbmluZyB0cmFjZXMgb2Ygc3ltYmlhbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM3
NDBkNDc4M2M5YWVkNTAwYmQzMmFkNTY2ODAyYTBlZGYxMDI1OTIuLmQ3ZGM2OGMxMzAxOWM4ZTFj
YzUwMmNjNWRlM2IwYWM2ZjIxMjlmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMS0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4K
KworICAgICAgICBbUXRdIExvb2t1cCBtaW1ldHlwZXMgdXNpbmcgUU1pbWVEYXRhYmFzZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9va3VwIG1pbWV0
eXBlIGJ5IGZpbGVuYW1lIGluc3RlYWQgb2YganVzdCBsYXN0IGV4dGVuc2lvbi4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUp
OgorCiAyMDEyLTExLTE5ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwMDQ0
OGNhZTA0ZjExYmQ0ODE4YjAzZGMzOTA2ZDU5NjIzZjUzODdjLi5hY2Q3ZTM1MjcwYTBhZmQ4NmY3
M2Y3ZDk4NGEyNWE5YmM3NjE3ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDE0LDYgKzQx
NCw3IEBAIF9fWk43V2ViQ29yZTE1U3RyaW5nVHJ1bmNhdG9yMTRjZW50ZXJUcnVuY2F0ZUVSS04z
V1RGNlN0cmluZ0VmUktOU180Rm9udEVOUzBfMjRFCiBfX1pON1dlYkNvcmUxNVN0cmluZ1RydW5j
YXRvcjV3aWR0aEVSS04zV1RGNlN0cmluZ0VSS05TXzRGb250RU5TMF8yNEVuYWJsZVJvdW5kaW5n
SGFja3NPck5vdEUKIF9fWk43V2ViQ29yZTE1VmlzaWJsZVBvc2l0aW9uQzFFUktOU184UG9zaXRp
b25FTlNfOUVBZmZpbml0eUUKIF9fWk43V2ViQ29yZTE1ZGVmYXVsdExhbmd1YWdlRXYKK19fWk43
V2ViQ29yZTE1ZGVmYXVsdE1JTUVUeXBlRXYKIF9fWk43V2ViQ29yZTE1bG9jYWxpemVkU3RyaW5n
RVBLYwogX19aTjdXZWJDb3JlMTVvcmlnaW5hbFVSTERhdGFFUDVOU1VSTAogX19aTjdXZWJDb3Jl
MTVwYXRoR2V0RmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCkBAIC00NDYsNiArNDQ3LDcgQEAgX19a
TjdXZWJDb3JlMTZMZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNUZyYW1lRQogX19aTjdXZWJD
b3JlMTZMZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNVJhbmdlRQogX19aTjdXZWJDb3JlMTZM
ZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUV2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkx
NWNhblNob3dNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2TUlNRVR5cGVS
ZWdpc3RyeTE4Z2V0TUlNRVR5cGVGb3JQYXRoRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTZNSU1FVHlwZVJlZ2lzdHJ5MjNnZXRNSU1FVHlwZUZvckV4dGVuc2lvbkVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTI0aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjZnZXRT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA2OTJi
ZGUxYWNhMGFkN2MxNjFjNGQzZjQ4ZWQyMTM2YTNhNTJhZGMwLi4zNTM1YWM0YzkxY2RiMjg4ZWU5
MDdmMjc4MDhlMGY3MTdjZDQ0YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM0LDYg
KzM0LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKFFUKQorc3Rh
dGljIFN0cmluZyBnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUs
IEZpbGU6OkNvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSkKK3sKKyAgICBTdHJpbmcgdHlw
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChuYW1lKTsKKyAgICBpZiAo
cG9saWN5ID09IEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykgeworICAgICAgICBpZiAoIU1J
TUVUeXBlUmVnaXN0cnk6OmlzV2VsbEtub3duTUlNRVR5cGUodHlwZSkpCisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHBvbGljeSA9PSBG
aWxlOjpBbGxDb250ZW50VHlwZXMpOworICAgICAgICBpZiAodHlwZSA9PSBkZWZhdWx0TUlNRVR5
cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAgcmV0dXJuIHR5
cGU7Cit9CisjZWxzZQogc3RhdGljIFN0cmluZyBnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShj
b25zdCBTdHJpbmcmIG5hbWUsIEZpbGU6OkNvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSkK
IHsKICAgICBTdHJpbmcgdHlwZTsKQEAgLTQ4LDYgKzYzLDcgQEAgc3RhdGljIFN0cmluZyBnZXRD
b250ZW50VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGU6OkNvbnRlbnRU
eXBlTG8KICAgICB9CiAgICAgcmV0dXJuIHR5cGU7CiB9CisjZW5kaWYKIAogc3RhdGljIFBhc3NP
d25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IDEzZDRjMWVkNmJmYjI3NjEzMDJlZDYxODExOGIwNjhlZTQz
ZGVkYjguLmFlM2I3ZWIzNzcwZmVjYjc2MGUwOWI2MTNlMWJjMTA1MjAwOTAzNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtODg1LDkgKzg4NSwxMSBAQCBPYmplY3RD
b250ZW50VHlwZSBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgUwogICAgIFN0cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlcyh1cmwucGF0aCgpKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBh
dGguc3Vic3RyaW5nKGRlY29kZWRQYXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKTsKIAotICAgIC8v
IFdlIGRvbid0IHVzZSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNh
dXNlIGl0IHJldHVybnMgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0g
ICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgIGlmIChtaW1l
VHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvclBhdGgoZGVjb2RlZFBhdGgpOworICAgICAgICBpZiAobWltZVR5cGUgPT0g
ZGVmYXVsdE1JTUVUeXBlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmluZygpOworICAg
IH0KIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShDSFJPTUlVTSkgJiYgIVBMQVRG
T1JNKEVGTCkgLy8gTWFjIGhhcyBubyBQbHVnaW5EYXRhYmFzZSwgbm9yIGRvZXMgQ2hyb21pdW0g
b3IgRUZMCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAppbmRleCAwNGZiNWVkYjU2NzRjNzI0
OWVjZTBmYzAxOTAxNTFjOWMyYTk3OGJhLi40ZWJiNTJiY2ZiMThhYzhlODMyMTM2YWM4NDZkYmM5
Mjg4OGYyOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuY3BwCkBAIC03MCw2ICs3MCw4IEBAIHN0YXRpYyBBcmNoaXZlTUlNRVR5cGVzTWFw
JiBhcmNoaXZlTUlNRVR5cGVzKCkKICAgICBtaW1lVHlwZXMuc2V0KCJtdWx0aXBhcnQvcmVsYXRl
ZCIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4pOwogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBtaW1lVHlwZXMuc2V0KCJtZXNzYWdlL3JmYzgyMiIsIGFyY2hpdmVGYWN0b3J5Q3Jl
YXRlPE1IVE1MQXJjaGl2ZT4pOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgbWltZVR5cGVzLnNl
dCgiYXBwbGljYXRpb24veC1taW1lYXJjaGl2ZSIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1M
QXJjaGl2ZT4pOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA0NDBiNDI5OWFiY2JkYTEzNzNjNmU2YjFhZmM1ZGI4
MjMyNzg3YjQ1Li40MDUxYmFiNTE5ZDFmODgxMjlhNzczODg1OWM5ODkzOTFlZDlmMmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNDgyLDYg
KzQ4MiwyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRNaW1lVHlwZShjb25zdCBUeXBlRXh0ZW5zaW9u
UGFpciogcGFpcnMsIHVuc2lnbmVkIG51bVBhaXJzLCBjbwogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAorc3RhdGljIGJvb2wgY29udGFpbnNNaW1lVHlwZShjb25zdCBUeXBlRXh0ZW5zaW9uUGFp
ciogcGFpcnMsIHVuc2lnbmVkIG51bVBhaXJzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorewor
ICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFN0cmluZyB0eXBlID0gbWltZVR5cGUubG93ZXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtUGFpcnM7ICsraSwgKytwYWlycykgeworICAgICAgICBpZiAodHlwZSA9PSBwYWly
cy0+dHlwZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFdlbGxLbm93bk1JTUVUeXBl
Rm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIC8vIFRoaXMgbWV0
aG9kIG11c3QgYmUgdGhyZWFkIHNhZmUgYW5kIHNob3VsZCBub3QgY29uc3VsdCB0aGUgT1MvcmVn
aXN0cnkuCkBAIC00OTEsNiArNTA1LDE2IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRX
ZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAg
cmV0dXJuIGZpbmRNaW1lVHlwZShjb21tb25NZWRpYVR5cGVzLCBzaXplb2YoY29tbW9uTWVkaWFU
eXBlcykgLyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSksIGV4dGVuc2lvbik7CiB9CiAKK2Jv
b2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNXZWxsS25vd25NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQoreworICAgIC8vIFRoaXMgbWV0aG9kIG11c3QgYmUgdGhyZWFkIHNhZmUgYW5kIHNo
b3VsZCBub3QgY29uc3VsdCB0aGUgT1MvcmVnaXN0cnkuCisgICAgYm9vbCBmb3VuZCA9IGNvbnRh
aW5zTWltZVR5cGUod2VsbEtub3duTWltZVR5cGVzLCBzaXplb2Yod2VsbEtub3duTWltZVR5cGVz
KSAvIHNpemVvZih3ZWxsS25vd25NaW1lVHlwZXNbMF0pLCBtaW1lVHlwZSk7CisgICAgaWYgKGZv
dW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY29udGFpbnNNaW1lVHlwZShj
b21tb25NZWRpYVR5cGVzLCBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9u
TWVkaWFUeXBlc1swXSksIG1pbWVUeXBlKTsKK30KKworI2lmICFQTEFURk9STShRVCkKIFN0cmlu
ZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01MDIsNiAr
NTI2LDcgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgfQogICAgIHJldHVybiAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIjsKIH0KKyNlbmRpZgogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewpAQCAtNjM4LDYgKzY2MywxMyBA
QCBjb25zdCBTdHJpbmcmIGRlZmF1bHRNSU1FVHlwZSgpCiAgICAgcmV0dXJuIGRlZmF1bHRNSU1F
VHlwZTsKIH0KIAorI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCitT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIG1pbWVUeXBlOworfQorI2VuZGlmCisKICNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBNSU1F
VHlwZUFzc29jaWF0aW9uTWFwOwogCkBAIC02OTYsMTggKzcyOCwxNiBAQCBzdGF0aWMgY29uc3Qg
TUlNRVR5cGVBc3NvY2lhdGlvbk1hcCYgbWltZVR5cGVBc3NvY2lhdGlvbk1hcCgpCiAKICAgICBy
ZXR1cm4gKm1pbWVUeXBlTWFwOwogfQotI2VuZGlmCiAKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQogICAgIE1JTUVUeXBlQXNzb2NpYXRpb25NYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbWltZVR5cGVBc3NvY2lhdGlvbk1hcCgpLmZpbmQobWltZVR5cGUpOwogCiAg
ICAgaWYgKGl0ICE9IG1pbWVUeXBlQXNzb2NpYXRpb25NYXAoKS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIGl0LT52YWx1ZTsKLSNlbmRpZgorCiAgICAgcmV0dXJuIG1pbWVUeXBlOwogfQotCisjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oCmluZGV4IDU2MTJiOTIyM2EyMzQxYjE5N2Q1MzhkZWE0N2U0OTg0ZTRi
M2NjYTEuLjUxN2MzMjI5M2E1Nzk2ZWQ4MWE1ODE4OGE2ZGVjOWQ2YmNlZGI4NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc4LDYgKzc4LDkgQEAg
cHVibGljOgogICAgIC8vIGJyb3dzZXIgKGUuZy4gYSBRdCBQbHVnaW4pLgogICAgIHN0YXRpYyBi
b29sIGlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
IAorICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgbWltZSB0eXBlIGlzIGluIHRoZSB3aGl0ZS1s
aXN0IG9mICJ3ZWxsLWtub3duIiBNSU1FIHR5cGVzLgorICAgIHN0YXRpYyBib29sIGlzV2VsbEtu
b3duTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgYSBtaW1lIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIHNob3duIGluc2lkZSBhIHBh
Z2UuCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBvZiBpc1N1cHBvcnRlZEltYWdlTUlNRVR5
cGUoKSwgaXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKCksIGlzU3VwcG9ydGVkTWVkaWFNSU1F
VHlwZSgpIHJldHVybnMgdHJ1ZQogICAgIC8vIG9yIGlmIGdpdmVuIG1pbWUgdHlwZSBiZWdpbnMg
d2l0aCAidGV4dC8iIGFuZCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKCkgcmV0dXJucyBmYWxz
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9R
TmV0d29ya1JlcGx5SGFuZGxlci5jcHAKaW5kZXggYjgzZjJiYTA4YzIxNTQ5NmFkMmU4MjI0OGQy
ZmE4NGUxYWM4Yzg5OC4uOWY1NmE3YzI4YTIyYTM0M2JjNWZlNTQyZDU4MjIxMzFhYjcwYmM0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1Jl
cGx5SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9R
TmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTU4MSw4ICs1ODEsMTUgQEAgdm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogCiAgICAgICAgIGlmICghc3Vn
Z2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2Vz
dGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZSh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIG1pbWVFeHRlbnNpb24gPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7
CisgICAgICAgICAgICBpZiAobWltZUV4dGVuc2lvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUodXJsLmxhc3RQYXRoQ29tcG9uZW50KCkp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUUZpbGVJbmZvIGZpKHVybC5s
YXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWdnZXN0
ZWRGaWxlbmFtZShTdHJpbmcoZmkuYmFzZU5hbWUoKSkgKyAiLiIgKyBtaW1lRXh0ZW5zaW9uKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNDb2RlKHN0YXR1c0NvZGUpOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCht
X3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFJl
YXNvblBocmFzZUF0dHJpYnV0ZSkudG9CeXRlQXJyYXkoKS5jb25zdERhdGEoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcAppbmRleCBi
YzU1NTNhZWMxNmM1ZDI3MzE0ZWNhNDZhNGJjM2JmYzMyYWMwNjBmLi4xZjlkZjcyMjcwM2JiNDM4
NTcyMDBjZTA3YWJiZThiYTc5MDEwODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKQEAgLTI5LDc4ICsyOSw1MiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKIAorI2luY2x1ZGUg
PFFNaW1lRGF0YWJhc2U+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBFeHRlbnNp
b25NYXAgewotICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbjsKLSAgICBjb25zdCBjaGFyKiBtaW1l
VHlwZTsKLX07CitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nICZleHQpCit7CisgICAgLy8gUU1pbWVEYXRhYmFzZSBsYWNrcyB0aGUg
YWJpbGl0eSB0byBxdWVyeSBieSBleHRlbnNpb24gYWxvbmUsIHNvIHdlIGNyZWF0ZSBhIGZha2Ug
ZmlsZW5hbWUgdG8gbG9va3VwLgorICAgIGNvbnN0IFN0cmluZyBmaWxlbmFtZSA9ICJmaWxlbmFt
ZS4iICsgZXh0Lmxvd2VyKCk7CiAKLXN0YXRpYyBjb25zdCBFeHRlbnNpb25NYXAgZXh0ZW5zaW9u
TWFwW10gPSB7Ci0gICAgeyAiYm1wIiwgImltYWdlL2JtcCIgfSwKLSAgICB7ICJjc3MiLCAidGV4
dC9jc3MiIH0sCi0gICAgeyAiZ2lmIiwgImltYWdlL2dpZiIgfSwKLSAgICB7ICJodG1sIiwgInRl
eHQvaHRtbCIgfSwKLSAgICB7ICJodG0iLCAidGV4dC9odG1sIiB9LAotICAgIHsgImljbyIsICJp
bWFnZS94LWljb24iIH0sCi0gICAgeyAianBlZyIsICJpbWFnZS9qcGVnIiB9LAotICAgIHsgImpw
ZyIsICJpbWFnZS9qcGVnIiB9LAotICAgIHsgImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlw
dCIgfSwKLSAgICB7ICJtbmciLCAidmlkZW8veC1tbmciIH0sCi0gICAgeyAibXA0IiwgInZpZGVv
L21wNCIgfSwKLSAgICB7ICJtNHYiLCAidmlkZW8vbXA0IiB9LAotICAgIHsgIm00YSIsICJhdWRp
by94LW00YSIgfSwKLSAgICB7ICJtaHQiLCAibXVsdGlwYXJ0L3JlbGF0ZWQiIH0sCi0gICAgeyAi
bWh0bWwiLCAibXVsdGlwYXJ0L3JlbGF0ZWQiIH0sCi0gICAgeyAibXAzIiwgImF1ZGlvL21wMyIg
fSwKLSAgICB7ICJvZ3YiLCAidmlkZW8vb2dnIiB9LAotICAgIHsgIm9nYSIsICJhdWRpby9vZ2ci
IH0sCi0gICAgeyAib2dtIiwgImF1ZGlvL29nZyIgfSwKLSAgICB7ICJvZ2ciLCAiYXVkaW8vb2dn
IiB9LAotICAgIHsgIndlYm0iLCAidmlkZW8vd2VibSIgfSwKLSAgICB7ICJ3ZWJtIiwgImF1ZGlv
L3dlYm0iIH0sCi0gICAgeyAid2F2IiwgImF1ZGlvL3dhdiIgfSwKLSAgICB7ICJtb3YiLCAidmlk
ZW8vcXVpY2t0aW1lIiB9LAotICAgIHsgInBibSIsICJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCIg
fSwKLSAgICB7ICJwZ20iLCAiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiB9LAotICAgIHsgInBk
ZiIsICJhcHBsaWNhdGlvbi9wZGYiIH0sCi0gICAgeyAicG5nIiwgImltYWdlL3BuZyIgfSwKLSAg
ICB7ICJwcG0iLCAiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiIH0sCi0gICAgeyAicnNzIiwgImFw
cGxpY2F0aW9uL3Jzcyt4bWwiIH0sCi0gICAgeyAic3ZnIiwgImltYWdlL3N2Zyt4bWwiIH0sCi0g
ICAgeyAidGV4dCIsICJ0ZXh0L3BsYWluIiB9LAotICAgIHsgInRpZiIsICJpbWFnZS90aWZmIiB9
LAotICAgIHsgInRpZmYiLCAiaW1hZ2UvdGlmZiIgfSwKLSAgICB7ICJ0eHQiLCAidGV4dC9wbGFp
biIgfSwKLSAgICB7ICJ4Ym0iLCAiaW1hZ2UveC14Yml0bWFwIiB9LAotICAgIHsgInhtbCIsICJ0
ZXh0L3htbCIgfSwKLSAgICB7ICJ4cG0iLCAiaW1hZ2UveC14cG0iIH0sCi0gICAgeyAieHNsIiwg
InRleHQveHNsIiB9LAotICAgIHsgInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfSwK
LSAgICB7ICJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIgfSwKLSAgICB7ICJ3bWxjIiwgImFwcGxp
Y2F0aW9uL3ZuZC53YXAud21sYyIgfSwKLSAgICB7IDAsIDAgfQotfTsKKyAgICBRTWltZVR5cGUg
bWltZVR5cGUgPSBRTWltZURhdGFiYXNlKCkubWltZVR5cGVGb3JGaWxlKGZpbGVuYW1lLCBRTWlt
ZURhdGFiYXNlOjpNYXRjaEV4dGVuc2lvbik7CisgICAgaWYgKG1pbWVUeXBlLmlzVmFsaWQoKSAm
JiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5uYW1lKCk7
CiAKLVN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcgJmV4dCkKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUU1pbWVUeXBlIHR5cGUgPSBRTWltZURhdGFi
YXNlKCkubWltZVR5cGVGb3JGaWxlKHBhdGgsIFFNaW1lRGF0YWJhc2U6Ok1hdGNoRXh0ZW5zaW9u
KTsKKyAgICBpZiAodHlwZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0eXBlLm5hbWUoKTsK
IAotICAgIFN0cmluZyBzID0gZXh0Lmxvd2VyKCk7CisgICAgcmV0dXJuICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iOworfQogCi0gICAgY29uc3QgRXh0ZW5zaW9uTWFwICplID0gZXh0ZW5zaW9u
TWFwOwotICAgIHdoaWxlIChlLT5leHRlbnNpb24pIHsKLSAgICAgICAgaWYgKHMgPT0gZS0+ZXh0
ZW5zaW9uKQotICAgICAgICAgICAgcmV0dXJuIGUtPm1pbWVUeXBlOwotICAgICAgICArK2U7Ci0g
ICAgfQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIFFNaW1lVHlwZSBtaW1l
VHlwZSA9IFFNaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvck5hbWUobWltZVR5cGVOYW1lKTsKKyAg
ICBpZiAobWltZVR5cGUuaXNWYWxpZCgpICYmICFtaW1lVHlwZS5pc0RlZmF1bHQoKSkKKyAgICAg
ICAgcmV0dXJuIG1pbWVUeXBlLnByZWZlcnJlZFN1ZmZpeCgpOwogCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIC8vIFRoaXMgbG9va3MgdXAgdGhl
IG1pbWUgdHlwZSBvYmplY3QgYnkgcHJlZmVycmVkIG5hbWUgb3IgYWxpYXMsIGFuZCByZXR1cm5z
IHRoZSBwcmVmZXJyZWQgbmFtZS4KKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBRTWltZURhdGFi
YXNlKCkubWltZVR5cGVGb3JOYW1lKG1pbWVUeXBlTmFtZSk7CisgICAgaWYgKG1pbWVUeXBlLmlz
VmFsaWQoKSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlw
ZS5uYW1lKCk7CisKKyAgICByZXR1cm4gbWltZVR5cGVOYW1lOworfQorCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHJldHVybiBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LXF0
LXBsdWdpbiIsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggMDczMWQ5MzE1OGExNmY5NzMwZTg0
MWUyMDgxN2E4ODIyYjRlNjE0OC4uZDhlNjUxZmYzZDVkMjBiZmMyZDBmY2Y2OTBjZGRkODQzZmZi
MmIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xMzUwLDIyICsxMzUwLDI0IEBAIFBhc3NSZWZQdHI8
RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nCiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIHFEZWJ1ZygpPDwi
ICsrKysrKysrKysrKysrKysgdXJsIGlzICI8PHVybC5zdHJpbmcoKTw8IiwgbWltZSA9ICI8PG1p
bWVUeXBlSW47Ci0gICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOwotICAgIFN0cmluZyBleHRl
bnNpb24gPSBmaS5zdWZmaXgoKTsKLSAgICBpZiAobWltZVR5cGVJbiA9PSAiYXBwbGljYXRpb24v
eC1xdC1wbHVnaW4iIHx8IG1pbWVUeXBlSW4gPT0gImFwcGxpY2F0aW9uL3gtcXQtc3R5bGVkLXdp
ZGdldCIpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1F
VHlwZShtaW1lVHlwZUluKSkKICAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnRPdGhlclBsdWdp
bjsKIAotICAgIGlmICh1cmwuaXNFbXB0eSgpICYmICFtaW1lVHlwZUluLmxlbmd0aCgpKQorICAg
IGlmICh1cmwuaXNFbXB0eSgpICYmIG1pbWVUeXBlSW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gT2JqZWN0Q29udGVudE5vbmU7CiAKICAgICBTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZUlu
OwotICAgIGlmICghbWltZVR5cGUubGVuZ3RoKCkpCi0gICAgICAgIG1pbWVUeXBlID0gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICBpZiAo
bWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0TUlNRVR5cGVGb3JQYXRoKHVybC5wYXRoKCkpOworICAgICAgICBpZiAobWltZVR5cGUg
PT0gZGVmYXVsdE1JTUVUeXBlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmluZygpOwor
ICAgIH0KIAotICAgIGlmICghbWltZVR5cGUubGVuZ3RoKCkpCi0gICAgICAgIG1pbWVUeXBlID0g
UGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+TUlNRVR5cGVGb3JFeHRlbnNpb24o
ZXh0ZW5zaW9uKTsKKyAgICBRRmlsZUluZm8gZmkodXJsLnBhdGgoKSk7CisgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgbWltZVR5cGUgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFs
bGVkUGx1Z2lucygpLT5NSU1FVHlwZUZvckV4dGVuc2lvbihmaS5zdWZmaXgoKSk7CiAKLSAgICBp
ZiAoIW1pbWVUeXBlLmxlbmd0aCgpKQorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBPYmplY3RDb250ZW50RnJhbWU7CiAKICAgICBPYmplY3RDb250ZW50VHlwZSBw
bHVnSW5UeXBlID0gT2JqZWN0Q29udGVudE5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IGIzZGYzYjU4ZjEzZTc0ZGRjNWJlNDkwZjQ4MzEwOTZlNmM0M2M3YzQuLjAz
YzVhNDhlNDJhOTFmZGZhMWFkZTQ2NGQ5ZWRmZWJhZjNhOWIwOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNDIzLDE5ICsxNDIzLDIxIEBAIE9iamVjdENvbnRlbnRU
eXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0CiAgICAgLy8gaXMgY29uc29saWRhdGVkLgogCiAgICAgU3RyaW5nIG1pbWVUeXBl
ID0gbWltZVR5cGVJbjsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0
cmluZyBleHRlbnNpb24gPSB1cmwucGF0aCgpLnN1YnN0cmluZyh1cmwucGF0aCgpLnJldmVyc2VG
aW5kKCcuJykgKyAxKS5sb3dlcigpOwogCisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBUcnkgdG8gZ3Vlc3MgdGhlIE1JTUUgdHlwZSBmcm9tIHRoZSBleHRlbnNpb24u
Ci0gICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRl
bnNpb24oZXh0ZW5zaW9uKTsKLQotICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgcGx1Zy1pbiBhcm91bmQgdGhhdCBjYW4g
aGFuZGxlIHRoZSBleHRlbnNpb24uCi0gICAgICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChQbHVnaW5EYXRhKiBwbHVn
aW5EYXRhID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGx1Z2luRGF0YSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChwbHVnaW5TdXBwb3J0c0V4dGVuc2lvbihwbHVnaW5EYXRhLCBleHRlbnNp
b24pKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnROZXRzY2Fw
ZVBsdWdpbjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKHVybC5wYXRoKCkpOworICAgICAgICBpZiAobWlt
ZVR5cGUgPT0gZGVmYXVsdE1JTUVUeXBlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmlu
ZygpOworICAgIH0KKworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3Ry
aW5nIGV4dGVuc2lvbiA9IHVybC5wYXRoKCkuc3Vic3RyaW5nKHVybC5wYXRoKCkucmV2ZXJzZUZp
bmQoJy4nKSArIDEpLmxvd2VyKCk7CisgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBwbHVn
LWluIGFyb3VuZCB0aGF0IGNhbiBoYW5kbGUgdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgaWYgKFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChQbHVn
aW5EYXRhKiBwbHVnaW5EYXRhID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGx1Z2luRGF0YSgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKHBsdWdpblN1cHBvcnRzRXh0ZW5zaW9uKHBsdWdpbkRhdGEs
IGV4dGVuc2lvbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50TmV0
c2NhcGVQbHVnaW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175637</attachid>
            <date>2012-11-22 03:22:54 -0800</date>
            <delta_ts>2012-11-22 03:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121122122013.patch</filename>
            <type>text/plain</type>
            <size>18848</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc3ZDA3MGQ1YmViYjY0
Yjc4MTIyZjM5ZDJjODMwMzQyNGEzYzljZS4uNTkzNzYwNDA0ODAxOTcwZTU5NjBhZDgyMmNlNDY5
NTc2Mjk0NTNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTIyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLiBUbyBzdXBwb3J0IFVu
aXgKKyAgICAgICAgc3R5bGUgbXVsdGktZXh0ZW5zaW9ucyAoZS5nLiB0YXIuZ3opLCBzb21lIGxv
YWRlcnMgd2lsbCBub3cgcHJlZmVyIG1pbWV0eXBlIGRldGVjdGlvbgorICAgICAgICBieSBmaWxl
bmFtZSBvdmVyIGRldGVjdGlvbiBieSBleHRlbnNpb24gYWxvbmUuCisKKyAgICAgICAgU3VwcG9y
dCBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb24gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUgd2FzIGFsc28gYWRkZWQgdG8gUXQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5
cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6
ZWRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUFzc29jaWF0aW9uTWFwKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9y
TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVy
cmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKToKKwogMjAxMi0xMS0yMiAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIHRoZSAiZWRlbiIgYml0
IHRvIHNvbWV0aGluZyBtb3JlIGRlc2NyaXB0aXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGYwNzkxYmZj
MDJmNTgyZTNjNjc4MGMyOWViODc0MTI4ZjNlNTcwZTYuLjZlMTI2NTY2OTgzMWU3ZmUwM2I1YTVk
MmM1YjA5NWYxOTQxNTg2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTEtMjIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisK
KyAgICAgICAgW1F0XSBMb29rdXAgbWltZXR5cGVzIHVzaW5nIFFNaW1lRGF0YWJhc2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvb2t1cCBtaW1ldHlw
ZSBieSBmaWxlbmFtZSBpbnN0ZWFkIG9mIGp1c3QgbGFzdCBleHRlbnNpb24uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKwogMjAxMi0xMS0y
MSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBQb3NpdGlvbiBpbiBRV2ViSGl0VGVzdFJlc3VsdCBkb2VzIG5vdCBtYXRjaCBkb2N1bWVu
dGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQxMWU5MWE4OGMxMTkwMGVhYzZlYmUyM2VmYTkzMDRlYjRi
MGE0MS4uMTYxMDU5OTVlNDVkYWRhZGYwY2Y3Nzc4ODYzN2Y4OWQ3NTYwNTNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTIyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gTG9va3VwIG1pbWV0eXBlcyB1
c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBMb29rdXAgbWltZXR5cGUgYnkgZmlsZW5hbWUgaW5zdGVhZCBvZiBqdXN0IGxh
c3QgZXh0ZW5zaW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpvYmplY3RDb250ZW50VHlwZSk6CisKIDIwMTItMTEtMjIgIEV1bm1pIExlZSAgPGV1bm1p
MTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQ29ycmVjdCB0aGUgcGFy
YW1ldGVycyBvZiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDk5YTA0NGJiM2FkNmMwOGNhYmNmMThmNjFmYWQwMjc3YzIwNjkxYzQuLjhmM2YyNWNiZjEyMTcw
YWIxMjQ3NzhmMWQ5YjcyYTJlY2JiYjgwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00MTUs
NiArNDE1LDcgQEAgX19aTjdXZWJDb3JlMTVTdHJpbmdUcnVuY2F0b3IxNGNlbnRlclRydW5jYXRl
RVJLTjNXVEY2U3RyaW5nRWZSS05TXzRGb250RU5TMF8yNEUKIF9fWk43V2ViQ29yZTE1U3RyaW5n
VHJ1bmNhdG9yNXdpZHRoRVJLTjNXVEY2U3RyaW5nRVJLTlNfNEZvbnRFTlMwXzI0RW5hYmxlUm91
bmRpbmdIYWNrc09yTm90RQogX19aTjdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb25DMUVSS05TXzhQ
b3NpdGlvbkVOU185RUFmZmluaXR5RQogX19aTjdXZWJDb3JlMTVkZWZhdWx0TGFuZ3VhZ2VFdgor
X19aTjdXZWJDb3JlMTVkZWZhdWx0TUlNRVR5cGVFdgogX19aTjdXZWJDb3JlMTVsb2NhbGl6ZWRT
dHJpbmdFUEtjCiBfX1pON1dlYkNvcmUxNW9yaWdpbmFsVVJMRGF0YUVQNU5TVVJMCiBfX1pON1dl
YkNvcmUxNXBhdGhHZXRGaWxlTmFtZUVSS04zV1RGNlN0cmluZ0UKQEAgLTQ0Nyw2ICs0NDgsNyBA
QCBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU181UmFuZ2VFCiBfX1pON1dlYkNv
cmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdp
c3RyeTE1Y2FuU2hvd01JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTZNSU1F
VHlwZVJlZ2lzdHJ5MThnZXRNSU1FVHlwZUZvclBhdGhFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyM2dldE1JTUVUeXBlRm9yRXh0ZW5zaW9uRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjRpc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnky
NmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4
IDY5MmJkZTFhY2EwYWQ3YzE2MWM0ZDNmNDhlZDIxMzZhM2E1MmFkYzAuLmNlNzM0M2YxYzhiYWIy
ZDNiMjRjOTZjYjYzNTc4Y2M5ZTA3ODA1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAt
MzcsMTQgKzM3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBTdHJpbmcgZ2V0Q29u
dGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlOjpDb250ZW50VHlw
ZUxvb2t1cFBvbGljeSBwb2xpY3kpCiB7CiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgaW50IGluZGV4
ID0gbmFtZS5yZXZlcnNlRmluZCgnLicpOwotICAgIGlmIChpbmRleCAhPSAtMSkgewotICAgICAg
ICBpZiAocG9saWN5ID09IEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykKKyAgICBpZiAocG9s
aWN5ID09IEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykgeworICAgICAgICBpbnQgaW5kZXgg
PSBuYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgICAgIGlmIChpbmRleCAhPSAtMSkKICAgICAg
ICAgICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4
dGVuc2lvbihuYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBBU1NFUlQocG9saWN5ID09IEZpbGU6OkFsbENvbnRlbnRUeXBlcyk7Ci0gICAgICAg
ICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24obmFt
ZS5zdWJzdHJpbmcoaW5kZXggKyAxKSk7Ci0gICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBBU1NFUlQocG9saWN5ID09IEZpbGU6OkFsbENvbnRlbnRUeXBlcyk7CisgICAgICAgIHR5cGUg
PSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobmFtZSk7CisgICAgICAgIGlm
ICh0eXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQorICAgICAgICAgICAgdHlwZSA9IFN0cmluZygp
OwogICAgIH0KICAgICByZXR1cm4gdHlwZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCmluZGV4IDQzN2ExZjYxNjQ0NTc3Y2Y5MWI5NTczYmYwZjkzZDU4Y2VlNmM4NDYuLjM3
MTEyOTA2OTA5MTRhZDk3MWRiMjE1YzUxZmM3YjM5MTRjODFkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtODg0LDkgKzg4NCwxMSBAQCBPYmplY3RDb250ZW50VHlw
ZSBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgUwogICAgIFN0cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyh1cmwucGF0aCgpKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBhdGguc3Vic3Ry
aW5nKGRlY29kZWRQYXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKTsKIAotICAgIC8vIFdlIGRvbid0
IHVzZSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNhdXNlIGl0IHJl
dHVybnMgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0gICAgaWYgKG1p
bWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlw
ZUZvclBhdGgoZGVjb2RlZFBhdGgpOworICAgICAgICBpZiAobWltZVR5cGUgPT0gZGVmYXVsdE1J
TUVUeXBlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmluZygpOworICAgIH0KIAogI2lm
ICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShDSFJPTUlVTSkgJiYgIVBMQVRGT1JNKEVGTCkg
Ly8gTWFjIGhhcyBubyBQbHVnaW5EYXRhYmFzZSwgbm9yIGRvZXMgQ2hyb21pdW0gb3IgRUZMCiAg
ICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAppbmRleCAwNGZiNWVkYjU2NzRjNzI0OWVjZTBmYzAx
OTAxNTFjOWMyYTk3OGJhLi40ZWJiNTJiY2ZiMThhYzhlODMyMTM2YWM4NDZkYmM5Mjg4OGYyOTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwCkBAIC03MCw2ICs3MCw4IEBAIHN0YXRpYyBBcmNoaXZlTUlNRVR5cGVzTWFwJiBhcmNoaXZl
TUlNRVR5cGVzKCkKICAgICBtaW1lVHlwZXMuc2V0KCJtdWx0aXBhcnQvcmVsYXRlZCIsIGFyY2hp
dmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4pOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBt
aW1lVHlwZXMuc2V0KCJtZXNzYWdlL3JmYzgyMiIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1M
QXJjaGl2ZT4pOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgbWltZVR5cGVzLnNldCgiYXBwbGlj
YXRpb24veC1taW1lYXJjaGl2ZSIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4p
OwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcAppbmRleCA0NDBiNDI5OWFiY2JkYTEzNzNjNmU2YjFhZmM1ZGI4MjMyNzg3YjQ1
Li5kMzQxNDA1MzVkMjEzN2VlZjMyMjAwZDk1NWRkNjA5YTA3NzA2YjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNDkxLDYgKzQ5MSw3IEBA
IFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAgcmV0dXJuIGZpbmRNaW1lVHlwZShjb21tb25N
ZWRpYVR5cGVzLCBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9uTWVkaWFU
eXBlc1swXSksIGV4dGVuc2lvbik7CiB9CiAKKyNpZiAhUExBVEZPUk0oUVQpCiBTdHJpbmcgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBzaXplX3QgcG9zID0gcGF0aC5yZXZlcnNlRmluZCgnLicpOwpAQCAtNTAyLDYgKzUwMyw3
IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIH0KICAgICByZXR1cm4gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7
CiB9CisjZW5kaWYKIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKQEAgLTYzOCw2ICs2NDAsMTMgQEAgY29u
c3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7
CiB9CiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShCTEFDS0JFUlJZKQorU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQoreworICAgIHJldHVybiBtaW1lVHlwZTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gTUlNRVR5cGVB
c3NvY2lhdGlvbk1hcDsKIApAQCAtNjk2LDE4ICs3MDUsMTYgQEAgc3RhdGljIGNvbnN0IE1JTUVU
eXBlQXNzb2NpYXRpb25NYXAmIG1pbWVUeXBlQXNzb2NpYXRpb25NYXAoKQogCiAgICAgcmV0dXJu
ICptaW1lVHlwZU1hcDsKIH0KLSNlbmRpZgogCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0jaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKICAgICBNSU1FVHlwZUFzc29jaWF0aW9uTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1pbWVUeXBlQXNzb2NpYXRpb25NYXAoKS5maW5kKG1pbWVUeXBlKTsKIAogICAgIGlm
IChpdCAhPSBtaW1lVHlwZUFzc29jaWF0aW9uTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBp
dC0+dmFsdWU7Ci0jZW5kaWYKKwogICAgIHJldHVybiBtaW1lVHlwZTsKIH0KLQorI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKaW5kZXggYjgzZjJi
YTA4YzIxNTQ5NmFkMmU4MjI0OGQyZmE4NGUxYWM4Yzg5OC4uMDZiNDA2ZTU2MjYwYzc2NmFhZTIw
MjFkMDlhZDA1OGQzZWU4YTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8
UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFNaW1lRGF0YWJhc2U+CiAjaW5jbHVkZSA8UU5ldHdvcmtD
b29raWU+CiAjaW5jbHVkZSA8UU5ldHdvcmtSZXBseT4KIApAQCAtNTgxLDggKzU4MiwyMSBAQCB2
b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAKICAgICAg
ICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25z
ZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHVybC5sYXN0UGF0aENv
bXBvbmVudCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBl
eHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1p
bWVUeXBlKTsKKyAgICAgICAgICAgIGlmIChleHRlbnNpb25zLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZSh1cmwubGFzdFBhdGhDb21wb25l
bnQoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc3Vm
Zml4IGRvZXNuJ3QgbWF0Y2ggdGhlIE1JTUUgdHlwZSwgY29ycmVjdCB0aGUgc3VmZml4LgorICAg
ICAgICAgICAgICAgIFFTdHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgc3VmZml4ID0gUU1pbWVEYXRhYmFzZSgpLnN1
ZmZpeEZvckZpbGVOYW1lKGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lv
bnMuY29udGFpbnMoc3VmZml4KSkgeworICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZS5jaG9w
KHN1ZmZpeC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgbWlt
ZUV4dGVuc2lvbiA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2Vz
dGVkRmlsZW5hbWUoZmlsZW5hbWUgKyBtaW1lRXh0ZW5zaW9uKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZShzdGF0dXNDb2RlKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQo
bV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBS
ZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvQnl0ZUFycmF5KCkuY29uc3REYXRhKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKaW5kZXgg
YmM1NTUzYWVjMTZjNWQyNzMxNGVjYTQ2YTRiYzNiZmMzMmFjMDYwZi4uNTZkNDE3ZTJiYmNhYjk1
YjU0NjYwYjI0OGU2Y2QzYjI0Y2Y4ZGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwCkBAIC0yOSw3OCArMjksNjUgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKKyNpbmNsdWRl
IDxRTWltZURhdGFiYXNlPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgRXh0ZW5z
aW9uTWFwIHsKLSAgICBjb25zdCBjaGFyKiBleHRlbnNpb247Ci0gICAgY29uc3QgY2hhciogbWlt
ZVR5cGU7Ci19OwotCi1zdGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbk1hcFtdID0g
ewotICAgIHsgImJtcCIsICJpbWFnZS9ibXAiIH0sCi0gICAgeyAiY3NzIiwgInRleHQvY3NzIiB9
LAotICAgIHsgImdpZiIsICJpbWFnZS9naWYiIH0sCi0gICAgeyAiaHRtbCIsICJ0ZXh0L2h0bWwi
IH0sCi0gICAgeyAiaHRtIiwgInRleHQvaHRtbCIgfSwKLSAgICB7ICJpY28iLCAiaW1hZ2UveC1p
Y29uIiB9LAotICAgIHsgImpwZWciLCAiaW1hZ2UvanBlZyIgfSwKLSAgICB7ICJqcGciLCAiaW1h
Z2UvanBlZyIgfSwKLSAgICB7ICJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiIH0sCi0g
ICAgeyAibW5nIiwgInZpZGVvL3gtbW5nIiB9LAotICAgIHsgIm1wNCIsICJ2aWRlby9tcDQiIH0s
Ci0gICAgeyAibTR2IiwgInZpZGVvL21wNCIgfSwKLSAgICB7ICJtNGEiLCAiYXVkaW8veC1tNGEi
IH0sCi0gICAgeyAibWh0IiwgIm11bHRpcGFydC9yZWxhdGVkIiB9LAotICAgIHsgIm1odG1sIiwg
Im11bHRpcGFydC9yZWxhdGVkIiB9LAotICAgIHsgIm1wMyIsICJhdWRpby9tcDMiIH0sCi0gICAg
eyAib2d2IiwgInZpZGVvL29nZyIgfSwKLSAgICB7ICJvZ2EiLCAiYXVkaW8vb2dnIiB9LAotICAg
IHsgIm9nbSIsICJhdWRpby9vZ2ciIH0sCi0gICAgeyAib2dnIiwgImF1ZGlvL29nZyIgfSwKLSAg
ICB7ICJ3ZWJtIiwgInZpZGVvL3dlYm0iIH0sCi0gICAgeyAid2VibSIsICJhdWRpby93ZWJtIiB9
LAotICAgIHsgIndhdiIsICJhdWRpby93YXYiIH0sCi0gICAgeyAibW92IiwgInZpZGVvL3F1aWNr
dGltZSIgfSwKLSAgICB7ICJwYm0iLCAiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiIH0sCi0gICAg
eyAicGdtIiwgImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCIgfSwKLSAgICB7ICJwZGYiLCAiYXBw
bGljYXRpb24vcGRmIiB9LAotICAgIHsgInBuZyIsICJpbWFnZS9wbmciIH0sCi0gICAgeyAicHBt
IiwgImltYWdlL3gtcG9ydGFibGUtcGl4bWFwIiB9LAotICAgIHsgInJzcyIsICJhcHBsaWNhdGlv
bi9yc3MreG1sIiB9LAotICAgIHsgInN2ZyIsICJpbWFnZS9zdmcreG1sIiB9LAotICAgIHsgInRl
eHQiLCAidGV4dC9wbGFpbiIgfSwKLSAgICB7ICJ0aWYiLCAiaW1hZ2UvdGlmZiIgfSwKLSAgICB7
ICJ0aWZmIiwgImltYWdlL3RpZmYiIH0sCi0gICAgeyAidHh0IiwgInRleHQvcGxhaW4iIH0sCi0g
ICAgeyAieGJtIiwgImltYWdlL3gteGJpdG1hcCIgfSwKLSAgICB7ICJ4bWwiLCAidGV4dC94bWwi
IH0sCi0gICAgeyAieHBtIiwgImltYWdlL3gteHBtIiB9LAotICAgIHsgInhzbCIsICJ0ZXh0L3hz
bCIgfSwKLSAgICB7ICJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIH0sCi0gICAgeyAi
d21sIiwgInRleHQvdm5kLndhcC53bWwiIH0sCi0gICAgeyAid21sYyIsICJhcHBsaWNhdGlvbi92
bmQud2FwLndtbGMiIH0sCi0gICAgeyAwLCAwIH0KLX07Ci0KIFN0cmluZyBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcgJmV4dCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIFFNaW1lRGF0YWJhc2UgbGFja3MgdGhlIGFi
aWxpdHkgdG8gcXVlcnkgYnkgZXh0ZW5zaW9uIGFsb25lLCBzbyB3ZSBjcmVhdGUgYSBmYWtlIGZp
bGVuYW1lIHRvIGxvb2t1cC4KKyAgICBjb25zdCBTdHJpbmcgZmlsZW5hbWUgPSAiZmlsZW5hbWUu
IiArIGV4dC5sb3dlcigpOwogCi0gICAgU3RyaW5nIHMgPSBleHQubG93ZXIoKTsKKyAgICBRTWlt
ZVR5cGUgbWltZVR5cGUgPSBRTWltZURhdGFiYXNlKCkubWltZVR5cGVGb3JGaWxlKGZpbGVuYW1l
LCBRTWltZURhdGFiYXNlOjpNYXRjaEV4dGVuc2lvbik7CisgICAgaWYgKG1pbWVUeXBlLmlzVmFs
aWQoKSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5u
YW1lKCk7CiAKLSAgICBjb25zdCBFeHRlbnNpb25NYXAgKmUgPSBleHRlbnNpb25NYXA7Ci0gICAg
d2hpbGUgKGUtPmV4dGVuc2lvbikgewotICAgICAgICBpZiAocyA9PSBlLT5leHRlbnNpb24pCi0g
ICAgICAgICAgICByZXR1cm4gZS0+bWltZVR5cGU7Ci0gICAgICAgICsrZTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFFNaW1lVHlwZSB0eXBlID0gUU1pbWVEYXRh
YmFzZSgpLm1pbWVUeXBlRm9yRmlsZShwYXRoLCBRTWltZURhdGFiYXNlOjpNYXRjaEV4dGVuc2lv
bik7CisgICAgaWYgKHR5cGUuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHlwZS5uYW1lKCk7
CisKKyAgICByZXR1cm4gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7Cit9CisKK1ZlY3RvcjxT
dHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlTmFtZSkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOwor
ICAgIFFNaW1lVHlwZSBtaW1lVHlwZSA9IFFNaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvck5hbWUo
bWltZVR5cGVOYW1lKTsKKyAgICBpZiAobWltZVR5cGUuaXNWYWxpZCgpICYmICFtaW1lVHlwZS5p
c0RlZmF1bHQoKSkgeworICAgICAgICBRX0ZPUkVBQ0goY29uc3QgUVN0cmluZyYgc3VmZml4LCBt
aW1lVHlwZS5zdWZmaXhlcygpKSB7CisgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChzdWZm
aXgpOworICAgICAgICB9CiAgICAgfQogCisgICAgcmV0dXJuIGV4dGVuc2lvbnM7Cit9CisKK1N0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlTmFtZSkKK3sKKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBR
TWltZURhdGFiYXNlKCkubWltZVR5cGVGb3JOYW1lKG1pbWVUeXBlTmFtZSk7CisgICAgaWYgKG1p
bWVUeXBlLmlzVmFsaWQoKSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVy
biBtaW1lVHlwZS5wcmVmZXJyZWRTdWZmaXgoKTsKKwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlTmFtZSkKK3sKKyAgICAvLyBUaGlzIGxvb2tzIHVwIHRoZSBtaW1lIHR5
cGUgb2JqZWN0IGJ5IHByZWZlcnJlZCBuYW1lIG9yIGFsaWFzLCBhbmQgcmV0dXJucyB0aGUgcHJl
ZmVycmVkIG5hbWUuCisgICAgUU1pbWVUeXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgpLm1p
bWVUeXBlRm9yTmFtZShtaW1lVHlwZU5hbWUpOworICAgIGlmIChtaW1lVHlwZS5pc1ZhbGlkKCkg
JiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgpKQorICAgICAgICByZXR1cm4gbWltZVR5cGUubmFtZSgp
OworCisgICAgcmV0dXJuIG1pbWVUeXBlTmFtZTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24veC1xdC1wbHVnaW4i
LCBmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDA3MzFkOTMxNThhMTZmOTczMGU4NDFlMjA4MTdh
ODgyMmI0ZTYxNDguLmQ4ZTY1MWZmM2Q1ZDIwYmZjMmQwZmNmNjkwY2RkZDg0M2ZmYjJiMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcApAQCAtMTM1MCwyMiArMTM1MCwyNCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBG
cmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZwogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICAvLyBxRGVidWcoKTw8IiArKysrKysr
KysrKysrKysrIHVybCBpcyAiPDx1cmwuc3RyaW5nKCk8PCIsIG1pbWUgPSAiPDxtaW1lVHlwZUlu
OwotICAgIFFGaWxlSW5mbyBmaSh1cmwucGF0aCgpKTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0g
Zmkuc3VmZml4KCk7Ci0gICAgaWYgKG1pbWVUeXBlSW4gPT0gImFwcGxpY2F0aW9uL3gtcXQtcGx1
Z2luIiB8fCBtaW1lVHlwZUluID09ICJhcHBsaWNhdGlvbi94LXF0LXN0eWxlZC13aWRnZXQiKQor
ICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUobWlt
ZVR5cGVJbikpCiAgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50T3RoZXJQbHVnaW47CiAKLSAg
ICBpZiAodXJsLmlzRW1wdHkoKSAmJiAhbWltZVR5cGVJbi5sZW5ndGgoKSkKKyAgICBpZiAodXJs
LmlzRW1wdHkoKSAmJiBtaW1lVHlwZUluLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE9iamVj
dENvbnRlbnROb25lOwogCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gbWltZVR5cGVJbjsKLSAgICBp
ZiAoIW1pbWVUeXBlLmxlbmd0aCgpKQotICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0
cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgaWYgKG1pbWVUeXBl
LmlzRW1wdHkoKSkgeworICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1J
TUVUeXBlRm9yUGF0aCh1cmwucGF0aCgpKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGRlZmF1
bHRNSU1FVHlwZSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBTdHJpbmcoKTsKKyAgICB9CiAK
LSAgICBpZiAoIW1pbWVUeXBlLmxlbmd0aCgpKQotICAgICAgICBtaW1lVHlwZSA9IFBsdWdpbkRh
dGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7CisgICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOworICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIG1pbWVUeXBlID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdp
bnMoKS0+TUlNRVR5cGVGb3JFeHRlbnNpb24oZmkuc3VmZml4KCkpOwogCi0gICAgaWYgKCFtaW1l
VHlwZS5sZW5ndGgoKSkKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gT2JqZWN0Q29udGVudEZyYW1lOwogCiAgICAgT2JqZWN0Q29udGVudFR5cGUgcGx1Z0luVHlw
ZSA9IE9iamVjdENvbnRlbnROb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBiM2RmM2I1OGYxM2U3NGRkYzViZTQ5MGY0ODMxMDk2ZTZjNDNjN2M0Li4wM2M1YTQ4ZTQy
YTkxZmRmYTFhZGU0NjRkOWVkZmViYWYzYTliMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTQyMywxOSArMTQyMywyMSBAQCBPYmplY3RDb250ZW50VHlwZSBXZWJG
cmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25z
dAogICAgIC8vIGlzIGNvbnNvbGlkYXRlZC4KIAogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVU
eXBlSW47Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgZXh0
ZW5zaW9uID0gdXJsLnBhdGgoKS5zdWJzdHJpbmcodXJsLnBhdGgoKS5yZXZlcnNlRmluZCgnLicp
ICsgMSkubG93ZXIoKTsKIAorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gVHJ5IHRvIGd1ZXNzIHRoZSBNSU1FIHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uLgotICAgICAg
ICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4
dGVuc2lvbik7Ci0KLSAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIHBsdWctaW4gYXJvdW5kIHRoYXQgY2FuIGhhbmRsZSB0
aGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9
IHdlYlBhZ2UtPmNvcmVQYWdlKCktPnBsdWdpbkRhdGEoKSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAocGx1Z2luU3VwcG9ydHNFeHRlbnNpb24ocGx1Z2luRGF0YSwgZXh0ZW5zaW9uKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW47
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yUGF0aCh1cmwucGF0aCgpKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09
IGRlZmF1bHRNSU1FVHlwZSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBTdHJpbmcoKTsKKyAg
ICB9CisKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBleHRl
bnNpb24gPSB1cmwucGF0aCgpLnN1YnN0cmluZyh1cmwucGF0aCgpLnJldmVyc2VGaW5kKCcuJykg
KyAxKS5sb3dlcigpOworICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgcGx1Zy1pbiBhcm91
bmQgdGhhdCBjYW4gaGFuZGxlIHRoZSBleHRlbnNpb24uCisgICAgICAgIGlmIChXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBpZiAoUGx1Z2luRGF0YSog
cGx1Z2luRGF0YSA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPnBsdWdpbkRhdGEoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChwbHVnaW5TdXBwb3J0c0V4dGVuc2lvbihwbHVnaW5EYXRhLCBleHRlbnNp
b24pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudE5ldHNjYXBlUGx1
Z2luOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175638</attachid>
            <date>2012-11-22 03:28:40 -0800</date>
            <delta_ts>2012-11-22 04:38:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121122122559.patch</filename>
            <type>text/plain</type>
            <size>19015</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc3ZDA3MGQ1YmViYjY0
Yjc4MTIyZjM5ZDJjODMwMzQyNGEzYzljZS4uNDEyOTgxOWU1ZGEyZTliOTA0NGUxNDliY2Y3ZTVj
OGNjYTljNzE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTIyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLiBUbyBzdXBwb3J0IFVu
aXgKKyAgICAgICAgc3R5bGUgbXVsdGktZXh0ZW5zaW9ucyAoZS5nLiB0YXIuZ3opLCBzb21lIGxv
YWRlcnMgd2lsbCBub3cgcHJlZmVyIG1pbWV0eXBlIGRldGVjdGlvbgorICAgICAgICBieSBmaWxl
bmFtZSBvdmVyIGRldGVjdGlvbiBieSBleHRlbnNpb24gYWxvbmUuCisKKyAgICAgICAgU3VwcG9y
dCBmb3IgdGhlIG1pc3NpbmcgZnVuY3Rpb24gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUgd2FzIGFsc28gYWRkZWQgdG8gUXQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5
cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6
ZWRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUFzc29jaWF0aW9uTWFwKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5l
ZWRlZCk6CisgICAgICAgICAgICBTZXQgc3VnZ2VzdGVkIGZpbGVuYW1lIHdpdGggY29ycmVjdCBl
eHRlbnNpb24sIG9yIGxlYXZlIGl0IHVuY2hhbmdlZCBpZiBhbHJlYWR5IHZhbGlkLgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1h
bGl6ZWRNSU1FVHlwZSk6CisKIDIwMTItMTEtMjIgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSB0aGUgImVkZW4iIGJpdCB0byBzb21ldGhpbmcg
bW9yZSBkZXNjcmlwdGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBmMDc5MWJmYzAyZjU4MmUzYzY3ODBj
MjllYjg3NDEyOGYzZTU3MGU2Li42ZTEyNjU2Njk4MzFlN2ZlMDNiNWE1ZDJjNWIwOTVmMTk0MTU4
NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTIyICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0g
TG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb29rdXAgbWltZXR5cGUgYnkgZmlsZW5hbWUg
aW5zdGVhZCBvZiBqdXN0IGxhc3QgZXh0ZW5zaW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisKIDIwMTItMTEtMjEgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgUG9zaXRpb24g
aW4gUVdlYkhpdFRlc3RSZXN1bHQgZG9lcyBub3QgbWF0Y2ggZG9jdW1lbnRhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGU0MTFlOTFhODhjMTE5MDBlYWM2ZWJlMjNlZmE5MzA0ZWI0YjBhNDEuLjE2MTA1OTk1
ZTQ1ZGFkYWRmMGNmNzc3ODg2MzdmODlkNzU2MDUzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0xMS0yMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KKworICAgICAgICBbUXRdIExvb2t1cCBtaW1ldHlwZXMgdXNpbmcgUU1pbWVEYXRh
YmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9v
a3VwIG1pbWV0eXBlIGJ5IGZpbGVuYW1lIGluc3RlYWQgb2YganVzdCBsYXN0IGV4dGVuc2lvbi4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29u
dGVudFR5cGUpOgorCiAyMDEyLTExLTIyICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIENvcnJlY3QgdGhlIHBhcmFtZXRlcnMgb2YgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA5OWEwNDRiYjNhZDZj
MDhjYWJjZjE4ZjYxZmFkMDI3N2MyMDY5MWM0Li44ZjNmMjVjYmYxMjE3MGFiMTI0Nzc4ZjFkOWI3
MmEyZWNiYmI4MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDE1LDYgKzQxNSw3IEBAIF9f
Wk43V2ViQ29yZTE1U3RyaW5nVHJ1bmNhdG9yMTRjZW50ZXJUcnVuY2F0ZUVSS04zV1RGNlN0cmlu
Z0VmUktOU180Rm9udEVOUzBfMjRFCiBfX1pON1dlYkNvcmUxNVN0cmluZ1RydW5jYXRvcjV3aWR0
aEVSS04zV1RGNlN0cmluZ0VSS05TXzRGb250RU5TMF8yNEVuYWJsZVJvdW5kaW5nSGFja3NPck5v
dEUKIF9fWk43V2ViQ29yZTE1VmlzaWJsZVBvc2l0aW9uQzFFUktOU184UG9zaXRpb25FTlNfOUVB
ZmZpbml0eUUKIF9fWk43V2ViQ29yZTE1ZGVmYXVsdExhbmd1YWdlRXYKK19fWk43V2ViQ29yZTE1
ZGVmYXVsdE1JTUVUeXBlRXYKIF9fWk43V2ViQ29yZTE1bG9jYWxpemVkU3RyaW5nRVBLYwogX19a
TjdXZWJDb3JlMTVvcmlnaW5hbFVSTERhdGFFUDVOU1VSTAogX19aTjdXZWJDb3JlMTVwYXRoR2V0
RmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCkBAIC00NDcsNiArNDQ4LDcgQEAgX19aTjdXZWJDb3Jl
MTZMZWdhY3lXZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTZMZWdh
Y3lXZWJBcmNoaXZlNmNyZWF0ZUVQTlNfNVJhbmdlRQogX19aTjdXZWJDb3JlMTZMZWdhY3lXZWJB
cmNoaXZlNmNyZWF0ZUV2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkxNWNhblNob3dN
SU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTE4
Z2V0TUlNRVR5cGVGb3JQYXRoRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlw
ZVJlZ2lzdHJ5MjNnZXRNSU1FVHlwZUZvckV4dGVuc2lvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTI0aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjZnZXRTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlc0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA2OTJiZGUxYWNhMGFk
N2MxNjFjNGQzZjQ4ZWQyMTM2YTNhNTJhZGMwLi5jZTczNDNmMWM4YmFiMmQzYjI0Yzk2Y2I2MzU3
OGNjOWUwNzgwNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM3LDE0ICszNywxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGdldENvbnRlbnRUeXBlRnJvbUZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZTo6Q29udGVudFR5cGVMb29rdXBQb2xpY3kg
cG9saWN5KQogewogICAgIFN0cmluZyB0eXBlOwotICAgIGludCBpbmRleCA9IG5hbWUucmV2ZXJz
ZUZpbmQoJy4nKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpIHsKLSAgICAgICAgaWYgKHBvbGljeSA9
PSBGaWxlOjpXZWxsS25vd25Db250ZW50VHlwZXMpCisgICAgaWYgKHBvbGljeSA9PSBGaWxlOjpX
ZWxsS25vd25Db250ZW50VHlwZXMpIHsKKyAgICAgICAgaW50IGluZGV4ID0gbmFtZS5yZXZlcnNl
RmluZCgnLicpOworICAgICAgICBpZiAoaW5kZXggIT0gLTEpCiAgICAgICAgICAgICB0eXBlID0g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5z
dWJzdHJpbmcoaW5kZXggKyAxKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJU
KHBvbGljeSA9PSBGaWxlOjpBbGxDb250ZW50VHlwZXMpOwotICAgICAgICAgICAgdHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKG5hbWUuc3Vic3RyaW5nKGlu
ZGV4ICsgMSkpOwotICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHBvbGlj
eSA9PSBGaWxlOjpBbGxDb250ZW50VHlwZXMpOworICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG5hbWUpOworICAgICAgICBpZiAodHlwZSA9PSBkZWZh
dWx0TUlNRVR5cGUoKSkKKyAgICAgICAgICAgIHR5cGUgPSBTdHJpbmcoKTsKICAgICB9CiAgICAg
cmV0dXJuIHR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0
MzdhMWY2MTY0NDU3N2NmOTFiOTU3M2JmMGY5M2Q1OGNlZTZjODQ2Li4zNzExMjkwNjkwOTE0YWQ5
NzFkYjIxNWM1MWZjN2IzOTE0YzgxZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKQEAgLTg4NCw5ICs4ODQsMTEgQEAgT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXI6
OmRlZmF1bHRPYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFMKICAgICBT
dHJpbmcgZGVjb2RlZFBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7
CiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGRlY29kZWRQYXRoLnN1YnN0cmluZyhkZWNvZGVkUGF0
aC5yZXZlcnNlRmluZCgnLicpICsgMSk7CiAKLSAgICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkgYmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFpbHVyZQotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JF
eHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGRlY29k
ZWRQYXRoKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGRlZmF1bHRNSU1FVHlwZSgpKQorICAg
ICAgICAgICAgbWltZVR5cGUgPSBTdHJpbmcoKTsKKyAgICB9CiAKICNpZiAhUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oQ0hST01JVU0pICYmICFQTEFURk9STShFRkwpIC8vIE1hYyBoYXMgbm8g
UGx1Z2luRGF0YWJhc2UsIG5vciBkb2VzIENocm9taXVtIG9yIEVGTAogICAgIGlmIChtaW1lVHlw
ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAKaW5kZXggMDRmYjVlZGI1Njc0YzcyNDllY2UwZmMwMTkwMTUxYzljMmE5Nzhi
YS4uNGViYjUyYmNmYjE4YWM4ZTgzMjEzNmFjODQ2ZGJjOTI4ODhmMjk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNzAsNiAr
NzAsOCBAQCBzdGF0aWMgQXJjaGl2ZU1JTUVUeXBlc01hcCYgYXJjaGl2ZU1JTUVUeXBlcygpCiAg
ICAgbWltZVR5cGVzLnNldCgibXVsdGlwYXJ0L3JlbGF0ZWQiLCBhcmNoaXZlRmFjdG9yeUNyZWF0
ZTxNSFRNTEFyY2hpdmU+KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgbWltZVR5cGVzLnNldCgi
bWVzc2FnZS9yZmM4MjIiLCBhcmNoaXZlRmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KTsKKyNl
bGlmIFBMQVRGT1JNKFFUKQorICAgIG1pbWVUeXBlcy5zZXQoImFwcGxpY2F0aW9uL3gtbWltZWFy
Y2hpdmUiLCBhcmNoaXZlRmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KTsKICNlbmRpZgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5k
ZXggNDQwYjQyOTlhYmNiZGExMzczYzZlNmIxYWZjNWRiODIzMjc4N2I0NS4uZDM0MTQwNTM1ZDIx
MzdlZWYzMjIwMGQ5NTVkZDYwOWEwNzcwNmI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTQ5MSw2ICs0OTEsNyBAQCBTdHJpbmcgTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpbwogICAgIHJldHVybiBmaW5kTWltZVR5cGUoY29tbW9uTWVkaWFUeXBlcywgc2l6
ZW9mKGNvbW1vbk1lZGlhVHlwZXMpIC8gc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXNbMF0pLCBleHRl
bnNpb24pOwogfQogCisjaWYgIVBMQVRGT1JNKFFUKQogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBv
cyA9IHBhdGgucmV2ZXJzZUZpbmQoJy4nKTsKQEAgLTUwMiw2ICs1MDMsNyBAQCBTdHJpbmcgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICB9CiAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iOwogfQorI2VuZGlmCiAK
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7CkBAIC02MzgsNiArNjQwLDEzIEBAIGNvbnN0IFN0cmluZyYgZGVm
YXVsdE1JTUVUeXBlKCkKICAgICByZXR1cm4gZGVmYXVsdE1JTUVUeXBlOwogfQogCisjaWYgIVBM
QVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKK1N0cmluZyBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAg
ICByZXR1cm4gbWltZVR5cGU7Cit9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IE1JTUVUeXBlQXNzb2NpYXRpb25NYXA7
CiAKQEAgLTY5NiwxOCArNzA1LDE2IEBAIHN0YXRpYyBjb25zdCBNSU1FVHlwZUFzc29jaWF0aW9u
TWFwJiBtaW1lVHlwZUFzc29jaWF0aW9uTWFwKCkKIAogICAgIHJldHVybiAqbWltZVR5cGVNYXA7
CiB9Ci0jZW5kaWYKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CiAgICAgTUlNRVR5cGVBc3NvY2lhdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVHlw
ZUFzc29jaWF0aW9uTWFwKCkuZmluZChtaW1lVHlwZSk7CiAKICAgICBpZiAoaXQgIT0gbWltZVR5
cGVBc3NvY2lhdGlvbk1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotI2Vu
ZGlmCisKICAgICByZXR1cm4gbWltZVR5cGU7CiB9Ci0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCmluZGV4IGI4M2YyYmEwOGMyMTU0OTZhZDJl
ODIyNDhkMmZhODRlMWFjOGM4OTguLjNhY2IwMTlkMzRiNzJmMmZlMTFiMTljODkyNWYxNjc4OGVl
ODBlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5l
dHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8UURhdGVUaW1lPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgPFFGaWxlSW5mbz4KKyNp
bmNsdWRlIDxRTWltZURhdGFiYXNlPgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgogI2luY2x1
ZGUgPFFOZXR3b3JrUmVwbHk+CiAKQEAgLTU4MSw4ICs1ODIsMjIgQEAgdm9pZCBRTmV0d29ya1Jl
cGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogCiAgICAgICAgIGlmICghc3VnZ2Vz
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVk
RmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZSh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAg
ICAgICAgICBpZiAoZXh0ZW5zaW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVzcG9u
c2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUodXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN1ZmZpeCBkb2Vzbid0IG1h
dGNoIHRoZSBNSU1FIHR5cGUsIGNvcnJlY3QgdGhlIHN1ZmZpeC4KKyAgICAgICAgICAgICAgICBR
U3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nIHN1ZmZpeCA9IFFNaW1lRGF0YWJhc2UoKS5zdWZmaXhGb3JGaWxlTmFt
ZShmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zLmNvbnRhaW5zKHN1
ZmZpeCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUuY2hvcChzdWZmaXgubGVuZ3Ro
KCkpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG1pbWVFeHRlbnNpb24gPSBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKGZp
bGVuYW1lICsgbWltZUV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXND
b2RlKHN0YXR1c0NvZGUpOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChtX3Jl
cGx5V3JhcHBlci0+cmVwbHkoKS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFJlYXNv
blBocmFzZUF0dHJpYnV0ZSkudG9CeXRlQXJyYXkoKS5jb25zdERhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcAppbmRleCBiYzU1
NTNhZWMxNmM1ZDI3MzE0ZWNhNDZhNGJjM2JmYzMyYWMwNjBmLi41NmQ0MTdlMmJiY2FiOTViNTQ2
NjBiMjQ4ZTZjZDNiMjRjZjhkYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKQEAgLTI5LDc4ICsyOSw2NSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKIAorI2luY2x1ZGUgPFFN
aW1lRGF0YWJhc2U+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBFeHRlbnNpb25N
YXAgewotICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbjsKLSAgICBjb25zdCBjaGFyKiBtaW1lVHlw
ZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBFeHRlbnNpb25NYXAgZXh0ZW5zaW9uTWFwW10gPSB7Ci0g
ICAgeyAiYm1wIiwgImltYWdlL2JtcCIgfSwKLSAgICB7ICJjc3MiLCAidGV4dC9jc3MiIH0sCi0g
ICAgeyAiZ2lmIiwgImltYWdlL2dpZiIgfSwKLSAgICB7ICJodG1sIiwgInRleHQvaHRtbCIgfSwK
LSAgICB7ICJodG0iLCAidGV4dC9odG1sIiB9LAotICAgIHsgImljbyIsICJpbWFnZS94LWljb24i
IH0sCi0gICAgeyAianBlZyIsICJpbWFnZS9qcGVnIiB9LAotICAgIHsgImpwZyIsICJpbWFnZS9q
cGVnIiB9LAotICAgIHsgImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgfSwKLSAgICB7
ICJtbmciLCAidmlkZW8veC1tbmciIH0sCi0gICAgeyAibXA0IiwgInZpZGVvL21wNCIgfSwKLSAg
ICB7ICJtNHYiLCAidmlkZW8vbXA0IiB9LAotICAgIHsgIm00YSIsICJhdWRpby94LW00YSIgfSwK
LSAgICB7ICJtaHQiLCAibXVsdGlwYXJ0L3JlbGF0ZWQiIH0sCi0gICAgeyAibWh0bWwiLCAibXVs
dGlwYXJ0L3JlbGF0ZWQiIH0sCi0gICAgeyAibXAzIiwgImF1ZGlvL21wMyIgfSwKLSAgICB7ICJv
Z3YiLCAidmlkZW8vb2dnIiB9LAotICAgIHsgIm9nYSIsICJhdWRpby9vZ2ciIH0sCi0gICAgeyAi
b2dtIiwgImF1ZGlvL29nZyIgfSwKLSAgICB7ICJvZ2ciLCAiYXVkaW8vb2dnIiB9LAotICAgIHsg
IndlYm0iLCAidmlkZW8vd2VibSIgfSwKLSAgICB7ICJ3ZWJtIiwgImF1ZGlvL3dlYm0iIH0sCi0g
ICAgeyAid2F2IiwgImF1ZGlvL3dhdiIgfSwKLSAgICB7ICJtb3YiLCAidmlkZW8vcXVpY2t0aW1l
IiB9LAotICAgIHsgInBibSIsICJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCIgfSwKLSAgICB7ICJw
Z20iLCAiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiB9LAotICAgIHsgInBkZiIsICJhcHBsaWNh
dGlvbi9wZGYiIH0sCi0gICAgeyAicG5nIiwgImltYWdlL3BuZyIgfSwKLSAgICB7ICJwcG0iLCAi
aW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiIH0sCi0gICAgeyAicnNzIiwgImFwcGxpY2F0aW9uL3Jz
cyt4bWwiIH0sCi0gICAgeyAic3ZnIiwgImltYWdlL3N2Zyt4bWwiIH0sCi0gICAgeyAidGV4dCIs
ICJ0ZXh0L3BsYWluIiB9LAotICAgIHsgInRpZiIsICJpbWFnZS90aWZmIiB9LAotICAgIHsgInRp
ZmYiLCAiaW1hZ2UvdGlmZiIgfSwKLSAgICB7ICJ0eHQiLCAidGV4dC9wbGFpbiIgfSwKLSAgICB7
ICJ4Ym0iLCAiaW1hZ2UveC14Yml0bWFwIiB9LAotICAgIHsgInhtbCIsICJ0ZXh0L3htbCIgfSwK
LSAgICB7ICJ4cG0iLCAiaW1hZ2UveC14cG0iIH0sCi0gICAgeyAieHNsIiwgInRleHQveHNsIiB9
LAotICAgIHsgInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfSwKLSAgICB7ICJ3bWwi
LCAidGV4dC92bmQud2FwLndtbCIgfSwKLSAgICB7ICJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53
YXAud21sYyIgfSwKLSAgICB7IDAsIDAgfQotfTsKLQogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgLy8gUU1pbWVEYXRhYmFzZSBsYWNrcyB0aGUgYWJpbGl0
eSB0byBxdWVyeSBieSBleHRlbnNpb24gYWxvbmUsIHNvIHdlIGNyZWF0ZSBhIGZha2UgZmlsZW5h
bWUgdG8gbG9va3VwLgorICAgIGNvbnN0IFN0cmluZyBmaWxlbmFtZSA9ICJmaWxlbmFtZS4iICsg
ZXh0Lmxvd2VyKCk7CiAKLSAgICBTdHJpbmcgcyA9IGV4dC5sb3dlcigpOworICAgIFFNaW1lVHlw
ZSBtaW1lVHlwZSA9IFFNaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvckZpbGUoZmlsZW5hbWUsIFFN
aW1lRGF0YWJhc2U6Ok1hdGNoRXh0ZW5zaW9uKTsKKyAgICBpZiAobWltZVR5cGUuaXNWYWxpZCgp
ICYmICFtaW1lVHlwZS5pc0RlZmF1bHQoKSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlLm5hbWUo
KTsKIAotICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9IGV4dGVuc2lvbk1hcDsKLSAgICB3aGls
ZSAoZS0+ZXh0ZW5zaW9uKSB7Ci0gICAgICAgIGlmIChzID09IGUtPmV4dGVuc2lvbikKLSAgICAg
ICAgICAgIHJldHVybiBlLT5taW1lVHlwZTsKLSAgICAgICAgKytlOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgUU1pbWVUeXBlIHR5cGUgPSBRTWltZURhdGFiYXNl
KCkubWltZVR5cGVGb3JGaWxlKHBhdGgsIFFNaW1lRGF0YWJhc2U6Ok1hdGNoRXh0ZW5zaW9uKTsK
KyAgICBpZiAodHlwZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0eXBlLm5hbWUoKTsKKwor
ICAgIHJldHVybiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKK30KKworVmVjdG9yPFN0cmlu
Zz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGVOYW1lKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7CisgICAg
UU1pbWVUeXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yTmFtZShtaW1l
VHlwZU5hbWUpOworICAgIGlmIChtaW1lVHlwZS5pc1ZhbGlkKCkgJiYgIW1pbWVUeXBlLmlzRGVm
YXVsdCgpKSB7CisgICAgICAgIFFfRk9SRUFDSChjb25zdCBRU3RyaW5nJiBzdWZmaXgsIG1pbWVU
eXBlLnN1ZmZpeGVzKCkpIHsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kKHN1ZmZpeCk7
CisgICAgICAgIH0KICAgICB9CiAKKyAgICByZXR1cm4gZXh0ZW5zaW9uczsKK30KKworU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIFFNaW1lVHlwZSBtaW1lVHlwZSA9IFFNaW1l
RGF0YWJhc2UoKS5taW1lVHlwZUZvck5hbWUobWltZVR5cGVOYW1lKTsKKyAgICBpZiAobWltZVR5
cGUuaXNWYWxpZCgpICYmICFtaW1lVHlwZS5pc0RlZmF1bHQoKSkKKyAgICAgICAgcmV0dXJuIG1p
bWVUeXBlLnByZWZlcnJlZFN1ZmZpeCgpOworCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGVOYW1lKQoreworICAgIC8vIFRoaXMgbG9va3MgdXAgdGhlIG1pbWUgdHlwZSBv
YmplY3QgYnkgcHJlZmVycmVkIG5hbWUgb3IgYWxpYXMsIGFuZCByZXR1cm5zIHRoZSBwcmVmZXJy
ZWQgbmFtZS4KKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBRTWltZURhdGFiYXNlKCkubWltZVR5
cGVGb3JOYW1lKG1pbWVUeXBlTmFtZSk7CisgICAgaWYgKG1pbWVUeXBlLmlzVmFsaWQoKSAmJiAh
bWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5uYW1lKCk7CisK
KyAgICByZXR1cm4gbWltZVR5cGVOYW1lOworfQorCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
QXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAg
IHJldHVybiBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LXF0LXBsdWdpbiIsIGZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKaW5kZXggMDczMWQ5MzE1OGExNmY5NzMwZTg0MWUyMDgxN2E4ODIy
YjRlNjE0OC4uZDhlNjUxZmYzZDVkMjBiZmMyZDBmY2Y2OTBjZGRkODQzZmZiMmIxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCkBAIC0xMzUwLDIyICsxMzUwLDI0IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
CiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlw
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQ
cmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIHFEZWJ1ZygpPDwiICsrKysrKysrKysr
KysrKysgdXJsIGlzICI8PHVybC5zdHJpbmcoKTw8IiwgbWltZSA9ICI8PG1pbWVUeXBlSW47Ci0g
ICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOwotICAgIFN0cmluZyBleHRlbnNpb24gPSBmaS5z
dWZmaXgoKTsKLSAgICBpZiAobWltZVR5cGVJbiA9PSAiYXBwbGljYXRpb24veC1xdC1wbHVnaW4i
IHx8IG1pbWVUeXBlSW4gPT0gImFwcGxpY2F0aW9uL3gtcXQtc3R5bGVkLXdpZGdldCIpCisgICAg
aWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShtaW1lVHlw
ZUluKSkKICAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnRPdGhlclBsdWdpbjsKIAotICAgIGlm
ICh1cmwuaXNFbXB0eSgpICYmICFtaW1lVHlwZUluLmxlbmd0aCgpKQorICAgIGlmICh1cmwuaXNF
bXB0eSgpICYmIG1pbWVUeXBlSW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gT2JqZWN0Q29u
dGVudE5vbmU7CiAKICAgICBTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZUluOwotICAgIGlmICgh
bWltZVR5cGUubGVuZ3RoKCkpCi0gICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICBpZiAobWltZVR5cGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5
cGVGb3JQYXRoKHVybC5wYXRoKCkpOworICAgICAgICBpZiAobWltZVR5cGUgPT0gZGVmYXVsdE1J
TUVUeXBlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmluZygpOworICAgIH0KIAotICAg
IGlmICghbWltZVR5cGUubGVuZ3RoKCkpCi0gICAgICAgIG1pbWVUeXBlID0gUGx1Z2luRGF0YWJh
c2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsK
KyAgICBRRmlsZUluZm8gZmkodXJsLnBhdGgoKSk7CisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHko
KSkKKyAgICAgICAgbWltZVR5cGUgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygp
LT5NSU1FVHlwZUZvckV4dGVuc2lvbihmaS5zdWZmaXgoKSk7CiAKLSAgICBpZiAoIW1pbWVUeXBl
Lmxlbmd0aCgpKQorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBP
YmplY3RDb250ZW50RnJhbWU7CiAKICAgICBPYmplY3RDb250ZW50VHlwZSBwbHVnSW5UeXBlID0g
T2JqZWN0Q29udGVudE5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IGIzZGYzYjU4ZjEzZTc0ZGRjNWJlNDkwZjQ4MzEwOTZlNmM0M2M3YzQuLjAzYzVhNDhlNDJhOTFm
ZGZhMWFkZTQ2NGQ5ZWRmZWJhZjNhOWIwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC0xNDIzLDE5ICsxNDIzLDIxIEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0CiAg
ICAgLy8gaXMgY29uc29saWRhdGVkLgogCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gbWltZVR5cGVJ
bjsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBleHRlbnNp
b24gPSB1cmwucGF0aCgpLnN1YnN0cmluZyh1cmwucGF0aCgpLnJldmVyc2VGaW5kKCcuJykgKyAx
KS5sb3dlcigpOwogCisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBU
cnkgdG8gZ3Vlc3MgdGhlIE1JTUUgdHlwZSBmcm9tIHRoZSBleHRlbnNpb24uCi0gICAgICAgIG1p
bWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5z
aW9uKTsKLQotICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAv
LyBDaGVjayBpZiB0aGVyZSdzIGEgcGx1Zy1pbiBhcm91bmQgdGhhdCBjYW4gaGFuZGxlIHRoZSBl
eHRlbnNpb24uCi0gICAgICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gd2Vi
UGFnZS0+Y29yZVBhZ2UoKS0+cGx1Z2luRGF0YSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChwbHVnaW5TdXBwb3J0c0V4dGVuc2lvbihwbHVnaW5EYXRhLCBleHRlbnNpb24pKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnROZXRzY2FwZVBsdWdpbjsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TUlNRVR5cGVGb3JQYXRoKHVybC5wYXRoKCkpOworICAgICAgICBpZiAobWltZVR5cGUgPT0gZGVm
YXVsdE1JTUVUeXBlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IFN0cmluZygpOworICAgIH0K
KworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIGV4dGVuc2lv
biA9IHVybC5wYXRoKCkuc3Vic3RyaW5nKHVybC5wYXRoKCkucmV2ZXJzZUZpbmQoJy4nKSArIDEp
Lmxvd2VyKCk7CisgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBwbHVnLWluIGFyb3VuZCB0
aGF0IGNhbiBoYW5kbGUgdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChQbHVnaW5EYXRhKiBwbHVn
aW5EYXRhID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGx1Z2luRGF0YSgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHBsdWdpblN1cHBvcnRzRXh0ZW5zaW9uKHBsdWdpbkRhdGEsIGV4dGVuc2lvbikp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW47
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175645</attachid>
            <date>2012-11-22 04:38:04 -0800</date>
            <delta_ts>2012-11-22 04:56:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102667-20121122133523.patch</filename>
            <type>text/plain</type>
            <size>7035</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc3ZDA3MGQ1YmViYjY0
Yjc4MTIyZjM5ZDJjODMwMzQyNGEzYzljZS4uMWE3YTdlMmUwMmYxNjM3YzYyNzZlZjdjYzVmYThj
YWZiMjMzNGQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTExLTIyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gTG9va3VwIG1pbWV0eXBlcyB1c2luZyBRTWltZURhdGFiYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgYmFja2VuZCBvZiBNSU1FVHlw
ZVJlZ2lzdHJ5IG5vdyBsb29rcyB1cCB1c2luZyBRTWltZURhdGFiYXNlLgorCisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJj
aGl2ZU1JTUVUeXBlcyk6CisgICAgICAgICAgICBBbHNvIG1hcCB0aGUgcHJlZmVycmVkIGZyZWVk
ZXNrdG9wIG1pbWV0eXBlIGZvciBNSU1FIGFyY2hpdmVzIHRvIE1JTUUgYXJjaGl2ZSBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOgorCiAy
MDEyLTExLTIyICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZW5hbWUgdGhlICJlZGVuIiBiaXQgdG8gc29tZXRoaW5nIG1vcmUgZGVzY3JpcHRpdmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAppbmRl
eCAwNGZiNWVkYjU2NzRjNzI0OWVjZTBmYzAxOTAxNTFjOWMyYTk3OGJhLi40ZWJiNTJiY2ZiMThh
YzhlODMyMTM2YWM4NDZkYmM5Mjg4OGYyOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC03MCw2ICs3MCw4IEBAIHN0YXRpYyBB
cmNoaXZlTUlNRVR5cGVzTWFwJiBhcmNoaXZlTUlNRVR5cGVzKCkKICAgICBtaW1lVHlwZXMuc2V0
KCJtdWx0aXBhcnQvcmVsYXRlZCIsIGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4p
OwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBtaW1lVHlwZXMuc2V0KCJtZXNzYWdlL3JmYzgyMiIs
IGFyY2hpdmVGYWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4pOworI2VsaWYgUExBVEZPUk0oUVQp
CisgICAgbWltZVR5cGVzLnNldCgiYXBwbGljYXRpb24veC1taW1lYXJjaGl2ZSIsIGFyY2hpdmVG
YWN0b3J5Q3JlYXRlPE1IVE1MQXJjaGl2ZT4pOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA0NDBiNDI5OWFiY2Jk
YTEzNzNjNmU2YjFhZmM1ZGI4MjMyNzg3YjQ1Li5kMzQxNDA1MzVkMjEzN2VlZjMyMjAwZDk1NWRk
NjA5YTA3NzA2YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcApAQCAtNDkxLDYgKzQ5MSw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRX
ZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAg
cmV0dXJuIGZpbmRNaW1lVHlwZShjb21tb25NZWRpYVR5cGVzLCBzaXplb2YoY29tbW9uTWVkaWFU
eXBlcykgLyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSksIGV4dGVuc2lvbik7CiB9CiAKKyNp
ZiAhUExBVEZPUk0oUVQpCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzaXplX3QgcG9zID0gcGF0aC5yZXZlcnNl
RmluZCgnLicpOwpAQCAtNTAyLDYgKzUwMyw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0KICAgICByZXR1cm4g
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7CiB9CisjZW5kaWYKIAogYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKQEAgLTYzOCw2ICs2NDAsMTMgQEAgY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQog
ICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7CiB9CiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQ
TEFURk9STShCTEFDS0JFUlJZKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6
ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBtaW1lVHlw
ZTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gTUlNRVR5cGVBc3NvY2lhdGlvbk1hcDsKIApAQCAtNjk2LDE4ICs3
MDUsMTYgQEAgc3RhdGljIGNvbnN0IE1JTUVUeXBlQXNzb2NpYXRpb25NYXAmIG1pbWVUeXBlQXNz
b2NpYXRpb25NYXAoKQogCiAgICAgcmV0dXJuICptaW1lVHlwZU1hcDsKIH0KLSNlbmRpZgogCiBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiB7Ci0jaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBNSU1FVHlwZUFz
c29jaWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUeXBlQXNzb2NpYXRpb25NYXAo
KS5maW5kKG1pbWVUeXBlKTsKIAogICAgIGlmIChpdCAhPSBtaW1lVHlwZUFzc29jaWF0aW9uTWFw
KCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0jZW5kaWYKKwogICAgIHJldHVy
biBtaW1lVHlwZTsKIH0KLQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwCmluZGV4
IGJjNTU1M2FlYzE2YzVkMjczMTRlY2E0NmE0YmMzYmZjMzJhYzA2MGYuLjkzZjhlODZiZWEwMGNj
ZTYyZTBmNDA1Nzk5ZTQ4NWE0OWM1MmVhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcApAQCAtMjksNzYgKzI5LDQxIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogCisjaW5jbHVk
ZSA8UU1pbWVEYXRhYmFzZT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEV4dGVu
c2lvbk1hcCB7Ci0gICAgY29uc3QgY2hhciogZXh0ZW5zaW9uOwotICAgIGNvbnN0IGNoYXIqIG1p
bWVUeXBlOwotfTsKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVu
c2lvbihjb25zdCBTdHJpbmcgJmV4dCkKK3sKKyAgICAvLyBRTWltZURhdGFiYXNlIGxhY2tzIHRo
ZSBhYmlsaXR5IHRvIHF1ZXJ5IGJ5IGV4dGVuc2lvbiBhbG9uZSwgc28gd2UgY3JlYXRlIGEgZmFr
ZSBmaWxlbmFtZSB0byBsb29rdXAuCisgICAgY29uc3QgU3RyaW5nIGZpbGVuYW1lID0gImZpbGVu
YW1lLiIgKyBleHQubG93ZXIoKTsKIAotc3RhdGljIGNvbnN0IEV4dGVuc2lvbk1hcCBleHRlbnNp
b25NYXBbXSA9IHsKLSAgICB7ICJibXAiLCAiaW1hZ2UvYm1wIiB9LAotICAgIHsgImNzcyIsICJ0
ZXh0L2NzcyIgfSwKLSAgICB7ICJnaWYiLCAiaW1hZ2UvZ2lmIiB9LAotICAgIHsgImh0bWwiLCAi
dGV4dC9odG1sIiB9LAotICAgIHsgImh0bSIsICJ0ZXh0L2h0bWwiIH0sCi0gICAgeyAiaWNvIiwg
ImltYWdlL3gtaWNvbiIgfSwKLSAgICB7ICJqcGVnIiwgImltYWdlL2pwZWciIH0sCi0gICAgeyAi
anBnIiwgImltYWdlL2pwZWciIH0sCi0gICAgeyAianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2Ny
aXB0IiB9LAotICAgIHsgIm1uZyIsICJ2aWRlby94LW1uZyIgfSwKLSAgICB7ICJtcDQiLCAidmlk
ZW8vbXA0IiB9LAotICAgIHsgIm00diIsICJ2aWRlby9tcDQiIH0sCi0gICAgeyAibTRhIiwgImF1
ZGlvL3gtbTRhIiB9LAotICAgIHsgIm1odCIsICJtdWx0aXBhcnQvcmVsYXRlZCIgfSwKLSAgICB7
ICJtaHRtbCIsICJtdWx0aXBhcnQvcmVsYXRlZCIgfSwKLSAgICB7ICJtcDMiLCAiYXVkaW8vbXAz
IiB9LAotICAgIHsgIm9ndiIsICJ2aWRlby9vZ2ciIH0sCi0gICAgeyAib2dhIiwgImF1ZGlvL29n
ZyIgfSwKLSAgICB7ICJvZ20iLCAiYXVkaW8vb2dnIiB9LAotICAgIHsgIm9nZyIsICJhdWRpby9v
Z2ciIH0sCi0gICAgeyAid2VibSIsICJ2aWRlby93ZWJtIiB9LAotICAgIHsgIndlYm0iLCAiYXVk
aW8vd2VibSIgfSwKLSAgICB7ICJ3YXYiLCAiYXVkaW8vd2F2IiB9LAotICAgIHsgIm1vdiIsICJ2
aWRlby9xdWlja3RpbWUiIH0sCi0gICAgeyAicGJtIiwgImltYWdlL3gtcG9ydGFibGUtYml0bWFw
IiB9LAotICAgIHsgInBnbSIsICJpbWFnZS94LXBvcnRhYmxlLWdyYXltYXAiIH0sCi0gICAgeyAi
cGRmIiwgImFwcGxpY2F0aW9uL3BkZiIgfSwKLSAgICB7ICJwbmciLCAiaW1hZ2UvcG5nIiB9LAot
ICAgIHsgInBwbSIsICJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCIgfSwKLSAgICB7ICJyc3MiLCAi
YXBwbGljYXRpb24vcnNzK3htbCIgfSwKLSAgICB7ICJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIgfSwK
LSAgICB7ICJ0ZXh0IiwgInRleHQvcGxhaW4iIH0sCi0gICAgeyAidGlmIiwgImltYWdlL3RpZmYi
IH0sCi0gICAgeyAidGlmZiIsICJpbWFnZS90aWZmIiB9LAotICAgIHsgInR4dCIsICJ0ZXh0L3Bs
YWluIiB9LAotICAgIHsgInhibSIsICJpbWFnZS94LXhiaXRtYXAiIH0sCi0gICAgeyAieG1sIiwg
InRleHQveG1sIiB9LAotICAgIHsgInhwbSIsICJpbWFnZS94LXhwbSIgfSwKLSAgICB7ICJ4c2wi
LCAidGV4dC94c2wiIH0sCi0gICAgeyAieGh0bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIiB9
LAotICAgIHsgIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIiB9LAotICAgIHsgIndtbGMiLCAiYXBw
bGljYXRpb24vdm5kLndhcC53bWxjIiB9LAotICAgIHsgMCwgMCB9Ci19OworICAgIFFNaW1lVHlw
ZSBtaW1lVHlwZSA9IFFNaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvckZpbGUoZmlsZW5hbWUsIFFN
aW1lRGF0YWJhc2U6Ok1hdGNoRXh0ZW5zaW9uKTsKKyAgICBpZiAobWltZVR5cGUuaXNWYWxpZCgp
ICYmICFtaW1lVHlwZS5pc0RlZmF1bHQoKSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlLm5hbWUo
KTsKIAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyAmZXh0KQorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBRTWltZVR5cGUgdHlwZSA9IFFNaW1lRGF0
YWJhc2UoKS5taW1lVHlwZUZvckZpbGUocGF0aCwgUU1pbWVEYXRhYmFzZTo6TWF0Y2hFeHRlbnNp
b24pOworICAgIGlmICh0eXBlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHR5cGUubmFtZSgp
OwogCi0gICAgU3RyaW5nIHMgPSBleHQubG93ZXIoKTsKKyAgICByZXR1cm4gImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSI7Cit9CiAKLSAgICBjb25zdCBFeHRlbnNpb25NYXAgKmUgPSBleHRlbnNp
b25NYXA7Ci0gICAgd2hpbGUgKGUtPmV4dGVuc2lvbikgewotICAgICAgICBpZiAocyA9PSBlLT5l
eHRlbnNpb24pCi0gICAgICAgICAgICByZXR1cm4gZS0+bWltZVR5cGU7Ci0gICAgICAgICsrZTsK
LSAgICB9CitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIC8vIFRoaXMgbG9va3MgdXAgdGhlIG1p
bWUgdHlwZSBvYmplY3QgYnkgcHJlZmVycmVkIG5hbWUgb3IgYWxpYXMsIGFuZCByZXR1cm5zIHRo
ZSBwcmVmZXJyZWQgbmFtZS4KKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBRTWltZURhdGFiYXNl
KCkubWltZVR5cGVGb3JOYW1lKG1pbWVUeXBlTmFtZSk7CisgICAgaWYgKG1pbWVUeXBlLmlzVmFs
aWQoKSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5u
YW1lKCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIG1pbWVUeXBlTmFtZTsK
IH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
</data>
<flag name="review"
          id="191151"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>