1// Signature format: 2.0 2package android.graphics.pdf { 3 4 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class LoadParams { 5 method @Nullable public String getPassword(); 6 } 7 8 public static final class LoadParams.Builder { 9 ctor public LoadParams.Builder(); 10 method @NonNull public android.graphics.pdf.LoadParams build(); 11 method @NonNull public android.graphics.pdf.LoadParams.Builder setPassword(@Nullable String); 12 } 13 14 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PdfRendererPreV implements java.lang.AutoCloseable { 15 ctor public PdfRendererPreV(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException; 16 ctor public PdfRendererPreV(@NonNull android.os.ParcelFileDescriptor, @NonNull android.graphics.pdf.LoadParams) throws java.io.IOException; 17 method public void close(); 18 method public int getDocumentLinearizationType(); 19 method @IntRange(from=0) public int getPageCount(); 20 method @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public int getPdfFormType(); 21 method @NonNull public android.graphics.pdf.PdfRendererPreV.Page openPage(@IntRange(from=0) int); 22 method public void write(@NonNull android.os.ParcelFileDescriptor, boolean) throws java.io.IOException; 23 field public static final int DOCUMENT_LINEARIZED_TYPE_LINEARIZED = 1; // 0x1 24 field public static final int DOCUMENT_LINEARIZED_TYPE_NON_LINEARIZED = 0; // 0x0 25 field @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public static final int PDF_FORM_TYPE_ACRO_FORM = 1; // 0x1 26 field @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public static final int PDF_FORM_TYPE_NONE = 0; // 0x0 27 field @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public static final int PDF_FORM_TYPE_XFA_FOREGROUND = 3; // 0x3 28 field @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public static final int PDF_FORM_TYPE_XFA_FULL = 2; // 0x2 29 } 30 31 public final class PdfRendererPreV.Page implements java.lang.AutoCloseable { 32 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") @IntRange(from=0xffffffff) public int addPageAnnotation(@NonNull android.graphics.pdf.component.PdfAnnotation); 33 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public int addPageObject(@NonNull android.graphics.pdf.component.PdfPageObject); 34 method @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") @NonNull public java.util.List<android.graphics.Rect> applyEdit(@NonNull android.graphics.pdf.models.FormEditRecord); 35 method public void close(); 36 method @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") @NonNull public android.graphics.pdf.models.FormWidgetInfo getFormWidgetInfoAtIndex(@IntRange(from=0) int); 37 method @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") @NonNull public android.graphics.pdf.models.FormWidgetInfo getFormWidgetInfoAtPosition(int, int); 38 method @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") @NonNull public java.util.List<android.graphics.pdf.models.FormWidgetInfo> getFormWidgetInfos(); 39 method @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") @NonNull public java.util.List<android.graphics.pdf.models.FormWidgetInfo> getFormWidgetInfos(@NonNull int[]); 40 method @NonNull public java.util.List<android.graphics.pdf.content.PdfPageGotoLinkContent> getGotoLinks(); 41 method @IntRange(from=0) public int getHeight(); 42 method @NonNull public java.util.List<android.graphics.pdf.content.PdfPageImageContent> getImageContents(); 43 method @IntRange(from=0) public int getIndex(); 44 method @NonNull public java.util.List<android.graphics.pdf.content.PdfPageLinkContent> getLinkContents(); 45 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") @NonNull public java.util.List<android.util.Pair<java.lang.Integer,android.graphics.pdf.component.PdfAnnotation>> getPageAnnotations(); 46 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") @NonNull public java.util.List<android.util.Pair<java.lang.Integer,android.graphics.pdf.component.PdfPageObject>> getPageObjects(); 47 method @NonNull public java.util.List<android.graphics.pdf.content.PdfPageTextContent> getTextContents(); 48 method @IntRange(from=0) public int getWidth(); 49 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") public void removePageAnnotation(@IntRange(from=0) int); 50 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public void removePageObject(@IntRange(from=0) int); 51 method public void render(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @Nullable android.graphics.Matrix, @NonNull android.graphics.pdf.RenderParams); 52 method @NonNull public java.util.List<android.graphics.pdf.models.PageMatchBounds> searchText(@NonNull String); 53 method @Nullable public android.graphics.pdf.models.selection.PageSelection selectContent(@NonNull android.graphics.pdf.models.selection.SelectionBoundary, @NonNull android.graphics.pdf.models.selection.SelectionBoundary); 54 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") public boolean updatePageAnnotation(@IntRange(from=0) int, @NonNull android.graphics.pdf.component.PdfAnnotation); 55 method @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public boolean updatePageObject(@IntRange(from=0) int, @NonNull android.graphics.pdf.component.PdfPageObject); 56 } 57 58 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class RenderParams { 59 method public int getRenderFlags(); 60 method public int getRenderMode(); 61 field @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_annotations") public static final int FLAG_RENDER_FREETEXT_ANNOTATIONS = 16; // 0x10 62 field public static final int FLAG_RENDER_HIGHLIGHT_ANNOTATIONS = 4; // 0x4 63 field @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_stamp_annotations") public static final int FLAG_RENDER_STAMP_ANNOTATIONS = 8; // 0x8 64 field public static final int FLAG_RENDER_TEXT_ANNOTATIONS = 2; // 0x2 65 field public static final int RENDER_MODE_FOR_DISPLAY = 1; // 0x1 66 field public static final int RENDER_MODE_FOR_PRINT = 2; // 0x2 67 } 68 69 public static final class RenderParams.Builder { 70 ctor public RenderParams.Builder(int); 71 method @NonNull public android.graphics.pdf.RenderParams build(); 72 method @NonNull public android.graphics.pdf.RenderParams.Builder setRenderFlags(int); 73 method @NonNull public android.graphics.pdf.RenderParams.Builder setRenderFlags(int, int); 74 } 75 76} 77 78package android.graphics.pdf.component { 79 80 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_annotations") public final class FreeTextAnnotation extends android.graphics.pdf.component.PdfAnnotation { 81 ctor public FreeTextAnnotation(@NonNull android.graphics.RectF, @NonNull String); 82 method @ColorInt public int getBackgroundColor(); 83 method @NonNull public android.graphics.RectF getBounds(); 84 method @ColorInt public int getTextColor(); 85 method @NonNull public String getTextContent(); 86 method public void setBackgroundColor(@ColorInt int); 87 method public void setBounds(@NonNull android.graphics.RectF); 88 method public void setTextColor(@ColorInt int); 89 method public void setTextContent(@NonNull String); 90 } 91 92 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") public final class HighlightAnnotation extends android.graphics.pdf.component.PdfAnnotation { 93 ctor public HighlightAnnotation(@NonNull java.util.List<android.graphics.RectF>); 94 method @NonNull public java.util.List<android.graphics.RectF> getBounds(); 95 method @ColorInt public int getColor(); 96 method public void setBounds(@NonNull java.util.List<android.graphics.RectF>); 97 method public void setColor(@ColorInt int); 98 } 99 100 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") public abstract class PdfAnnotation { 101 method public int getPdfAnnotationType(); 102 } 103 104 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_annotations") public final class PdfAnnotationType { 105 field @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_annotations") public static final int FREETEXT = 1; // 0x1 106 field public static final int HIGHLIGHT = 2; // 0x2 107 field public static final int STAMP = 3; // 0x3 108 field public static final int UNKNOWN = 0; // 0x0 109 } 110 111 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public final class PdfPageImageObject extends android.graphics.pdf.component.PdfPageObject { 112 ctor public PdfPageImageObject(@NonNull android.graphics.Bitmap); 113 method @NonNull public android.graphics.Bitmap getBitmap(); 114 method public void setBitmap(@NonNull android.graphics.Bitmap); 115 } 116 117 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public abstract class PdfPageObject { 118 method @NonNull public float[] getMatrix(); 119 method public int getPdfObjectType(); 120 method public void setMatrix(@NonNull android.graphics.Matrix); 121 method public void transform(float, float, float, float, float, float); 122 } 123 124 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public final class PdfPageObjectRenderMode { 125 field public static final int FILL = 0; // 0x0 126 field public static final int FILL_STROKE = 2; // 0x2 127 field public static final int STROKE = 1; // 0x1 128 field public static final int UNKNOWN = -1; // 0xffffffff 129 } 130 131 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public final class PdfPageObjectType { 132 method public static boolean isValidType(int); 133 field public static final int IMAGE = 3; // 0x3 134 field public static final int PATH = 2; // 0x2 135 field @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_objects") public static final int TEXT = 1; // 0x1 136 field public static final int UNKNOWN = 0; // 0x0 137 } 138 139 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_page_objects") public final class PdfPagePathObject extends android.graphics.pdf.component.PdfPageObject { 140 ctor public PdfPagePathObject(@NonNull android.graphics.Path); 141 method @ColorInt public int getFillColor(); 142 method public int getRenderMode(); 143 method @ColorInt public int getStrokeColor(); 144 method public float getStrokeWidth(); 145 method public void setFillColor(@ColorInt int); 146 method public void setRenderMode(int); 147 method public void setStrokeColor(@ColorInt int); 148 method public void setStrokeWidth(float); 149 method @NonNull public android.graphics.Path toPath(); 150 } 151 152 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_objects") public final class PdfPageTextObject extends android.graphics.pdf.component.PdfPageObject { 153 ctor public PdfPageTextObject(@NonNull String, @NonNull android.graphics.pdf.component.PdfPageTextObjectFont, float); 154 method @ColorInt public int getFillColor(); 155 method @NonNull public android.graphics.pdf.component.PdfPageTextObjectFont getFont(); 156 method public float getFontSize(); 157 method public int getRenderMode(); 158 method @ColorInt public int getStrokeColor(); 159 method public float getStrokeWidth(); 160 method @NonNull public String getText(); 161 method public void setFillColor(@ColorInt int); 162 method public void setRenderMode(int); 163 method public void setStrokeColor(@ColorInt int); 164 method public void setStrokeWidth(float); 165 method public void setText(@NonNull String); 166 } 167 168 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_objects") public class PdfPageTextObjectFont { 169 ctor public PdfPageTextObjectFont(int, boolean, boolean); 170 ctor public PdfPageTextObjectFont(@NonNull android.graphics.pdf.component.PdfPageTextObjectFont); 171 method public int getFontFamily(); 172 method public boolean isBold(); 173 method public boolean isItalic(); 174 method public void setBold(boolean); 175 method public void setFontFamily(int); 176 method public void setItalic(boolean); 177 } 178 179 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_text_objects") public class PdfPageTextObjectFontFamily { 180 field public static final int COURIER = 0; // 0x0 181 field public static final int HELVETICA = 1; // 0x1 182 field public static final int SYMBOL = 2; // 0x2 183 field public static final int TIMES_NEW_ROMAN = 3; // 0x3 184 } 185 186 @FlaggedApi("android.graphics.pdf.flags.enable_edit_pdf_stamp_annotations") public final class StampAnnotation extends android.graphics.pdf.component.PdfAnnotation { 187 ctor public StampAnnotation(@NonNull android.graphics.RectF); 188 method public void addObject(@NonNull android.graphics.pdf.component.PdfPageObject); 189 method @NonNull public android.graphics.RectF getBounds(); 190 method @NonNull public java.util.List<android.graphics.pdf.component.PdfPageObject> getObjects(); 191 method public void removeObject(@IntRange(from=0) int); 192 method public void setBounds(@NonNull android.graphics.RectF); 193 } 194 195} 196 197package android.graphics.pdf.content { 198 199 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PdfPageGotoLinkContent implements android.os.Parcelable { 200 ctor public PdfPageGotoLinkContent(@NonNull java.util.List<android.graphics.RectF>, @NonNull android.graphics.pdf.content.PdfPageGotoLinkContent.Destination); 201 method public int describeContents(); 202 method @NonNull public java.util.List<android.graphics.RectF> getBounds(); 203 method @NonNull public android.graphics.pdf.content.PdfPageGotoLinkContent.Destination getDestination(); 204 method public void writeToParcel(@NonNull android.os.Parcel, int); 205 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.content.PdfPageGotoLinkContent> CREATOR; 206 } 207 208 public static final class PdfPageGotoLinkContent.Destination implements android.os.Parcelable { 209 ctor public PdfPageGotoLinkContent.Destination(int, float, float, float); 210 method public int describeContents(); 211 method @IntRange(from=0) public int getPageNumber(); 212 method @FloatRange(from=0.0f) public float getXCoordinate(); 213 method @FloatRange(from=0.0f) public float getYCoordinate(); 214 method @FloatRange(from=0.0f) public float getZoom(); 215 method public void writeToParcel(@NonNull android.os.Parcel, int); 216 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.content.PdfPageGotoLinkContent.Destination> CREATOR; 217 } 218 219 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PdfPageImageContent implements android.os.Parcelable { 220 ctor public PdfPageImageContent(@NonNull String); 221 method public int describeContents(); 222 method @NonNull public String getAltText(); 223 method public void writeToParcel(@NonNull android.os.Parcel, int); 224 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.content.PdfPageImageContent> CREATOR; 225 } 226 227 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PdfPageLinkContent implements android.os.Parcelable { 228 ctor public PdfPageLinkContent(@NonNull java.util.List<android.graphics.RectF>, @NonNull android.net.Uri); 229 method public int describeContents(); 230 method @NonNull public java.util.List<android.graphics.RectF> getBounds(); 231 method @NonNull public android.net.Uri getUri(); 232 method public void writeToParcel(@NonNull android.os.Parcel, int); 233 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.content.PdfPageLinkContent> CREATOR; 234 } 235 236 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PdfPageTextContent implements android.os.Parcelable { 237 ctor public PdfPageTextContent(@NonNull String); 238 ctor public PdfPageTextContent(@NonNull String, @NonNull java.util.List<android.graphics.RectF>); 239 method public int describeContents(); 240 method @NonNull public java.util.List<android.graphics.RectF> getBounds(); 241 method @NonNull public String getText(); 242 method public void writeToParcel(@NonNull android.os.Parcel, int); 243 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.content.PdfPageTextContent> CREATOR; 244 } 245 246} 247 248package android.graphics.pdf.models { 249 250 @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public final class FormEditRecord implements android.os.Parcelable { 251 method public int describeContents(); 252 method @Nullable public android.graphics.Point getClickPoint(); 253 method @IntRange(from=0) public int getPageNumber(); 254 method @NonNull public int[] getSelectedIndices(); 255 method @Nullable public String getText(); 256 method public int getType(); 257 method @IntRange(from=0) public int getWidgetIndex(); 258 method public void writeToParcel(@NonNull android.os.Parcel, int); 259 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.models.FormEditRecord> CREATOR; 260 field public static final int EDIT_TYPE_CLICK = 0; // 0x0 261 field public static final int EDIT_TYPE_SET_INDICES = 1; // 0x1 262 field public static final int EDIT_TYPE_SET_TEXT = 2; // 0x2 263 } 264 265 public static final class FormEditRecord.Builder { 266 ctor public FormEditRecord.Builder(int, @IntRange(from=0) int, @IntRange(from=0) int); 267 method @NonNull public android.graphics.pdf.models.FormEditRecord build(); 268 method @NonNull public android.graphics.pdf.models.FormEditRecord.Builder setClickPoint(@Nullable android.graphics.Point); 269 method @NonNull public android.graphics.pdf.models.FormEditRecord.Builder setSelectedIndices(@Nullable int[]); 270 method @NonNull public android.graphics.pdf.models.FormEditRecord.Builder setText(@Nullable String); 271 } 272 273 @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public final class FormWidgetInfo implements android.os.Parcelable { 274 method public int describeContents(); 275 method @Nullable public String getAccessibilityLabel(); 276 method @FloatRange(from=0.0f) public float getFontSize(); 277 method @NonNull public java.util.List<android.graphics.pdf.models.ListItem> getListItems(); 278 method @IntRange(from=0xffffffff) public int getMaxLength(); 279 method @Nullable public String getTextValue(); 280 method @IntRange(from=0) public int getWidgetIndex(); 281 method @NonNull public android.graphics.Rect getWidgetRect(); 282 method public int getWidgetType(); 283 method public boolean isEditableText(); 284 method public boolean isMultiLineText(); 285 method public boolean isMultiSelect(); 286 method public boolean isReadOnly(); 287 method public void writeToParcel(@NonNull android.os.Parcel, int); 288 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.models.FormWidgetInfo> CREATOR; 289 field public static final int WIDGET_TYPE_CHECKBOX = 2; // 0x2 290 field public static final int WIDGET_TYPE_COMBOBOX = 4; // 0x4 291 field public static final int WIDGET_TYPE_LISTBOX = 5; // 0x5 292 field public static final int WIDGET_TYPE_PUSHBUTTON = 1; // 0x1 293 field public static final int WIDGET_TYPE_RADIOBUTTON = 3; // 0x3 294 field public static final int WIDGET_TYPE_SIGNATURE = 7; // 0x7 295 field public static final int WIDGET_TYPE_TEXTFIELD = 6; // 0x6 296 field public static final int WIDGET_TYPE_UNKNOWN = 0; // 0x0 297 } 298 299 public static final class FormWidgetInfo.Builder { 300 ctor public FormWidgetInfo.Builder(int, @IntRange(from=0) int, @NonNull android.graphics.Rect, @NonNull String, @NonNull String); 301 method @NonNull public android.graphics.pdf.models.FormWidgetInfo build(); 302 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setEditableText(boolean); 303 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setFontSize(@FloatRange(from=0.0f) float); 304 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setListItems(@NonNull java.util.List<android.graphics.pdf.models.ListItem>); 305 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setMaxLength(@IntRange(from=0) int); 306 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setMultiLineText(boolean); 307 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setMultiSelect(boolean); 308 method @NonNull public android.graphics.pdf.models.FormWidgetInfo.Builder setReadOnly(boolean); 309 } 310 311 @FlaggedApi("android.graphics.pdf.flags.enable_form_filling") public final class ListItem implements android.os.Parcelable { 312 ctor public ListItem(@NonNull String, boolean); 313 method public int describeContents(); 314 method @NonNull public String getLabel(); 315 method public boolean isSelected(); 316 method public void writeToParcel(@NonNull android.os.Parcel, int); 317 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.models.ListItem> CREATOR; 318 } 319 320 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PageMatchBounds implements android.os.Parcelable { 321 ctor public PageMatchBounds(@NonNull java.util.List<android.graphics.RectF>, int); 322 method public int describeContents(); 323 method @NonNull public java.util.List<android.graphics.RectF> getBounds(); 324 method public int getTextStartIndex(); 325 method public void writeToParcel(@NonNull android.os.Parcel, int); 326 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.models.PageMatchBounds> CREATOR; 327 } 328 329} 330 331package android.graphics.pdf.models.selection { 332 333 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class PageSelection implements android.os.Parcelable { 334 ctor public PageSelection(int, @NonNull android.graphics.pdf.models.selection.SelectionBoundary, @NonNull android.graphics.pdf.models.selection.SelectionBoundary, @NonNull java.util.List<android.graphics.pdf.content.PdfPageTextContent>); 335 method public int describeContents(); 336 method public int getPage(); 337 method @NonNull public java.util.List<android.graphics.pdf.content.PdfPageTextContent> getSelectedTextContents(); 338 method @NonNull public android.graphics.pdf.models.selection.SelectionBoundary getStart(); 339 method @NonNull public android.graphics.pdf.models.selection.SelectionBoundary getStop(); 340 method public void writeToParcel(@NonNull android.os.Parcel, int); 341 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.models.selection.PageSelection> CREATOR; 342 } 343 344 @FlaggedApi("android.graphics.pdf.flags.enable_pdf_viewer") public final class SelectionBoundary implements android.os.Parcelable { 345 ctor public SelectionBoundary(int); 346 ctor public SelectionBoundary(@NonNull android.graphics.Point); 347 method public int describeContents(); 348 method public int getIndex(); 349 method public boolean getIsRtl(); 350 method @Nullable public android.graphics.Point getPoint(); 351 method public void writeToParcel(@NonNull android.os.Parcel, int); 352 field @NonNull public static final android.os.Parcelable.Creator<android.graphics.pdf.models.selection.SelectionBoundary> CREATOR; 353 } 354 355} 356 357