From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=FAKE_REPLY_C, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED, USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8265ECDFB3 for ; Tue, 17 Jul 2018 01:15:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5DBD920BED for ; Tue, 17 Jul 2018 01:15:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5DBD920BED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731248AbeGQBpK (ORCPT ); Mon, 16 Jul 2018 21:45:10 -0400 Received: from mga03.intel.com ([134.134.136.65]:42991 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731063AbeGQBpJ (ORCPT ); Mon, 16 Jul 2018 21:45:09 -0400 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jul 2018 18:15:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,363,1526367600"; d="gz'50?scan'50,208,50";a="72899093" Received: from pl-dbox.sh.intel.com (HELO intel.com) ([10.239.13.138]) by fmsmga001.fm.intel.com with ESMTP; 16 Jul 2018 18:14:31 -0700 Date: Tue, 17 Jul 2018 09:25:36 +0800 From: kbuild test robot To: Waiman Long Cc: kbuild-all@01.org, Alexander Viro , Jonathan Corbet , "Luis R. Rodriguez" , Kees Cook , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, Linus Torvalds , Jan Kara , "Paul E. McKenney" , Andrew Morton , Ingo Molnar , Miklos Szeredi , Matthew Wilcox , Larry Woodman , James Bottomley , "Wangkai (Kevin C)" , Michal Hocko , Waiman Long Subject: Re: [PATCH v7 6/6] fs/dcache: Allow deconfiguration of negative dentry code to reduce kernel size Message-ID: <20180717012535.GD10593@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="iIOavGAISvUeFFLW" Content-Disposition: inline In-Reply-To: <1531413965-5401-7-git-send-email-longman@redhat.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --iIOavGAISvUeFFLW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Waiman, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.18-rc4] [cannot apply to next-20180713] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Waiman-Long/fs-dcache-Track-report-number-of-negative-dentries/20180714-161258 config: h8300-h8300h-sim_defconfig (attached as .config) compiler: h8300-linux-gcc (GCC) 8.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.1.0 make.cross ARCH=h8300 :::::: branch date: 65 minutes ago :::::: commit date: 65 minutes ago All errors (new ones prefixed by >>): fs/dcache.c: In function 'neg_dentry_inc_slowpath': >> fs/dcache.c:374:8: error: implicit declaration of function 'get_nr_dentry_neg'; did you mean 'get_nr_dirty_inodes'? [-Werror=implicit-function-declaration] cnt = get_nr_dentry_neg(); ^~~~~~~~~~~~~~~~~ get_nr_dirty_inodes cc1: some warnings being treated as errors # https://github.com/0day-ci/linux/commit/ca68ee513a450445b269248c2859302c8931a294 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout ca68ee513a450445b269248c2859302c8931a294 vim +374 fs/dcache.c bcc9ba8b Waiman Long 2018-07-12 311 2ccdd02c Waiman Long 2018-07-12 312 static noinline int neg_dentry_inc_slowpath(struct dentry *dentry) bcc9ba8b Waiman Long 2018-07-12 313 { bcc9ba8b Waiman Long 2018-07-12 314 long cnt = 0, *pcnt; 2aa8bf46 Waiman Long 2018-07-12 315 unsigned long current_time; bcc9ba8b Waiman Long 2018-07-12 316 bcc9ba8b Waiman Long 2018-07-12 317 /* bcc9ba8b Waiman Long 2018-07-12 318 * Try to move some negative dentry quota from the global free bcc9ba8b Waiman Long 2018-07-12 319 * pool to the percpu count to allow more negative dentries to bcc9ba8b Waiman Long 2018-07-12 320 * be added to the LRU. bcc9ba8b Waiman Long 2018-07-12 321 */ bcc9ba8b Waiman Long 2018-07-12 322 pcnt = get_cpu_ptr(&nr_dentry_neg); bcc9ba8b Waiman Long 2018-07-12 323 if ((READ_ONCE(ndblk.nfree) > 0) && bcc9ba8b Waiman Long 2018-07-12 324 (*pcnt > neg_dentry_percpu_limit)) { bcc9ba8b Waiman Long 2018-07-12 325 cnt = __neg_dentry_nfree_dec(*pcnt - neg_dentry_percpu_limit); bcc9ba8b Waiman Long 2018-07-12 326 *pcnt -= cnt; bcc9ba8b Waiman Long 2018-07-12 327 } bcc9ba8b Waiman Long 2018-07-12 328 put_cpu_ptr(&nr_dentry_neg); bcc9ba8b Waiman Long 2018-07-12 329 2aa8bf46 Waiman Long 2018-07-12 330 if (cnt) 2aa8bf46 Waiman Long 2018-07-12 331 goto out; 2aa8bf46 Waiman Long 2018-07-12 332 bcc9ba8b Waiman Long 2018-07-12 333 /* 2ccdd02c Waiman Long 2018-07-12 334 * Kill the dentry by setting the DCACHE_KILL_NEGATIVE flag and 2ccdd02c Waiman Long 2018-07-12 335 * dec the negative dentry count if the enforcing option is on. 2ccdd02c Waiman Long 2018-07-12 336 */ 2ccdd02c Waiman Long 2018-07-12 337 if (neg_dentry_enforce) { 2ccdd02c Waiman Long 2018-07-12 338 dentry->d_flags |= DCACHE_KILL_NEGATIVE; 2ccdd02c Waiman Long 2018-07-12 339 this_cpu_dec(nr_dentry_neg); 2ccdd02c Waiman Long 2018-07-12 340 2ccdd02c Waiman Long 2018-07-12 341 /* 2ccdd02c Waiman Long 2018-07-12 342 * When the dentry is not put into the LRU, we 2ccdd02c Waiman Long 2018-07-12 343 * need to keep the reference count to 1 to 2ccdd02c Waiman Long 2018-07-12 344 * avoid problem when killing it. 2ccdd02c Waiman Long 2018-07-12 345 */ 2ccdd02c Waiman Long 2018-07-12 346 WARN_ON_ONCE(dentry->d_lockref.count); 2ccdd02c Waiman Long 2018-07-12 347 dentry->d_lockref.count = 1; 2ccdd02c Waiman Long 2018-07-12 348 return -1; /* Kill the dentry now */ 2ccdd02c Waiman Long 2018-07-12 349 } 2ccdd02c Waiman Long 2018-07-12 350 2ccdd02c Waiman Long 2018-07-12 351 /* 2aa8bf46 Waiman Long 2018-07-12 352 * Put out a warning every minute or so if there are just too many 2aa8bf46 Waiman Long 2018-07-12 353 * negative dentries. bcc9ba8b Waiman Long 2018-07-12 354 */ 2aa8bf46 Waiman Long 2018-07-12 355 current_time = jiffies; bcc9ba8b Waiman Long 2018-07-12 356 2aa8bf46 Waiman Long 2018-07-12 357 if (current_time < ndblk.warn_jiffies + NEG_WARN_PERIOD) 2aa8bf46 Waiman Long 2018-07-12 358 goto out; 2aa8bf46 Waiman Long 2018-07-12 359 /* 2aa8bf46 Waiman Long 2018-07-12 360 * Update the time in ndblk.warn_jiffies and print a warning 2aa8bf46 Waiman Long 2018-07-12 361 * if time update is successful. 2aa8bf46 Waiman Long 2018-07-12 362 */ 2aa8bf46 Waiman Long 2018-07-12 363 raw_spin_lock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 364 if (current_time < ndblk.warn_jiffies + NEG_WARN_PERIOD) { 2aa8bf46 Waiman Long 2018-07-12 365 raw_spin_unlock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 366 goto out; 2aa8bf46 Waiman Long 2018-07-12 367 } 2aa8bf46 Waiman Long 2018-07-12 368 ndblk.warn_jiffies = current_time; 2aa8bf46 Waiman Long 2018-07-12 369 raw_spin_unlock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 370 2aa8bf46 Waiman Long 2018-07-12 371 /* 2aa8bf46 Waiman Long 2018-07-12 372 * Get the current negative dentry count & print a warning. 2aa8bf46 Waiman Long 2018-07-12 373 */ 2aa8bf46 Waiman Long 2018-07-12 @374 cnt = get_nr_dentry_neg(); 2aa8bf46 Waiman Long 2018-07-12 375 pr_warn("Warning: Too many negative dentries (%ld). " 2ccdd02c Waiman Long 2018-07-12 376 "This warning can be disabled by writing 0 to \"fs/neg-dentry-limit\", increasing the limit or writing 1 to \"fs/neg-dentry-enforce\".\n", 2aa8bf46 Waiman Long 2018-07-12 377 cnt); 2aa8bf46 Waiman Long 2018-07-12 378 out: 2ccdd02c Waiman Long 2018-07-12 379 return 0; bcc9ba8b Waiman Long 2018-07-12 380 } bcc9ba8b Waiman Long 2018-07-12 381 :::::: The code at line 374 was first introduced by commit :::::: 2aa8bf4658af0dbc07ae9ea07d04937a347e3ef4 fs/dcache: Print negative dentry warning every min until turned off by user :::::: TO: Waiman Long :::::: CC: 0day robot --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --iIOavGAISvUeFFLW Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 H4sICEi7SVsAAy5jb25maWcAjVtZc9u4sn6fX8HKVN1K6tx4vGQ8zrnlBxAERYwIggOAWvLC UmTGUcWWfLTMJP/+doOUSIqAc2apxOgGCDR6+brR/vWXXwNy2G+eF/vVcvH09CN4rNbVdrGv HoIvq6fq/4JIBpk0AYu4uQDmdLU+fP/t693N5WXw4eLq7uLy/Xb5IRhX23X1FNDN+svq8QDz V5v1L7/+Av/9CoPPL7DU9t+Bnfb+CZd4/7hcBm9HlL4L7i6uLi6Bk8os5qMyQab7H8cfaV6U IfzJsoiTrB1XU81EOWIZU5yWOudZKum4pR8pyZTxUWJaQiZLLnOpTClIPuSnuhDtaPLp/ury 8jRV4Xb0/dVpc7TkuoRTdNaBsQlTmsvs/u6yM5mmJBudSKdhrv4qp1Lhzq20Rlb+T8Gu2h9e WqmESo5ZVsqs1KKza55xA6KZlESNypQLbu5vrlHmzTelyHnKSsO0CVa7YL3Z48LH2SAxkh53 9OZNO69LKElhpGNyQiasHDOVsbQcfeKdTXUp6SfZEvrcp6+1rI7PRCwmRWrKRGqTEcHu37xd b9bVu85u9VxPeE67k0+0QrOUh12SlTJIPdgdPu9+7PbVcyvloxLgpehETjuChpFICsIzh8qg 5rEJy4w+3qJZPVfbnesTyacyh1ky4rQrA9BKoPAoZc5jWLKTkoB2l4rp0nABFzY4KSjsb2ax +xbsYUvBYv0Q7PaL/S5YLJebw3q/Wj+2ezOcjq3BEUplkRmejbp7DHVU5kpSpjVymMG3FC0C PTwyrDMvgdZdC34s2Qwk4dJLXTN3p+uz+Xxc/8Wp1bDVIoYL5LG5v/rjOJ4rnplxqUnMznlu OiYzUrLItfsWQP90TkAATrKmCYusudg1nDyKpWTupITpGJR9Yk1aRU4WcC0yh3vmn1gZS4WK BH8IklHmkMM5t4a/nBlpwaOr23asvpCumC2DY20BJsnBtlSXWY+YEUSP0SDBf6RuIc11rF0c DT1OSAZW0G4ql5rPGu3ujNrLbH8Oi76qEg2HLjx7iAvDZk4Ky6Vv33yUkTR2X4zdnYdmHYOH Rrh0j0cTDgdopKRdF8BESJTi/RsABaTjXIJo0CUYqdzeZIyLzoVbi8M8fuV64LMsiljU/WpO ry4/DJxBAwnyavtls31erJdVwP6u1uB6CDghis4HXGTto+p1JqIWVmmdz5kz68U0YiAgjt33 lJLQQyhCl69JZdiqEc4G2aoROwae7kEFIIYS5CKnZZGhnXKSglG57xY8ZcxTcKG+2EnTjv7m aTHimY1ygCbePP7rX286dpwQMBlD4G6VNIzCxUJEyDpGImRUpBAEwCRLlsbWzXQWHxkSAgxI Qbypvr/ubYMomuAHkj7mgojD4phTjhcSx7rnvFlsr2hgYTWCoXLy/vNiBxDyW60DL9sNgMle qLEGqgUIE9BUK+D6GB7/CFHWIUsAfjxjFgHCrSATBusuRLJ0xUjU0F+jOedOFTfMN7lL7M9G MVo02xEt/nz7sQNjpajhzxE55NvNstrtNttg/+OlDthfqsX+sK16tmLXLQmD1e7cuMAyJHeC uD1dTR+TjIXwr0tH7c7B74nu1Sd3umSR1OPr2z8+eBbWOMm3InhqDrEjKyMT3r+xGcHXcrd6 Pqm7BGVjBgBy14vErQhO5sWYyM3RDjpmV49PZAoaSpQ72DZcrviTEgPOtb0hHICvRAx9bj9n sPaDnrivGDpPAZXnxmqETRg+2n+O9AmH5MNIkEQnoGVSiKJsnEppFAdnOEOo1WYbGQN4ARHa Kta4dy00ZYACCPh/53E/5VK6w9qnsPC4L6bwM+B1jNseR0VehiyjiSB9V2zvjX2vlof94vNT ZfPIwMaAfU+FQ57FwgBqUtx5Ew0d5d8L7fXwJxx3O4pm3YQokNfP2ATX7syBQvSMCuGGcRkb ot+o+nsFQS7arv6uA1ubz62WzXAgXzA17smhqINewlKQufNrAAuNyGMP6jQAmEgKZuDTdLt8 zJWYgkSs/UWDzcer7fM/i20VPG0WD9W2u794CnCZRJ691eEQgeurAosYILQyUnziPaNlYBPl 8f81A2ayzTLgtoWcuFzXKTEDBYYVOZjR0b2Gh13wYC+qdwfCRI51ItNJ7GXc1UIZIwQwnsQa qKh3BrxMd4GSEZXO3SQSRQqtvTtWR5PuN+G8ypdA5ERhWWNwtdlEMEjLXl422/1RK8Vqt3TJ Ae5PzPG7biibQaqrC1AiQP5WrG6NVES4TerauUHGANYISJaPW2w/aCnlxxs6ux1MM9X3xS7g 691+e3i2wHL3FTT4IdhvF+sdLhUA5qiCBzjr6gX/ejw9eQLouQjifETAOzWK/7D5Z43KHzxv Hg7gsd5uq/8cVhBzAn5N3x2nckCtT4HgNPifYFs92ULZri/blgWVrbb7I01THjuGJzJ3jLYL JZvd3kuki+2D6zNe/s3LCWPoPZwgEIv14rFCGQZvqdTi3bkTw/2dlmtvhyZycCuaat5oVkcw pwxZcwR5R2vk65fDfsjdZvlZXgz1JYED2yvjv8kAp/RUWGN1xR2xIH13KiAFvVksQSc6JnHM 7My8a4ITdywBVzD7eAchf+62iJSNCJ376bhniPqAZWpv7sn/jSIUbI9nLhwMjq7GLd2wMYah 4RVBQFo8BQ+nO+7vwjopGOql9jXp7vr3y6F/2azfW8KuXtdanuMymzUKogzgI5ffbjg0oE7K O3iqO4xFWFxC39+46TCoZbeA0Cd3TtenY/hyDnZWPD+LpjSbuQNew0FSSGRJ+achI9z1f8H6 M7YZJpWzMtc/5YTM7jVyrNMyzX+2CPzEZgQARMRHnMpUusN3w404AGCtW3vNvCnbOMk8F7ys iz/uTyTTUgFZumOLuvl4OyxC5FRQToKlw8DbfVH4P3evCsJO52cHqj3XNXU6rGuPyHPuGRdu QqLd43k+3Etu8mD5tFl+O49EbG0BeJ7MsQaOqSTgVnxsKGHIFq3A3YgcaxT7DaxXBfuvkHI+ PKwQpIIp21V3F90TAjc1yp1MjHIuz6rtJ9r0yn0eOQUkRyZulampgIuYW0drui7yPHVjomQq ZObWxoQpQdznmBJDk0i6Kjdah1iR1Dw8cwjaVVwKqSBOdiQM7lEcnvarL4f1EqV/jIqtl27B ahyVmKSCCaeQI3oMouVKUhq51RJ5En774fqqzBEaOEVoKEBLzemNd4kx5NKpO2QhWZjbm49/ eMla/H7pVg4Szn6/vLRO2D97rqnnipFseEnEzc3vs9JoSjxiUGxUACb3uDbBIk6skrmww2i7 ePm6Wu5c3iBSw+BLaB68JYeH1QaA2KnY8879dEpEFKSrz9vF9kew3Rz2gGFPmCzeLp6r4PPh yxdwa9HQrcVuOwwJHaf4IlqCVrhO1aq0LDJXVlSACcgEQilEcZOywcss0pt1+4PHSmOZ0F79 uNDDBzocs0DioY9EcTz/+mOHr9VBuviBLn1oIZnM7RdnlPGJG7EBdUSikcexmHnOfA+KYVmk OfeGuWLqFrwQHhtkQuPDm6fOAMk3i9xfIhTrQzwEQGDc7k8ZfJ0k2pNRC9Jkx8NahiBhEQeb YbVCzzNaxtzzTkmKWcR17ktRbeWrzt5djxpI5hIkkvXe+o7Dgg/TDbFabje7zZd9kPx4qbbv J8Hjodq58SdgMHc5nqZjBC6plOPivLwHNKyhQHLdQYfgcyGuNBX8Y5PDMzhtasOwNc1/Nttv 3c/jQomO3PecTI8dDMPkxC6pN4dtLxocFRVfnuraRG8E8uaw+9pnS69GqDvHmH0CbPWR8DSU s8E+VPW82VeYOrosDmsxBrN1Opz48rx7dM7JhT7ert8DTXnf+9cpDHznrbbvzIEEsX9dvbwL di/VcvXlVGs7+Qzy/LR5hGG9oefuJNxCxr/cPLtoqwsxc43/dVg8wZTzOZ1dU7iEwZZn+ALy 3TepQfUTWriBjkBoHSvmKczMjDcIwsV4iuDcI/Z8OgxbWBJagpSHOT1QaNJt/yBKlJAqgCLN IFlry9eKZUyj968fFiAR6HVA8Bwik9erWgyIyYhRMvVlCLEYah8g3V5PQgtWmyIhMjgDJRXl WGYEPf61lwuBdD4j5fVdJhC0u318jwvX83IJkucJpFyliMTt7eWlmxFhLyXuxFNQd/xRZOjm yfphu1k9dMUCGZaS3A3mIs9bElYYhyqTTLESt1ytH93e2A1bQS0AsprEfcFYsXMSPOmS5tK9 ZZ1y4crrYnysqJWl42XZDNFM/xH0OFY/TJbS0zOCoRL7qcZnoaezdayrqnkOXtBtwlEmDY89 NlzT8OHXYxPkldl/FdK4BYpdLLH+UHoeHWqyjxrjM7SH1lSwz8jHk9onrLqRDbAPVpyNmp9i 7GL59Qzj6sGbV230u+rwsLEvT+1dtuYDUcq3PUsDf5ZG4K7cmoMNLO7ytv3DLxZ8arL6AEsY 5mm/yNKhUjaPoF8Xy2/1I7odfdmu1vtvNq1/eK4gxDrQWtPzhJjAhXvqwhZ2Q9nWgFPPw6ln SgDAJCMHx4deb+d721wGt7P8trMbWjY9n6491Q85PIvd0YdltldhSlQGrAC9KDGeFouGVRTa 1K0vjjPGioh6tfury+sPXQekeF4SLUpvKwz2BdgvAJen7guajjmoCGX62rOVU9sThq9qut56 v3CLczSj6BJQbQQWJJwF0z5LLTWZpfNuOLbj+ARoRWHbg3q9VL3x4T5iqShIkJHx8fHZrd0E gz6odv/xqLdUv9VBAKKExDaqPh8eH2vFbhUXtQ5gDcu01y3aJZER3yA9gReXgZNpmfn8b72M DP8EWb52hbb/BvwsrPgK18StKDWxfuNXbARHeu1TNWazzQAuq236gUhG5aR5E8ipQ3+Ss3e8 5pUapB2kkFMcXmpbTRbrxzMAG9vehSKHlep2I89mkVgmRQZZB9HuzGb6l7Oc1rmhDNQGdFie RVAXvZyQtGBt83RNRO8mC2wZaY9gWzHrK2NZNPQOZ7LCJcaM5WdKYqWCsmqVNHi7e1mtbV30 f4Pnw776XsFfqv3y4uLi3dDNudK689vGbsRXH72JkQJtK4UdvsLWoIyS5Bw8Qxrj47TnPQoR C1yrwbfc8zfs9uqm9d5Oi3mKpeBywALBGWrGIhD7K1X6xg3U1vbaUbjna43R859x6NeM3SIi 7mswrHmogrNk2IwzjMfY5+z0WtjVjE25fpkix08Fb5nQrr1U9peu9/nKCcDyatet/E77KImS KSUVeJw/64jigZLYiP86TySI1b/B5o6bx7ZyUZ8ddfW81mP7O/BuwQt56pKWxUvF+mbzToqN kH4Zh9iC4afbYDixrVivsdWmefvhdRuxW07YzNseU58JEEk2ahqBPG9oyDcGRuPJayyDRX2x nx5yIzzZo6UXhScBtFRE8HEqp34Ohe2ktuX0FWkAiydhAn8NO3Q3l51tNPK200MM9V6HDfiA Lokh+LigCn/upYnIzzpSj+jt1Dw7HkVh7/dZ4Gc3XAwhaA9rWdXysF3tf7iw8ph5OwZoobiZ g8ExbcsjoDwel3rk9TeQGYgumEEKGbFhH9rJq9QOoP006bRHnVN7v09k09th8dbxtHG8IW6w b03pTg1TEbwlkvb6HhVka5Qb98GB2v/thd48c3UZcbeVIJkbcMIu+KXozfXZHm6unfbfZ0g5 ZeH8zjG1prjbaRsWogBFuc2p5gi5Vwbehd1vcikP7ZKetkhF3Q3HddT3SOLENfsEmkKd5qRL LnudtzgE8aSjYxBcIq4QdAIYHP4i1tEZ90QsVcTdR4kiN67F3/U6/z2QVjZx1GtHbZy269D/ D8qchDNdOQAA --iIOavGAISvUeFFLW--