13:64
  *   ˆl–äY>”TÔD¨ 	Å�rã`S�ÿÅ833_†I|¥�+ÁÄ A    /* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FS_CEPH_BUFFER_H
#define __FS_CEPH_BUFFER_H

#include <linux/kref.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>
#include <linux/types.h>
#include <linux/uio.h>

/*
 * a simple reference counted buffer.
 *
 * use kmalloc for smaller sizes, vmalloc for larger sizes.
 */
struct ceph_buffer {
	struct kref kref;
	struct kvec vec;
	size_t alloc_len;
};

extern struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp);
extern void ceph_buffer_release(struct kref *kref);

static inline struct ceph_buffer *ceph_buffer_get(struct ceph_buffer *b)
{
	kref_get(&b->kref);
	return b;
}

static inline void ceph_buffer_put(struct ceph_buffer *b)
{
	if (b)
		kref_put(&b->kref, ceph_buffer_release);
}

extern int ceph_decode_buffer(struct ceph_buffer **b, void **p, void *end);

#endif
  J   ˆl–ß=¿Jµ5*q@¹pÜjbÑ¿Çƒy×C_�uÐb&=LVt%°Õ§a–Ãa¾”*j"Tâ�jã,Üiõ1hßÇ "C    % Copyright (C) 2001-2021 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
%
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
%
% Refer to licensing information at http://www.artifex.com or contact
% Artifex Software, Inc.,  1305 Grant Avenue - Suite 200, Novato,
% CA 94945, U.S.A., +1(415)492-9861, for further information.
%

% Initialization file for basic Display PostScript functions
% that are also included in Level 2.

level2dict begin

% ------ Errors ------ %

% These errors are only defined in Level 2 and DPS.
{ /configurationerror /undefinedresource /unregistered }
{ .registererror } forall

% ------ Halftones ------ %

/.makestackdict
        { { counttomark -1 roll } forall .dicttomark
        } bind def
/currenthalftone		% - currenthalftone <dict>
        { mark .currenthalftone
           { { exch pop }		% halftone
             { /HalftoneType 1		% screen
                { /Frequency /Angle /SpotFunction }
               //.makestackdict exec readonly
             }
             { /HalftoneType 2		% colorscreen
                { /RedFrequency /RedAngle /RedSpotFunction
                  /GreenFrequency /GreenAngle /GreenSpotFunction
                  /BlueFrequency /BlueAngle /BlueSpotFunction
                  /GrayFrequency /GrayAngle /GraySpotFunction
                }
               //.makestackdict exec readonly
             }
           }
          exch get exec
        } odef
currentdict /.makestackdict undef

% Define sethalftone so it converts types 1-4 to type 5.
/.makehalftoneRGBV {	% <dict> <type> <keys> <keysRGBV>
  4 -1 roll exch { 1 index exch get exch } forall 15 1 roll
  14 -2 roll mark 15 1 roll { /Gray /Blue /Green /Red } {
                % stack: v0 v1 v2 type keys comp
    mark
    2 index 0 get 8 -1 roll
    4 index 1 get 9 -1 roll
    6 index 2 get 10 -1 roll
                % stack: type keys comp mark k0 v0 k1 v1 k2 v2
    /HalftoneType 10 index .dicttomark
    counttomark 2 roll
  } forall pop pop
  /Default 1 index .dicttomark exch pop { .sethalftone5 }
} bind def

% The value of each entry in .halftonetypes is a procedure:
%	<setdict> <htdict> <<proc>> <setdict'> <htdict'> <sethalftoneproc>
% This allows us to use these procedures both for actually implementing
% sethalftone and for converting subsidiary dictionaries of HalftoneType 5
% halftones.
systemdict begin
15 dict /.halftonetypes 1 index def begin
  1 {
    mark exch /Default exch .dicttomark { .sethalftone5 }
  } bind def
  2 {
    1 { /Frequency /Angle /SpotFunction } {
      /RedFrequency /RedAngle /RedSpotFunction
      /GreenFrequency /GreenAngle /GreenSpotFunction
      /BlueFrequency /BlueAngle /BlueSpotFunction
      /GrayFrequency /GrayAngle /GraySpotFunction
    } //.makehalftoneRGBV exec
  } bind def
  3 {
    mark exch /Default exch .dicttomark { .sethalftone5 }
  } bind def
  4 {
    3 { /Width /Heigh