1 2 3 4 5<!DOCTYPE html> 6<html lang="en"> 7<head> 8 <meta charset="utf-8" /> 9 <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no" /> 10 <title>ImageMagick - MagickCore, C API: Image View Methods</title> 11 <meta name="application-name" content="ImageMagick" /> 12 <meta name="description" content="Use ImageMagick® to create, edit, compose, and convert bitmap images. Resize an image, crop it, change its shades and colors, add captions, and more." /> 13 <meta name="application-url" content="https://imagemagick.org" /> 14 <meta name="generator" content="PHP" /> 15 <meta name="keywords" content="magickcore, c, api:, image, view, methods, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert" /> 16 <meta name="rating" content="GENERAL" /> 17 <meta name="robots" content="INDEX, FOLLOW" /> 18 <meta name="generator" content="ImageMagick Studio LLC" /> 19 <meta name="author" content="ImageMagick Studio LLC" /> 20 <meta name="revisit-after" content="2 DAYS" /> 21 <meta name="resource-type" content="document" /> 22 <meta name="copyright" content="Copyright (c) 1999-2020 ImageMagick Studio LLC" /> 23 <meta name="distribution" content="Global" /> 24 <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1" /> 25 <meta property='og:url' content='../../' /> 26 <meta property='og:title' content='ImageMagick' /> 27 <meta property='og:image' content='../../images/logo.png' /> 28 <meta property='og:type' content='website' /> 29 <meta property='og:site_name' content='ImageMagick' /> 30 <meta property='og:description' content="Convert, Edit, or Compose Bitmap Images" /> 31 <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" /> 32 <link href="../www/api/image-view.html" rel="canonical" /> 33 <link href="../www/images/wand.png" rel="icon" /> 34 <link href="../www/images/wand.ico" rel="shortcut icon" /> 35 <link href="../www/assets/magick.css" rel="stylesheet" /> 36</head> 37<body> 38 <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark"> 39 <a class="navbar-brand" href="../index.html"><img class="d-block" id="icon" alt="ImageMagick" width="32" height="32" src="../www/images/wand.ico"/></a> 40 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsMagick" aria-controls="navbarsMagick" aria-expanded="false" aria-label="Toggle navigation"> 41 <span class="navbar-toggler-icon"></span> 42 </button> 43 44 <div class="navbar-collapse collapse" id="navbarsMagick" style=""> 45 <ul class="navbar-nav mr-auto"> 46 <li class="nav-item "> 47 <a class="nav-link" href="../www/index.html">Home <span class="sr-only">(current)</span></a> 48 </li> 49 <li class="nav-item "> 50 <a class="nav-link" href="../www/www/download.html">Download</a> 51 </li> 52 <li class="nav-item "> 53 <a class="nav-link" href="../www/www/command-line-tools.html">Tools</a> 54 </li> 55 <li class="nav-item "> 56 <a class="nav-link" href="../www/www/command-line-processing.html">Command-line</a> 57 </li> 58 <li class="nav-item "> 59 <a class="nav-link" href="../www/www/resources.html">Resources</a> 60 </li> 61 <li class="nav-item "> 62 <a class="nav-link" href="../www/www/develop.html">Develop</a> 63 </li> 64 <li class="nav-item"> 65 <a class="nav-link" target="_blank" href="https://imagemagick.org/discourse-server/">Community</a> 66 </li> 67 </ul> 68 <form class="form-inline my-2 my-lg-0" action="../www/www/search.html"> 69 <input class="form-control mr-sm-2" type="text" name="q" placeholder="Search" aria-label="Search"> 70 <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="sa">Search</button> 71 </form> 72 </div> 73 </nav> 74 <div class="container"> 75 <script async="async" src="http://localhost/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" 76 style="display:block" 77 data-ad-client="ca-pub-3129977114552745" 78 data-ad-slot="6345125851" 79 data-full-width-responsive="true" 80 data-ad-format="horizontal"></ins> 81 <script> 82 (adsbygoogle = window.adsbygoogle || []).push({}); 83 </script> 84 85 </div> 86 87 <main class="container"> 88 <div class="magick-template"> 89<div class="magick-header"> 90<p class="text-center"><a href="image-view.html#CloneImageView">CloneImageView</a> • <a href="image-view.html#DestroyImageView">DestroyImageView</a> • <a href="image-view.html#DuplexTransferImageViewIterator">DuplexTransferImageViewIterator</a> • <a href="image-view.html#GetImageViewAuthenticMetacontent">GetImageViewAuthenticMetacontent</a> • <a href="image-view.html#GetImageViewAuthenticPixels">GetImageViewAuthenticPixels</a> • <a href="image-view.html#GetImageViewException">GetImageViewException</a> • <a href="image-view.html#GetImageViewExtent">GetImageViewExtent</a> • <a href="image-view.html#GetImageViewImage">GetImageViewImage</a> • <a href="image-view.html#GetImageViewIterator">GetImageViewIterator</a> • <a href="image-view.html#GetImageViewVirtualMetacontent">GetImageViewVirtualMetacontent</a> • <a href="image-view.html#GetImageViewVirtualPixels">GetImageViewVirtualPixels</a> • <a href="image-view.html#IsImageView">IsImageView</a> • <a href="image-view.html#NewImageView">NewImageView</a> • <a href="image-view.html#NewImageViewRegion">NewImageViewRegion</a> • <a href="image-view.html#SetImageViewDescription">SetImageViewDescription</a> • <a href="image-view.html#SetImageViewIterator">SetImageViewIterator</a> • <a href="image-view.html#TransferImageViewIterator">TransferImageViewIterator</a> • <a href="image-view.html#UpdateImageViewIterator">UpdateImageViewIterator</a></p> 91 92<h2><a href="../../api/MagickCore/image-view_8c.html" id="CloneImageView">CloneImageView</a></h2> 93 94<p>CloneImageView() makes a copy of the specified image view.</p> 95 96<p>The format of the CloneImageView method is:</p> 97 98<pre class="text"> 99ImageView *CloneImageView(const ImageView *image_view) 100</pre> 101 102<p>A description of each parameter follows:</p> 103 104<dd> 105</dd> 106 107<dd> </dd> 108<dl class="dl-horizontal"> 109<dt>image_view</dt> 110<dd>the image view. </dd> 111 112<dd> </dd> 113</dl> 114<h2><a href="../../api/MagickCore/image-view_8c.html" id="DestroyImageView">DestroyImageView</a></h2> 115 116<p>DestroyImageView() deallocates memory associated with a image view.</p> 117 118<p>The format of the DestroyImageView method is:</p> 119 120<pre class="text"> 121ImageView *DestroyImageView(ImageView *image_view) 122</pre> 123 124<p>A description of each parameter follows:</p> 125 126<dd> 127</dd> 128 129<dd> </dd> 130<dl class="dl-horizontal"> 131<dt>image_view</dt> 132<dd>the image view. </dd> 133 134<dd> </dd> 135</dl> 136<h2><a href="../../api/MagickCore/image-view_8c.html" id="DuplexTransferImageViewIterator">DuplexTransferImageViewIterator</a></h2> 137 138<p>DuplexTransferImageViewIterator() iterates over three image views in parallel and calls your transfer method for each scanline of the view. The source and duplex pixel extent is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. However, the destination image view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p> 139 140<p>The callback signature is:</p> 141 142<pre class="text"> 143MagickBooleanType DuplexTransferImageViewMethod(const ImageView *source, 144 const ImageView *duplex,ImageView *destination,const ssize_t y, 145 const int thread_id,void *context) 146</pre> 147 148<p>Use this pragma if the view is not single threaded:</p> 149 150<pre class="text"> 151 #pragma omp critical 152</pre> 153 154<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p> 155 156<p>The format of the DuplexTransferImageViewIterator method is:</p> 157 158<pre class="text"> 159MagickBooleanType DuplexTransferImageViewIterator(ImageView *source, 160 ImageView *duplex,ImageView *destination, 161 DuplexTransferImageViewMethod transfer,void *context) 162</pre> 163 164<p>A description of each parameter follows:</p> 165 166<dd> 167</dd> 168 169<dd> </dd> 170<dl class="dl-horizontal"> 171<dt>source</dt> 172<dd>the source image view. </dd> 173 174<dd> </dd> 175<dt>duplex</dt> 176<dd>the duplex image view. </dd> 177 178<dd> </dd> 179<dt>destination</dt> 180<dd>the destination image view. </dd> 181 182<dd> </dd> 183<dt>transfer</dt> 184<dd>the transfer callback method. </dd> 185 186<dd> </dd> 187<dt>context</dt> 188<dd>the user defined context. </dd> 189 190<dd> </dd> 191</dl> 192<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewAuthenticMetacontent">GetImageViewAuthenticMetacontent</a></h2> 193 194<p>GetImageViewAuthenticMetacontent() returns the image view authentic meta-content.</p> 195 196<p>The format of the GetImageViewAuthenticPixels method is:</p> 197 198<pre class="text"> 199void *GetImageViewAuthenticMetacontent( 200 const ImageView *image_view) 201</pre> 202 203<p>A description of each parameter follows:</p> 204 205<dd> 206</dd> 207 208<dd> </dd> 209<dl class="dl-horizontal"> 210<dt>image_view</dt> 211<dd>the image view. </dd> 212 213<dd> </dd> 214</dl> 215<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewAuthenticPixels">GetImageViewAuthenticPixels</a></h2> 216 217<p>GetImageViewAuthenticPixels() returns the image view authentic pixels.</p> 218 219<p>The format of the GetImageViewAuthenticPixels method is:</p> 220 221<pre class="text"> 222Quantum *GetImageViewAuthenticPixels(const ImageView *image_view) 223</pre> 224 225<p>A description of each parameter follows:</p> 226 227<dd> 228</dd> 229 230<dd> </dd> 231<dl class="dl-horizontal"> 232<dt>image_view</dt> 233<dd>the image view. </dd> 234 235<dd> </dd> 236</dl> 237<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewException">GetImageViewException</a></h2> 238 239<p>GetImageViewException() returns the severity, reason, and description of any error that occurs when utilizing a image view.</p> 240 241<p>The format of the GetImageViewException method is:</p> 242 243<pre class="text"> 244char *GetImageViewException(const PixelImage *image_view, 245 ExceptionType *severity) 246</pre> 247 248<p>A description of each parameter follows:</p> 249 250<dd> 251</dd> 252 253<dd> </dd> 254<dl class="dl-horizontal"> 255<dt>image_view</dt> 256<dd>the pixel image_view. </dd> 257 258<dd> </dd> 259<dt>severity</dt> 260<dd>the severity of the error is returned here. </dd> 261 262<dd> </dd> 263</dl> 264<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewExtent">GetImageViewExtent</a></h2> 265 266<p>GetImageViewExtent() returns the image view extent.</p> 267 268<p>The format of the GetImageViewExtent method is:</p> 269 270<pre class="text"> 271RectangleInfo GetImageViewExtent(const ImageView *image_view) 272</pre> 273 274<p>A description of each parameter follows:</p> 275 276<dd> 277</dd> 278 279<dd> </dd> 280<dl class="dl-horizontal"> 281<dt>image_view</dt> 282<dd>the image view. </dd> 283 284<dd> </dd> 285</dl> 286<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewImage">GetImageViewImage</a></h2> 287 288<p>GetImageViewImage() returns the image associated with the image view.</p> 289 290<p>The format of the GetImageViewImage method is:</p> 291 292<pre class="text"> 293MagickCore *GetImageViewImage(const ImageView *image_view) 294</pre> 295 296<p>A description of each parameter follows:</p> 297 298<dd> 299</dd> 300 301<dd> </dd> 302<dl class="dl-horizontal"> 303<dt>image_view</dt> 304<dd>the image view. </dd> 305 306<dd> </dd> 307</dl> 308<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewIterator">GetImageViewIterator</a></h2> 309 310<p>GetImageViewIterator() iterates over the image view in parallel and calls your get method for each scanline of the view. The pixel extent is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. Any updates to the pixels in your callback are ignored.</p> 311 312<p>The callback signature is:</p> 313 314<pre class="text"> 315MagickBooleanType GetImageViewMethod(const ImageView *source, 316 const ssize_t y,const int thread_id,void *context) 317</pre> 318 319<p>Use this pragma if the view is not single threaded:</p> 320 321<pre class="text"> 322 #pragma omp critical 323</pre> 324 325<p>to define a section of code in your callback get method that must be executed by a single thread at a time.</p> 326 327<p>The format of the GetImageViewIterator method is:</p> 328 329<pre class="text"> 330MagickBooleanType GetImageViewIterator(ImageView *source, 331 GetImageViewMethod get,void *context) 332</pre> 333 334<p>A description of each parameter follows:</p> 335 336<dd> 337</dd> 338 339<dd> </dd> 340<dl class="dl-horizontal"> 341<dt>source</dt> 342<dd>the source image view. </dd> 343 344<dd> </dd> 345<dt>get</dt> 346<dd>the get callback method. </dd> 347 348<dd> </dd> 349<dt>context</dt> 350<dd>the user defined context. </dd> 351 352<dd> </dd> 353</dl> 354<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewVirtualMetacontent">GetImageViewVirtualMetacontent</a></h2> 355 356<p>GetImageViewVirtualMetacontent() returns the image view virtual meta-content.</p> 357 358<p>The format of the GetImageViewVirtualMetacontent method is:</p> 359 360<pre class="text"> 361const void *GetImageViewVirtualMetacontent( 362 const ImageView *image_view) 363</pre> 364 365<p>A description of each parameter follows:</p> 366 367<dd> 368</dd> 369 370<dd> </dd> 371<dl class="dl-horizontal"> 372<dt>image_view</dt> 373<dd>the image view. </dd> 374 375<dd> </dd> 376</dl> 377<h2><a href="../../api/MagickCore/image-view_8c.html" id="GetImageViewVirtualPixels">GetImageViewVirtualPixels</a></h2> 378 379<p>GetImageViewVirtualPixels() returns the image view virtual pixels.</p> 380 381<p>The format of the GetImageViewVirtualPixels method is:</p> 382 383<pre class="text"> 384const Quantum *GetImageViewVirtualPixels(const ImageView *image_view) 385</pre> 386 387<p>A description of each parameter follows:</p> 388 389<dd> 390</dd> 391 392<dd> </dd> 393<dl class="dl-horizontal"> 394<dt>image_view</dt> 395<dd>the image view. </dd> 396 397<dd> </dd> 398</dl> 399<h2><a href="../../api/MagickCore/image-view_8c.html" id="IsImageView">IsImageView</a></h2> 400 401<p>IsImageView() returns MagickTrue if the the parameter is verified as a image view object.</p> 402 403<p>The format of the IsImageView method is:</p> 404 405<pre class="text"> 406MagickBooleanType IsImageView(const ImageView *image_view) 407</pre> 408 409<p>A description of each parameter follows:</p> 410 411<dd> 412</dd> 413 414<dd> </dd> 415<dl class="dl-horizontal"> 416<dt>image_view</dt> 417<dd>the image view. </dd> 418 419<dd> </dd> 420</dl> 421<h2><a href="../../api/MagickCore/image-view_8c.html" id="NewImageView">NewImageView</a></h2> 422 423<p>NewImageView() returns a image view required for all other methods in the Image View API.</p> 424 425<p>The format of the NewImageView method is:</p> 426 427<pre class="text"> 428ImageView *NewImageView(MagickCore *wand,ExceptionInfo *exception) 429</pre> 430 431<p>A description of each parameter follows:</p> 432 433<dd> 434</dd> 435 436<dd> </dd> 437<dl class="dl-horizontal"> 438<dt>image</dt> 439<dd>the image. </dd> 440 441<dd> </dd> 442<dt>exception</dt> 443<dd>return any errors or warnings in this structure. </dd> 444 445<dd> </dd> 446</dl> 447<h2><a href="../../api/MagickCore/image-view_8c.html" id="NewImageViewRegion">NewImageViewRegion</a></h2> 448 449<p>NewImageViewRegion() returns a image view required for all other methods in the Image View API.</p> 450 451<p>The format of the NewImageViewRegion method is:</p> 452 453<pre class="text"> 454ImageView *NewImageViewRegion(MagickCore *wand,const ssize_t x, 455 const ssize_t y,const size_t width,const size_t height, 456 ExceptionInfo *exception) 457</pre> 458 459<p>A description of each parameter follows:</p> 460 461<dd> 462</dd> 463 464<dd> </dd> 465<dl class="dl-horizontal"> 466<dt>wand</dt> 467<dd>the magick wand. </dd> 468 469<dd> </dd> 470<dt>x,y,columns,rows</dt> 471<dd> These values define the perimeter of a extent of pixel_wands view. </dd> 472 473<dd> </dd> 474<dt>exception</dt> 475<dd>return any errors or warnings in this structure. </dd> 476 477<dd> </dd> 478</dl> 479<h2><a href="../../api/MagickCore/image-view_8c.html" id="SetImageViewDescription">SetImageViewDescription</a></h2> 480 481<p>SetImageViewDescription() associates a description with an image view.</p> 482 483<p>The format of the SetImageViewDescription method is:</p> 484 485<pre class="text"> 486void SetImageViewDescription(ImageView *image_view, 487 const char *description) 488</pre> 489 490<p>A description of each parameter follows:</p> 491 492<dd> 493</dd> 494 495<dd> </dd> 496<dl class="dl-horizontal"> 497<dt>image_view</dt> 498<dd>the image view. </dd> 499 500<dd> </dd> 501<dt>description</dt> 502<dd>the image view description. </dd> 503 504<dd> </dd> 505</dl> 506<h2><a href="../../api/MagickCore/image-view_8c.html" id="SetImageViewIterator">SetImageViewIterator</a></h2> 507 508<p>SetImageViewIterator() iterates over the image view in parallel and calls your set method for each scanline of the view. The pixel extent is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension. The pixels are initiallly undefined and any settings you make in the callback method are automagically synced back to your image.</p> 509 510<p>The callback signature is:</p> 511 512<pre class="text"> 513MagickBooleanType SetImageViewMethod(ImageView *destination, 514 const ssize_t y,const int thread_id,void *context) 515</pre> 516 517<p>Use this pragma if the view is not single threaded:</p> 518 519<pre class="text"> 520 #pragma omp critical 521</pre> 522 523<p>to define a section of code in your callback set method that must be executed by a single thread at a time.</p> 524 525<p>The format of the SetImageViewIterator method is:</p> 526 527<pre class="text"> 528MagickBooleanType SetImageViewIterator(ImageView *destination, 529 SetImageViewMethod set,void *context) 530</pre> 531 532<p>A description of each parameter follows:</p> 533 534<dd> 535</dd> 536 537<dd> </dd> 538<dl class="dl-horizontal"> 539<dt>destination</dt> 540<dd>the image view. </dd> 541 542<dd> </dd> 543<dt>set</dt> 544<dd>the set callback method. </dd> 545 546<dd> </dd> 547<dt>context</dt> 548<dd>the user defined context. </dd> 549 550<dd> </dd> 551</dl> 552<h2><a href="../../api/MagickCore/image-view_8c.html" id="TransferImageViewIterator">TransferImageViewIterator</a></h2> 553 554<p>TransferImageViewIterator() iterates over two image views in parallel and calls your transfer method for each scanline of the view. The source pixel extent is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. However, the destination image view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p> 555 556<p>The callback signature is:</p> 557 558<pre class="text"> 559MagickBooleanType TransferImageViewMethod(const ImageView *source, 560 ImageView *destination,const ssize_t y,const int thread_id, 561 void *context) 562</pre> 563 564<p>Use this pragma if the view is not single threaded:</p> 565 566<pre class="text"> 567 #pragma omp critical 568</pre> 569 570<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p> 571 572<p>The format of the TransferImageViewIterator method is:</p> 573 574<pre class="text"> 575MagickBooleanType TransferImageViewIterator(ImageView *source, 576 ImageView *destination,TransferImageViewMethod transfer,void *context) 577</pre> 578 579<p>A description of each parameter follows:</p> 580 581<dd> 582</dd> 583 584<dd> </dd> 585<dl class="dl-horizontal"> 586<dt>source</dt> 587<dd>the source image view. </dd> 588 589<dd> </dd> 590<dt>destination</dt> 591<dd>the destination image view. </dd> 592 593<dd> </dd> 594<dt>transfer</dt> 595<dd>the transfer callback method. </dd> 596 597<dd> </dd> 598<dt>context</dt> 599<dd>the user defined context. </dd> 600 601<dd> </dd> 602</dl> 603<h2><a href="../../api/MagickCore/image-view_8c.html" id="UpdateImageViewIterator">UpdateImageViewIterator</a></h2> 604 605<p>UpdateImageViewIterator() iterates over the image view in parallel and calls your update method for each scanline of the view. The pixel extent is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted. Updates to pixels in your callback are automagically synced back to the image.</p> 606 607<p>The callback signature is:</p> 608 609<pre class="text"> 610MagickBooleanType UpdateImageViewMethod(ImageView *source, 611 const ssize_t y,const int thread_id,void *context) 612</pre> 613 614<p>Use this pragma if the view is not single threaded:</p> 615 616<pre class="text"> 617 #pragma omp critical 618</pre> 619 620<p>to define a section of code in your callback update method that must be executed by a single thread at a time.</p> 621 622<p>The format of the UpdateImageViewIterator method is:</p> 623 624<pre class="text"> 625MagickBooleanType UpdateImageViewIterator(ImageView *source, 626 UpdateImageViewMethod update,void *context) 627</pre> 628 629<p>A description of each parameter follows:</p> 630 631<dd> 632</dd> 633 634<dd> </dd> 635<dl class="dl-horizontal"> 636<dt>source</dt> 637<dd>the source image view. </dd> 638 639<dd> </dd> 640<dt>update</dt> 641<dd>the update callback method. </dd> 642 643<dd> </dd> 644<dt>context</dt> 645<dd>the user defined context. </dd> 646 647<dd> </dd> 648</dl> 649</div> 650 </div> 651 </main><!-- /.container --> 652 <footer class="magick-footer"> 653 <p><a href="../www/www/security-policy.html">Security</a> • 654 <a href="../www/www/architecture.html">Architecture</a> 655 656 <a href="image-view.html#"><img class="d-inline" id="wand" alt="And Now a Touch of Magick" width="16" height="16" src="../www/images/wand.ico"/></a> 657 658 <a href="../www/www/links.html">Related</a> • 659 <a href="../www/www/sitemap.html">Sitemap</a> 660 <br/> 661 <a href="../www/www/support.html">Donate</a> • 662 <a href="http://pgp.mit.edu/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> • 663 <a href="../www/www/contact.html">Contact Us</a> 664 <br/> 665 <small>© 1999-2020 ImageMagick Studio LLC</small></p> 666 </footer> 667 668 <!-- Javascript assets --> 669 <script src="../www/assets/magick.js" crossorigin="anonymous"></script> 670 <script>window.jQuery || document.write('<script src="https://localhost/ajax/libs/jquery/3.4.1/jquery.min.js"><\/script>')</script> 671</body> 672</html> 673<!-- Magick Cache 3rd January 2020 11:30 -->