...
 
Commits (113)
*~
*.toc
*.out
*.aux
*.log
*.nav
*.pdf
*.snm
*.swp
*.vrb
stages:
- build
- deploy
beamer-build:
image: aergus/latex
stage: build
script:
- make
artifacts:
paths:
- "*.pdf"
tags:
- docker
synchronize:
stage: deploy
before_script:
- apt-get update -y
- apt-get install -y rsync
- echo "$ssh_key" > id_rsa
- chmod 600 id_rsa
script:
# In non-interactive context, don't check host identity
- rsync -e"ssh -i id_rsa -o StrictHostKeyChecking=no" -avz *.pdf apiInit@pica02.picasoft.net:~/artefact/git/
after_script:
- rm id_rsa
dependencies:
- beamer-build
tags:
- linux
only:
- master
\ No newline at end of file
24 janvier 2019
Rémy Huet (remy.huet@etu.utc.fr), Thibaud Duhautbout (thibaud@duhautbout.ovh), Quentin Duchemin (quentinduchemin@tuta.io), Romain Maliach (rmaliach@etu.utc.fr), Association Picasoft (picasoft@assos.utc.fr)
La présentation et tous les fichiers qui composent ce dépôt sont sous licence
Creative Commons 4.0 Attribution - Partage dans les Mêmes Conditions 4.0
International (CC BY-SA 4.0).
Vous êtes libre de partager (copier, distribuer et communiquer le matériel par
tous moyens et sous tous formats) et d'adapter (remixer, transformer et créer à
partir du matériel) ces fichiers pour toute utilisation, y compris commerciale.
Visitez https://creativecommons.org/licenses/by-sa/4.0/deed.fr pour plus
d'informations.
# Api/casoft Init Jour 4 : Git
## Description
Repo de la formation git de l'api/casoft Init. **En cas de questions :** [remy.huet@etu.utc.fr](mailto://remy.huet@etu.utc.fr), [thibaud@duhautbout.ovh](mailto://thibaud@duhautbout.ovh), [quentinduchemin@tuta.io](mailto://quentinduchemin@tuta.io).
Pour aller plus loin : lire la [documentation de git](https://git-scm.com/docs).
En cas de remarques sur la présentation (ou de questions aussi), vous pouvez utiliser le [système d'issues](https://gitlab.utc.fr/picasoft/apis/h19/init/git/issues).
## Présentation
La présentation au format PDF est disponible [ici](https://school.picasoft.net/artefact/git/main.pdf).
## Contribuer !
Créez une branche, et faites une merge request ! Faites la relire par un tiers qui la valide et la merge.
N'oubliez pas d'ajouter votre nom dans la license et dans les auteurs de `main.tex`
## Plan
Le plan est disponible [ici](docs/plan.md)
# Plan de la présentation
## À propos
La formation sur git durera une journée (~6/7 heures). Elle abordera à la fois l'utilisation de Git (local et remotes) mais aussi les méthodes de gestion de travail propres à GitLab.
**Comment lire ce plan ?**
Les sections sont numérotés en niveau 1. Les sous-sections en niveau 2. Une indentation sous la section/sous section est un titre, deux un sous-titre. Un niveau sans "fils" est une frame.
## Plan
1. Introduction
* OK - Qu'est ce que git ?
* OK - Pourquoi la gestion de version ?
* OK - Différents logiciels de gestion de version
* OK - Petite histoire de Git
*(transition ?)*
2. Versionner son travail
1. Configuration et initialisation
* OK - Création d'un dépôt Git
* OK - Configurer son identité
* OK - Configuration locale / configuration globale
2. Gestion théorique
* OK - Fonctionnement de Git
* Working Directory vs. Staging Area vs. Repository
* OK - Explications
3. Gestion linéaire en pratique
* Créer des versions
* OK - Working directory <-> staging area
* OK - Exemples
* OK - Staging area <-> repository
* OK - Dissection d'un commit
* Visualiser les différences
* OK - Git log
* OK - Git diff
* OK - Git show
3. Utiliser les versions
1. Le HEAD
* Qu'est-ce que le HEAD ?
2. Marquer une version
* Git tag
3. Mettre de côté ses modifications
* Enregistrer les modifications locales
* Restaurer les modifications locales
4. Parcourir l'historique
* Changer de version
* Revenir au dernier commmit
* Annuler des changements
5. Annuler des commits
* Sans modification d'historique
* Avec modification d'historique
* Git reset
* Git commit --amend
4. Utilisation des remotes
1. Présentation
* Le concept des remotes
* Exemples de remotes
* Création d'un dépôt distant
2. Récupérer du travail existant
* Cloner un dépôt existant
* Tirer des changements
3. Envoyer son travail
* Pousser des commits
5. Gestion non linéaire [branche gestion_non_lineaire non mergée]
1. Explications théoriques
* OK - Principe de gestion non linéaire
* Création d'une divergence
* OK - Principe de la gestion non linéaire
* OK - Explications
* OK - Création d'une divergence : analyse et mise en contexte
* OK - Illustrations / Exemple
* OK - Fusion
2. Application à Git
* OK - Gestion des branches
* OK - Changer de branche
* OK - Visualisation
3. Fusionner des branches
* OK - Le merge
* Le rebase
* OK - Avertissement
* OK - Comparaison avec le merge
* OK - Application simple
* Rebase interactif
* Le cherry-pick
6. Résolution de conflits
1. Les conflits
* Qu'est-ce qu'un conflit ?
* Exemple de situation conflictuelle
* Comment se présente un conflit ?
* Concrètement, quand peut-on avoir un conflit ?
* Merge
* Rebase
* Pull
2. Résoudre un conflit
* En théorie
* Application
3. Historiques divergents
* Quand parle-t-on de divergence ?
* Comment diverge-t-on ?
* Résoudre des divergences ?
7. Travail collaboratif avec Git et GitLab
1. Présentation de git flow
2. Présentation de GitLab
%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 8.0 %%AI8_CreatorVersion: 13.0.1 %%For: (Alex Roberts) () %%Title: (by-sa.eps) %%CreationDate: 3/27/08 4:27 PM %%BoundingBox: 340 278 461 321 %%HiResBoundingBox: 340.5 278.5 460.5 320.5 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 4.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKProcessColor: 0.74902 0.678431 0.670588 0.901961 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_Cropmarks: 340.5 278.5 460.5 320.5 %AI3_TemplateBox: 400.5 299.5 400.5 299.5 %AI3_TileBox: 112 -56 688 678 %AI3_DocumentPreview: Macintosh_ColorPic %AI5_ArtSize: 800 600 %AI5_RulerUnits: 6 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI8_OpenToView: -381 756 1 1566 923 26 0 0 73 75 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 48 8 48 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %AI7_Thumbnail: 128 48 8 %%BeginData: 8722 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45A8FD7DF827A8F8275258527D5258527D5258527D5258527D525852 %7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52 %58527D5258527D5258527D5258527D5258527D5258527D5258527D525852 %7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52 %58527D5258527D5258527D5258527DF8F8F852A87D837DA87D837DA87D83 %7DA87D837DA87D847DA87D837DA87D837DA87D837DA87D837DA87D837DA8 %7D837DA87D837DA87D837DA87D837DA87D837DA87DA87DA883A87DA87D83 %7DA87D837DA87D837DA87D837DA87D837DA87D837DA87DA87DA883A87DA8 %7D837DA87D837DA87D837DA87D837DA87D837DA87D837D7DF8F8FD127D83 %FD2C7D58FD0652FD177D587D52522E5252FD197D52F8F852A87D837D837D %837D837D837DA87D83587D2DFD042752527D7DA87D847D837D837D837D83 %7D837D837D837D837D837D837D837D837D837D837DA87D7D2727FD05F827 %27527DA87D837D837D837D837D837D837D837DA87D7D2727FD05F8040452 %7DA87D837D837D837D837D837D837D837D837D837D837D7DF8F8FD0E7D52 %27FD0AF827277D7D83FD1B7D845227FD0BF8275284FD0F7D52FD0CF82DFD %157D52F8F858837D837D7D7D837D7D7DA85227FD0FF82D7DA87D7D7D837D %7D7D837D7D7D837D7D7D837D7D7D837D7D7D837DA852FD04F8527DA8A8A8 %7D52FD04F827A87D7D7D837D7D7D837D7D7DA87D27F8F8F85252A8A8A87D %7D27F8F8F8277D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD %0B7D27FD06F827275252522727FD06F85283FD177D8352F8F8F827A8FD08 %FF52F8F8F82783FD0A7D5227F8F8F8A8FD08FF7DF8F8F804FD137D52F8F8 %58A87D837D837D837D8327FD04F8277DA8FD07FFA852FD05F852A87D837D %837D837D837D837D837D837D837D837D837DA858F8F8F87DFD04FF7D277D %FD04FFA827F8F852A87D837D837D837D837D27F8F852FD0BFFA852F8F827 %A87D837D837D837D837D837D837D837D837D7DF8F8FD087D8327FD04F87D %A8FD0BFFA852FD04F85283FD157D27F8F87DFD04FFA8F8F8F8A8FD04FFA8 %F8F8F858FD087D27F8F852FD05FFA8A8A8FD05FFA827F8F85284FD0F7D83 %52F8F852A87D7D7D837DA827FD04F8A8FD0FFF7DFD04F852A87D837D7D7D %837D7D7D837D7D7D837D7D7D837D52F8F852FD05FF7DF8F8F87DFD05FF7D %F8F8527D7D7D83FD047DF8F827FD04FFA827FD04F852A8FFFFFFA827F827 %7D837D7D7D837D7D7D837D7D7D83FD047DF8F859FD057D8352FD04F8A8FD %11FF7DF8F8F804FD147DF8F8F8FD07FF522752FD07FF27F8F8FD077D27F8 %F8A8FFFFFFA8FD08F87DFFFFFF7DF8F852FD107D52F8F852A87D837DA87D %27F8F8F8A8FD13FF7DF8F8F8527D847D837D837D837D837D837D837D837D %A852F8F8A8FD06FF527D527D52A8FD05FFA8F8F852A87D837D837D27F852 %FD04FFF8F8F8272752F8F8F827A8FFFFFF27F827A87D837D837D837D837D %837D837D837D7DF8F8FD067D52F8F8F87DFD15FF52F8F8F8FD127D52F8F8 %A8FD05FF27FD06F8FD06FF27F827FD057D52F8F87DFFFFFF7DF8F827A8FF %FFFFF8F8F852FFFFFF7DF8F858FD0F7D52F8F858837D837D7DF8F8F852FD %17FF27F8F827A87D837D7D7D837D7D7D837D7D7D837D8327F827FD06FF27 %FD06F8A8FD05FF52F8F8837D7D7DA852F8F8FFFFFFA827F8F827FD04FF7D %F8F8F8FFFFFF7DF8F87D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD04 %7D8327F8F8F8A8FD17FF52F8F8F858FD107D27F852FD06FFFD07F8FD06FF %7DF8F858FD047D52F827A8FFFFA8F8F8F827A8FFFFFF7DF8F8F87DFFFFA8 %F8F852FD0F7D52F8F858A87DA87D27F8F827FD05FF7D5227527DFD05FF7D %5227527DFD05FFF8F8F8527D837D837D837D837D837D837D837D7DF8F87D %FD06FF27FD05F827FD06FF7DF8F87D7D837DA82DF827FD04FFA8F827FD06 %FFF8F8F8A8FFFFFF27F8587D837D837D837D837D837D837D837D7DF8F8FD %057DF8F8F87DFD04FF52FD06F8A8FFFFFD06F827FD04FF27F8F82783FD0F %7D27F87DFD06FFFD07F8FD06FF7DF8F858FD047D52F827FD05FFA8A8FD05 %FFA8F8F8F87DFFFFA8F8F852FD0E7D8352F8F852A87D8352F8F8F8A8FFFF %FF7DF8F8F82727F8F8F8FF27F8F8272727F8F852FFFFFF7DF8F8277D7D7D %837D7D7D837D7D7D837D7D7D8327F827FD06FF52FD05F852FD06FF52F8F8 %7D7D837DA827F8F8FD04FFA87D7DA8FD04FFA8F8F8F8FFFFFFA8F8F8FD04 %7D837D7D7D837D7D7D83FD047DF8F8597D7D7D52F8F8F8FD04FF27F8F852 %FFFF52F87D7DF8F8F8A8FFA82727A8FFFFFF7DF8F8F8FD107D27F827A8FD %06FF7DF8F8F87DFD07FF27F827FD057D52F8F8A8FFFFFF27F8F852FD04FF %27F8F827FFFFFF7DF8F852FD0F7D52F8F852A87DA852F8F852FFFFFFA8F8 %F8F8FD06FF7DF8F852FFFFFFA8FD05FFA8F8F8277D837D837D837D837D83 %7D837D837DA852F8F8A8FD06FF7DF8F8F852FD07FFF8F827A87D837D837D %27F87DFFFFFF7DF8F8F87DA8FF52F8F8F87DFFFFFF27F8F8837D837D837D %837D837D837D837D837D7DF8F8FD047D52F8F827FFFFFF7DF8F827FD06FF %27F8F87DFD09FFA8F8F8F8FD117DF8F827FD06FF7DF8F8F87DFD06FF52F8 %F8FD077DF8F8F8FD04FF27FD08F827FFFFFFA8F8F82DFD107D52F8F85883 %7DA852F8F852FFFFFFA8F8F8F8FD06FF52F8F852FD09FFA8F8F8F87D837D %7D7D837D7D7D837D7D7D837D7D7D52F8F87DFD05FF7DF8F8F852FD05FFA8 %27F8277D837D7D7D837D52F8F852FFFFFFA827FD06F827FD04FF52F8F858 %837D837D7D7D837D7D7D837D7D7D837D7DF8F8FD047D52F8F827FFFFFFA8 %F8F8F87DFFFFA852FF52F8F827FFFFFF7D7DFD04FFA8F8F8F8FD117D52F8 %F8F8A8FD04FF7DF8F8F87DFD04FFA827F8F852FD087D27F8F87DFD04FF7D %272727527DFD04FF52F8F82783FD107D52F8F858A87DA852F8F827FD04FF %27F8F8277DA827F827A8F8F8F852A87DF8F852FFFFFF7DF8F8277DA87D83 %7D837D837D837D837D837D837DA852F8F827A8FFFFFF7DF8F8F87DFD04FF %27F8F827A87D837D837D837DA87D27F8F87DFD0CFF7DF8F8F8837D837D83 %7D837D837D837D837D837D837D7DF8F8FD057DF8F8F8A8FFFFFFA8FD07F8 %52FF7DFD07F87DFFFFFF52F8F827FD127D8327F8F8F87DFFFFFFA8FFA8FF %FFFF7D27F8F8F8FD0A7D8352F8F8F852FD09FFA852F8F8F8FD127D8352F8 %F852A87D837D27F8F852FD04FFA827FD04F87DFFFFFF7DFD04F827A8FD04 %FF27F8F8527D7D7D837D7D7D837D7D7D837D7D7D837D7D7DA827F8F8F827 %7DA8FFFFFFA8A827F8F8F8277D7D837D7D7D837D7D7D837DA852FD04F87D %A8FD04FFA85227F8F8F8FD047D837D7D7D837D7D7D837D7D7D83FD047DF8 %F859FD047D27F8F827A8FD05FFA87D7DFFFFFFA8FFFFFF7DA8A8FD05FF7D %F8F8F85283FD137D8352FD06F827FD06F827FD0E7D835227FD05F827F827 %FD04F827FD157D52F8F852A87D837D7DF8F8F87DFD17FF52F8F8F8847D83 %7D837D837D837D837D837D837D837D837D837DA87D52FD09F82D58A87D83 %7D837D837D837D837D837D837DA87D52FD09F82752A87D837D837D837D83 %7D837D837D837D837D837D837D7DF8F8FD067D27F8F8F8FD16FF7DF8F8F8 %52FD1A7D52522727272D52FD177D525227272752527D7D84FD167D52F8F8 %58837D837D8452F8F8F827FD15FFF8F8F8277D837D837D7D7D837D7D7D83 %7D7D7D837D7D7D837D7D7D837D7D7DA87D847DA87D847D837D7D7D837D7D %7D837D7D7D837D7D7D837D7D7D837D837DA87D847DA87D7D7D837D7D7D83 %7D7D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD047D837D7D27F8F8F8 %52FD13FFFD04F852837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D %7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D %7D7D837D7D7DA852F8F8527D527D52837D83FD04F852FD11FF27F8F8F827 %A87D7D527D5258527D5258527D5258527D5258527D5258527D5258527D52 %58527D5258527D5258527D5258527D5258527D5258527D5258527D525852 %7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52 %52FD07F8527D7D7DFD04F827FD0EFFA8FD05F87D7D8327FD5FF8277D837D %7DFD05F87DA8FD09FFA852FD05F87D7DA852FD61F852FD047DFD05F82727 %7D7DA8A8A87D7D27FD05F8277D7D8358FD63F8527D847D7D27FD08F827FD %07F82752A87DA87D27FD17F8277DA87D7D27277D7DF8F827A827FD11F827 %A8A8A827F8F8277D7DFD24F852FD047D5227FD0DF82752A87D7D7D27FD18 %F852FFA8A8FFFFF8A8FF27F8A8FF27FD10F827FFA87DFFFFF8F827FFFF27 %FD24F8527DA87DA87D7D2727FD07F827277D7D837DA87D27FD19F852FF27 %F87DFF27F8FFA852FF7DFD11F87DFF52F8527D27F8A8FFFF7DFD25F82758 %837D7D7D837D7DFD05527D7D83FD047D52FD1BF827FF7D7DA8A8F8F852FF %FFFFFD13F8FFFFA852F8F827FF7D52FFFD26F82752837DA87D837DA87DA8 %7DA87D837DA87D7D27FD1CF852FFA87DFFFF52F8F8A8FF52FD14F87DA8FF %A82752FF2752FF52FD28F85258837D7D7D837D7D7D837D7D522DFD1EF852 %FFF8F8F8FF7DF8F87DFF27FD12F8527DF8F852FF277DFFFFA8FF7DFD29F8 %042752527D527D587D525227FD20F852FFA852A8FF7DF8F87DFF27FD12F8 %7DFFA827A8FF52FFA82727A8FFFD55F827A8A8FFA87DF8F8F852A827FD13 %F87DA8FFA85227FFF8F8F852A852FD74F827F827FDA1F852FD7F27FD7FFF %FF %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0
%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
%%Version: 1.2 0
%%CreationDate: (04/10/93) ()
%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
userdict /Adobe_level2_AI5 26 dict dup begin
put
/packedarray where not
{
userdict begin
/packedarray
{
array astore readonly
} bind def
/setpacking /pop load def
/currentpacking false def
end
0
} if
pop
userdict /defaultpacking currentpacking put true setpacking
/initialize
{
Adobe_level2_AI5 begin
} bind def
/terminate
{
currentdict Adobe_level2_AI5 eq
{
end
} if
} bind def
mark
/setcustomcolor where not
{
/findcmykcustomcolor
{
(AI8_CMYK_CustomColor)
6 packedarray
} bind def
/findrgbcustomcolor
{
(AI8_RGB_CustomColor)
5 packedarray
} bind def
/setcustomcolor
{
exch
aload pop dup
(AI8_CMYK_CustomColor) eq
{
pop pop
4
{
4 index mul
4 1 roll
} repeat
5 -1 roll pop
setcmykcolor
}
{
dup (AI8_RGB_CustomColor) eq
{
pop pop
3
{
1 exch sub
3 index mul
1 exch sub
3 1 roll
} repeat
4 -1 roll pop
setrgbcolor
}
{
pop
4
{
4 index mul 4 1 roll
} repeat
5 -1 roll pop
setcmykcolor
} ifelse
} ifelse
}
def
} if
/setAIseparationgray
{
false setoverprint
0 setgray
/setseparationgray where{
pop setseparationgray
}{
/setcolorspace where{
pop
[/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
1 exch sub setcolor
}{
setgray
}ifelse
}ifelse
} def
/gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
userdict /level2?
systemdict /languagelevel known dup
{
pop systemdict /languagelevel get 2 ge
} if
put
/level2ScreenFreq
{
begin
60
HalftoneType 1 eq
{
pop Frequency
} if
HalftoneType 2 eq
{
pop GrayFrequency
} if
HalftoneType 5 eq
{
pop Default level2ScreenFreq
} if
end
} bind def
userdict /currentScreenFreq
level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
level2? not
{
/setcmykcolor where not
{
/setcmykcolor
{
exch .11 mul add exch .59 mul add exch .3 mul add
1 exch sub setgray
} def
} if
/currentcmykcolor where not
{
/currentcmykcolor
{
0 0 0 1 currentgray sub
} def
} if
/setoverprint where not
{
/setoverprint /pop load def
} if
/selectfont where not
{
/selectfont
{
exch findfont exch
dup type /arraytype eq
{
makefont
}
{
scalefont
} ifelse
setfont
} bind def
} if
/cshow where not
{
/cshow
{
[
0 0 5 -1 roll aload pop
] cvx bind forall
} bind def
} if
} if
cleartomark
/anyColor?
{
add add add 0 ne
} bind def
/testColor
{
gsave
setcmykcolor currentcmykcolor
grestore
} bind def
/testCMYKColorThrough
{
testColor anyColor?
} bind def
userdict /composite?
1 0 0 0 testCMYKColorThrough
0 1 0 0 testCMYKColorThrough
0 0 1 0 testCMYKColorThrough
0 0 0 1 testCMYKColorThrough
and and and
put
composite? not
{
userdict begin
gsave
/cyan? 1 0 0 0 testCMYKColorThrough def
/magenta? 0 1 0 0 testCMYKColorThrough def
/yellow? 0 0 1 0 testCMYKColorThrough def
/black? 0 0 0 1 testCMYKColorThrough def
grestore
/isCMYKSep? cyan? magenta? yellow? black? or or or def
/customColor? isCMYKSep? not def
end
} if
end defaultpacking setpacking
%%EndResource
%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
userdict /Adobe_ColorImage_AI6 known not
{
userdict /Adobe_ColorImage_AI6 53 dict put
} if
userdict /Adobe_ColorImage_AI6 get begin
/initialize {
Adobe_ColorImage_AI6 begin
Adobe_ColorImage_AI6 {
dup type /arraytype eq {
dup xcheck {
bind
} if
} if
pop pop
} forall
} def
/terminate { end } def
currentdict /Adobe_ColorImage_AI6_Vars known not {
/Adobe_ColorImage_AI6_Vars 41 dict def
} if
Adobe_ColorImage_AI6_Vars begin
/plateindex -1 def
/_newproc null def
/_proc1 null def
/_proc2 null def
/sourcearray 4 array def
/_ptispace null def
/_ptiname null def
/_pti0 0 def
/_pti1 0 def
/_ptiproc null def
/_ptiscale 0 def
/_pticomps 0 def
/_ptibuf 0 string def
/_gtigray 0 def
/_cticmyk null def
/_rtirgb null def
/XIEnable true def
/XIType 0 def
/XIEncoding 0 def
/XICompression 0 def
/XIChannelCount 0 def
/XIBitsPerPixel 0 def
/XIImageHeight 0 def
/XIImageWidth 0 def
/XIImageMatrix null def
/XIRowBytes 0 def
/XIFile null def
/XIBuffer1 null def
/XIBuffer2 null def
/XIBuffer3 null def
/XIDataProc null def
/XIColorSpace /DeviceGray def
/XIColorValues 0 def
/XIPlateList false def
end
/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
/ci6image systemdict /image get def
/ci6curtransfer systemdict /currenttransfer get def
/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
/ci6foureq {
4 index ne {
pop pop pop false
}{
4 index ne {
pop pop false
}{
4 index ne {
pop false
}{
4 index eq
} ifelse
} ifelse
} ifelse
} def
/ci6testplate {
Adobe_ColorImage_AI6_Vars begin
/plateindex -1 def
/setcmykcolor where {
pop
gsave
1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
grestore
1 0 0 0 ci6foureq {
/plateindex 0 def
}{
0 1 0 0 ci6foureq {
/plateindex 1 def
}{
0 0 1 0 ci6foureq {
/plateindex 2 def
}{
0 0 0 1 ci6foureq {
/plateindex 3 def
}{
0 0 0 0 ci6foureq {
/plateindex 5 def
} if
} ifelse
} ifelse
} ifelse
} ifelse
pop pop pop pop
} if
plateindex
end
} def
/ci6concatprocs {
/packedarray where {
pop dup type /packedarraytype eq 2 index type
/packedarraytype eq or
}{
false
} ifelse
{
/_proc2 exch cvlit def
/_proc1 exch cvlit def
_proc1 aload pop
_proc2 aload pop
_proc1 length
_proc2 length add
packedarray cvx
}{
/_proc2 exch cvlit def
/_proc1 exch cvlit def
/_newproc _proc1 length _proc2 length add array def
_newproc 0 _proc1 putinterval
_newproc _proc1 length _proc2 putinterval
_newproc cvx
} ifelse
} def
/ci6istint {
type /arraytype eq
} def
/ci6isspot {
dup type /arraytype eq {
dup length 1 sub get /Separation eq
}{
pop false
} ifelse
} def
/ci6spotname {
dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
} def
/ci6altspace {
aload pop pop pop ci6colormake
} def
/ci6numcomps {
dup /DeviceGray eq {
pop 1
}{
dup /DeviceRGB eq {
pop 3
}{
/DeviceCMYK eq {
4
}{
1
} ifelse
} ifelse
} ifelse
} def
/ci6marksplate {
dup /DeviceGray eq {
pop plateindex 3 eq
}{
dup /DeviceRGB eq {
pop plateindex 5 ne
}{
dup /DeviceCMYK eq {
pop plateindex 5 ne
}{
dup ci6isspot {
/findcmykcustomcolor where {
pop
dup length 2 sub get
0.1 0.1 0.1 0.1 5 -1 roll
findcmykcustomcolor 1 setcustomcolor
systemdict /currentgray get exec
1 ne
}{
pop plateindex 5 ne
} ifelse
}{
pop plateindex 5 ne
} ifelse
} ifelse
} ifelse
} ifelse
} def
/ci6colormake {
dup ci6numcomps
exch 1 index 2 add 1 roll
dup 1 eq {pop}{array astore} ifelse
exch
} def
/ci6colorexpand {
dup ci6spotname exch
dup ci6istint {
ci6altspace
exch 4 1 roll
}{
1 3 1 roll
} ifelse
} def
/ci6colortint {
dup /DeviceGray eq {
3 1 roll 1 exch sub mul 1 exch sub exch
}{
dup /DeviceRGB eq {
3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
}{
dup /DeviceCMYK eq {
3 1 roll {1 index mul exch} forall pop 4 array astore exch
}{
3 1 roll mul exch
} ifelse
} ifelse
} ifelse
} def
/ci6colortocmyk {
dup /DeviceGray eq {
pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
}{
dup /DeviceRGB eq {
pop aload pop _rgbtocmyk 4 array astore
}{
dup /DeviceCMYK eq {
pop
}{
ci6altspace ci6colortint ci6colortocmyk
} ifelse
} ifelse
} ifelse
} def
/ci6makeimagedict {
7 dict begin
/ImageType 1 def
/Decode exch def
/DataSource exch def
/ImageMatrix exch def
/BitsPerComponent exch def
/Height exch def
/Width exch def
currentdict end
} def
/ci6stringinvert {
0 1 2 index length 1 sub {
dup 2 index exch get 255 exch sub 2 index 3 1 roll put
} for
} def
/ci6stringknockout {
0 1 2 index length 1 sub {
255 2 index 3 1 roll put
} for
} def
/ci6stringapply {
0 1 4 index length 1 sub {
dup
4 index exch get
3 index 3 1 roll
3 index exec
} for
pop exch pop
} def
/ci6walkrgbstring {
0 3 index
dup length 1 sub 0 3 3 -1 roll {
3 getinterval {} forall
5 index exec
3 index
} for
5 {pop} repeat
} def
/ci6walkcmykstring
{
0 3 index
dup length 1 sub 0 4 3 -1 roll {
4 getinterval {} forall
6 index exec
3 index
} for
5 { pop } repeat
} def
/ci6putrgbtograystr
{
.11 mul exch
.59 mul add exch
.3 mul add
cvi 3 copy put
pop 1 add
} def
/ci6putcmyktograystr
{
exch .11 mul add
exch .59 mul add
exch .3 mul add
dup 255 gt { pop 255 } if
255 exch sub cvi 3 copy put
pop 1 add
} def
/ci6rgbtograyproc {
Adobe_ColorImage_AI6_Vars begin
sourcearray 0 get exec
XIBuffer3
dup 3 1 roll
/ci6putrgbtograystr load exch
ci6walkrgbstring
end
} def
/ci6cmyktograyproc {
Adobe_ColorImage_AI6_Vars begin
sourcearray 0 get exec
XIBuffer3
dup 3 1 roll
/ci6putcmyktograystr load exch
ci6walkcmykstring
end
} def
/ci6separatecmykproc {
Adobe_ColorImage_AI6_Vars begin
sourcearray 0 get exec
XIBuffer3
0 2 index
plateindex 4 2 index length 1 sub {
get 255 exch sub
3 copy put pop 1 add
2 index
} for
pop pop exch pop
end
} def
/ci6compositeimage {
dup 1 eq {
pop pop image
}{
/ci6colorimage load null ne {
ci6colorimage
}{
3 1 roll pop
sourcearray 0 3 -1 roll put
3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
image
} ifelse
} ifelse
} def
/ci6knockoutimage {
gsave
0 ci6curtransfer exec 1 ci6curtransfer exec
eq {
0 ci6curtransfer exec 0.5 lt
}{
0 ci6curtransfer exec 1 ci6curtransfer exec gt
} ifelse
{{pop 0}}{{pop 1}} ifelse
systemdict /settransfer get exec
ci6compositeimage
grestore
} def
/ci6drawimage {
ci6testplate -1 eq {
pop ci6compositeimage
}{
dup type /arraytype eq {
dup length plateindex gt {plateindex get}{pop false} ifelse
}{
{
true
}{
dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
} ifelse
} ifelse
{
dup 1 eq {
pop pop ci6image
}{
dup 3 eq {
ci6compositeimage
}{
pop pop
sourcearray 0 3 -1 roll put
/ci6separatecmykproc load
ci6image
} ifelse
} ifelse
}{
ci6curoverprint {
7 {pop} repeat
}{
ci6knockoutimage
} ifelse
} ifelse
} ifelse
} def
/ci6proctintimage {
/_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
/_pticomps _ptispace ci6numcomps store
/_ptiscale _pti1 _pti0 sub store
level2? {
_ptiname length 0 gt version cvr 2012 ge and {
[/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
[_pti0 _pti1] ci6makeimagedict ci6image
}{
[/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
[0 255] ci6makeimagedict ci6image
} ifelse
}{
_pticomps 1 eq {
{
dup
{
255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
} ci6stringapply
} ci6concatprocs ci6image
}{
{
dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
_ptibuf {
exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
_pticomps 2 add -2 roll
_pticomps 1 sub -1 0 {
1 index add 2 index exch
5 -1 roll
255 mul cvi put
} for
pop pop
} ci6stringapply
} ci6concatprocs false _pticomps
/ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
} ifelse
} ifelse
} def
/ci6graytintimage {
/_gtigray 5 -1 roll store
{1 _gtigray sub mul 1 exch sub} 4 1 roll
/DeviceGray ci6proctintimage
} def
/ci6cmyktintimage {
/_cticmyk 5 -1 roll store
{_cticmyk {1 index mul exch} forall pop} 4 1 roll
/DeviceCMYK ci6proctintimage
} def
/ci6rgbtintimage {
/_rtirgb 5 -1 roll store
{_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
/DeviceRGB ci6proctintimage
} def
/ci6tintimage {
ci6testplate -1 eq {
ci6colorexpand
3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
dup /DeviceGray eq {
pop ci6graytintimage
}{
dup /DeviceRGB eq {
pop ci6rgbtintimage
}{
pop ci6cmyktintimage
} ifelse
} ifelse
}{
dup ci6marksplate {
plateindex 5 lt {
ci6colortocmyk plateindex get
dup 0 eq ci6curoverprint and {
7 {pop} repeat
}{
1 exch sub
exch {1 0}{0 1} ifelse () ci6graytintimage
} ifelse
}{
pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
} ifelse
}{
ci6curoverprint {
8 {pop} repeat
}{
pop pop pop
{pop 1} 0 1 () /DeviceGray ci6proctintimage
} ifelse
} ifelse
} ifelse
} def
/XINullImage {
} def
/XIImageMask {
XIImageWidth XIImageHeight false
[XIImageWidth 0 0 XIImageHeight neg 0 0]
/XIDataProc load
imagemask
} def
/XIImageTint {
XIImageWidth XIImageHeight XIBitsPerPixel
[XIImageWidth 0 0 XIImageHeight neg 0 0]
/XIDataProc load
XIType 3 eq XIColorValues XIColorSpace ci6tintimage
} def
/XIImage {
XIImageWidth XIImageHeight XIBitsPerPixel
[XIImageWidth 0 0 XIImageHeight neg 0 0]
/XIDataProc load
false XIChannelCount XIPlateList ci6drawimage
} def
/XG {
pop pop
} def
/XF {
13 {pop} repeat
} def
/Xh {
Adobe_ColorImage_AI6_Vars begin
gsave
/XIType exch def
/XIImageHeight exch def
/XIImageWidth exch def
/XIImageMatrix exch def
0 0 moveto
XIImageMatrix concat
XIImageWidth XIImageHeight scale
/_lp /null ddef
_fc
/_lp /imagemask ddef
end
} def
/XH {
Adobe_ColorImage_AI6_Vars begin
grestore
end
} def
/XIEnable {
Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
} def
/XC {
Adobe_ColorImage_AI6_Vars begin
ci6colormake
/XIColorSpace exch def
/XIColorValues exch def
end
} def
/XIPlates {
Adobe_ColorImage_AI6_Vars begin
/XIPlateList exch def
end
} def
/XI
{
Adobe_ColorImage_AI6_Vars begin
gsave
/XIType exch def
cvi dup
256 idiv /XICompression exch store
256 mod /XIEncoding exch store
pop pop
/XIChannelCount exch def
/XIBitsPerPixel exch def
/XIImageHeight exch def
/XIImageWidth exch def
pop pop pop pop
/XIImageMatrix exch def
XIBitsPerPixel 1 eq {
XIImageWidth 8 div ceiling cvi
}{
XIImageWidth XIChannelCount mul
} ifelse
/XIRowBytes exch def
XIEnable {
/XIBuffer3 XIImageWidth string def
XICompression 0 eq {
/XIBuffer1 XIRowBytes string def
XIEncoding 0 eq {
{currentfile XIBuffer1 readhexstring pop}
}{
{currentfile XIBuffer1 readstring pop}
} ifelse
}{
/XIBuffer1 256 string def
/XIBuffer2 XIRowBytes string def
{currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
/ASCII85Decode filter /DCTDecode filter
/XIFile exch def
{XIFile XIBuffer2 readstring pop}
} ifelse
/XIDataProc exch def
XIType 1 ne {
0 setgray
} if
XIType 1 eq {
XIImageMask
}{
XIType 2 eq XIType 3 eq or {
XIImageTint
}{
XIImage
} ifelse
} ifelse
}{
XINullImage
} ifelse
/XIPlateList false def
grestore
end
} def
end
%%EndProcSet
%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
%%Version: 1.3 0
%%CreationDate: (3/7/1994) ()
%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
put
/_?cmyk false def
/_eo false def
/_lp /none def
/_pf
{
} def
/_ps
{
} def
/_psf
{
} def
/_pss
{
} def
/_pjsf
{
} def
/_pjss
{
} def
/_pola 0 def
/_doClip 0 def
/cf currentflat def
/_lineorientation 0 def
/_charorientation 0 def
/_yokoorientation 0 def
/_tm matrix def
/_renderStart
[
/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
] def
/_renderEnd
[
null null null null /i1 /i1 /i1 /i1
] def
/_render -1 def
/_shift [0 0] def
/_ax 0 def
/_ay 0 def
/_cx 0 def
/_cy 0 def
/_leading
[
0 0
] def
/_ctm matrix def
/_mtx matrix def
/_sp 16#020 def
/_hyphen (-) def
/_fontSize 0 def
/_fontAscent 0 def
/_fontDescent 0 def
/_fontHeight 0 def
/_fontRotateAdjust 0 def
/Ss 256 string def
Ss 0 (fonts/) putinterval
/_cnt 0 def
/_scale [1 1] def
/_nativeEncoding 0 def
/_useNativeEncoding 0 def
/_tempEncode 0 def
/_pntr 0 def
/_tDict 2 dict def
/_hfname 100 string def
/_hffound false def
/Tx
{
} def
/Tj
{
} def
/CRender
{
} def
/_AI3_savepage
{
} def
/_gf null def
/_cf 4 array def
/_rgbf 3 array def
/_if null def
/_of false def
/_fc
{
} def
/_gs null def
/_cs 4 array def
/_rgbs 3 array def
/_is null def
/_os false def
/_sc
{
} def
/_pd 1 dict def
/_ed 15 dict def
/_pm matrix def
/_fm null def
/_fd null def
/_fdd null def
/_sm null def
/_sd null def
/_sdd null def
/_i null def
/_lobyte 0 def
/_hibyte 0 def
/_cproc null def
/_cscript 0 def
/_hvax 0 def
/_hvay 0 def
/_hvwb 0 def
/_hvcx 0 def
/_hvcy 0 def
/_bitfont null def
/_bitlobyte 0 def
/_bithibyte 0 def
/_bitkey null def
/_bitdata null def
/_bitindex 0 def
/discardSave null def
/buffer 256 string def
/beginString null def
/endString null def
/endStringLength null def
/layerCnt 1 def
/layerCount 1 def
/perCent (%) 0 get def
/perCentSeen? false def
/newBuff null def
/newBuffButFirst null def
/newBuffLast null def
/clipForward? false def
end
userdict /Adobe_Illustrator_AI5 known not {
userdict /Adobe_Illustrator_AI5 100 dict put
} if
userdict /Adobe_Illustrator_AI5 get begin
/initialize
{
Adobe_Illustrator_AI5 dup begin
Adobe_Illustrator_AI5_vars begin
/_aicmykps where {pop /_?cmyk _aicmykps def}if
discardDict
{
bind pop pop
} forall
dup /nc get begin
{
dup xcheck 1 index type /operatortype ne and
{
bind
} if
pop pop
} forall
end
newpath
} def
/terminate
{
end
end
} def
/_
null def
/ddef
{
Adobe_Illustrator_AI5_vars 3 1 roll put
} def
/xput
{
dup load dup length exch maxlength eq
{
dup dup load dup
length 2 mul dict copy def
} if
load begin
def
end
} def
/npop
{
{
pop
} repeat
} def
/hswj
{
dup stringwidth 3 2 roll
{
_hvwb eq { exch _hvcx add exch _hvcy add } if
exch _hvax add exch _hvay add
} cforall
} def
/vswj
{
0 0 3 -1 roll
{
dup 255 le
_charorientation 1 eq
and
{
dup cstring stringwidth 5 2 roll
_hvwb eq { exch _hvcy sub exch _hvcx sub } if
exch _hvay sub exch _hvax sub
4 -1 roll sub exch
3 -1 roll sub exch
}
{
_hvwb eq { exch _hvcy sub exch _hvcx sub } if
exch _hvay sub exch _hvax sub
_fontHeight sub
} ifelse
} cforall
} def
/swj
{
6 1 roll
/_hvay exch ddef
/_hvax exch ddef
/_hvwb exch ddef
/_hvcy exch ddef
/_hvcx exch ddef
_lineorientation 0 eq { hswj } { vswj } ifelse
} def
/sw
{
0 0 0 6 3 roll swj
} def
/vjss
{
4 1 roll
{
dup cstring
dup length 1 eq
_charorientation 1 eq
and
{
-90 rotate
currentpoint
_fontRotateAdjust add
moveto
gsave
false charpath currentpoint
5 index setmatrix stroke
grestore
_fontRotateAdjust sub
moveto
_sp eq
{
5 index 5 index rmoveto
} if
2 copy rmoveto
90 rotate
}
{
currentpoint
_fontHeight sub
5 index sub
3 index _sp eq
{
9 index sub
} if
currentpoint
exch 4 index stringwidth pop 2 div sub
exch _fontAscent sub
moveto
gsave
2 index false charpath
6 index setmatrix stroke
grestore
moveto pop pop
} ifelse
} cforall
6 npop
} def
/hjss
{
4 1 roll
{
dup cstring
gsave
false charpath currentpoint
5 index setmatrix stroke
grestore
moveto
_sp eq
{
5 index 5 index rmoveto
} if
2 copy rmoveto
} cforall
6 npop
} def
/jss
{
_lineorientation 0 eq { hjss } { vjss } ifelse
} def
/ss
{
0 0 0 7 3 roll jss
} def
/vjsp
{
4 1 roll
{
dup cstring
dup length 1 eq
_charorientation 1 eq
and
{
-90 rotate
currentpoint
_fontRotateAdjust add
moveto
false charpath
currentpoint
_fontRotateAdjust sub
moveto
_sp eq
{
5 index 5 index rmoveto
} if
2 copy rmoveto
90 rotate
}
{
currentpoint
_fontHeight sub
5 index sub
3 index _sp eq
{
9 index sub
} if
currentpoint
exch 4 index stringwidth pop 2 div sub
exch _fontAscent sub
moveto
2 index false charpath
moveto pop pop
} ifelse
} cforall
6 npop
} def
/hjsp
{
4 1 roll
{
dup cstring
false charpath
_sp eq
{
5 index 5 index rmoveto
} if
2 copy rmoveto
} cforall
6 npop
} def
/jsp
{
matrix currentmatrix
_lineorientation 0 eq {hjsp} {vjsp} ifelse
} def
/sp
{
matrix currentmatrix
0 0 0 7 3 roll
_lineorientation 0 eq {hjsp} {vjsp} ifelse
} def
/pl
{
transform
0.25 sub round 0.25 add exch
0.25 sub round 0.25 add exch
itransform
} def
/setstrokeadjust where
{
pop true setstrokeadjust
/c
{
curveto
} def
/C
/c load def
/v
{
currentpoint 6 2 roll curveto
} def
/V
/v load def
/y
{
2 copy curveto
} def
/Y
/y load def
/l
{
lineto
} def
/L
/l load def
/m
{
moveto
} def
}
{
/c
{
pl curveto
} def
/C
/c load def
/v
{
currentpoint 6 2 roll pl curveto
} def
/V
/v load def
/y
{
pl 2 copy curveto
} def
/Y
/y load def
/l
{
pl lineto
} def
/L
/l load def
/m
{
pl moveto
} def
} ifelse
/d
{
setdash
} def
/cf
{
} def
/i
{
dup 0 eq
{
pop cf
} if
setflat
} def
/j
{
setlinejoin
} def
/J
{
setlinecap
} def
/M
{
setmiterlimit
} def
/w
{
setlinewidth
} def
/XR
{
0 ne
/_eo exch ddef
} def
/H
{
} def
/h
{
closepath
} def
/N
{
_pola 0 eq
{
_doClip 1 eq
{
_eo {eoclip} {clip} ifelse /_doClip 0 ddef
} if
newpath
}
{
/CRender
{
N
} ddef
} ifelse
} def
/n
{
N
} def
/F
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
/_doClip 0 ddef
}
{
_pf
} ifelse
}
{
/CRender
{
F
} ddef
} ifelse
} def
/f
{
closepath
F
} def
/S
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
_ps
} ifelse
}
{
/CRender
{
S
} ddef
} ifelse
} def
/s
{
closepath
S
} def
/B
{
_pola 0 eq
{
_doClip 1 eq
gsave F grestore
{
gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
S
} ifelse
}
{
/CRender
{
B
} ddef
} ifelse
} def
/b
{
closepath
B
} def