Files
discord-decomp/sources/design/void/CutoutableAvatarImage/native/CutoutableAvatarImage.tsx
T
2026-07-27 16:20:00 +03:00

514 lines
23 KiB
TypeScript

/* Metro module 10252; source: design/void/CutoutableAvatarImage/native/CutoutableAvatarImage.tsx; dependencies: [31, 27, 10253, 33, 3, 1423, 10254, 4017, 7599, 4577, 5475, 10255, 491, 7744, 628, 2] */
function _fun79619(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#79619, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:6, offset: 0x01e5a4ad, size: 2022 bytes, params: 8, frame: 26
var object2;
const env0_0 = require;
let Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = importAll(31) /* metro dependency 31 */;
const value2 = require(27) /* metro dependency 27 */;
const env0_3 = value2.StyleSheet;
const env0_4 = value2.View;
const env0_5 = (require(10253) /* metro dependency 10253: ChannelAnimationConstants */).CHANNEL_SPRING_CONFIG;
const value3 = require(33) /* metro dependency 33 */;
const env0_6 = value3.jsx;
const env0_7 = value3.jsxs;
const value6 = new (importDefault(3) /* metro dependency 3: Logger */)('UIKit - AvatarImage');
object2 = {XXSMALL: 'xxsmall', XSMALL: 'xsmall', SMALL: 'small', NORMAL: 'normal', LARGE: 'large', XLARGE: 'xlarge',
XLARGE_72: 'xlarge72', XXLARGE: 'xxlarge', PROFILE: 'profile', REFRESH_MEDIUM_32: 'refreshMedium32',
XXSMALL_10: 'xsmall10', XSMALL_20: 'xsmall20', SIZE_16: 'size16', LARGE_48: 'large48',
EDIT_AVATAR_DECORATION: 'editAvatarDecoration', GIFT_START: 'giftStart', GIFT_SUCCESS: 'giftSuccess',
YOUBAR_60: 'youBar60', TABS_22: 'tabs22'};
Object = global.Object;
const freeze = Object.freeze;
let XXSMALL_10 = object2.XXSMALL_10;
let SIZE_16 = object2.SIZE_16;
let XXSMALL = object2.XXSMALL;
let XSMALL_20 = object2.XSMALL_20;
let XSMALL = object2.XSMALL;
let SMALL = object2.SMALL;
let NORMAL = object2.NORMAL;
let LARGE_48 = object2.LARGE_48;
let LARGE = object2.LARGE;
let XLARGE = object2.XLARGE;
let XLARGE_72 = object2.XLARGE_72;
let XXLARGE = object2.XXLARGE;
let PROFILE = object2.PROFILE;
let EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION;
let GIFT_START = object2.GIFT_START;
let GIFT_SUCCESS = object2.GIFT_SUCCESS;
let REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32;
let YOUBAR_60 = object2.YOUBAR_60;
let TABS_22 = object2.TABS_22;
const value8 = Reflect.apply(freeze, Object, [{[XXSMALL_10]: 10, [SIZE_16]: 16, [XXSMALL]: 18, [XSMALL_20]: 20,
[XSMALL]: 24, [SMALL]: 30, [NORMAL]: 40, [LARGE_48]: 48, [LARGE]: 50, [XLARGE]: 64, [XLARGE_72]: 72,
[XXLARGE]: 80, [PROFILE]: 128, [EDIT_AVATAR_DECORATION]: 144, [GIFT_START]: 184, [GIFT_SUCCESS]: 236,
[REFRESH_MEDIUM_32]: 32, [YOUBAR_60]: 60, [TABS_22]: 22}]);
const object25 = {image: {'width': '100%', 'height': '100%'}};
const object26 = {};
XXSMALL = object2.XXSMALL;
object26.width = value8[XXSMALL];
XXSMALL = object2.XXSMALL;
object26.height = value8[XXSMALL];
XXSMALL = object2.XXSMALL;
object26.borderRadius = value8[XXSMALL] / 2;
object25.xxsmall = object26;
const object27 = {};
XXSMALL_10 = object2.XXSMALL_10;
object27.width = value8[XXSMALL_10];
XXSMALL_10 = object2.XXSMALL_10;
object27.height = value8[XXSMALL_10];
XXSMALL_10 = object2.XXSMALL_10;
object27.borderRadius = value8[XXSMALL_10] / 2;
object25.xsmall10 = object27;
const object28 = {};
XSMALL_20 = object2.XSMALL_20;
object28.width = value8[XSMALL_20];
XSMALL_20 = object2.XSMALL_20;
object28.height = value8[XSMALL_20];
XSMALL_20 = object2.XSMALL_20;
object28.borderRadius = value8[XSMALL_20] / 2;
object25.xsmall20 = object28;
const object29 = {};
XSMALL = object2.XSMALL;
object29.width = value8[XSMALL];
XSMALL = object2.XSMALL;
object29.height = value8[XSMALL];
XSMALL = object2.XSMALL;
object29.borderRadius = value8[XSMALL] / 2;
object25.xsmall = object29;
const object30 = {};
SMALL = object2.SMALL;
object30.width = value8[SMALL];
SMALL = object2.SMALL;
object30.height = value8[SMALL];
SMALL = object2.SMALL;
object30.borderRadius = value8[SMALL] / 2;
object25.small = object30;
const object31 = {};
NORMAL = object2.NORMAL;
object31.width = value8[NORMAL];
NORMAL = object2.NORMAL;
object31.height = value8[NORMAL];
NORMAL = object2.NORMAL;
object31.borderRadius = value8[NORMAL] / 2;
object25.normal = object31;
const object32 = {};
LARGE = object2.LARGE;
object32.width = value8[LARGE];
LARGE = object2.LARGE;
object32.height = value8[LARGE];
LARGE = object2.LARGE;
object32.borderRadius = value8[LARGE] / 2;
object25.large = object32;
const object33 = {};
XLARGE = object2.XLARGE;
object33.width = value8[XLARGE];
XLARGE = object2.XLARGE;
object33.height = value8[XLARGE];
XLARGE = object2.XLARGE;
object33.borderRadius = value8[XLARGE] / 2;
object25.xlarge = object33;
const object34 = {};
XLARGE_72 = object2.XLARGE_72;
object34.width = value8[XLARGE_72];
XLARGE_72 = object2.XLARGE_72;
object34.height = value8[XLARGE_72];
XLARGE_72 = object2.XLARGE_72;
object34.borderRadius = value8[XLARGE_72] / 2;
object25.xlarge72 = object34;
const object35 = {};
XXLARGE = object2.XXLARGE;
object35.width = value8[XXLARGE];
XXLARGE = object2.XXLARGE;
object35.height = value8[XXLARGE];
XXLARGE = object2.XXLARGE;
object35.borderRadius = value8[XXLARGE] / 2;
object25.xxlarge = object35;
const object36 = {};
REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32;
object36.width = value8[REFRESH_MEDIUM_32];
REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32;
object36.height = value8[REFRESH_MEDIUM_32];
REFRESH_MEDIUM_32 = object2.REFRESH_MEDIUM_32;
object36.borderRadius = value8[REFRESH_MEDIUM_32] / 2;
object25.refreshMedium32 = object36;
const object37 = {};
PROFILE = object2.PROFILE;
object37.width = value8[PROFILE];
PROFILE = object2.PROFILE;
object37.height = value8[PROFILE];
PROFILE = object2.PROFILE;
object37.borderRadius = value8[PROFILE] / 2;
object25.profile = object37;
const object38 = {};
SIZE_16 = object2.SIZE_16;
object38.width = value8[SIZE_16];
SIZE_16 = object2.SIZE_16;
object38.height = value8[SIZE_16];
SIZE_16 = object2.SIZE_16;
object38.borderRadius = value8[SIZE_16] / 2;
object25.size16 = object38;
const object39 = {};
LARGE_48 = object2.LARGE_48;
object39.width = value8[LARGE_48];
LARGE_48 = object2.LARGE_48;
object39.height = value8[LARGE_48];
LARGE_48 = object2.LARGE_48;
object39.borderRadius = value8[LARGE_48] / 2;
object25.large48 = object39;
const object40 = {};
EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION;
object40.width = value8[EDIT_AVATAR_DECORATION];
EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION;
object40.height = value8[EDIT_AVATAR_DECORATION];
EDIT_AVATAR_DECORATION = object2.EDIT_AVATAR_DECORATION;
object40.borderRadius = value8[EDIT_AVATAR_DECORATION] / 2;
object25.editAvatarDecoration = object40;
const object41 = {};
GIFT_START = object2.GIFT_START;
object41.width = value8[GIFT_START];
GIFT_START = object2.GIFT_START;
object41.height = value8[GIFT_START];
GIFT_START = object2.GIFT_START;
object41.borderRadius = value8[GIFT_START] / 2;
object25.giftStart = object41;
const object42 = {};
GIFT_SUCCESS = object2.GIFT_SUCCESS;
object42.width = value8[GIFT_SUCCESS];
GIFT_SUCCESS = object2.GIFT_SUCCESS;
object42.height = value8[GIFT_SUCCESS];
GIFT_SUCCESS = object2.GIFT_SUCCESS;
object42.borderRadius = value8[GIFT_SUCCESS] / 2;
object25.giftSuccess = object42;
const object43 = {};
YOUBAR_60 = object2.YOUBAR_60;
object43.width = value8[YOUBAR_60];
YOUBAR_60 = object2.YOUBAR_60;
object43.height = value8[YOUBAR_60];
YOUBAR_60 = object2.YOUBAR_60;
object43.borderRadius = value8[YOUBAR_60] / 2;
object25.youBar60 = object43;
const object44 = {};
TABS_22 = object2.TABS_22;
object44.width = value8[TABS_22];
TABS_22 = object2.TABS_22;
object44.height = value8[TABS_22];
TABS_22 = object2.TABS_22;
object44.borderRadius = value8[TABS_22] / 2;
object25.tabs22 = object44;
const object45 = {RIGHT: 0};
object45[0] = 'RIGHT';
object45.BOTTOM_RIGHT = 1;
object45[1] = 'BOTTOM_RIGHT';
object45.BOTTOM_LEFT = 2;
object45[2] = 'BOTTOM_LEFT';
const object46 = {RECTANGULAR: 0};
object46[0] = 'RECTANGULAR';
object46.CIRCULAR = 1;
object46[1] = 'CIRCULAR';
const env0_13 = (importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).createAnimatedComponent(importDefault(7599) /* metro dependency 7599: ClipView */);
const env0_14 = {code: "function CutoutableAvatarImageTsx1(){const{animate,cutout,CutoutShape,withSpring,CHANNEL_SPRING_CONFIG}=this.__closure;const animated=!animate?'animate-never':undefined;const animatedCutout=cutout.shape===CutoutShape.RoundedRect?{shape:CutoutShape.RoundedRect,x:withSpring(cutout.x,CHANNEL_SPRING_CONFIG,animated),y:withSpring(cutout.y,CHANNEL_SPRING_CONFIG,animated),width:withSpring(cutout.width,CHANNEL_SPRING_CONFIG,animated),height:withSpring(cutout.height,CHANNEL_SPRING_CONFIG,animated),cornerRadius:withSpring(cutout.cornerRadius,CHANNEL_SPRING_CONFIG,animated)}:{shape:CutoutShape.Circle,x:withSpring(cutout.x,CHANNEL_SPRING_CONFIG,animated),y:withSpring(cutout.y,CHANNEL_SPRING_CONFIG,animated),size:withSpring(cutout.size,CHANNEL_SPRING_CONFIG,animated)};return{cutouts:[animatedCutout]};}"};
value = value.memo(_fun79623, customShallowEqual);
(require(2) /* metro dependency 2 */).fileFinishedImporting('design/void/CutoutableAvatarImage/native/CutoutableAvatarImage.tsx');
exports.default = value;
exports.AvatarSizes = object2;
exports.AVATAR_SIZE_MAP = value8;
exports.styles = object25;
exports.CutoutDirection = object45;
exports.CutoutType = object46;
}
function NativeCutoutAvatarImage({animate, cutout, source, style}) { // fn#79620, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:3747, offset: 0x01e5ac93, size: 282 bytes, params: 2, frame: 21
animate = !(animate === undefined) && animate;
const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */;
const useAnimatedProps = reanimatedRexportModule.useAnimatedProps;
const closure = NativeCutoutAvatarImageH;
const object2 = {animate: animate, cutout: cutout};
const CutoutShape = (require(7599) /* metro dependency 7599: ClipView */).CutoutShape;
object2.CutoutShape = CutoutShape;
object2.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring;
object2.CHANNEL_SPRING_CONFIG = CHANNEL_SPRING_CONFIG;
closure.__closure = object2;
closure.__workletHash = 11368409055559;
closure.__initData = env0_14;
return ((Component) => <Component style={style} animatedProps={Reflect.apply(useAnimatedProps,
reanimatedRexportModule,
[closure])}>{((Component) => <Component style={env0_10.image} source={(importDefault(10255) /* metro dependency 10255: getReactNativeSVGImageSource */)(source)} usesSmallCache />)(importDefault(5475) /* metro dependency 5475: FastImage */)}</Component>)(env0_13);
}
function CutoutAvatarImage({cutout, size, source, style}) { // fn#79622, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:4604, offset: 0x01e5af76, size: 1183 bytes, params: 2, frame: 39
var r28;
var r9;
var r8;
var value7;
var value9;
const Rect = (require(7744) /* metro dependency 7744 */).Rect;
var color;
let value = size / 2;
const r26 = cutout.radius ?? value;
const r2 = cutout.inset ?? 0;
const r11 = cutout.imageType ?? env0_12.CIRCULAR;
const value5 = size - r2;
let CIRCULAR = env0_12.CIRCULAR;
let r27 = r11 !== CIRCULAR ? size : value;
const direction = cutout.direction;
const BOTTOM_RIGHT = env0_11.BOTTOM_RIGHT;
if (BOTTOM_RIGHT === direction) {
value9 = size - r26 - r2;
r27 = size - r26 - r2;
r28 = value9;
} else if (env0_11.BOTTOM_LEFT !== direction) {
r28 = value5;
} else {
value7 = r26 + r2;
r27 = size - r26 - r2;
r28 = value7;
}
const value11 = (require(491) /* metro dependency 491 */).v4();
const tintColor = StyleSheet.flatten(style).tintColor;
if (source == null) {
const Image = (require(7744) /* metro dependency 7744 */).Image;
r9 = <Image x="0" y="0" height="100%" width="100%" href={(importDefault(10255) /* metro dependency 10255: getReactNativeSVGImageSource */)(source)} mask={'url(#' + value11 + ')'} />;
} else if (tintColor != null) {
const ForeignObject = (require(7744) /* metro dependency 7744 */).ForeignObject;
r9 = <ForeignObject x="0" y="0" height="100%" width="100%" mask={'url(#' + value11 + ')'}>{((Component) => <Component style={{tintColor: tintColor}} source={(importDefault(10255) /* metro dependency 10255: getReactNativeSVGImageSource */)(source)} usesSmallCache />)(importDefault(5475) /* metro dependency 5475: FastImage */)}</ForeignObject>;
} else {
const Image2 = (require(7744) /* metro dependency 7744 */).Image;
r9 = <Image2 x="0" y="0" height="100%" width="100%" href={(importDefault(10255) /* metro dependency 10255: getReactNativeSVGImageSource */)(source)} mask={'url(#' + value11 + ')'} />;
}
const defaultImport2 = importDefault(7744) /* metro dependency 7744 */;
const Defs = (require(7744) /* metro dependency 7744 */).Defs;
const Mask = (require(7744) /* metro dependency 7744 */).Mask;
CIRCULAR = env0_12.CIRCULAR;
const r23 = r11 === CIRCULAR ? <Circle cx={value} cy={value} r={value} fill="white" /> : <Rect x={0} y={0} height={size} width={size} fill="white" />;
var Circle = (require(7744) /* metro dependency 7744 */).Circle;
const items2 = [<Defs><Mask width={size} height={size} id={value11}>{r23}<Circle cx={r28} cy={r27} r={r26} fill="black" /></Mask></Defs>,
r9];
let border = cutout.border;
if (border != null) {
if (r11 === env0_12.CIRCULAR) {
border = cutout.border;
color = border.color;
border = cutout.border;
value = <Circle cx={value} cy={value} r={value} fill="none" mask={'url(#' + value11 + ')'} stroke={color} strokeWidth={border.width} />;
r9 = value;
} else {
border = cutout.border;
color = border.color;
border = cutout.border;
r9 = <Rect x={0} y={0} height={size} width={size} fill="none" mask={'url(#' + value11 + ')'} stroke={color} strokeWidth={border.width} />;
}
r8 = r9;
} else {
r8 = null;
}
items2[2] = r8;
return (
<View style={style}>
{((Component) => <Component height="100%" width="100%">{items2}</Component>)(defaultImport2)}
</View>
);
}
function _fun79623(a0) { // fn#79623, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:5839, offset: 0x01e5b415, size: 632 bytes, params: 2, frame: 28
var r8;
var r12;
var r1;
var defaultImport;
var makeSource;
var defaultImport2;
var nativeCutouts;
const animate = a0.animate;
const cutout = a0.cutout;
let size = a0.size;
const style = a0.style;
let value = typeof size === 'number';
const r5 = value ? size : env0_9[size];
const r7 = value ? [{width: size, height: size}, style] : [env0_10[size], style];
const object2 = {};
copyDataProperties(object2, a0, undefined);
object2['animate'] = animate === true && cutout == null;
object2['size'] = r5;
const source = object2.source;
let user = object2.user;
const channel = object2.channel;
const guildId = object2.guildId;
const animate2 = object2.animate;
size = object2.size;
if (source != null) {
r8 = typeof source !== 'function' ? source : source(animate2);
} else if (user != null) {
r8 = user.getAvatarSource(guildId, animate2, size);
} else if (channel != null) {
value = require(10254) /* metro dependency 10254: getChannelIcon */;
value = value.getChannelIconURL(channel, size);
r8 = typeof value === 'number' || value == null ? value : {uri: value};
} else {
env0_8.warn('No image found from provided data');
r8 = undefined;
}
if (r8 == null) {
return null;
}
user = object2.user;
const disablePlaceholder = object2.disablePlaceholder;
value = undefined;
if (user == null) {
r12 = value;
} else if (disablePlaceholder) {
r12 = value;
} else {
defaultImport = importDefault(1423) /* metro dependency 1423: AvatarUtils */;
makeSource = defaultImport.makeSource;
defaultImport2 = importDefault(1423) /* metro dependency 1423: AvatarUtils */;
r12 = Reflect.apply(makeSource, defaultImport, [defaultImport2.getDefaultAvatarURL(user.id,
user.discriminator)]);
}
if (cutout != null) {
nativeCutouts = cutout.nativeCutouts;
r1 = (nativeCutouts == null ? value : nativeCutouts.length) === 1 ? <NativeCutoutAvatarImage animate={animate} cutout={cutout.nativeCutouts[0]} source={r8} style={r7} /> : <CutoutAvatarImage style={r7} size={r5} animate={animate} cutout={cutout} source={r8} />;
} else {
value = ((Component) => <Component style={r7} source={r8} placeholder={typeof r12 !== 'number' ? value : r12} usesSmallCache key="image" />)(importDefault(5475) /* metro dependency 5475: FastImage */);
r1 = value;
}
return r1;
}
function customShallowEqual(a0, a1) { // fn#79624, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:6829, offset: 0x01e5b68d, size: 280 bytes, params: 3, frame: 20
var r0;
var r1;
var source;
var source2;
var value2;
var value3;
var Array;
var value4;
var value5;
var length;
var length2;
var value6;
var defaultImport2;
var property;
var value7;
let value = environment;
if ((importDefault(628) /* metro dependency 628: shallowEqual */)(a0, a1, ['source'])) {
source = a0.source;
source2 = a1.source;
if (source === source2) {
return true;
}
value2 = typeof source2;
if (value2 === 'number') {
reducibleJoin5: while (true) {
if (typeof source === 'number') {
return false;
}
break reducibleJoin5;
}
}
value3 = typeof source;
if (value2 !== value3) {
return false;
}
Array = global.Array;
if (Array.isArray(source2)) {
Array = global.Array;
reducibleJoin8: while (true) {
if (Array.isArray(source)) {
length = source.length;
length2 = source2.length;
if (length !== length2) {
return false;
}
length = source.length;
value6 = 0;
if (value6 < length) {
r1 = value6;
reducibleLoop15: while (true) {
defaultImport2 = importDefault(628) /* metro dependency 628: shallowEqual */;
property = source[r1];
if (!defaultImport2(property, source2[r1])) {
return false;
}
value7 = typeof r1 === 'bigint' ? r1 + 1n : +r1 + 1;
length = source.length;
if (!(value7 < length)) {
return true;
}
r1 = value7;
continue reducibleLoop15;
}
}
return true;
}
break reducibleJoin8;
}
}
value4 = value2 !== 'object';
reducibleJoin10: while (true) {
if (value4) {
r0 = value4;
break reducibleJoin10;
}
value5 = value3 !== 'object';
r0 = value5;
break reducibleJoin10;
}
reducibleJoin12: while (true) {
if (r0) {
break reducibleJoin12;
}
value = (importDefault(628) /* metro dependency 628: shallowEqual */)(source2, source);
r0 = value;
break reducibleJoin12;
}
return r0;
}
return false;
}
function NativeCutoutAvatarImageH() { // fn#79621, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10438:3859, owner: NativeCutoutAvatarImage.h, offset: 0x01e5adad, size: 457 bytes, params: 1, frame: 25
var r2;
var object;
var moduleValue;
var withSpring;
var object4;
var moduleValue2;
var value;
const r7 = animate ? undefined : 'animate-never';
const shape = cutout.shape;
const CutoutShape = (require(7599) /* metro dependency 7599: ClipView */).CutoutShape;
const RoundedRect = CutoutShape.RoundedRect;
if (shape === RoundedRect) {
object4 = {};
object4.shape = CutoutShape.RoundedRect;
moduleValue2 = require(4577) /* metro dependency 4577: spring */;
withSpring = moduleValue2.withSpring;
cutoutBinding = cutout;
object4.x = Reflect.apply(withSpring, moduleValue2, [cutoutBinding.x, CHANNEL_SPRING_CONFIG, r7]);
value = require(4577) /* metro dependency 4577: spring */;
object4.y = value.withSpring(cutoutBinding.y, CHANNEL_SPRING_CONFIG, r7);
value = require(4577) /* metro dependency 4577: spring */;
object4.width = value.withSpring(cutoutBinding.width, CHANNEL_SPRING_CONFIG, r7);
value = require(4577) /* metro dependency 4577: spring */;
object4.height = value.withSpring(cutoutBinding.height, CHANNEL_SPRING_CONFIG, r7);
value = require(4577) /* metro dependency 4577: spring */;
object4.cornerRadius = value.withSpring(cutoutBinding.cornerRadius, CHANNEL_SPRING_CONFIG, r7);
r2 = object4;
} else {
object = {};
object.shape = CutoutShape.Circle;
moduleValue = require(4577) /* metro dependency 4577: spring */;
withSpring = moduleValue.withSpring;
cutoutBinding = cutout;
object.x = Reflect.apply(withSpring, moduleValue, [cutoutBinding.x, CHANNEL_SPRING_CONFIG, r7]);
value = require(4577) /* metro dependency 4577: spring */;
object.y = value.withSpring(cutoutBinding.y, CHANNEL_SPRING_CONFIG, r7);
value = require(4577) /* metro dependency 4577: spring */;
object.size = value.withSpring(cutoutBinding.size, CHANNEL_SPRING_CONFIG, r7);
r2 = object;
}
return {cutouts: [r2]};
}